Break features into tracer bullet stories and tasks. Trigger: decompose, break down, split feature, tracer bullet, stories, tasks, decompose feature
/decompose -- Tracer Bullet Feature Decomposition
Philosophy
Big features fail because they are built as big features. Decompose into tracer bullets -- each bullet cuts through all layers, delivers user-visible value, and fits in one PR. The first bullet is always the simplest end-to-end path that proves the architecture works. Every subsequent bullet adds one behavior.
Anti-Pattern: Horizontal Decomposition
WRONG (horizontal): RIGHT (tracer bullets):
Epic: User Authentication Epic: User Authentication
Tasks: Bullet 1: Login (tracer bullet)
1. Build all database models - Schema: users table
2. Build all service functions - Logic: validate credentials
3. Build all API endpoints - API: POST /login
4. Build all frontend components - Test: login happy path
5. Wire everything together
Bullet 2: Login failures
Each task touches one layer. - Logic: invalid credentials error
No deliverable until step 5. - API: 401 response
- Test: invalid password, missing user
Bullet 3: Registration
- Schema: add email unique constraint
- Logic: create user + hash password
- API: POST /register
- Test: register + then login
Workflow
Step 1: Gather Feature Description
/decompose [feature description] --> decompose the described feature
/decompose --> interactive, ask for feature details
Gather:
What is the feature? (high-level goal)
Who are the users? (personas, API consumers, other services)
What are the acceptance criteria? (how do we know it is done)
Feature goal understood
Users/consumers identified
Acceptance criteria defined
Step 2: Identify All Behaviors
List every user-facing behavior the feature provides:
Category
Examples
Happy paths
Main success scenarios, primary use cases
Error paths
What goes wrong, how errors surface to users
Edge cases
Boundary conditions, empty states, limits
Admin/config
Settings, feature flags, operational controls
Do not filter yet. List everything, then order.
Happy paths listed
Error paths listed
Edge cases listed
Admin/config behaviors listed
Step 3: Order by Complexity
Sort behaviors from simplest to most complex:
Simplest behavior = first tracer bullet (Bullet 1) -- the thinnest end-to-end path