Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/gaia-react/gaia/plan-closegit clone --depth 1 https://github.com/gaia-react/gaiaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/gaia-react/gaia/plan-close)<a href="https://agentmods.dev/commands/gaia-react/gaia/plan-close"><img src="https://agentmods.dev/badge/commands/gaia-react/gaia/plan-close.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00055 | $0.02205 |
| Opus 5 | $0.00028 | $0.01103 |
| Sonnet 5 | $0.00011 | $0.00441 |
| Haiku 4.5 | $0.00006 | $0.00220 |
Grade A, and why
speckit-gaia-plan-close scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 126 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Plan Close, Lifecycle
Closes a spec-less PLAN-NNN after its implementing PR has merged. Mirrors spec-close, with one difference: a plan has no authoring-time wiki_promote_default decision, so this command makes the promotion ask itself. Three responsibilities:
- Drain a deferred wiki-promote, if a prior run of this command accepted the promotion offer but the PR had not yet merged.
- Offer wiki-promote, a human ask, gated (no size heuristic, no default-on).
- Cold-consolidate and reap the local plan folder, once the wiki side is settled (or declined) and the ledger records the merge.
Invokable manually as /speckit-gaia-plan-close [PLAN-NNN]. Nothing auto-triggers it today; a plan reaches this command only by explicit invocation.
Step 1: Resolve target plan
If $ARGUMENTS matches PLAN-NNN, target that plan.
Otherwise, build the candidate list:
- Caches (deferred-drain candidates):
ls .gaia/local/cache/wiki-promote/PLAN-*.json 2>/dev/null→ PLAN IDs awaiting drain. - Plans (in-flight or pending disposition):
ls -d .gaia/local/plans/PLAN-*/ 2>/dev/null→ PLAN IDs from folder names.
If exactly one candidate exists, default to it. If multiple, surface via AskUserQuestion:
- Question:
Multiple plans eligible for close. Which one? - Header:
Plan close - Options: one per candidate, labeled
<plan_id>, <intent first line>with description noting(awaiting drain)if the cache exists.
If no candidates: report plan-close: no plans to close. and exit.
Step 2: Conditional drain
Test for .gaia/local/cache/wiki-promote/<plan_id>.json.
If the cache exists (a prior run of this command accepted the promotion offer but the PR was unmerged at the time):
- Read the cache. Run
gh pr list --head "$branch" --state merged --json number,mergedAt,url,body --limit 1. - If still unmerged: report
<plan_id>: PR for branch <branch> not yet merged. Re-run after merge.and exit. Do not delete the cache. Do not proceed to Step 4, the plan is not closed yet. - If merged: re-invoke
/speckit-gaia-wiki-promoteby calling the Skill tool to run that command with the plan ID as its argument, and include the exact literal stringdrained: truein the invoking message. Wiki-promote's Step 3 detects the merged PR, runs Steps 4-7, and deletes the cache. Wiki-promote's Step 8 chain-back is suppressed by that literal token (this command handles the ledger reconcile and reap itself, in Step 4 below), emit it verbatim, see wiki-promote Step 8 for the guard.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 126 lines · 55 tokens per session scan A 545cfec02525
speckit-gaia-plan-close is a command published in the GitHub repository gaia-react/gaia (22 stars, last pushed 3d ago), licensed MIT. It adds 55 tokens to every session and 2,205 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
pr-description
Generate a pull request description based on the changes in the current branch.
push-changes
If no topic provided, just document the recent changes. If a topic is provided, focus on documenting that topic.
create-PR
Command "create-PR" from bartstc/vite-ts-react-template, covering create a pr against this branch: $arguments, follow these steps and remember.
security-sast
Static Application Security Testing (SAST) for code vulnerability analysis across multiple languages and frameworks.
git
Git operations with intelligent commit messages and workflow optimization.
checklist
Generate a custom checklist for the current feature based on user requirements.