Initial plans are disposable — overturn and rewrite them whenever reality demands.
These remain the recommended default methodology. What is relaxed is OpenSpec's procedural ceremony, not Superpowers thinking.
Superpowers skills (TDD, debugging, verification) do not know this project's test conventions. When executing TDD tasks or writing tests, actively follow these project rules:
The user provides either a kebab-case change name or a description of what they want to record/build/fix. If a change name is omitted and one is needed, infer only when unambiguous; if multiple active changes exist and the target is unclear, ask which one.
-
Classify the session
Decide whether this is:
- explore / think only;
- plan-only deliverable;
- record-and-implement now;
- continue an existing change;
- archive / close.
If an existing change may be involved, run:
openspec list --json
If the target is ambiguous, ask which change to use. For pure exploration, stay read-leaning and do not create artifacts until there is a direction worth recording.
-
Inspect or create the change
For an existing change:
openspec status --change "<name>" --json
openspec instructions apply --change "<name>" --json
Use the returned contextFiles; if none are returned, read .openspec.yaml, proposal.md, tasks.md, and other files under openspec/changes/<name>/.
For a new change:
openspec new change "<name>"
Do not hand-create openspec/changes/<name>; let the CLI track metadata.
-
Check workspace before writing
Before editing any OpenSpec artifact or code, check the workspace context:
git rev-parse --show-toplevel
git worktree list --porcelain
Continue in the current workspace/main checkout by default. Only create, switch to, or continue work inside a git worktree when the user explicitly asks to create/use a worktree for that task (then use superpowers:using-git-worktrees). If the target is inside a submodule (e.g. Plugins/UnrealEvent), inspect submodule state (git submodule status) and follow Documents/Guides/SubmoduleWorktreeWorkflow.md.
-
Explore or design when needed
Use superpowers:brainstorming when requirements, scope, or design choices are unclear: explore context, ask focused questions, compare approaches, recommend one. Capture stable decisions in OpenSpec artifacts (proposal.md / design.md), not separate ad-hoc plan files.
For explore-only sessions, stop after giving findings, tradeoffs, and a recommended direction unless the user asks to record or implement.
-
Record artifacts to match intent
Before writing specs, inspect existing capabilities:
openspec list --specs --json
For any artifact you write, get current schema instructions and use the returned outputPath, template, instruction, context, and rules:
openspec instructions <artifact-id> --change "<name>" --json
Plan-only deliverables — produce a ready-to-execute plan at superpowers:writing-plans quality: a file map (what each task creates / modifies / tests, exact paths), bite-sized tasks (file scope, expected change, exact verification command), and <!-- TDD --> / <!-- Non-TDD --> markers. Write design.md / specs/* when the change involves architecture or user-observable behavior. Then stop cleanly without implementing — note it can be implemented later on the same change.
Record-and-implement sessions — start lean with proposal.md and tasks.md; add design.md or specs/* only when they clarify architecture, requirements, or user-observable behavior. There is no required dependency chain before touching code.
-
Implement and update the record
Work through tasks.md, evolving OpenSpec artifacts alongside code.
- Use
superpowers:test-driven-development for TDD tasks, new behavior, bug fixes, and complex logic.
- Use
superpowers:systematic-debugging for unexpected failures or unclear runtime behavior.
- If implementation reveals a design or requirement problem, rewrite the affected artifact and continue — overturning the initial plan is expected.
- Mark
- [x] only when the task is actually complete.
- Keep
tasks.md a clean checklist; put logs, notes, benchmark data, and investigation output in separate files under the change directory.
-
Verify, finish, or archive
Use superpowers:verification-before-completion before claiming meaningful progress or completion. Validate only through project entry points:
Tools\RunBuild.ps1
Tools\RunTests.ps1
Tools\RunTestSuite.ps1
At a stopping point, summarize the change name, what was recorded or implemented, verification status, and the next decision. If implementation is complete, optionally use superpowers:finishing-a-development-branch.
When the user wants to close a finished change:
openspec archive "<name>"
Surface incomplete tasks and git status --short for awareness, but do not block archive solely because the plan changed or tasks remain unchecked. The CLI handles directory moves, spec updates, and validation (-y to skip confirmation, --skip-specs for no-spec-impact changes). Do not use openspec instructions archive.