بنقرة واحدة
gaia-planner
Use when planning features or decomposing work into tasks from a brief
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Use when planning features or decomposing work into tasks from a brief
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | gaia-planner |
| description | Use when planning features or decomposing work into tasks from a brief |
| metadata | {"user-invocable":false,"type":"technique"} |
Plan creation from briefs. The planner reads a brief from the substrate DB,
decomposes it into tasks defined by outcome and verification, and persists the
plan back through the gaia plan CLI. The orchestrator owns task dispatch and
execution.
A plan defines each task by its outcome plus how that outcome is verified -- never by implementation nomenclature. Reference areas of the codebase loosely ("the brief CLI", "the approval module"); do not pin exact symbol names, file paths, or function signatures inside a task.
This is deliberate. Execution surfaces discoveries the planner cannot see:
an approval gate fires and changes the command, byte-coding or a refactor moves
a symbol, a downstream task lands a file somewhere the plan did not predict. A
task that pins hooks/modules/security/approval_grants.py:activate_db_pending_by_prefix
breaks the moment that symbol moves -- and worse, every downstream task that
referenced the pinned name breaks with it. A task that says "the approval
grant activation path" survives the move, because the executing agent resolves
the specific against the live codebase.
The unit of planning is the task with a testable outcome, not the micro-step. This diverges on purpose from "2-5 minute steps with exact content" patterns: over-specifying the how at plan time transfers a guess into a contract the downstream cannot keep. Plan the what and the proof; let execution own the specifics.
Briefs and plans live in the Gaia substrate database (~/.gaia/gaia.db). The
planner reads briefs through gaia brief show and persists plan content through
gaia plan save. Briefs and plans are separate rows in separate tables
(briefs, plans); the plans row has brief_id UNIQUE, so there is exactly
one plan per brief. There is no plan.md on disk and no open_<feature>/
directory -- status is the plans.status column, not a directory name.
When in doubt: there is no file to read or write -- there is a CLI command to run.
gaia brief show <name> --workspace=<ws> --json
--workspace defaults to the current workspace; pass it explicitly when the
orchestrator gives you a workspace context. The JSON exposes objectives, ACs
(id/description/evidence/artifact), constraints, and out-of-scope.
If the brief does not exist, return BLOCKED and tell the orchestrator to create
one first via brief-spec. Do not search the filesystem -- the DB is authoritative.
Two checks come before sizing tasks. Skipping them produces a plan that re-builds what exists or specifies what cannot be built.
For sizing rules, AC citation, agent routing, and the plan structure, see
reference.md. The contract per task:
satisfies: [AC-1, AC-3]). A task
citing nothing is unverifiable against the product goal -- split or delete it.parallel: yes|no). A task with no
unfinished dependency and no overlapping blast radius runs concurrently; one
that does not, says so. This is what lets the orchestrator optimize dispatch
instead of serializing defensively.gaia plan save --brief=<name> --content="..." --workspace=<ws>
This upserts the plan row in the plans table: first call inserts (status
draft), later calls update status and content without touching child
tasks. It is the only supported writer. If the content is too large to pass
inline, source it from a file: --content="$(cat /tmp/plan.md)".
Lifecycle is draft -> active -> closed via gaia plan set-status <name> <status>.
Confirm with gaia plan show <name> that the content is stored.
When the brief and the implementation diverge in a way that changes the plan --
the brief asks for X, the codebase already does Y, and you cannot tell which the
user wants -- do not assume. Emit NEEDS_INPUT with a simple-selection
questionnaire: the decision framed as a short list of concrete options. The
planner does not pick; the orchestrator presents the options to the user and
returns the choice. Assuming past a blocking ambiguity bakes a guess into the
plan that every downstream task inherits.
Reserve this for ambiguity that blocks the plan. Routine sizing or routing calls are yours to make.
Before the orchestrator dispatches anything, present the task list (numbers, titles, target agents, dependencies, parallelizable labels, execution order) and wait for user confirmation. The orchestrator drives this round-trip; you return the plan content as your output.
gaia brief edit -- this writes the briefs table and
opens $EDITOR interactively, which a subagent cannot drive. Content put
there never appears in gaia plan show because plans and briefs are
different rows in different tables. Persist with gaia plan save.Agent in your tools, something is wrong.Use when constructing or interpreting the approval handoff envelope between subagent and orchestrator -- sealed_payload schema, approval_id format, APPROVAL_REQUEST contract shape, and reading a granted approval from the DB
Use when producing any agent response
Use when classifying any operation before executing it, or deciding whether user approval is required
Use when a mutative command was blocked by the hook and you need to request user approval, or when presenting a plan for a T3 operation before executing it
Use when the user wants to build, design, or extend a diagram — an architecture overview, a timeline, a planner board, a flow diagram, a presentation, a comparison, or a mind-map — as a portable, data-driven deck rendered from plain YAML. Triggers — "build a diagram", "architecture diagram", "diagram deck", "timeline", "flow diagram", "planner board", "add a page/section/component to the diagram".
Use when the user wants something to run routinely / on a schedule rather than once now -- "tarea programada", "rutinariamente", "cada mañana", "cada N horas", "todas las noches", "schedule", "cron". Covers mounting, structuring, and running an unattended headless task that reports back, plus consuming its reports. NOT for a live in-session agentic loop (that is agentic-loop).