Help us improve
Share bugs, ideas, or general feedback.
From claude-godmode
Start or switch to a named feature mission and capture its purpose, constraints, and numbered roadmap, so every later step shares the same context. Use this to begin a new feature cycle or update its direction — it drives bin/godmode-mission, maintains the project-global .planning/PROJECT.md, and writes the mission's .planning/missions/<mission_id>/ROADMAP.md.
npx claudepluginhub sylorei/claude-godmodeHow this skill is triggered — by the user, by Claude, or both
Slash command
/claude-godmode:missionThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Establish the durable foundation for a **named feature cycle** — a *mission*: **why** it exists, the **constraints** it must respect, what **success** looks like, and a **numbered roadmap** of work units. Run `/mission <feature name>` to create-or-switch a mission; re-run any time to update its direction. Every later step (`/brief N`, `/plan N`, `/build N`, `/verify N`, `/ship`) reads this shar...
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Establish the durable foundation for a named feature cycle — a mission: why it exists, the constraints it must respect, what success looks like, and a numbered roadmap of work units. Run /mission <feature name> to create-or-switch a mission; re-run any time to update its direction. Every later step (/brief N, /plan N, /build N, /verify N, /ship) reads this shared context for the active mission. If /ideate already proposed this feature, /mission picks up that proposal as seed context (see step 2).
A mission is a named feature cycle stored at .planning/missions/<mission_id>/, where <mission_id> is NN-slug (allocated by bin/godmode-mission). Each mission owns its own roadmap and briefs, and its work units number from 1 within the mission.
Artifacts live in the consumer's repo (the project you are helping build), never in the plugin source. Two are project-global at the .planning/ root and span every mission; one is mission-scoped:
.planning/PROJECT.md (root, global) — purpose, constraints, success criteria. The persistent project charter, shared by all missions..planning/STATE.md (root, global) — workflow state, including the active mission_id..planning/missions/<mission_id>/ROADMAP.md (per-mission) — this mission's numbered list of work units. Each entry is referenceable by number: /brief N plans entry N of the active mission.Auto Mode suppresses confirmation prompts ("proceed? / shall I write it?") — never the clarifying questions that decide what the project actually is. A charter built on silent guesses is confidently wrong, and every later step inherits the error. So even in Auto Mode:
When Auto Mode is absent, same principle — ask the essential questions, keep it brief. This is a charter, not an interview, but the few questions that set direction are worth asking in either mode.
Recommendation convention (godmode:recommend-convention). Every question you ask follows the shared convention in rules/godmode-recommend.md: lead with a Recommended option that carries a visible one-line rationale, then let the user override. Don't hand back a flat menu of equal choices — you did the analysis, so say what you'd pick and why:
What does "success" concretely mean for this project?
a) Ships a working CLI a new user can install and run (Recommended — the
repo is a tool, and the README frames adoption as the goal)
b) Reaches feature parity with the prior version — broader, slower to verify
c) Something else — tell me
Pick a letter, or describe a different option.
Resolving the godmode helpers. The godmode-* helpers live in the plugin install dir — not the consumer repo you're working in — so a bare bin/godmode-* path fails from another project's working directory. Every bash block below resolves their location into $gm first (plugin mode → $CLAUDE_PLUGIN_ROOT/bin, manual install → ~/.claude/bin, in-repo → ./bin) and calls "$gm/godmode-<name>". The helpers still operate on the consumer repo's .planning/ (your current working directory) — only the binary is resolved from the install dir. Keep the resolver line; never call a helper by a bare relative path.
/mission always takes a feature name as its argument. Hand it to the lifecycle helper, which slugifies the name and decides create-vs-switch:
gm=$(for c in "${CLAUDE_PLUGIN_ROOT:-}" "$HOME/.claude" .; do [ -x "$c/bin/godmode-state" ] && { echo "$c/bin"; break; }; done)
"$gm/godmode-mission" start <feature name>
.planning/missions/NN-slug for that slug yet) → the helper allocates the next NN, scaffolds .planning/missions/NN-slug/ with a header-only ROADMAP.md and a briefs/ directory, records mission_id/mission_name in state, and resets active_unit to 1. This is a fresh feature cycle: its roadmap and briefs number from 1.mission_id/mission_name and leaves active_unit unchanged, preserving that mission's counter.Then resolve the active mission so every later path is mission-scoped:
gm=$(for c in "${CLAUDE_PLUGIN_ROOT:-}" "$HOME/.claude" .; do [ -x "$c/bin/godmode-state" ] && { echo "$c/bin"; break; }; done)
mission_id=$("$gm/godmode-state" get mission_id)
If /mission was invoked without a feature name, ask the user for one before doing anything else — a mission must be named.
/ideate artifact (additive, best-effort)/ideate (the pre-mission front door) may have written a durable proposal at .planning/ideas/<slug>/IDEAS.md, where <slug> is the kebab-case feature name. Because bin/godmode-mission start <feature name> derives the mission's <slug> from the same feature name with the same slugify rule, an /ideate proposal and the /mission of the same name share a slug — that slug match is the contract that connects them.
The active mission_id is NN-slug; the seed slug is its slug portion (everything after the leading NN-). With that slug known, check for the artifact and, if it exists, Read it and use it as seed context for the charter (PROJECT.md) and this mission's ROADMAP.md — the proposed purpose, rough success criteria, known constraints, candidate directions, and rough work-unit list become starting material for the steps below (still subject to the consequential questions and merge behavior; the user can override anything).
This read is additive and best-effort: if no matching .planning/ideas/<slug>/IDEAS.md exists, do nothing and continue — /mission behaves exactly as it does today, with no error and no change to any other behavior described here. The artifact only ever adds seed context; it never gates or alters the mission lifecycle.
Always Read existing state first — re-running /mission for the same mission is an update, not a fresh write:
.planning/PROJECT.md (if present) — current purpose, constraints, decisions (project-global, at the .planning/ root; shared by all missions)..planning/missions/${mission_id}/ROADMAP.md — this mission's numbered work units and their status. For a freshly created mission the helper has already seeded a header-only file.gm=$(for c in "${CLAUDE_PLUGIN_ROOT:-}" "$HOME/.claude" .; do [ -x "$c/bin/godmode-state" ] && { echo "$c/bin"; break; }; done)
"$gm/godmode-state" get active_unit
"$gm/godmode-state" get status
If PROJECT.md does not exist, this is a first-time project initialization. If it exists, preserve what is already decided (see Merge behavior below).
Establish, from the repo and the user (or inferred defaults in Auto Mode):
The charter (PROJECT.md) spans all missions. The current mission's roadmap captures only the work units that belong to this feature cycle.
Break this mission's work into a numbered list of work units. Each entry:
/brief N will use. Numbering starts at 1 within the mission.pending, active, or done.Number entries sequentially. New work units append with the next free number; never renumber existing entries (their numbers are referenced elsewhere).
Write the project-global .planning/PROJECT.md (at the root) and the mission-scoped .planning/missions/${mission_id}/ROADMAP.md using the formats below.
Point the workflow at the first unstarted roadmap entry so /godmode can tell the user what to do next:
# N = the lowest-numbered roadmap entry of this mission that is still pending
gm=$(for c in "${CLAUDE_PLUGIN_ROOT:-}" "$HOME/.claude" .; do [ -x "$c/bin/godmode-state" ] && { echo "$c/bin"; break; }; done)
"$gm/godmode-state" set active_unit "N"
"$gm/godmode-state" set status "mission defined"
"$gm/godmode-state" set next_command "/brief N"
mission_id/mission_name are already set by bin/godmode-mission start (step 1) — do not set them by hand here.
If every roadmap entry is already done, set status to roadmap complete and leave next_command pointing at /mission to add more work units to this mission (or start a new one).
/mission is safe to re-run, and the name you pass decides what happens — this is enforced by bin/godmode-mission:
.planning/missions/NN-slug/ and resets active_unit to 1. The new mission's roadmap and briefs number from 1, independent of every other mission.active_unit (its counter) untouched. You then update that mission's existing ROADMAP.md rather than starting over. Merge-never-clobber is now scoped to that mission.On every run, regardless of create-vs-switch:
PROJECT.md and carry forward purpose, constraints, success criteria, and any Decisions section verbatim unless the user explicitly changes one. Edit individual lines or sections; do not rewrite the whole file from a blank slate. PROJECT.md is shared across missions — never reset it when starting a new mission.ROADMAP.md, existing numbered entries keep their numbers and status. New work units get the next free number. If the user marks an entry done or active, change only that entry's status field.## Superseded heading rather than deleting it).Use Edit for surgical changes to existing files (the project-global PROJECT.md, and an existing mission's ROADMAP.md) and Write only for first-time population of a freshly seeded or absent file.
.planning/PROJECT.md (root, project-global)# Project: [name]
**Updated:** [YYYY-MM-DD]
## Purpose
[Why this project exists and who it serves.]
## Success Criteria
- [Concrete, measurable where possible.]
## Constraints
- [Hard limits: stack, portability, license, dependency budget, non-negotiables.]
## Decisions
- [YYYY-MM-DD] [Decision] — [rationale]. (Preserved across re-runs and missions.)
.planning/missions/<mission_id>/ROADMAP.md (per-mission)bin/godmode-mission seeds this header-only when the mission is created; /mission populates and updates it. <mission_id> is the active mission's NN-slug from "$gm/godmode-state" get mission_id (see the helper-resolution note in step 1).
# Roadmap: [mission name]
**Updated:** [YYYY-MM-DD]
Numbered work units for this mission. Reference an entry with `/brief N`.
| # | Work unit | Outcome | Status |
|---|-----------|---------|--------|
| 1 | [title] | [one-line outcome] | pending |
| 2 | [title] | [one-line outcome] | active |
| 3 | [title] | [one-line outcome] | done |
After writing, report:
mission_id and mission_name), and whether it was created fresh or switched into..planning/PROJECT.md and the mission-scoped .planning/missions/<mission_id>/ROADMAP.md)."Mission '<mission_name>' defined. Run
/brief Nto plan work unit N."
.planning/ideas/<slug>/IDEAS.md. /mission <name> auto-reads a matching artifact as seed context (step 2).mission_id) and tells the user the next command.PROJECT.md.mission_id/mission_name in sync.Spine: /mission → /brief N → /plan N → /build N → /verify N → /ship. Mission is the shared-context root every later step reads from, scoped to the active mission.