From beat
Creates spec artifacts (proposal, gherkin, design.md) for a Beat change. Invokes git worktrees and brainstorming before writing. Not for task breakdown, implementation, or exploration.
How this skill is triggered — by the user, by Claude, or both
Slash command
/beat:designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Design a change — create a change container (if needed) and generate spec artifacts.
Design a change — create a change container (if needed) and generate spec artifacts.
<decision_boundary>
Use for:
NOT for:
/beat:plan)/beat:explore)/beat:apply)/beat:verify)Trigger examples:
</decision_boundary>
Before writing any artifact files: you MUST invoke superpowers:using-git-worktrees. When the artifact selection includes proposal or design, you MUST invoke superpowers:brainstorming before generating content. This applies even when scope seems obvious.Before writing gherkin scenarios: you MUST run the four-challenge CONTEXT.md check
(see step 4 below) and ensure every project-specific term used in scenarios is
defined in beat/CONTEXT.md. Create the glossary lazily — only when the first
term is added.
After writing each artifact: you MUST run the four-check spec self-review (placeholder / consistency / scope / ambiguity). Fix issues inline.
While writing design.md: you MUST run the three-condition ADR gate
(hard-to-reverse + surprising + real trade-off — see references/adr-format.md)
on each Key Decision. When all three hold, offer to lift the decision into a
new ADR under docs/adr/. The user may decline.
Invoke in order: worktrees first (isolate), then brainstorming (design).
If a prerequisite skill is unavailable (not installed), continue with fallback — but NEVER skip because you judged it unnecessary.
Prerequisites (invoke before proceeding)
| Skill | When | Priority |
|---|---|---|
| superpowers:using-git-worktrees | Before first file write | MUST |
| superpowers:brainstorming | Before creating proposal or design | MUST |
| mattpocock-skills:grill-with-docs | When CONTEXT.md ambiguity is complex enough that a full grilling session is warranted | OPTIONAL |
If a prerequisite skill is unavailable (skill not installed), skip and continue. For optional skills (grill-with-docs), offer to invoke when applicable; if the user declines or it isn't installed, proceed with the four-challenge check inline.
| Thought | Reality |
|---|---|
| "I don't need a worktree for just writing specs" | Without a worktree, artifacts live in the main workspace and won't carry into apply. Isolate from the start. |
| "brainstorming isn't needed, the user already described what they want" | A description is not a design. brainstorming surfaces assumptions, alternatives, and edge cases. |
| "The user wants speed, invoking superpowers will slow us down" | Skipping prerequisites produces lower-quality artifacts that cause rework during apply and verify. |
| "This change is simple enough to skip brainstorming" | Simple changes finish brainstorming quickly. Complex changes need it most. There is no middle ground where skipping helps. |
| "The domain terms are obvious, no need to update CONTEXT.md" | Obvious to you, not to future-you or anyone else reading the feature in six months. Glossary entries are two lines. Add them inline. |
| "Spec self-review is overkill, the artifact is short" | Self-review catches placeholders, contradictions, and ambiguities that compound through plan and apply. The four checks take 30 seconds. |
| "This decision is just for this change, no ADR needed" | Run the three-condition gate. If it's hard-to-reverse, surprising, and a real trade-off, future changes will trip over it — that's the ADR's job. Decisions that are change-specific don't pass the gate; let the gate decide, not your gut. |
| "We'll lift this into an ADR later" | "Later" rarely arrives. The decision is fresh now; the ADR is 1-3 sentences. Write it inline. |
beat/CONTEXT.mdbeat/features/ without creating a .orig backup first- [ ] checkboxes — tasks belong in /beat:plandesign.md that meets all three ADR conditions without offering an ADRdigraph design {
"Select or create change" [shape=box];
"Invoke using-git-worktrees" [shape=box, style=bold];
"Ask artifact preset" [shape=box];
"Includes proposal?" [shape=diamond];
"Invoke brainstorming" [shape=box, style=bold];
"Create proposal" [shape=box];
"Self-review proposal" [shape=box, style=bold];
"Includes gherkin?" [shape=diamond];
"CONTEXT.md\nfour-challenge check" [shape=box, style=bold];
"Existing scenarios\nto modify?" [shape=diamond];
"Backup .orig +\ncopy to changes/" [shape=box];
"Create gherkin\n(new features only)" [shape=box];
"Self-review gherkin" [shape=box, style=bold];
"Includes design?" [shape=diamond];
"Create design" [shape=box];
"ADR gate\n(per Key Decision)" [shape=box, style=bold];
"Self-review design" [shape=box, style=bold];
"Commit artifacts" [shape=box];
"Show summary" [shape=doublecircle];
"Select or create change" -> "Invoke using-git-worktrees";
"Invoke using-git-worktrees" -> "Ask artifact preset";
"Ask artifact preset" -> "Includes proposal?";
"Includes proposal?" -> "Invoke brainstorming" [label="yes"];
"Includes proposal?" -> "Includes gherkin?" [label="no"];
"Invoke brainstorming" -> "Create proposal";
"Create proposal" -> "Self-review proposal";
"Self-review proposal" -> "Includes gherkin?";
"Includes gherkin?" -> "CONTEXT.md\nfour-challenge check" [label="yes"];
"Includes gherkin?" -> "Includes design?" [label="no"];
"CONTEXT.md\nfour-challenge check" -> "Existing scenarios\nto modify?";
"Existing scenarios\nto modify?" -> "Backup .orig +\ncopy to changes/" [label="yes"];
"Existing scenarios\nto modify?" -> "Create gherkin\n(new features only)" [label="no"];
"Backup .orig +\ncopy to changes/" -> "Create gherkin\n(new features only)";
"Create gherkin\n(new features only)" -> "Self-review gherkin";
"Self-review gherkin" -> "Includes design?";
"Includes design?" -> "Invoke brainstorming" [label="yes, only if\nnot yet invoked"];
"Includes design?" -> "Commit artifacts" [label="no"];
"Invoke brainstorming" -> "Create design" [label="for design"];
"Create design" -> "ADR gate\n(per Key Decision)" [style=bold];
"ADR gate\n(per Key Decision)" -> "Self-review design";
"Self-review design" -> "Commit artifacts";
"Commit artifacts" -> "Show summary";
}
Input: Change name (kebab-case) OR a description of what to build. Can also be an existing change name to fast-forward remaining artifacts.
Steps
If no clear input provided, ask what they want to build
Use AskUserQuestion tool to ask what they want to build. Derive kebab-case name from description.
Create or select change
Determine the change name. Before creating any files, invoke using-git-worktrees to isolate this change.
beat/changes/<name>/ doesn't exist: create it (directory + status.yaml + features/.gitkeep)status.yaml (schema: references/status-schema.md) to find remaining artifactsAsk which spec artifacts to include
Read status.yaml. For artifacts still pending, ask user once upfront:
Use AskUserQuestion tool:
"Which spec artifacts do you want? (Tasks are handled separately by
/beat:plan)"
- Full: Proposal + Gherkin + Design (recommended for large features)
- Standard: Proposal + Gherkin (recommended for medium features)
- Minimal: Gherkin only (recommended for small bug fixes)
- Technical: Proposal only, no Gherkin (for tooling/infra/refactor changes with no behavior change)
- Custom: Let me choose each one
Mark skipped artifacts as skipped in status.yaml.
Tasks are always set to pending — task breakdown happens in /beat:plan.
Update phase to match the latest completed spec artifact after each creation.
Create artifacts in pipeline order
Read beat/config.yaml if it exists (schema: references/config-schema.md). Use language for artifact output language, inject context, and apply matching rules per artifact type throughout creation.
For each artifact to create (pipeline order: proposal -> gherkin -> design):
status.yamlCONTEXT.md four-challenge check (before writing gherkin):
Read beat/CONTEXT.md if it exists (schema: references/context-format.md). Create it lazily when the first term is added — never preemptively.
Walk through the brainstorming output and any draft scenario text. For each project-specific term, run these checks and update beat/CONTEXT.md inline as findings emerge (never batch):
_Avoid_.Optional grilling: If mattpocock-skills:grill-with-docs is installed and the ambiguity is complex enough to warrant a full grilling session, offer to invoke it once: "Want to drop into grill-with-docs for a deeper pass on this?" If the user declines, or the skill isn't installed, continue inline with the four challenges. Beat never hard-requires grill-with-docs.
Every project-specific term used in scenarios MUST exist in beat/CONTEXT.md before the scenario is written. Bolded terms in scenarios are the canonical form.
Spec self-review (after writing each artifact):
Re-read the artifact with fresh eyes and check:
TBD, TODO, incomplete sections, vague requirements?Fix issues inline. No need to re-review the fix — just fix and move on.
Artifact patterns:
Proposal: Sections: ## Why, ## What Changes, ## Impact
Gherkin:
references/feature-writing.md for conventions on description blocks, scenario organization, and review checklistbeat/features/**/*.feature and beat/changes/*/features/*.feature (excluding current change) — read Feature: and Scenario: lines to map existing coverage, deep-read only overlapping features, avoid duplication and align style@happy-path/@error-handling/@edge-case@e2e (user journeys needing a running app) or @behavior (business logic testable without a full app; default @behavior)Background:Modifying existing features (see references/testing-conventions.md for full mechanism):
When the scan reveals scenarios in beat/features/ that need modification:
beat/features/**/*.feature.orig — if a .orig exists for the same file, another change is modifying it. Warn and stop.beat/features/ to .feature.orig (hides it from BDD runners)beat/changes/<name>/features/<file>.featurechanges/ copy (add/change/remove steps, add new scenarios)status.yaml gherkin.modified arrayNew features that don't modify existing scenarios go directly to changes/<name>/features/ as before.
Design:
## Approach, ## Key Decisions, ## Componentsreferences/adr-format.md:
docs/adr/?" On Yes, write a 1-3 sentence ADR using the template in references/adr-format.md, increment the highest existing number in docs/adr/ by one, and add a cross-reference from design.md (See docs/adr/NNNN-slug.md). On No, continue.
Create docs/adr/ lazily — only on first ADR.design.md describes a module-level architecture change (new module, module split/merge, changed module boundaries or responsibilities), suggest updating beat/ARCHITECTURE.md — the hub diagram, modules table, or constraints (see references/architecture-format.md). Create the hub lazily, only if the project is multi-module and the user accepts. Never block.Commit artifacts and show final status
Commit all change artifacts: git add beat/changes/<name>/ && git commit
Use a descriptive message, e.g. "design(): add spec artifacts".
Update phase to the latest completed spec artifact in status.yaml.
## Design Complete: <change-name>
Created:
- proposal.md (or skipped)
- features/*.feature (or skipped if Technical option)
- design.md (or skipped)
Tasks: pending (run `/beat:plan` to create execution plan)
Spec artifacts ready! Review them, then run `/beat:plan` for task breakdown.
Guardrails
/beat:plannpx claudepluginhub kirkchen/beat --plugin beatGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.