11 KiB
description
| description |
|---|
| Task list template for feature implementation |
Tasks: [FEATURE NAME]
Input: Design documents from /specs/[###-feature-name]/
Prerequisites: plan.md (required), spec.md (required for user stories), research.md, data-model.md, contracts/
Tests: The examples below include test tasks. Tests are OPTIONAL - only include them if explicitly requested in the feature specification.
Organization: Tasks are grouped by user story to enable independent implementation and testing of each story.
Self-Containment: Tasks will be executed by a DIFFERENT model than the one generating them. The generating model has deep reasoning capability and can infer implementation details from sparse descriptions. The implementing model does NOT — it needs explicit, self-contained context embedded directly in each task. Every non-trivial task must include an indented Context block (see examples below).
Format: [ID] [P?] [Story] Description
- [P]: Can run in parallel (different files, no dependencies)
- [Story]: Which user story this task belongs to (e.g., US1, US2, US3)
- Include exact file paths in descriptions
Path Conventions
- Single project:
src/,tests/at repository root - Web app:
backend/src/,frontend/src/ - Mobile:
api/src/,ios/src/orandroid/src/ - Paths shown below assume single project - adjust based on plan.md structure
Phase 1: Setup (Shared Infrastructure)
Purpose: Project initialization and basic structure
Phase Context:
-
Files modified in this phase:
package.json(project manifest),src/(directory structure),.eslintrc(linting config) -
Key types/interfaces used: None yet — this phase creates the foundation
-
Codebase conventions to follow: [Reference project guidelines or existing patterns]
-
T001 Create project structure per implementation plan
-
T002 Initialize [language] project with [framework] dependencies
-
T003 [P] Configure linting and formatting tools
Phase 2: Foundational (Blocking Prerequisites)
Purpose: Core infrastructure that MUST be complete before ANY user story can be implemented
⚠️ CRITICAL: No user story work can begin until this phase is complete
Examples of foundational tasks (adjust based on your project):
- T004 Setup database schema and migrations framework
- T005 [P] Implement authentication/authorization framework
- T006 [P] Setup API routing and middleware structure
- T007 Create base models/entities that all stories depend on
- T008 Configure error handling and logging infrastructure
- T009 Setup environment configuration management
Checkpoint: Foundation ready - user story implementation can now begin in parallel
Phase 3: User Story 1 - [Title] (Priority: P1) 🎯 MVP
Goal: [Brief description of what this story delivers]
Independent Test: [How to verify this story works on its own]
Phase Context:
- Files modified in this phase: [Full paths with one-line description of each file's current purpose]
- Key types/interfaces used: [Quoted signatures of types that tasks in this phase depend on]
- Codebase conventions to follow: [Naming patterns, error handling style, import grouping, test patterns — reference specific files as examples]
Tests for User Story 1 (OPTIONAL - only if tests requested) ⚠️
NOTE: Write these tests FIRST, ensure they FAIL before implementation
- T010 [P] [US1] Contract test for [endpoint] in tests/contract/test_[name].py
- T011 [P] [US1] Integration test for [user journey] in tests/integration/test_[name].py
Implementation for User Story 1
-
T012 [P] [US1] Create [Entity1] model in src/models/[entity1].py
Context:
- Existing code references: [Quote the exact interface/base class this model must implement, with fenced code block]
- Target file state:
src/models/directory exists after T001; no other models present yet - Expected implementation pattern: [Show code skeleton or reference similar pattern in codebase, e.g., "Follow the same pattern as
BaseEntityinsrc/models/base.pylines 10-45"] - Key decisions and gotchas: [Non-obvious constraints from spec/research, e.g., "Must use UUID for primary key per spec NFR-3" or "Field
namehas max length 255 per data-model.md"] - Acceptance signal: [Concrete verification, e.g., "
python -m pytest tests/unit/test_entity1.pypasses" or "File imports successfully with no errors"]
-
T013 [P] [US1] Create [Entity2] model in src/models/[entity2].py
-
T014 [US1] Implement [Service] in src/services/[service].py (depends on T012, T013)
-
T015 [US1] Implement [endpoint/feature] in src/[location]/[file].py
-
T016 [US1] Add validation and error handling
-
T017 [US1] Add logging for user story 1 operations
Checkpoint: At this point, User Story 1 should be fully functional and testable independently
Phase 4: User Story 2 - [Title] (Priority: P2)
Goal: [Brief description of what this story delivers]
Independent Test: [How to verify this story works on its own]
Tests for User Story 2 (OPTIONAL - only if tests requested) ⚠️
- T018 [P] [US2] Contract test for [endpoint] in tests/contract/test_[name].py
- T019 [P] [US2] Integration test for [user journey] in tests/integration/test_[name].py
Implementation for User Story 2
- T020 [P] [US2] Create [Entity] model in src/models/[entity].py
- T021 [US2] Implement [Service] in src/services/[service].py
- T022 [US2] Implement [endpoint/feature] in src/[location]/[file].py
- T023 [US2] Integrate with User Story 1 components (if needed)
Checkpoint: At this point, User Stories 1 AND 2 should both work independently
Phase 5: User Story 3 - [Title] (Priority: P3)
Goal: [Brief description of what this story delivers]
Independent Test: [How to verify this story works on its own]
Tests for User Story 3 (OPTIONAL - only if tests requested) ⚠️
- T024 [P] [US3] Contract test for [endpoint] in tests/contract/test_[name].py
- T025 [P] [US3] Integration test for [user journey] in tests/integration/test_[name].py
Implementation for User Story 3
- T026 [P] [US3] Create [Entity] model in src/models/[entity].py
- T027 [US3] Implement [Service] in src/services/[service].py
- T028 [US3] Implement [endpoint/feature] in src/[location]/[file].py
Checkpoint: All user stories should now be independently functional
[Add more user story phases as needed, following the same pattern]
Phase N: Polish & Cross-Cutting Concerns
Purpose: Improvements that affect multiple user stories
- TXXX [P] Documentation updates in docs/
- TXXX Code cleanup and refactoring
- TXXX Performance optimization across all stories
- TXXX [P] Additional unit tests (if requested) in tests/unit/
- TXXX Security hardening
- TXXX Run quickstart.md validation
Dependencies & Execution Order
Phase Dependencies
- Setup (Phase 1): No dependencies - can start immediately
- Foundational (Phase 2): Depends on Setup completion - BLOCKS all user stories
- User Stories (Phase 3+): All depend on Foundational phase completion
- User stories can then proceed in parallel (if staffed)
- Or sequentially in priority order (P1 → P2 → P3)
- Polish (Final Phase): Depends on all desired user stories being complete
User Story Dependencies
- User Story 1 (P1): Can start after Foundational (Phase 2) - No dependencies on other stories
- User Story 2 (P2): Can start after Foundational (Phase 2) - May integrate with US1 but should be independently testable
- User Story 3 (P3): Can start after Foundational (Phase 2) - May integrate with US1/US2 but should be independently testable
Within Each User Story
- Tests (if included) MUST be written and FAIL before implementation
- Models before services
- Services before endpoints
- Core implementation before integration
- Story complete before moving to next priority
Parallel Opportunities
- All Setup tasks marked [P] can run in parallel
- All Foundational tasks marked [P] can run in parallel (within Phase 2)
- Once Foundational phase completes, all user stories can start in parallel (if team capacity allows)
- All tests for a user story marked [P] can run in parallel
- Models within a story marked [P] can run in parallel
- Different user stories can be worked on in parallel by different team members
Parallel Example: User Story 1
# Launch all tests for User Story 1 together (if tests requested):
Task: "Contract test for [endpoint] in tests/contract/test_[name].py"
Task: "Integration test for [user journey] in tests/integration/test_[name].py"
# Launch all models for User Story 1 together:
Task: "Create [Entity1] model in src/models/[entity1].py"
Task: "Create [Entity2] model in src/models/[entity2].py"
Implementation Strategy
MVP First (User Story 1 Only)
- Complete Phase 1: Setup
- Complete Phase 2: Foundational (CRITICAL - blocks all stories)
- Complete Phase 3: User Story 1
- STOP and VALIDATE: Test User Story 1 independently
- Deploy/demo if ready
Incremental Delivery
- Complete Setup + Foundational → Foundation ready
- Add User Story 1 → Test independently → Deploy/Demo (MVP!)
- Add User Story 2 → Test independently → Deploy/Demo
- Add User Story 3 → Test independently → Deploy/Demo
- Each story adds value without breaking previous stories
Parallel Team Strategy
With multiple developers:
- Team completes Setup + Foundational together
- Once Foundational is done:
- Developer A: User Story 1
- Developer B: User Story 2
- Developer C: User Story 3
- Stories complete and integrate independently
Notes
- [P] tasks = different files, no dependencies
- [Story] label maps task to specific user story for traceability
- Each user story should be independently completable and testable
- Verify tests fail before implementing
- Commit after each task or logical group
- Stop at any checkpoint to validate story independently
- Avoid: vague tasks, same file conflicts, cross-story dependencies that break independence
- Every non-trivial task MUST include an indented Context block with: existing code references (quoted signatures), target file state, expected implementation pattern (code skeleton or analogous pattern reference), key decisions/gotchas, and a concrete acceptance signal
- Every phase MUST include a Phase Context summary listing: files modified, key types/interfaces used, and codebase conventions to follow
- Context blocks should source information from plan artifacts (contracts, data-model, research, quickstart) first, and only read source files when the plan references an existing pattern that needs to be matched