# Guide: Splitting Features into Tasks **Purpose**: How to decompose features into atomic subtasks **Last Updated**: 2026-01-11 --- ## Prerequisites - Feature request understood - Context bundle loaded (project standards, patterns) --- ## Steps ### 1. Identify Atomic Boundaries Break feature into tasks that are: - Completable in 1-2 hours - Have single, clear outcome - Testable independently - Don't overlap with other tasks **Bad**: "Implement authentication" (too big) **Good**: "Create password hashing utility" (atomic) --- ### 2. Map Dependencies For each task, ask: - What must exist before this can start? - What files/APIs does this need? ``` 01 → no deps (can start immediately) 02 → depends_on: ["01"] 03 → depends_on: ["01", "02"] ``` --- ### 3. Identify Parallel Tasks Mark `parallel: true` when: - Task doesn't modify shared files - Task doesn't depend on runtime state from other tasks - Multiple agents could work simultaneously Example parallel tasks: - Writing independent unit tests - Creating isolated utility functions - Documentation for separate features --- ### 4. Define Acceptance Criteria Binary pass/fail conditions only: - "JWT tokens signed with RS256" ✓ - "Tests pass" ✓ - "Code is clean" ✗ (subjective) --- ### 5. Specify Deliverables Concrete files/endpoints: - `src/auth/hash.ts` - `POST /api/login` - `tests/auth.test.ts` --- ### 6. Reference Context Files Don't embed descriptions. Reference paths: ```json "context_files": [ ".opencode/context/development/backend/auth/jwt-patterns.md" ] ``` --- ## Verification Checklist - [ ] Each task completable in 1-2 hours? - [ ] Dependencies create valid execution order? - [ ] Parallel tasks correctly identified? - [ ] Acceptance criteria are binary? - [ ] Deliverables are concrete files/endpoints? --- ## Common Mistakes | Mistake | Fix | |---------|-----| | Task too big | Split into 2-3 smaller tasks | | Circular deps | Re-order or merge tasks | | Missing deps | Run `task-cli.ts validate` | | Vague criteria | Make binary pass/fail | --- ## Related - `../standards/task-schema.md` - JSON field reference - `managing-tasks.md` - Lifecycle workflow - `../lookup/task-commands.md` - CLI reference