- Status: Accepted
- Date: 2026-03-15
- Decision makers: Sebastien (plugin author)
- Supersedes: ADR-008 (Archetype Architecture)
- Depends on: ADR-007 (becoming mechanism), ADR-004 (orchestration pattern), ADR-009 (namespace compliance)
ADR-008 correctly identified the problem: ACD's session commands assume software deliverables. The plugin needs to serve non-software work (marketing, strategy, content, architecture, discovery) with the same discipline.
ADR-008's solution — archetype-prefixed commands (dev-*, craft-*) — was wrong for two reasons:
- "Craft" is not the opposite of "dev." A developer crafts code. Every expert crafts work in their domain. The word describes quality, not type.
- Prefixes multiply commands. Two archetypes = 18 commands. Three = 27. This contradicts the "one intelligent assistant" vision.
Re-reading the ACD specification, the six first-class artifacts use universal language:
- User-Facing Behavior: "Observable outcomes, often as BDD scenarios" — not always
- Acceptance Criteria: "Test cases and evaluation designs" — broader than tests
- The four-step cycle: "human drafts, agent critiques, human decides, agent refines" — domain-agnostic
- Session unit: "One scenario. One session. One commit." — one unit of work, not necessarily BDD
The workflow order is universal:
/acd:specify— capture intent with hypothesis, generate artifacts/acd:validate-spec— check consistency across artifacts/acd:start-session— load one unit of work- (work happens)
/acd:review— quality gate before committing/acd:end-session— validate, summarize, commit/acd:finalize— archive, check hypothesis
What changes per domain is artifact format and quality gate, not the workflow.
| Artifact | Software | Marketing | Architecture |
|---|---|---|---|
| Intent | "We believe [code change] will [outcome]" | "We believe [positioning] will [outcome]" | "We believe [structure] will [outcome]" |
| Behavior | BDD scenario (Gherkin) | Audience response criteria | Quality attribute scenario |
| Constraints | Musts / Must Nots / Preferences | Brand guidelines, tone, audience | System boundaries, budgets |
| Acceptance | Tests pass | Review rubric pass | Constraint compliance |
| System constraints | Performance, security | Legal, brand, compliance | Organizational standards |
| Implementation | Code | Document / copy / visual | Decision record / diagram |
The expert context doesn't need configuration flags or menus. It emerges from the intent:
- "Add rate limiting to /api/search" → software engineering
- "Write a positioning brief for the agency" → marketing
- "Create a landing page for the new service" → software + marketing + design
The expert-summoning skill already maps domains to the right expertise. The commands just need to let the intent drive which skills load.
The concern about mixing domains (loading marketing context during a CSS fix) is solved by Claude Code's existing loading hierarchy:
- Plugin skills — descriptions always loaded (one line each, cheap). Full content loads only when relevant to the session.
- Project CLAUDE.md — lean root (~50 lines: goal, expert contexts). Always loaded.
- Subdirectory CLAUDE.md — domain-specific decisions. Loaded only when working in that directory.
See docs/c4-context-architecture.md for the full diagram.
This means a software session doesn't pay for marketing decisions, and a marketing session doesn't pay for TypeScript conventions — even within the same project.
Revert the dev-* prefix. The plugin has ONE workflow:
commands/
├── specify.md → /acd:specify
├── validate-spec.md → /acd:validate-spec
├── start-session.md → /acd:start-session
├── review.md → /acd:review
├── end-session.md → /acd:end-session
├── fix.md → /acd:fix
├── finalize.md → /acd:finalize
├── maintenance.md → /acd:maintenance
├── security-audit.md → /acd:security-audit
├── init-project.md → /acd:init-project
├── evaluate.md → /acd:evaluate
├── learn.md → /acd:learn
└── become.md → /acd:become
No --context flags. No project-level configuration menus. The workflow:
- User writes intent in
/acd:specify— includes hypothesis - The intent's domain signals which skills are relevant
- Claude loads the relevant skills (descriptions are always available; full content loads on demand)
- Review agents check from the relevant expert perspectives
- If the intent spans multiple domains (landing page = engineering + marketing + design), multiple skills load
For a pure software project, this is identical to the current experience. The expert context machinery is invisible — skills load because they're relevant, not because someone configured a context.
Each practice/technology skill can include a session profile section defining:
- Artifact formats — what "behavior" and "acceptance criteria" look like in this domain
- Review criteria — what review agents check
- Quality gate — what must pass before committing
- Session unit — what constitutes one deliverable unit
Adding a new domain = adding a skill (via /acd:learn). No command changes ever needed.
For projects spanning multiple domains (e.g., a website needing both engineering and marketing):
project/
├── CLAUDE.md ← lean: goal + available expert contexts
├── src/
│ └── .claude/CLAUDE.md ← engineering-specific: stack, conventions
├── docs/marketing/
│ └── .claude/CLAUDE.md ← marketing-specific: positioning, audience
└── docs/content/
└── .claude/CLAUDE.md ← content-specific: editorial, pillars
Claude Code auto-discovers subdirectory CLAUDE.md files when working in those directories. The root stays lean. Each domain's decisions load only when you're working there.
- 13 commands, not 18+. No growth with new domains.
- True "one intelligent assistant." Same commands, any domain.
- Becoming mechanism integration.
/acd:learncreates a skill → workflow extends to that domain automatically. - Aligns with MinimumCD spec. One universal workflow, domain-adapted.
- Token efficient. Skills load on demand. Subdirectory CLAUDE.md files scope project decisions.
Superseded. Its problem analysis was correct. Its solution (archetype prefixes) was premature specialization replaced by intent-driven expert context.
Remains valid. The name: field removal and filename-derived names are correct regardless of what the filenames are.
/acd:start-sessionworks for software — identical to current behavior/acd:start-sessionworks for non-software — loads appropriate skills and review criteria/acd:specifygenerates domain-appropriate artifacts based on the intent's domain/acd:reviewdispatches domain-appropriate review based on the session's expert context- A project with multiple expert contexts can switch between them across sessions
- Adding a new expert context requires only a new skill — no command changes
- A software-only project experiences zero additional friction from the expert context system