{"id":43415,"plugin_id":"plugin_asdk_app_6a1bf0c36ea8819192770944990d8b72","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:10:33.712Z","digest":"d3f6d085329eef04c431d49be6f20a16457cce06f9d6b75b9cd7bfbc3a05edfc","against":null,"payload":{"description":"Review or run existing Memova automation tasks when the user asks to list unfinished tasks, assess whether they are internally executable or waiting for confirmation, run a selected task, or write progress/results back to Memova. Preserve waiting_for_user as guarded. For bare @memova, menu requests, or numbered menu choices, use memova-menu instead.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":445}],"name":"memova-workflow","skill_md_contents":"---\nname: memova-workflow\ndescription: Review or run existing Memova automation tasks when the user asks to list unfinished tasks, assess whether they are internally executable or waiting for confirmation, run a selected task, or write progress/results back to Memova. Preserve waiting_for_user as guarded. For bare @memova, menu requests, or numbered menu choices, use memova-menu instead.\n---\n\n# Memova Workflow\n\nUse this skill only when the user explicitly invokes Memova, selects a Memova starter prompt, or asks to run a Memova workflow. Do not invoke it just because a prompt mentions meetings or notes.\n\n## Operating Rules\n\n- Treat Memova MCP as the source of truth for notes, transcripts, automation tasks, approval requests, and task progress.\n- User-facing Codex work starts from `automation_tasks`. Do not recreate tasks from action\n  candidates when the user asks to run Memova Codex work.\n- Use only the current user's Memova data returned by the MCP server.\n- Before starting any Memova workflow on every invocation, run the plugin version check from the\n  plugin root:\n\n  ```bash\n  python3 plugins/memova/scripts/version_check.py\n  ```\n\n  If it returns `should_remind: true`, show its message and continue the requested workflow. If the\n  check fails or returns no reminder, continue silently. Never run the upgrade command without\n  explicit user confirmation.\n- Before starting any non-setup Memova workflow, run the one-time knowledge-base setup reminder\n  check from the plugin root:\n\n  ```bash\n  python3 plugins/memova/scripts/kb_setup_reminder.py\n  ```\n\n  If it returns `should_remind: true`, show its message once and continue the requested workflow.\n  Do not repeat the reminder when `already_reminded: true`. If the user wants setup later, they must\n  explicitly run `@memova Set up knowledge base.`\n- Do not send email, send messages, create calendar events, make purchases, create external accounts, or modify external systems without explicit user approval.\n- Never store or echo secrets, access tokens, refresh tokens, or raw credentials.\n- Keep progress writes concise and non-sensitive. Store links, IDs, and summaries instead of full files or large payloads.\n- Keep schema names, machine provenance/version tags, fixture markers, and synthetic-data labels\n  internal by default. Translate them into plain language such as \"the reviewer demo records\" or\n  \"synthetic Memova data\" instead of echoing raw tags in progress or final responses.\n- If a task requires a codebase, inspect the current workspace before editing. If the workspace is unrelated or missing, ask the user which repo to use or create a Memova approval request.\n\n## Bare Memova Invocation\n\nWhen the user invokes bare `@memova`, asks for the Memova menu, or gives a numbered Memova menu\nselection, do not start this workflow by default. Use `plugins/memova/skills/memova-menu/SKILL.md`\nso the user can choose the action first.\n\n## Latest Note Automation Task Workflow\n\nWhen the user chooses \"Run latest note automation tasks\" or explicitly asks to run Codex tasks for\nthe latest Memova note:\n\n1. Run the plugin version check described above.\n2. Run the one-time knowledge-base setup reminder check described above.\n3. Call `list_latest_note_automation_tasks` with `statuses=[\"pending\",\"running\"]`,\n   `claimable_only=true`, and a reasonable `limit` such as `20`.\n   If this MCP tool is unavailable, run `codex mcp list`. If `memova` is listed with Auth\n   `Not logged in`, run `python3 plugins/memova/scripts/ensure_mcp_login.py` from the plugin root.\n   The helper starts MCP OAuth login and attempts to open one browser authorization URL; the user\n   still approves in the browser. If automatic browser opening fails, tell the user to copy the\n   printed `authorization_url` into a browser. If the helper returns\n   `manual_terminal_login_required`, show its exact top-level `manual_login_command` and tell the\n   user to run it in a normal system Terminal/PowerShell outside the Codex task. Do not retry the\n   helper or ask the user to clear OAuth/browser state or change sandbox settings. If it returns\n   `login_completed_client_refresh_required`, say OAuth succeeded and do not ask the user to log in\n   again. After successful login, require a full Codex restart and a new task if this task still\n   does not expose the Memova MCP tools. If `memova` is not listed, tell the user to\n   upgrade/reinstall the Memova plugin and restart Codex.\n4. If no latest ready note exists, say so and stop. Do not call `extract_action_items`.\n5. If a latest note exists but has no claimable automation tasks, summarize the latest note/meeting\n   identifiers and say there are no unfinished Codex automation tasks for it. Do not create new\n   tasks.\n6. If tasks are returned, summarize user-visible titles/objectives, source note/meeting titles,\n   status, owner, approval needs, and safety constraints. Keep task, note, meeting, action, lease,\n   and event ids internal by default. Show an internal id only when the user asks for technical\n   details or when human-readable details cannot disambiguate the target. If there are multiple\n   tasks, choose the first clearly safe task or ask the user which one to run when the right order\n   is ambiguous.\n7. Claim one task at a time with `claim_task`, then call `get_task_context`.\n8. Before execution, append a short `append_task_progress` event that states the chosen task and execution plan.\n9. Execute safe work in the current Codex workspace. Keep edits scoped to the task and follow the repo's local instructions.\n10. If approval or missing information is required, use `create_approval_request` with a specific prompt and stop instead of guessing. If the user is present in the Codex thread, also ask directly when that is faster.\n11. On success, call `complete_task` with a concise result summary. On a recoverable blocker, call `release_task`. On a real failure, call `fail_task` with a clear failure code and message.\n\nDo not call `extract_action_items`, `accept_action_candidate`, or `ensure_task_from_action` in this\nworkflow. The user already chose actions in Memova/iOS and sent them to Codex as automation tasks.\n\n## Automation Task Review\n\nWhen the user asks to review Memova automation tasks without immediately executing them:\n\n1. Run the plugin version check described above.\n2. Run the one-time knowledge-base setup reminder check described above.\n3. Call `list_automation_tasks` with statuses `pending`, `running`, and `waiting_for_user`,\n   `claimable_only=false`, and a reasonable `limit` such as `20`.\n   If this MCP tool is unavailable, run `codex mcp list`. If `memova` is listed with Auth\n   `Not logged in`, run `python3 plugins/memova/scripts/ensure_mcp_login.py` from the plugin root.\n   The helper starts MCP OAuth login and attempts to open one browser authorization URL; the user\n   still approves in the browser. If automatic browser opening fails, tell the user to copy the\n   printed `authorization_url` into a browser. If the helper returns\n   `manual_terminal_login_required`, show its exact top-level `manual_login_command` and tell the\n   user to run it in a normal system Terminal/PowerShell outside the Codex task. Do not retry the\n   helper or ask the user to clear OAuth/browser state or change sandbox settings. If it returns\n   `login_completed_client_refresh_required`, say OAuth succeeded and do not ask the user to log in\n   again. After successful login, require a full Codex restart and a new task if this task still\n   does not expose the Memova MCP tools. If `memova` is not listed, tell the user to\n   upgrade/reinstall the Memova plugin and restart Codex.\n4. Summarize user-visible task titles/objectives, source note or meeting titles, status, owner,\n   practical lease availability, and approval policy. Do not show internal task, note, action,\n   lease, event, request, or workspace ids by default; keep them for tool calls and audit only.\n   Treat `waiting_for_user` as requiring user attention and as not directly runnable. The absence\n   of a separate open approval-request row does not turn a `waiting_for_user` task into an approved\n   task; report that as missing/inconsistent confirmation detail and keep the task guarded until\n   its context or a later user decision explicitly resumes it.\n   When the user asks whether the task can be performed entirely inside Memova, answer **No — it\n   is waiting for the user**. Never describe any part of a `waiting_for_user` task as currently\n   performable, runnable, executable, allowed, or ready merely because its capability list or\n   approval policy would otherwise allow drafting. Missing confirmation metadata is an\n   inconsistency to surface, not permission to proceed.\n5. Do not claim tasks or write progress for read-only views unless the user asks to run a specific\n   task.\n\nWhen the user asks to execute a specific automation task from a review list, claim only that task,\nthen call `get_task_context` so the latest events and approval state guide the work.\n\n## Approval Guidance\n\nAsk before acting when any of these are true:\n\n- The work would contact another person or external service.\n- The task asks for calendar, email, Slack, purchase, billing, production deployment, account creation, deletion, or irreversible mutation.\n- The note evidence conflicts with task instructions.\n- The relevant repository or environment is unclear.\n- Completing the task would require secrets or credentials not already available through approved local configuration.\n\nFor Memova-persisted tasks, prefer `create_approval_request` so the decision is visible in Memova. If the user is present in the Codex thread, also ask a concise direct question when that is faster.\n\n## Final Response\n\nEnd with:\n\n- the user-visible Memova note/task titles used and why they were relevant;\n- what was completed or written back;\n- what still needs user approval or follow-up; and\n- any local verification that was run.\n\nKeep internal ids, claim tokens, hashes, request ids, and raw lifecycle event details out of the\ndefault final response. They remain available for tool calls, logs, audit, and explicit technical\nfollow-up.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}