fix(composer,symphony): use \${CLAUDE_PLUGIN_ROOT} for plugin-internal paths

Per plugin-structure spec, plugin-internal references in component
files (commands, agents, skills) must use \${CLAUDE_PLUGIN_ROOT} so
they resolve correctly regardless of where the plugin is installed
(local repo, marketplace cache, npm-installed, etc.).

Updated:
- symphony/skills/symphony-init/SKILL.md: WORKFLOW.md template ref
- composer/skills/ui-system/SKILL.md: all six template refs in the
  Write phase
- composer/skills/composer/SKILL.md: added a Templates section that
  enumerates each phase's template path with \${CLAUDE_PLUGIN_ROOT},
  plus the ADR template ref in phase 8

Composer's CLAUDE.md gains a clarifying note that templates/design-
system/SKILL.md and templates/interaction-design/SKILL.md are template
skeletons, not actual plugin skills — they're copied into a consuming
project's .claude/skills/ at install-time of the design system. Per
the auto-discovery rule (scans skills/ only), they are not loaded as
plugin skills.

Removed empty composer/agents/ directory (composer has no agents;
workers are owned by symphony).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
movq
2026-04-29 22:02:03 -05:00
parent fe41d19c12
commit 0cdbb1b4a4
4 changed files with 45 additions and 8 deletions

View File

@@ -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/<slug>-design-system/` and
`.claude/skills/<slug>-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

View File

@@ -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 `<TBD: ...>` 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 45 — 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: <stack hypothesis>. 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-<slug>.md`. Compose a summary `architecture.md` referencing the ADRs.
### Phase 9 — Stories

View File

@@ -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/<slug>-design-system/SKILL.md` from `templates/design-system/SKILL.md` — substitute slug, project name, and all interview answers.
2. `.claude/skills/<slug>-design-system/tokens.ts` from `templates/design-system/tokens.ts` — fill in all values; `<TBD>` for skipped phases.
3. `.claude/skills/<slug>-design-system/components.md` from `templates/design-system/components.md` — vocabulary matched to `ia.md`.
4. `.claude/skills/<slug>-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/<slug>-design-system/SKILL.md` from `${CLAUDE_PLUGIN_ROOT}/templates/design-system/SKILL.md` — substitute slug, project name, and all interview answers.
2. `.claude/skills/<slug>-design-system/tokens.ts` from `${CLAUDE_PLUGIN_ROOT}/templates/design-system/tokens.ts` — fill in all values; `<TBD>` for skipped phases.
3. `.claude/skills/<slug>-design-system/components.md` from `${CLAUDE_PLUGIN_ROOT}/templates/design-system/components.md` — vocabulary matched to `ia.md`.
4. `.claude/skills/<slug>-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: