# Tasks: [FEATURE NAME] **Input**: Design documents from `/specs/[###-feature-name]/` **Prerequisites**: plan.md (required), research.md, data-model.md, contracts/ ## Execution Flow (main) ``` 1. Load plan.md from feature directory → If not found: ERROR "No implementation plan found" → Extract: tech stack, libraries, structure 2. Load optional design documents: → data-model.md: Extract entities → model tasks → contracts/: Each file → contract test task → research.md: Extract decisions → setup tasks 3. Generate tasks by category: → Setup: project init, dependencies, linting → Tests: contract tests, integration tests → Core: models, services, CLI commands → Integration: DB, middleware, logging → Polish: unit tests, performance, docs 4. Apply task rules: → Different files = mark [P] for parallel → Same file = sequential (no [P]) → Tests before implementation (TDD) 5. Number tasks sequentially (T001, T002...) 6. Generate dependency graph 7. Create parallel execution examples 8. Validate task completeness: → All contracts have tests? → All entities have models? → All endpoints implemented? 9. Return: SUCCESS (tasks ready for execution) ``` ## Format: `[ID] [P?] Description` - **[P]**: Can run in parallel (different files, no dependencies) - 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/` or `android/src/` - Paths shown below assume single project - adjust based on plan.md structure ## Phase 3.1: Setup - [ ] T001 Create project structure per implementation plan - [ ] T002 Initialize [language] project with [framework] dependencies - [ ] T003 [P] Configure linting and formatting tools ## Phase 3.2: Tests First (TDD) ⚠️ MUST COMPLETE BEFORE 3.3 **CRITICAL: These tests MUST be written and MUST FAIL before ANY implementation** - [ ] T004 [P] Contract test POST /api/users in tests/contract/test_users_post.py - [ ] T005 [P] Contract test GET /api/users/{id} in tests/contract/test_users_get.py - [ ] T006 [P] Integration test user registration in tests/integration/test_registration.py - [ ] T007 [P] Integration test auth flow in tests/integration/test_auth.py ## Phase 3.3: Core Implementation (ONLY after tests are failing) - [ ] T008 [P] User model in src/models/user.py - [ ] T009 [P] UserService CRUD in src/services/user_service.py - [ ] T010 [P] CLI --create-user in src/cli/user_commands.py - [ ] T011 POST /api/users endpoint - [ ] T012 GET /api/users/{id} endpoint - [ ] T013 Input validation - [ ] T014 Error handling and logging ## Phase 3.4: Integration - [ ] T015 Connect UserService to DB - [ ] T016 Auth middleware - [ ] T017 Request/response logging - [ ] T018 CORS and security headers ## Phase 3.5: Polish - [ ] T019 [P] Unit tests for validation in tests/unit/test_validation.py - [ ] T020 Performance tests (<200ms) - [ ] T021 [P] Update docs/api.md - [ ] T022 Remove duplication - [ ] T023 Run manual-testing.md ## Dependencies - Tests (T004-T007) before implementation (T008-T014) - T008 blocks T009, T015 - T016 blocks T018 - Implementation before polish (T019-T023) ## Parallel Example ``` # Launch T004-T007 together: Task: "Contract test POST /api/users in tests/contract/test_users_post.py" Task: "Contract test GET /api/users/{id} in tests/contract/test_users_get.py" Task: "Integration test registration in tests/integration/test_registration.py" Task: "Integration test auth in tests/integration/test_auth.py" ``` ## Notes - [P] tasks = different files, no dependencies - Verify tests fail before implementing - Commit after each task - Avoid: vague tasks, same file conflicts ## Task Generation Rules *Applied during main() execution* 1. **From Contracts**: - Each contract file → contract test task [P] - Each endpoint → implementation task 2. **From Data Model**: - Each entity → model creation task [P] - Relationships → service layer tasks 3. **From User Stories**: - Each story → integration test [P] - Quickstart scenarios → validation tasks 4. **Ordering**: - Setup → Tests → Models → Services → Endpoints → Polish - Dependencies block parallel execution ## Validation Checklist *GATE: Checked by main() before returning* - [ ] All contracts have corresponding tests - [ ] All entities have model tasks - [ ] All tests come before implementation - [ ] Parallel tasks truly independent - [ ] Each task specifies exact file path - [ ] No task modifies same file as another [P] task