diff --git a/composer/CLAUDE.md b/composer/CLAUDE.md index 3c06af0..046993b 100644 --- a/composer/CLAUDE.md +++ b/composer/CLAUDE.md @@ -48,6 +48,19 @@ not a setting picked at the start. Stack choices made before the design system, interaction model, and mocks lock you into shapes that don't fit the problem. +## Note on templates + +`templates/design-system/SKILL.md` and `templates/interaction-design/SKILL.md` +are **templates**, not actual skills of this plugin. The plugin's auto-loaded +skills live in `skills/` (`composer`, `composer-mocks`, `ui-system`); the +templates under `templates/` are skeletons that the `ui-system` skill copies +into a *consuming project's* `.claude/skills/-design-system/` and +`.claude/skills/-interaction-design/` directories. + +Per Claude Code's plugin auto-discovery, only `SKILL.md` files under `skills/` +are loaded as plugin skills — `templates/` is a regular subdirectory and is +ignored by discovery. + ## Layout - `commands/composer.md` — main entry, state-aware. Continues from the first diff --git a/composer/skills/composer/SKILL.md b/composer/skills/composer/SKILL.md index 359b726..4319655 100644 --- a/composer/skills/composer/SKILL.md +++ b/composer/skills/composer/SKILL.md @@ -18,6 +18,30 @@ This skill has four modes, dispatched by which command invoked it: - **review** (from `/composer-review`) — convene a council on an artifact. - **load** (from `/composer-load`) — push stories to the project's tracker. +## Templates + +Each phase drafts its artifact from a skeleton template at +`${CLAUDE_PLUGIN_ROOT}/templates/`. Read the matching template before +writing the artifact; use it as the structural skeleton, fill in +content from interview answers, and substitute `` markers +for anything skipped or deferred. + +| Phase | Template path | +|---|---| +| concept | `${CLAUDE_PLUGIN_ROOT}/templates/concept.md` | +| users | `${CLAUDE_PLUGIN_ROOT}/templates/users.md` | +| requirements | `${CLAUDE_PLUGIN_ROOT}/templates/requirements.md` | +| nfr | `${CLAUDE_PLUGIN_ROOT}/templates/nfr.md` | +| ia | `${CLAUDE_PLUGIN_ROOT}/templates/ia.md` | +| flows | `${CLAUDE_PLUGIN_ROOT}/templates/flows.md` | +| architecture | `${CLAUDE_PLUGIN_ROOT}/templates/architecture.md` | +| ADR (one per decision) | `${CLAUDE_PLUGIN_ROOT}/templates/adr/0000-template.md` | +| stories | `${CLAUDE_PLUGIN_ROOT}/templates/stories.md` | +| roadmap | `${CLAUDE_PLUGIN_ROOT}/templates/roadmap.md` | + +(Phases 4–5 — design system and interaction design — are owned by the +`ui-system` skill, which has its own template references.) + ## Phase order and artifacts | # | Phase | Artifact path | Skill | @@ -197,7 +221,7 @@ That points at: . Convening a council to pressure-test: ``` Run the council. Their synthesis informs ADRs. Draft each ADR (one per major -decision) using `adr/0000-template.md`; user signs off; write to +decision) using `${CLAUDE_PLUGIN_ROOT}/templates/adr/0000-template.md`; user signs off; write to `adr/NNNN-.md`. Compose a summary `architecture.md` referencing the ADRs. ### Phase 9 — Stories diff --git a/composer/skills/ui-system/SKILL.md b/composer/skills/ui-system/SKILL.md index b97d657..aa65f53 100644 --- a/composer/skills/ui-system/SKILL.md +++ b/composer/skills/ui-system/SKILL.md @@ -377,12 +377,12 @@ and reflect them back as a posture sentence rather than picking presets. After the interview ends, write all six files in one batch: -1. `.claude/skills/-design-system/SKILL.md` from `templates/design-system/SKILL.md` — substitute slug, project name, and all interview answers. -2. `.claude/skills/-design-system/tokens.ts` from `templates/design-system/tokens.ts` — fill in all values; `` for skipped phases. -3. `.claude/skills/-design-system/components.md` from `templates/design-system/components.md` — vocabulary matched to `ia.md`. -4. `.claude/skills/-interaction-design/SKILL.md` from `templates/interaction-design/SKILL.md` — fill in all interview answers. -5. `docs/planning/design-system.md` from `templates/planning-pointers/design-system.md`. -6. `docs/planning/interaction-design.md` from `templates/planning-pointers/interaction-design.md`. +1. `.claude/skills/-design-system/SKILL.md` from `${CLAUDE_PLUGIN_ROOT}/templates/design-system/SKILL.md` — substitute slug, project name, and all interview answers. +2. `.claude/skills/-design-system/tokens.ts` from `${CLAUDE_PLUGIN_ROOT}/templates/design-system/tokens.ts` — fill in all values; `` for skipped phases. +3. `.claude/skills/-design-system/components.md` from `${CLAUDE_PLUGIN_ROOT}/templates/design-system/components.md` — vocabulary matched to `ia.md`. +4. `.claude/skills/-interaction-design/SKILL.md` from `${CLAUDE_PLUGIN_ROOT}/templates/interaction-design/SKILL.md` — fill in all interview answers. +5. `docs/planning/design-system.md` from `${CLAUDE_PLUGIN_ROOT}/templates/planning-pointers/design-system.md`. +6. `docs/planning/interaction-design.md` from `${CLAUDE_PLUGIN_ROOT}/templates/planning-pointers/interaction-design.md`. Then tell the user: diff --git a/symphony/skills/symphony-init/SKILL.md b/symphony/skills/symphony-init/SKILL.md index 8b5ff88..231179a 100644 --- a/symphony/skills/symphony-init/SKILL.md +++ b/symphony/skills/symphony-init/SKILL.md @@ -89,7 +89,7 @@ Keep the interview short. Anything that has a sensible default should default. If the project's CLAUDE.md doesn't exist yet, create it with just this section. Do not invent other content. -2. **`./WORKFLOW.md`** — copy from the plugin's `templates/WORKFLOW.md`, with +2. **`./WORKFLOW.md`** — copy from `${CLAUDE_PLUGIN_ROOT}/templates/WORKFLOW.md`, with detected values substituted (tracker.kind, active_states, terminal_states, concurrency cap, hook commands appropriate to the project's build system). If a `WORKFLOW.md` already exists, show the diff and ask before overwriting.