Vertical Slice Splitter
Invoke as $vertical-slice-splitter.
Decompose a destination doc or spec into independently grabbable vertical-slice issue cards.
Process
- Read input document from
$ARGUMENTS. - Explore codebase: file structure, layers, modules, test boundaries.
- Identify layers the work crosses (DB, service, API, UI, infra, etc.).
- Decompose into vertical slices — each crosses all relevant layers for its scope.
- Reject horizontal-only slices. Slice 000 must be a tracer bullet: visible and testable end-to-end.
- For each slice: title, description (2-5 sentences), testable acceptance criteria, dependency edges (
blocks/blocked-by), label (afk|human-review|pair). - Build DAG, validate acyclic, identify parallel groups.
- If
issues/has existing content, archive it todocs/history/archive/YYYY-MM-DD/HHMMSS/issues/. - Write
issues/DAG.md(mermaid graph + summary table + parallel groups) andissues/000-[slug].mdthroughissues/NNN-[slug].md.
Issue File Format
# [Title]
**Label:** afk | human-review | pair
**Blocks:** 001, 003
**Blocked by:** none
## Description
[2-5 sentences]
## Acceptance Criteria
- [ ] ...
## Notes
[Optional implementation hints]
Constraints
- Every slice independently grabbable (one agent or session)
- No slice larger than one focused session
- First slice (000) is always the tracer bullet
- DAG must be acyclic
afkslices must have unambiguous acceptance criteria (no taste judgment)
Alignment Page
Follow the shared alignment-page convention via the packaged convention resolver; output path is alignment/vertical-slice-splitter-{topic}.html. By default, report results inline and write only this skill's normal durable artifacts; create an alignment page only when explicitly requested or when a concrete clarification/review need cannot be handled cleanly inline.
Default Shipping Contract
Follow the shared shipping contract convention in CLAUDE.md.