design
Skill9 starsChanged 7 months agoMITView on GitHub
Use when starting a Beat change to create spec artifacts — not for task breakdown, implementation, or exploration
197 other projects use a version of this.
Adopted by
Most recently taken up by
- dialog-db/dialog-dbtheir own version, first seen Nov 9, 2026
- BermanRoman/promt-seo-geotheir own version, first seen Nov 8, 2026
- anorth/agent-skillstheir own version, first seen Nov 8, 2026
- gspencergoog/skillstheir own version, first seen Nov 8, 2026
- PeanutGT/NutsSkillstheir own version, first seen Nov 8, 2026
- Integralist/agent-skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use banner-design, ui-styling and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
seikaikyoSkillbanner-design
Design banners for social media, ads, website heroes, creative assets, and print. Multiple art direction options with optional generated or supplied visuals. Actions: design, create, generate banner. Platforms: Facebook, Twitter/X, LinkedIn, YouTube, Instagram, Google Display, website hero, print. Styles: minimalist, gradient, bold typography, photo-based, illustrated, geometric, retro, glassmorphism, 3D, neon, duotone, editorial, collage.
Also in 38 projects that use this
MicrosoftSkillui-styling
Guide for the visual style, structure, and shared building blocks used by Semantic Link Labs interactive UI tools (HTML widgets and anywidget-based widgets). Use this when adding a new interactive UI, modifying an existing one, or adding shared visual components.
Also in 39 projects that use this
seikaikyoSkillbrand
Brand voice, visual identity, messaging frameworks, asset management, brand consistency. Activate for branded content, tone of voice, marketing assets, brand compliance, style guides.
Also in 43 projects that use this
mayankjain1815-commitsSkillinfra-audit
Reads docker-compose, env files, ORM configs, and connection strings to map current infrastructure. Flags missing layers (cache, queue, analytics) based on observed access patterns. Outputs a structured infrastructure manifest.
Also in 3 projects that use this
JetBrainsSkillslides
Create and edit presentation slide decks (`.pptx`) with PptxGenJS and render/validation utilities. Use when tasks involve building a new PowerPoint deck, recreating slides from screenshots/PDFs/reference decks, modifying slide content while preserving editable output, adding charts/diagrams/visuals, or diagnosing layout issues such as overflow, overlaps, and font substitution.
Also in 42 projects that use this
AnthropicSkilldesign-system
Audit, document, or extend your design system. Use when checking for naming inconsistencies or hardcoded values across components, writing documentation for a component's variants, states, and accessibility notes, or designing a new pattern that fits the existing system.
Also in 49 projects that use this
Other versions197 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 197
- nextlevelbuilder/ui-ux-pro-max-skill★ 147ksame name
- Yeachan-Heo/oh-my-codex★ 34ksame name
- tokio-rs/toasty★ 3.3ksame name
- PaulWoitaschek/Voice★ 3.3ksame name
- joye61/pic-smaller★ 2.9ksame name
- oxsecurity/megalinter★ 2.6ksame name
- Infisical/agent-vault★ 2.5ksame name
- static-web-server/static-web-server★ 2.4ksame name
- SethGammon/Citadel★ 927same name
- Ohh-889/skyroc-admin★ 795same name
187 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
Show its rules and text
We split this skill into the rules it gives an agent
39 rules. 0 are common, 21 are distinctive, and 18 are very specific to this project.
0
Common
Most of the 174 edited versions we read keep these.
21
Distinctive
This author's own choices. Worth a look.
18
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 23
Should NOT trigger: "break down the tasks" / "let me think about this" / "implement the change"
- Distinctive: line 28
Before writing any artifact files: you MUST invoke superpowers:using-git-worktrees.
- Distinctive: line 29
When the artifact selection includes proposal or design, you MUST invoke superpowers:brainstorming before generating content.
- Very specific: line 32
Before writing gherkin scenarios: you MUST run the four-challenge glossary check (see step 4 below) and ensure every project-specific term …
- Distinctive: line 35
Create the glossary lazily — only when the first term is added.
- Distinctive: line 37
After writing each artifact: you MUST run the four-check spec self-review (placeholder / consistency / scope / ambiguity).
- Distinctive: line 47
If a prerequisite skill is unavailable (not installed), continue with fallback — but NEVER skip because you judged it unnecessary.
- Very specific: line 59
If a prerequisite skill is unavailable (skill not installed), skip and continue.
- Distinctive: line 156
Use AskUserQuestion tool to ask what they want to build.
- Very specific: line 163
If beat/changes/<name>/ doesn't exist: create it (directory + status.yaml + features/.gitkeep)
- Very specific: line 164
If it exists: use it, read status.yaml (schema: references/status-schema.md) to find remaining artifacts
- Very specific: line 188
Update phase to match the latest completed spec artifact after each creation.
- Very specific: line 192
Read beat/config.yaml if it exists (schema: references/config-schema.md).
- Distinctive: line 195
Read all completed artifacts for context
- Distinctive: line 197
Gherkin only — before writing scenarios: run the glossary four-challenge check (see sub-step below)
- Distinctive: line 198
Create the artifact following the patterns below
- Distinctive: line 199
After writing: run the spec self-review (see sub-step below).
- Distinctive: line 202
If context is critically unclear, pause and ask
- Very specific: line 206
Read GLOSSARY.md if it exists (schema: references/context-format.md).
- Very specific: line 217
Every project-specific term used in scenarios MUST exist in GLOSSARY.md before the scenario is written.
- Very specific: line 233
Read references/feature-writing.md for conventions on description blocks, scenario organization, and review checklist
- Very specific: line 234
Before writing, scan beat/features//*.feature and beat/changes/*/features/*.feature (excluding current change) — read Feature: and …
- Very specific: line 238
Every scenario MUST have a testing layer tag: @e2e (user journeys needing a running app) or @behavior (business logic testable without a …
- Distinctive: line 239
Write at behavior level — describe what the system does ("Monthly billing adjusts for short months"), not how a function works …
- Distinctive: line 240
Use business language — no concrete numeric thresholds, code method names, or internal constants (API contract constants are OK as shared …
- Distinctive: line 244
If option 4 (Technical) was chosen, skip gherkin entirely
- Very specific: line 248
When the scan reveals scenarios in beat/features/ that need modification:
- Very specific: line 254
Record: add the original path to status.yaml gherkin.modified array
- Very specific: line 264
Create docs/adr/ lazily — only on first ADR.
- Very specific: line 270
Run node <skill-dir>/scripts/lint-features.mjs beat/changes/<name>/features/*.feature (only when gherkin was written) and node …
- Distinctive: line 272
Commit the change directory and every living-documentation file this run wrote or modified — they are one unit of work:
- Distinctive: line 285
Use a descriptive message, e.g.
- Very specific: line 287
Update phase to the latest completed spec artifact in status.yaml.
- Distinctive: line 307
Ask upfront which artifacts to include (don't ask per artifact)
- Distinctive: line 308
If change already exists with some artifacts done, only create remaining
- Distinctive: line 309
If context is critically unclear, ask -- but prefer reasonable defaults to keep momentum
- Distinctive: line 310
Verify each artifact file exists after writing before proceeding
- Very specific: line 312
Always write preset to status.yaml — later phases read it to decide their strength
- Very specific: line 313
Never copy implementation code from a prototype/<node-id> branch into the change.
“Common” is measured: kept by at least 6 in 10 of the 174 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Design a change — create a change container (if needed) and generate spec artifacts.
<decision_boundary>
Use for:
- Creating a new Beat change and generating spec artifacts (proposal, gherkin, design.md)
- Resuming artifact generation for an existing change that has pending spec artifacts
- Choosing which spec artifacts to include (presets: Full, Standard, Minimal, Technical, Custom)
NOT for:
- Breaking down tasks or creating execution plans (use
/beat:plan) - Exploring ideas or thinking through a problem before committing (use
/beat:explore) - Implementing code (use
/beat:apply) - Reviewing or verifying implementation (use
/beat:verify)
Trigger examples:
- "Design a user authentication feature" / "Create a change for login" / "Generate specs for X"
- Should NOT trigger: "break down the tasks" / "let me think about this" / "implement the change"
</decision_boundary>
<HARD-GATE>
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 glossary check
(see step 4 below) and ensure every project-specific term used in scenarios is
defined in GLOSSARY.md at the project root (path: references/project-layout.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.
</HARD-GATE>
Prerequisites (invoke before proceeding)
| Skill | When | Priority |
| superpowers:using-git-worktrees | Before first file write | MUST |
| superpowers:brainstorming | Before creating proposal or design | MUST |
| grilling + domain-modeling (mattpocock/skills, model-invoked) | When a term fails the glossary four-challenge check and inline resolution is not enough | OPTIONAL |
If a prerequisite skill is unavailable (skill not installed), skip and continue.
grilling and domain-modeling are called directly when needed (they are model-invoked); grill-with-docs is user-invoked and cannot be reached from a skill — never offer it, tell the user they can run it themselves if they want a longer session.
Unattended mode
When the run carries a stage-result nonce (see references/handoff-report.md), nobody is watching: follow references/unattended-mode.md. Every AskUserQuestion in this skill becomes a default (recorded in beat/changes/<name>/decisions/assumed.md), a decision brief (references/decision-brief.md, blocked-on: decision), or an environmental stop (blocked-on: env). The per-skill table in that reference says which. For design specifically: the preset defaults to what explore declared or standard; a Key Decision that meets the ADR gate is written as an ADR without asking; one that is not covered by the issue's locked decisions and still needs the human becomes a brief.
Rationalization Prevention
| 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 GLOSSARY.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. |
| "Explore said minimal, but I'd rather ask the preset question anyway" | Explore already listed the facts. Asking again is the double question the exit was meant to remove. Use it and say so. |
| "I'll pick minimal to keep this quick" | Minimal is for changes whose files sit in one module with nothing left to decide. If you can't list that, it's standard. Apply will upgrade a wrong guess, at the cost of a second verify. |
Red Flags — STOP if you catch yourself:
- Writing any file before invoking using-git-worktrees
- Generating proposal sections without having invoked brainstorming
- Creating design.md without invoking brainstorming first
- Writing gherkin scenarios that contain internal method names, numeric thresholds, or implementation constants
- Writing gherkin scenarios that use project-specific domain terms not defined in
GLOSSARY.md - Modifying an existing feature in
beat/features/without creating a.origbackup first - Writing tasks.md or
- [ ]checkboxes — tasks belong in/beat:plan - Skipping the spec self-review because the artifact "looks fine"
- Writing a Key Decision in
design.mdthat meets all three ADR conditions without offering an ADR - Thinking "this prerequisite isn't needed for this particular change"
- Leaving
presetout of status.yaml, or choosing one without the facts that justify it
Process Flow
digraph design {
"Select or create change" [shape=box];
"Invoke using-git-worktrees" [shape=box, style=bold];
"Preset already set?" [shape=diamond];
"Ask artifact preset" [shape=box];
"Write preset to status.yaml" [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];
"Glossary\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" -> "Preset already set?";
"Preset already set?" -> "Ask artifact preset" [label="no"];
"Preset already set?" -> "Write preset to status.yaml" [label="yes (explore / user)"];
"Ask artifact preset" -> "Write preset to status.yaml";
"Write preset to status.yaml" -> "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?" -> "Glossary\nfour-challenge check" [label="yes"];
"Includes gherkin?" -> "Includes design?" [label="no"];
"Glossary\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-worktreesto isolate this change.- If
beat/changes/<name>/doesn't exist: create it (directory + status.yaml + features/.gitkeep) - If it exists: use it, read
status.yaml(schema:references/status-schema.md) to find remaining artifacts
From an issue (locked decisions): when the change was dispatched from an issue, or the input names one, read the issue body. The section
## 已定案(不要重新討論)(or## Decided (do not reopen)) lists decisions the human already made: copy them intodesign.mdKey Decisions as given, never re-ask or re-argue them, and skip the ADR gate for them (the human can lift one into an ADR later).## 先不做is the out-of-scope list.## User storiesand## 測試 seam, when present, are the raw material for gherkin and for the@e2e/@behaviorsplit. Seereferences/unattended-mode.md"Locked decisions". Writeissue: "#<n>"(the tracker's reference form, the same string a route node'sissuefield carries) into the new change'sstatus.yaml(schema:references/status-schema.md): later phases find the change by it in unattended mode, and/beat:archivewrites the PR'sClosesline from it.From a route node: when the input names a route node (
<route>/<node-id>, or/beat:explorejust handed one off), readbeat/routes/<route>/route.mdandstatus.yaml(schema:references/route-schema.md). Writeroute: <route>/<node-id>into the new change's status.yaml, and addchange: <name>to that node in the route's status.yaml. The route's "Decisions so far" and theresultfiles of the node's blockers are context for every artifact below.- If
Settle the preset
Read
status.yaml. Ifpresetis already set (explore declaredsmalland namedminimalortechnical, or the user passed one), use it and skip the question — say which preset is in effect and why. When the change comes from an issue, the body's出口:line (written by/beat:to-issue, e.g.出口:small(preset minimal)) names the preset the same way; use it and skip the question. English issues carry the same line asExit:(e.g.Exit: small (preset minimal)); read it the same way. Skip the question only when the line names a preset: a bare出口:standard/Exit: standardmeans no preset was agreed, so ask as below (unattended mode takesstandard).Otherwise, 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
Write
preset: <full|standard|minimal|technical|custom>tostatus.yaml. The preset does more than pick artifacts:minimalandtechnicalrun/beat:planwith a test-coverage review only and/beat:verifywith one independent subagent, and/beat:applyupgrades them tostandardif the diff outgrowsconfig.yamlpreset_upgradethresholds. Say this in one line when a small preset is chosen.Mark skipped artifacts as
skippedinstatus.yaml. Tasks are always set topending— task breakdown happens in/beat:plan. Updatephaseto match the latest completed spec artifact after each creation.Create artifacts in pipeline order
Read
beat/config.yamlif it exists (schema:references/config-schema.md). Uselanguagefor artifact output language, injectcontext, and apply matchingrulesper artifact type throughout creation.For each artifact to create (pipeline order: proposal -> gherkin -> design):
- Read all completed artifacts for context
- Invoke prerequisites per the table above (brainstorming before proposal/design — invoke once before the first artifact that needs it; skip for subsequent artifacts if already invoked)
- Gherkin only — before writing scenarios: run the glossary four-challenge check (see sub-step below)
- Create the artifact following the patterns below
- After writing: run the spec self-review (see sub-step below); fix issues inline
- Update
status.yaml - Show brief progress: "Created
<artifact>" - If context is critically unclear, pause and ask
glossary four-challenge check (before writing gherkin):
Read
GLOSSARY.mdif 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
GLOSSARY.mdinline as findings emerge (never batch). Insert each entry where "Where a new entry goes" inreferences/context-format.mdsays — a term goes inside its## <group>section (or## Language), never appended to the end of the file after## Flagged ambiguities:- Against the glossary — the term conflicts with an existing entry? Call it out, resolve, update.
- Sharpen fuzzy — the term is vague or overloaded (e.g. "account" meaning Customer and User both)? Pick the canonical word, list the others as
_Avoid_. - Stress-test — invent edge-case scenarios that probe term boundaries; force the boundary to be named.
- Cross-reference code — the user states behaviour that the code contradicts? Surface, decide source of truth, update the loser.
Grilling: when a term fails a challenge and the inline resolution is not enough, call
grilling(to sharpen the question) anddomain-modeling(to write the glossary entry and any ADR) directly — both are model-invoked skills from mattpocock/skills. If they are not installed, continue inline with the four challenges. Do not offergrill-with-docs: it is user-invoked and unreachable from here; the user can run it themselves for a longer session.Every project-specific term used in scenarios MUST exist in
GLOSSARY.mdbefore 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:
- Placeholder scan — any
TBD,TODO, incomplete sections, vague requirements? - Internal consistency — do sections contradict each other? Does the design match the gherkin scenarios?
- Scope check — is this focused enough for a single implementation plan, or does it need decomposition?
- Ambiguity check — could any requirement be read two different ways? If so, pick one and make it explicit.
Fix issues inline. No need to re-review the fix — just fix and move on.
Artifact patterns:
- Proposal: Sections:
## Why,## What Changes,## Impact Gherkin:
- Read
references/feature-writing.mdfor conventions on description blocks, scenario organization, and review checklist - Before writing, scan
beat/features/**/*.featureandbeat/changes/*/features/*.feature(excluding current change) — readFeature:andScenario:lines to map existing coverage, deep-read only overlapping features, avoid duplication and align style - From an approved prototype: if the change's route node is blocked by a
prototypenode whoseresultnames an approved variant, read that result and the stories it lists. Every story state becomes a scenario or is written under an explicitOut of scopenote in the feature description — none is silently dropped.@e2escenarios may point@covered-byat the story's play function. - SpecFlow style, tags
@happy-path/@error-handling/@edge-case - Feature description carries PRD essence (must include: As a / I want / So that)
- Every scenario MUST have a testing layer tag:
@e2e(user journeys needing a running app) or@behavior(business logic testable without a full app; default@behavior) - Write at behavior level — describe what the system does ("Monthly billing adjusts for short months"), not how a function works ("calculateNextTransactionDate clamps to last day")
- Use business language — no concrete numeric thresholds, code method names, or internal constants (API contract constants are OK as shared vocabulary)
- Repeated Given steps use
Background: - Tags must serve a filtering purpose — no decorative tags
- BDD focuses on high-level acceptance; boundary values and algorithm details belong in unit tests
- If option 4 (Technical) was chosen, skip gherkin entirely
Modifying existing features (see
references/testing-conventions.mdfor full mechanism):When the scan reveals scenarios in
beat/features/that need modification:- Conflict check: scan
beat/features/**/*.feature.orig— if a.origexists for the same file, another change is modifying it. Warn and stop. - Backup: rename the original in
beat/features/to.feature.orig(hides it from BDD runners) - Copy: copy the original content to
beat/changes/<name>/features/<file>.feature - Modify: edit the scenario(s) in the
changes/copy (add/change/remove steps, add new scenarios) - Record: add the original path to
status.yamlgherkin.modifiedarray
New features that don't modify existing scenarios go directly to
changes/<name>/features/as before.- Read
- Design:
- Sections:
## Approach,## Key Decisions,## Components - ADR gate — for each Key Decision, run the three-condition check from
references/adr-format.md:- Hard to reverse? (cost of changing your mind is meaningful)
- Surprising without context? (future reader will wonder "why on earth this way?")
- Result of a real trade-off? (genuine alternatives existed)
A decision copied from the issue's locked section skips this gate. Otherwise, if all three hold, use AskUserQuestion tool: "This decision meets the ADR gate. Lift it into
docs/adr/?" (unattended: this is a decision the human has not made — write a brief perreferences/decision-brief.md, stop withblocked-on: decision, and write the ADR only after the reply). On Yes, follow "Before writing an ADR" inreferences/adr-format.md(apply configrules.adr; use the project'sdocs/adr/TEMPLATE.mdif it exists, otherwise Beat's front-matter template withsource: beat/changes/<name>), write the 1-3 sentence ADR, increment the highest existing number indocs/adr/by one, and add a cross-reference fromdesign.md(See docs/adr/NNNN-slug.md). On No, continue. Createdocs/adr/lazily — only on first ADR. Track every ADR (and any project ADR index) written here — step 5 commits them with the change.
- Sensitivity check (unattended mode only): read
sensitivefrombeat/config.yaml(schema:references/config-schema.md). Compare every Key Decision and every pathdesign.mdnames againstsituations(judge it the way the ADR gate is judged — a plausible match is a match) andpaths(any touch). Write the verdict tobeat/changes/<name>/decisions/sensitive.md(yes|no, what matched,design) and assensitive=yes|noin the handoff suffix; say in one line which situation matched. - Architecture hub suggestion (Layer 3, advisory) — if
design.mddescribes a module-level architecture change (new module, module split/merge, changed module boundaries or responsibilities), suggest updatingbeat/ARCHITECTURE.md— the hub diagram, modules table, or constraints (seereferences/architecture-format.md). Create the hub lazily, only if the project is multi-module and the user accepts. Never block.
- Sections:
Lint, commit artifacts and show final status
Run
node <skill-dir>/scripts/lint-features.mjs beat/changes/<name>/features/*.feature(only when gherkin was written) andnode <skill-dir>/scripts/validate-beat.mjs --file beat/changes/<name>/status.yaml(seereferences/lint-tools.md). Fix every error before committing; warnings are advisory here because tests do not exist yet.Commit the change directory and every living-documentation file this run wrote or modified — they are one unit of work:
git add beat/changes/<name>/ git add docs/adr/NNNN-<slug>.md # each ADR written at the ADR gate, by file name git add docs/adr/<index-file> # only if the project keeps an ADR index there and this run updated it git add GLOSSARY.md # glossary entries from the four-challenge check git add beat/ARCHITECTURE.md # if the hub suggestion was accepted git commitStage files by name, never
docs/adr/as a directory: a path is staged whengit statusshows it and this run wrote it; a path that is absent, unchanged, or was modified by the user outside this run stays unstaged. Leaving an ADR or glossary entry uncommitted while the change directory is committed splits the work across two commits — or loses it.Use a descriptive message, e.g. "design(
<name>): 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) Preset: <preset> Route: <route>/<node> (or "standalone") Tasks: pending (run `/beat:plan` to create execution plan) Spec artifacts ready! Review them, then run `/beat:plan` for task breakdown.Then end with the handoff block from
references/handoff-report.md(next: /beat:plan <name>). When decision briefs were written, printing them is the last action of the run: every brief in full, immediately above the block, then the block, then the suffix withdecision=D1(orD1,D2),blocked-on: decision — <one line>,nextthis same command. Nothing after the suffix.
Guardrails
- Gherkin is mandatory by default -- only skip for purely technical changes (option 4: Technical)
- Ask upfront which artifacts to include (don't ask per artifact)
- If change already exists with some artifacts done, only create remaining
- If context is critically unclear, ask -- but prefer reasonable defaults to keep momentum
- Verify each artifact file exists after writing before proceeding
- Tasks are NOT created in this skill — they are handled by
/beat:plan - Always write
presetto status.yaml — later phases read it to decide their strength - Never copy implementation code from a
prototype/<node-id>branch into the change; only stories and the approved-variant note carry over
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

