From spec-forge
Lightweight project decomposition skill. Analyzes project scope through a brief interview and determines whether the project should be treated as a single feature or split into multiple sub-features. For multi-split projects, generates a project manifest listing sub-features, dependencies, and execution order.
How this skill is triggered — by the user, by Claude, or both
Slash command
/spec-forge:decomposeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze project scope and determine whether to treat it as a single feature or split into multiple sub-features before entering the spec chain.
Analyze project scope and determine whether to treat it as a single feature or split into multiple sub-features before entering the spec chain.
Scan the project to understand what exists:
@../shared/project-context.md
Execute PC.1 (Project Discovery) and PC.3 (Project Profile):
ideas/{feature-name}/draft.md exists — if found, read it for context on scopeThe project profile informs the decomposition: a monorepo with multiple apps has different split criteria than a single-purpose API. Summarize what you learned in 2-3 sentences. Do not present this to the user — it is internal context for the interview.
Use AskUserQuestion to understand project boundaries. Ask 3-5 rounds of questions, adapting based on answers.
Round 1 — The Shape:
Round 2 — Boundaries:
Round 3+ — Clarification (if needed):
Do NOT force answers. If the user says "I'm not sure", use your judgment based on what you know.
Based on the interview, determine: single or multi-split.
Split heuristics:
| Signal | Verdict |
|---|---|
| Multiple distinct systems (backend + frontend + pipeline) | Multi-split |
| Repeated "and also..." in scope description | Multi-split |
| No single clear purpose — hard to name in one phrase | Multi-split |
| Would produce 10+ PRD requirement groups | Multi-split |
| Single cohesive system with tightly coupled components | Single |
| Fully specifiable in a few paragraphs | Single |
| No architectural decisions needed at the boundary level | Single |
| Too unclear even after interview — need PRD to discover structure | Single (suggest running /spec-forge:prd first to clarify scope) |
Good split characteristics:
Rationale requirement: After reaching a verdict, you MUST produce a formal Split Rationale block (see Step 4a / 4b). Do not present the verdict without justification. The rationale must name which heuristics fired with project-specific evidence, and explicitly state why the alternative verdict was rejected.
If the project is a single feature:
Split Rationale:
Verdict: Single feature
Signals that fired (Single):
✓ [Signal text from heuristics table] — [one sentence of project-specific evidence]
✓ [Signal text] — [evidence]
Signals evaluated but not triggered (Multi-split):
✗ [Signal text] — [why it does not apply to this project]
✗ [Signal text] — [why it does not apply]
Why not Multi-split: [1-2 sentences explaining why splitting would be premature,
over-engineered, or harmful for this specific project — reference scope, coupling,
team size, or other concrete factors from the interview.]
If the project should be split:
Split Rationale:
Verdict: Multi-split ({N} sub-features)
Signals that fired (Multi-split):
✓ [Signal text from heuristics table] — [one sentence of project-specific evidence]
✓ [Signal text] — [evidence]
Signals evaluated but not triggered (Single):
✗ [Signal text] — [why it does not apply to this project]
✗ [Signal text] — [why it does not apply]
Why not Single: [1-2 sentences explaining what makes this project structurally
too broad or heterogeneous to treat as one feature — e.g., "The auth subsystem
and payment pipeline share no code paths and require independent deployment cycles."]
Boundary rationale:
{sub-feature-1} | {sub-feature-2}: [Why this is a clean cut point — what the
interface between them is and why each side is independently specifiable]
[Add one line per boundary if N > 2]
docs/project-{name}.mdManifest format:
The file MUST start with a FEATURE_MANIFEST comment block, followed by human-readable content:
<!-- FEATURE_MANIFEST
{sub-feature-1}
{sub-feature-2}
{sub-feature-3}
END_MANIFEST -->
# Project: {name}
## Sub-Features
### 1. {sub-feature-1}
- **Description**: {what this sub-feature covers}
- **Dependencies**: {none, or list of sub-feature names it depends on}
- **Scope**: {brief scope summary}
### 2. {sub-feature-2}
- **Description**: ...
- **Dependencies**: ...
- **Scope**: ...
## Execution Order
{Ordered list with dependency and parallelism notes}
## Cross-Cutting Concerns
{Shared data models, conventions, infrastructure, or other things that span multiple sub-features}
FEATURE_MANIFEST rules:
<!-- FEATURE_MANIFEST comment. The spec-forge chain parser reads from the top and will fail to recognize the manifest if anything precedes it.user-auth, payment-processing)docs/ — each sub-feature gets docs/{name}/tech-design.mdDisplay the result:
If single:
Scope analysis complete: {name}
Verdict: Single feature
Next: Running spec chain (Tech Design + Feature Specs)
If multi-split:
Scope analysis complete: {name}
Verdict: {N} sub-features
Manifest: docs/project-{name}.md
Sub-features:
1. {sub-feature-1} — {one-line description}
2. {sub-feature-2} — {one-line description}
...
Next: Run the full chain for all sub-features:
/spec-forge {name}
npx claudepluginhub tercel/tercel-claude-plugins --plugin spec-forgeProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.