My Plan
Codifies this repo's planning workflow: ground -> draft -> dual-review -> iterate -> commit. The output is a reviewed plan document under plans/. It does not write production code - that's a later, separate build pass against the committed plan.
This is tuned for ~/dev/vibe/explainshell. Honor the repo conventions throughout: conventional-commit messages (feat(web):, chore(deps):, ...), commits go to master, and CLAUDE.md/AGENTS.md are the source of truth for structure, workflow, and settled conventions.
Process
Scope it. Confirm what the plan is for. If the ask is vague, ask one or two sharp questions before drafting - a plan for the wrong thing wastes the review.
Ground the plan in real code first. This is the step that makes the plan worth reviewing. Read the actual files, symbols, routes, and schemas the change touches - do not hand-wave. Reference real file:line, function names, CLI subcommands, and DB tables. Check CLAUDE.md/AGENTS.md before reopening a settled convention or workflow call. A grounded plan names the crux (the hard tradeoff), the invariants it must preserve, and the open questions; a vague one does not.
Write the plan to plans/<slug>.md. Short kebab-case slug (e.g. batch-extraction.md). Structure that has worked:
- A status line (
design draft - not yet implemented) and the origin of the ask.
- Problem - what's wrong today, grounded in real symbols.
- The crux - the central tradeoff and the proposed resolution, with the alternative named.
- Changes - extraction pipeline / matching / storage / web / tooling, concrete (function signatures, CLI flags, schema changes, routes).
- Invariants to preserve - the conventions and design rules the change must not break.
- Tests and validation - which suite applies (
make tests-quick vs make tests-all), and whether the change needs an eval pass (/eval-llm for extractor changes, /eval-render for mandoc rendering changes) before it can land.
- Migration/data - DB rebuild or
db-latest release implications, if any.
- Open questions - the calls you want the user (and the reviewers) to weigh.
plans/ is tracked in this repo (not gitignored) - the committed plan is the durable record.
Dual-review it. Invoke the dual-review skill in design mode pointed at the plan: /dual-review design plans/<slug>.md. Let it run both reviewers (codex + a Claude subagent) and produce the synthesis. Do not skip this - the cross-check is the point of the dance.
Synthesize and iterate with the user. Present the synthesis: where the reviewers agree (highest confidence), what each caught that the other missed, and - critically - push back where a reviewer contradicts the repo's own docs (CLAUDE.md/AGENTS.md, an invariant, an established workflow), with the citation. Then propose a revision set (apply / defer / skip-with-reason). Get the user's sign-off on the direction before editing the plan - this is a human-in-the-loop step, not an auto-apply.
Fold accepted revisions into the plan body. Update plans/<slug>.md: rewrite the affected sections, resolve the open questions with the review outcome, and record any findings deliberately deferred (e.g. spun out as follow-up work) so they aren't silently dropped. Note the review in the status line (dual-reviewed (codex + claude <date>), revisions folded in).
Commit on sign-off. When the user is satisfied, commit the plan with a conventional-commit message (e.g. docs(plans): add <slug> design plan). Commit to master per repo convention, but don't push unless asked - pushes to master trigger a production deploy via CI. Stage only the plan file - never bundle unrelated working-tree changes, and never commit production code from this skill. End your turn by reporting the commit hash.
Constraints
- Plan, don't build. This skill produces a plan document. It does not edit production code, run builds, or apply the change. The build is a separate pass against the committed plan. The
make format/test workflow in CLAUDE.md doesn't apply here - the only output is markdown.
- Don't auto-apply review findings. Synthesize, recommend, get sign-off, then fold in. The user decides what's adopted, deferred, or skipped.
- Don't commit without the user's go-ahead on the plan's content. "Commit it" / clear satisfaction is the signal.
- Respect repo conventions: check
CLAUDE.md/AGENTS.md before reopening settled questions; plans that touch the LLM extractor or mandoc rendering must name the eval that will validate them.
- If the user explicitly wants only some steps (e.g. "just draft it, skip the review"), follow that - the dance is the default, not a straitjacket.
1---2name: my-plan3description: Draft a design/implementation plan for a change, pressure-test it with /dual-review (design mode), iterate with the user, then commit it under plans/. Use when the user wants to plan something before building it - "plan X", "let's plan the Y refactor", "/my-plan", "work up a plan for Z and review it". This is the planning dance for this repo - it produces a tracked plan doc, not code.4---56# My Plan78Codifies this repo's planning workflow: **ground -> draft -> dual-review -> iterate -> commit**. The output is a reviewed plan document under `plans/`. It does **not** write production code - that's a later, separate build pass against the committed plan.910This is tuned for `~/dev/vibe/explainshell`. Honor the repo conventions throughout: conventional-commit messages (`feat(web):`, `chore(deps):`, ...), commits go to `master`, and `CLAUDE.md`/`AGENTS.md` are the source of truth for structure, workflow, and settled conventions.1112## Process13141. **Scope it.** Confirm what the plan is for. If the ask is vague, ask one or two sharp questions before drafting - a plan for the wrong thing wastes the review.15162. **Ground the plan in real code first.** This is the step that makes the plan worth reviewing. Read the actual files, symbols, routes, and schemas the change touches - do not hand-wave. Reference real `file:line`, function names, CLI subcommands, and DB tables. Check `CLAUDE.md`/`AGENTS.md` before reopening a settled convention or workflow call. A grounded plan names the crux (the hard tradeoff), the invariants it must preserve, and the open questions; a vague one does not.17183. **Write the plan to `plans/<slug>.md`.** Short kebab-case slug (e.g. `batch-extraction.md`). Structure that has worked:19 - A status line (`design draft - not yet implemented`) and the origin of the ask.20 - **Problem** - what's wrong today, grounded in real symbols.21 - **The crux** - the central tradeoff and the proposed resolution, with the alternative named.22 - **Changes** - extraction pipeline / matching / storage / web / tooling, concrete (function signatures, CLI flags, schema changes, routes).23 - **Invariants to preserve** - the conventions and design rules the change must not break.24 - **Tests and validation** - which suite applies (`make tests-quick` vs `make tests-all`), and whether the change needs an eval pass (`/eval-llm` for extractor changes, `/eval-render` for mandoc rendering changes) before it can land.25 - **Migration/data** - DB rebuild or `db-latest` release implications, if any.26 - **Open questions** - the calls you want the user (and the reviewers) to weigh.27 `plans/` is tracked in this repo (not gitignored) - the committed plan is the durable record.28294. **Dual-review it.** Invoke the `dual-review` skill in **design** mode pointed at the plan: `/dual-review design plans/<slug>.md`. Let it run both reviewers (codex + a Claude subagent) and produce the synthesis. Do not skip this - the cross-check is the point of the dance.30315. **Synthesize and iterate with the user.** Present the synthesis: where the reviewers agree (highest confidence), what each caught that the other missed, and - critically - **push back where a reviewer contradicts the repo's own docs** (`CLAUDE.md`/`AGENTS.md`, an invariant, an established workflow), with the citation. Then propose a revision set (apply / defer / skip-with-reason). **Get the user's sign-off on the direction before editing the plan** - this is a human-in-the-loop step, not an auto-apply.32336. **Fold accepted revisions into the plan body.** Update `plans/<slug>.md`: rewrite the affected sections, resolve the open questions with the review outcome, and record any findings deliberately **deferred** (e.g. spun out as follow-up work) so they aren't silently dropped. Note the review in the status line (`dual-reviewed (codex + claude <date>), revisions folded in`).34357. **Commit on sign-off.** When the user is satisfied, commit the plan with a conventional-commit message (e.g. `docs(plans): add <slug> design plan`). Commit to `master` per repo convention, but **don't push** unless asked - pushes to `master` trigger a production deploy via CI. Stage only the plan file - never bundle unrelated working-tree changes, and never commit production code from this skill. End your turn by reporting the commit hash.3637## Constraints3839- **Plan, don't build.** This skill produces a plan document. It does not edit production code, run builds, or apply the change. The build is a separate pass against the committed plan. The `make format`/test workflow in `CLAUDE.md` doesn't apply here - the only output is markdown.40- **Don't auto-apply review findings.** Synthesize, recommend, get sign-off, then fold in. The user decides what's adopted, deferred, or skipped.41- **Don't commit without the user's go-ahead** on the plan's content. "Commit it" / clear satisfaction is the signal.42- **Respect repo conventions:** check `CLAUDE.md`/`AGENTS.md` before reopening settled questions; plans that touch the LLM extractor or mandoc rendering must name the eval that will validate them.43- If the user explicitly wants only some steps (e.g. "just draft it, skip the review"), follow that - the dance is the default, not a straitjacket.