* Add /vertical-slice skill, prototype overhaul, and workflow integration - Add /vertical-slice skill for pre-production validation (Phase 4 gate) - Overhaul /prototype skill with two-mode design: concept prototype (Phase 1) vs vertical slice (Phase 4), with clearer differentiation and higher standards for VS - Update prototyper agent to own both prototype and vertical-slice workflows - Add prototype-report.md and vertical-slice-report.md output templates - Update WORKFLOW-GUIDE, quick-start, skills-reference, agent-coordination-map, and skill-flow-diagrams to fully integrate both skills into the 7-phase pipeline - Remove orphaned empty quick-prototype/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * sync v1 counts + polish Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add entity inventory flow, relax vertical-slice gate, improve UX authoring prompts - /asset-spec: new Phase 0b entity & screen inventory when no argument and no existing inventory — reads GDDs/art-bible, proposes categorized list, writes design/assets/entity-inventory.md collaboratively - /asset-spec: entity/character target falls back to inline user description when no source doc exists, rather than failing - /gate-check: vertical slice changed from blocking to CONCERNS-only when absent; built-but-broken slice still fails; adds entity inventory as gate artifact - /ux-design: convert inline approval prompts to AskUserQuestion for structured option capture at key authoring decision points - workflow-catalog.yaml: entity-inventory step added to pre-production; UX spec min_count raised to 3; vertical-slice and prototype marked required: false with updated descriptions - .gitignore: exclude marrow/ eval tooling directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Add missing AskUserQuestion widgets to 7 skills Audit found 11 decision points across 7 skills where structured option prompts were missing — using plain text, auto-selection, or no gate at all. Skills patched: - create-epics: per-epic approval + producer CONCERNS verdict - sprint-plan: producer CONCERNS verdict with scope/timeline options - milestone-review: AT RISK / OFF TRACK producer verdicts require acknowledgement - retrospective: existing-retro handling converted from plain text [A]/[B] - quick-design: classification confirmation + draft approve/revise/redirect - tech-debt add mode: category (6 options) + effort (S/M/L/XL) structured capture - regression-suite: no-arg mode selection instead of silent auto-detect - hotfix: severity confirmation gate before workflow begins Also added AskUserQuestion to allowed-tools headers for retrospective, quick-design, tech-debt, regression-suite, and hotfix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Prep v1 stable: fix WORKFLOW-GUIDE counts, stale agent names, and skill model fields - WORKFLOW-GUIDE.md: correct agent count (48→49), skill count (66/68→73), add 6 missing skills to Appendix B, fix Creative category count (2→4), replace 3 non-existent agent names with correct ue-*/unity-* specialists, add missing godot-csharp/gdextension specialists to hierarchy, fix production/stories/ paths → production/epics/ - coordination-rules.md: replace "not yet used" with opt-in env var note - quick-start.md: rename duplicate "Validate the concept" label → "Prototype the mechanic" - skill-flow-diagrams.md: remove duplicate legacy UX pipeline section - All 62 skills missing model: field now have explicit model: sonnet Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: comprehensive skill audit — consistency, UX, and flow gaps Two-pass audit fixing ~35 bugs across 41 files. Pre-production flow: - Brainstorm next-steps split into Path A (design-first) and Path B (prototype-first) — eliminates "prototype after architecture" confusion - /architecture-review added to pre-production flow in brainstorm and create-architecture handoffs - gate-check traceability check corrected to requirements-traceability.md - dev-story TR registry error now points to /architecture-review (not /create-epics) - start now writes production/stage.txt on first onboarding AskUserQuestion gaps filled: - balance-check, code-review, hotfix, day-one-patch, consistency-check all gain closing widgets and/or missing allowed-tools declarations - hotfix git branch creation now requires user confirmation - sprint-plan review-mode setup moved to Phase 0 (before gates run) - team-combat gains architecture→implementation approval gate - design-review APPROVED path consolidated from 3 widgets to 1 multiSelect All 9 team-* skills: - Phase 0 review-mode resolution added (solo/lean/full now respected) - team-audio output path fixed (design/gdd/ → design/audio/) - team-level final doc compilation delegated to level-designer subagent - team-narrative localization-lead added to composition list - team-qa sprint path fixed (flat files, not directories) - team-release NO-GO override captures written justification - team-live-ops Cancel verdict now explicitly BLOCKED Other fixes: - Art bible path standardized to design/art/art-bible.md (3 wrong refs) - AD-PHASE-GATE added to lean-mode skip list in director-gates.md - design-system duplicate 5d heading fixed; skeleton decline path added; mandatory agent spawns now respect review mode - story-readiness acceptance criteria thresholds now type-aware - create-stories gains multi-ADR and no-ADR handling guidance - consistency-check creates docs/consistency-failures.md on first run - retrospective frontmatter bash injection replaced with explicit Bash call - smoke-check ls -t gains PowerShell fallback - Conventional Commits format documented in coding-standards.md - gate-check: ADR acceptance gate, QA plan check, chain-of-verification tool-action requirement all added Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: expose --review flag in argument-hints for all team-* skills All 9 team-* skills already implement Phase 0 review-mode resolution internally (full/lean/solo), but none advertised [--review full|lean|solo] in their argument-hint. Users had no way to discover the per-run override. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: add SECURITY.md with coordinated disclosure policy Defines scope, reporting process (GitHub private vulnerability reporting), contributor security guidelines for hooks/skills/agents, and 90-day coordinated disclosure timeline. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: add CONTRIBUTING.md with framework contribution guidelines Covers what PRs are welcome, skill/hook/agent technical requirements, the collaborative principle, testing expectations, commit format, and platform compatibility requirements. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: add v1.0.0-beta → v1.0 upgrade section to UPGRADING.md Documents the 17 commits since the beta tag: new /vertical-slice gate, entity inventory flow in /map-systems, AskUserQuestion widgets across 7 skills, --review flag exposure on team-* skills, bug fixes (#21, #36, #42, #43, #45), and the new CONTRIBUTING.md and SECURITY.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
19 KiB
name, description, argument-hint, user-invocable, allowed-tools, model
| name | description | argument-hint | user-invocable | allowed-tools | model |
|---|---|---|---|---|---|
| architecture-decision | Creates an Architecture Decision Record (ADR) documenting a significant technical decision, its context, alternatives considered, and consequences. Every major technical choice should have an ADR. | [title] [--review full|lean|solo] | true | Read, Glob, Grep, Write, Edit, Task, AskUserQuestion | sonnet |
When this skill is invoked:
0. Parse Arguments — Detect Retrofit Mode
Resolve the review mode (once, store for all gate spawns this run):
- If
--review [full|lean|solo]was passed → use that - Else read
production/review-mode.txt→ use that value - Else → default to
lean
See .claude/docs/director-gates.md for the full check pattern.
If the argument starts with retrofit followed by a file path
(e.g., /architecture-decision retrofit docs/architecture/adr-0001-event-system.md):
Enter retrofit mode:
- Read the existing ADR file completely.
- Identify which template sections are present by scanning headings:
## Status— BLOCKING if missing:/story-readinesscannot check ADR acceptance## ADR Dependencies— HIGH if missing: dependency ordering breaks## Engine Compatibility— HIGH if missing: post-cutoff risk unknown## GDD Requirements Addressed— MEDIUM if missing: traceability lost
- Present to the user:
## Retrofit: [ADR title] File: [path] Sections already present (will not be touched): ✓ Status: [current value, or "MISSING — will add"] ✓ [section] Missing sections to add: ✗ Status — BLOCKING (stories cannot validate ADR acceptance without this) ✗ ADR Dependencies — HIGH ✗ Engine Compatibility — HIGH - Ask: "Shall I add the [N] missing sections? I will not modify any existing content."
- If yes:
- For Status: ask the user — "What is the current status of this decision?" Options: "Proposed", "Accepted", "Deprecated", "Superseded by ADR-XXXX"
- For ADR Dependencies: ask — "Does this decision depend on any other ADR? Does it enable or block any other ADR or epic?" Accept "None" for each field.
- For Engine Compatibility: read the engine reference docs (same as Step 1 below) and ask the user to confirm the domain. Then generate the table with verified data.
- For GDD Requirements Addressed: ask — "Which GDD systems motivated this decision? What specific requirement in each GDD does this ADR address?"
- Append each missing section to the ADR file using the Edit tool.
- Never modify any existing section. Only append or fill absent sections.
- After adding all missing sections, update the ADR's
## Datefield if it is absent. - Suggest: "Run
/architecture-reviewto re-validate coverage now that this ADR has its Status and Dependencies fields."
If NOT in retrofit mode, proceed to Step 1 below (normal ADR authoring).
No-argument guard: If no argument was provided (title is empty), ask before running Phase 0:
"What technical decision are you documenting? Please provide a short title (e.g.,
event-system-architecture,physics-engine-choice)."
Use the user's response as the title, then proceed to Step 1.
1. Load Engine Context (ALWAYS FIRST)
Before doing anything else, establish the engine environment:
-
Read
docs/engine-reference/[engine]/VERSION.mdto get:- Engine name and version
- LLM knowledge cutoff date
- Post-cutoff version risk levels (LOW / MEDIUM / HIGH)
-
Identify the domain of this architecture decision from the title or user description. Common domains: Physics, Rendering, UI, Audio, Navigation, Animation, Networking, Core, Input, Scripting.
-
Read the corresponding module reference if it exists:
docs/engine-reference/[engine]/modules/[domain].md -
Read
docs/engine-reference/[engine]/breaking-changes.md— flag any changes in the relevant domain that post-date the LLM's training cutoff. -
Read
docs/engine-reference/[engine]/deprecated-apis.md— flag any APIs in the relevant domain that should not be used. -
Display a knowledge gap warning before proceeding if the domain carries MEDIUM or HIGH risk:
⚠️ ENGINE KNOWLEDGE GAP WARNING Engine: [name + version] Domain: [domain] Risk Level: HIGH — This version is post-LLM-cutoff. Key changes verified from engine-reference docs: - [Change 1 relevant to this domain] - [Change 2] This ADR will be cross-referenced against the engine reference library. Proceed with verified information only — do NOT rely solely on training data.If no engine has been configured yet, prompt: "No engine is configured. Run
/setup-enginefirst, or tell me which engine you are using."
2. Determine the next ADR number
Scan docs/architecture/ for existing ADRs to find the next number.
3. Gather context
Read related code, existing ADRs, and relevant GDDs from design/gdd/.
3a: Architecture Registry Check (BLOCKING gate)
Read docs/registry/architecture.yaml. Extract entries relevant to this ADR's
domain and decision (grep by system name, domain keyword, or state being touched).
Present any relevant stances to the user before the collaborative design begins, as locked constraints:
## Existing Architectural Stances (must not contradict)
State Ownership:
player_health → owned by health-system (ADR-0001)
Interface: HealthComponent.current_health (read-only float)
→ If this ADR reads or writes player health, it must use this interface.
Interface Contracts:
damage_delivery → signal pattern (ADR-0003)
Signal: damage_dealt(amount, target, is_crit)
→ If this ADR delivers or receives damage events, it must use this signal.
Forbidden Patterns:
✗ autoload_singleton_coupling (ADR-0001)
✗ direct_cross_system_state_write (ADR-0000)
→ The proposed approach must not use these patterns.
If the user's proposed decision would contradict any registered stance, surface the conflict immediately:
"⚠️ Conflict: This ADR proposes [X], but ADR-[NNNN] established that [Y] is the accepted pattern for this purpose. Proceeding without resolving this will produce contradictory ADRs and inconsistent stories. Options: (1) Align with the existing stance, (2) Supersede ADR-[NNNN] with an explicit replacement, (3) Explain why this case is an exception."
Do not proceed to Step 4 (collaborative design) until any conflict is resolved or explicitly accepted as an intentional exception.
4. Guide the decision collaboratively
Before asking anything, derive the skill's best guesses from the context already
gathered (GDDs read, engine reference loaded, existing ADRs scanned). Then present
a confirm/adjust prompt using AskUserQuestion — not open-ended questions.
Derive assumptions first:
- Problem: Infer from the title + GDD context what decision needs to be made
- Alternatives: Propose 2-3 concrete options from engine reference + GDD requirements
- Dependencies: Scan existing ADRs for upstream dependencies; assume None if unclear
- GDD linkage: Extract which GDD systems the title directly relates to
- Status: Always
Proposedfor new ADRs — never ask the user what the status is
Scope of assumptions tab: Assumptions cover only: problem framing, alternative approaches, upstream dependencies, GDD linkage, and status. Schema design questions (e.g., "How should spawn timing work?", "Should data be inline or external?") are NOT assumptions — they are design decisions belonging to a separate step after the assumptions are confirmed. Do not include schema design questions in the assumptions AskUserQuestion widget.
After assumptions are confirmed, if the ADR involves schema or data design choices, use a separate multi-tab AskUserQuestion to ask each design question independently before drafting.
Present assumptions with AskUserQuestion:
Here's what I'm assuming before drafting:
Problem: [one-sentence problem statement derived from context]
Alternatives I'll consider:
A) [option derived from engine reference]
B) [option derived from GDD requirements]
C) [option from common patterns]
GDD systems driving this: [list derived from context]
Dependencies: [upstream ADRs if any, otherwise "None"]
Status: Proposed
[A] Proceed — draft with these assumptions
[B] Change the alternatives list
[C] Adjust the GDD linkage
[D] Add a performance budget constraint
[E] Something else needs changing first
Do not generate the ADR until the user confirms assumptions or provides corrections.
After engine specialist and TD reviews return (Step 5.5/5.6), if unresolved
decisions remain, present each one as a separate AskUserQuestion with the proposed
options as choices plus a free-text escape:
Decision: [specific unresolved point]
[A] [option from specialist review]
[B] [alternative option]
[C] Different approach — I'll describe it
ADR Dependencies — derive from existing ADRs, then confirm:
- Does this decision depend on any other ADR not yet Accepted?
- Does it unlock or unblock any other ADR or epic?
- Does it block any specific epic from starting?
Record answers in the ADR Dependencies section. Write "None" for each field if no constraints apply.
5. Generate the ADR
Following this format:
# ADR-[NNNN]: [Title]
## Status
[Proposed | Accepted | Deprecated | Superseded by ADR-XXXX]
## Date
[Date of decision]
## Engine Compatibility
| Field | Value |
|-------|-------|
| **Engine** | [e.g. Godot 4.6] |
| **Domain** | [Physics / Rendering / UI / Audio / Navigation / Animation / Networking / Core / Input] |
| **Knowledge Risk** | [LOW / MEDIUM / HIGH — from VERSION.md] |
| **References Consulted** | [List engine-reference docs read, e.g. `docs/engine-reference/godot/modules/physics.md`] |
| **Post-Cutoff APIs Used** | [Any APIs from post-LLM-cutoff versions this decision depends on, or "None"] |
| **Verification Required** | [Specific behaviours to test before shipping, or "None"] |
## ADR Dependencies
| Field | Value |
|-------|-------|
| **Depends On** | [ADR-NNNN (must be Accepted before this can be implemented), or "None"] |
| **Enables** | [ADR-NNNN (this ADR unlocks that decision), or "None"] |
| **Blocks** | [Epic/Story name — cannot start until this ADR is Accepted, or "None"] |
| **Ordering Note** | [Any sequencing constraint that isn't captured above] |
## Context
### Problem Statement
[What problem are we solving? Why does this decision need to be made now?]
### Constraints
- [Technical constraints]
- [Timeline constraints]
- [Resource constraints]
- [Compatibility requirements]
### Requirements
- [Must support X]
- [Must perform within Y budget]
- [Must integrate with Z]
## Decision
[The specific technical decision made, described in enough detail for someone
to implement it.]
### Architecture Diagram
[ASCII diagram or description of the system architecture this creates]
### Key Interfaces
[API contracts or interface definitions this decision creates]
## Alternatives Considered
### Alternative 1: [Name]
- **Description**: [How this would work]
- **Pros**: [Advantages]
- **Cons**: [Disadvantages]
- **Rejection Reason**: [Why this was not chosen]
### Alternative 2: [Name]
- **Description**: [How this would work]
- **Pros**: [Advantages]
- **Cons**: [Disadvantages]
- **Rejection Reason**: [Why this was not chosen]
## Consequences
### Positive
- [Good outcomes of this decision]
### Negative
- [Trade-offs and costs accepted]
### Risks
- [Things that could go wrong]
- [Mitigation for each risk]
## GDD Requirements Addressed
| GDD System | Requirement | How This ADR Addresses It |
|------------|-------------|--------------------------|
| [system-name].md | [specific rule, formula, or performance constraint from that GDD] | [how this decision satisfies it] |
## Performance Implications
- **CPU**: [Expected impact]
- **Memory**: [Expected impact]
- **Load Time**: [Expected impact]
- **Network**: [Expected impact, if applicable]
## Migration Plan
[If this changes existing code, how do we get from here to there?]
## Validation Criteria
[How will we know this decision was correct? What metrics or tests?]
## Related Decisions
- [Links to related ADRs]
- [Links to related design documents]
5.5. Engine Specialist Validation — Before saving, spawn the primary engine specialist via Task to validate the drafted ADR:
- Read
.claude/docs/technical-preferences.mdEngine Specialistssection to get the primary specialist - If no engine is configured (
[TO BE CONFIGURED]), skip this step - Spawn
subagent_type: [primary specialist]with: the ADR's Engine Compatibility section, Decision section, Key Interfaces, and the engine reference docs path. Ask them to:- Confirm the proposed approach is idiomatic for the pinned engine version
- Flag any APIs or patterns that are deprecated or changed post-training-cutoff
- Identify engine-specific risks or gotchas not captured in the current ADR draft
- If the specialist identifies a blocking issue (wrong API, deprecated approach, engine version incompatibility): revise the Decision and Engine Compatibility sections accordingly, then confirm the changes with the user before proceeding
- If the specialist finds minor notes only: incorporate them into the ADR's Risks subsection
Review mode check — apply before spawning TD-ADR:
solo→ skip. Note: "TD-ADR skipped — Solo mode." Proceed to Step 5.7 (GDD sync check).lean→ skip (not a PHASE-GATE). Note: "TD-ADR skipped — Lean mode." Proceed to Step 5.7 (GDD sync check).full→ spawn as normal.
5.6. Technical Director Strategic Review — After the engine specialist validation, spawn technical-director via Task using gate TD-ADR (.claude/docs/director-gates.md):
- Pass: the ADR file path (or draft content), engine version, domain, any existing ADRs in the same domain
- The TD validates architectural coherence (is this decision consistent with the whole system?) — distinct from the engine specialist's API-level check
- If CONCERNS or REJECT: revise the Decision or Alternatives sections accordingly before proceeding
5.7. GDD Sync Check — Before presenting the write approval, scan all GDDs referenced in the "GDD Requirements Addressed" section for naming inconsistencies with the ADR's Key Interfaces and Decision sections (renamed signals, API methods, or data types). If any are found, surface them as a prominent warning block immediately before the write approval — not as a footnote:
⚠️ GDD SYNC REQUIRED
[gdd-filename].md uses names this ADR has renamed:
[old_name] → [new_name_from_adr]
[old_name_2] → [new_name_2_from_adr]
The GDD must be updated before or alongside writing this ADR to prevent
developers reading the GDD from implementing the wrong interface.
If no inconsistencies: skip this block silently.
- Write approval — Use
AskUserQuestion:
If GDD sync issues were found:
- "ADR draft is complete. How would you like to proceed?"
- [A] Write ADR + update GDD in the same pass
- [B] Write ADR only — I'll update the GDD manually
- [C] Not yet — I need to review further
If no GDD sync issues:
- "ADR draft is complete. May I write it?"
- [A] Write ADR to
docs/architecture/adr-[NNNN]-[slug].md - [B] Not yet — I need to review further
- [A] Write ADR to
If yes to any write option, write the file, creating the directory if needed. For option [A] with GDD update: also update the GDD file(s) to use the new names.
- Update Architecture Registry
Scan the written ADR for new architectural stances that should be registered:
- State it claims ownership of
- Interface contracts it defines (signal signatures, method APIs)
- Performance budget it claims
- API choices it makes explicitly
- Patterns it bans (Consequences → Negative or explicit "do not use X")
Present candidates:
Registry candidates from this ADR:
NEW state ownership: player_stamina → stamina-system
NEW interface contract: stamina_depleted signal
NEW performance budget: stamina-system: 0.5ms/frame
NEW forbidden pattern: polling stamina each frame (use signal instead)
EXISTING (referenced_by update only): player_health → already registered ✅
Registry append logic: When writing to docs/registry/architecture.yaml, do NOT assume sections are empty. The file may already have entries from previous ADRs written in this session. Before each Edit call:
- Read the current state of
docs/registry/architecture.yaml - Find the correct section (state_ownership, interfaces, forbidden_patterns, api_decisions)
- Append the new entry AFTER the last existing entry in that section — do not try to replace a
[]placeholder that may no longer exist - If the section has entries already, use the closing content of the last entry as the
old_stringanchor, and append the new entry after it
BLOCKING — do not write to docs/registry/architecture.yaml without explicit user approval.
Ask using AskUserQuestion:
- "May I update
docs/registry/architecture.yamlwith these [N] new stances?"- Options: "Yes — update the registry", "Not yet — I want to review the candidates", "Skip registry update"
Only proceed if the user selects yes. If yes: append new entries. Never modify existing entries — if a stance is
changing, set the old entry to status: superseded_by: ADR-[NNNN] and add the new entry.
6. Closing Next Steps
After the ADR is written (and registry optionally updated), close with AskUserQuestion.
Before generating the widget:
- Read
docs/registry/architecture.yaml— check if any priority ADRs are still unwritten (look for ADRs flagged in technical-preferences.md or systems-index.md as prerequisites) - Check if all prerequisite ADRs are now written. If yes, include a "Start writing GDDs" option.
- List ALL remaining priority ADRs as individual options — not just the next one or two.
Widget format:
ADR-[NNNN] written and registry updated. What would you like to do next?
[1] Write [next-priority-adr-name] — [brief description from prerequisites list]
[2] Write [another-priority-adr] — [brief description] (include ALL remaining ones)
[N] Start writing GDDs — run `/design-system [first-undesigned-system]` (only show if all prerequisite ADRs are written)
[N+1] Stop here for this session
If there are no remaining priority ADRs and no undesigned GDD systems, offer only "Stop here" and suggest running /architecture-review in a fresh session.
Always include this fixed notice in the closing output (do NOT omit it):
To validate ADR coverage against your GDDs, open a fresh Claude Code session and run
/architecture-review.Never run
/architecture-reviewin the same session as/architecture-decision. The reviewing agent must be independent of the authoring context to give an unbiased assessment. Running it here would invalidate the review.
Update any stories that were Status: Blocked pending this ADR to Status: Ready.