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:
@@ -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
|
||||
|
||||
@@ -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 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: <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
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user