--- description: Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts. handoffs: - label: Analyze For Consistency agent: speckit.analyze prompt: Run a project analysis for consistency send: true - label: Implement Project agent: speckit.implement prompt: Start the implementation in phases send: true --- ## User Input ```text $ARGUMENTS ``` You **MUST** consider the user input before proceeding (if not empty). ## Outline 1. **Setup**: Run `.specify/scripts/bash/check-prerequisites.sh --json` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\''m Groot' (or double-quote if possible: "I'm Groot"). 2. **Load design documents**: Read from FEATURE_DIR: - **Required**: `plan.md` (tech stack, libraries, structure), `spec.md` (user stories with priorities), `ux_reference.md` (experience source of truth) - **Optional**: `data-model.md` (entities), `contracts/` (API endpoints), `research.md` (decisions), `quickstart.md` (test scenarios) - **Required when present in plan output**: ADR artifacts such as `docs/architecture.md` or feature-local architecture decision files containing `[DEF:id:ADR]` nodes - Note: Not all projects have all documents. Generate tasks based on what's available. 3. **Execute task generation workflow**: - Load `plan.md` and extract tech stack, libraries, project structure - Load `spec.md` and extract user stories with their priorities (P1, P2, P3, etc.) - Load ADR nodes and build a decision-memory inventory: `DecisionId`, `@RATIONALE`, `@REJECTED`, dependent modules - If `data-model.md` exists: Extract entities and map to user stories - If `contracts/` exists: Map endpoints to user stories - If `research.md` exists: Extract decisions for setup tasks - Generate tasks organized by user story (see Task Generation Rules below) - Generate dependency graph showing user story completion order - Create parallel execution examples per user story - Validate task completeness (each user story has all needed tasks, independently testable) - Validate guardrail continuity: no task may realize an ADR path named in `@REJECTED` 4. **Generate `tasks.md`**: Use `.specify/templates/tasks-template.md` as structure, fill with: - Correct feature name from `plan.md` - Phase 1: Setup tasks (project initialization) - Phase 2: Foundational tasks (blocking prerequisites for all user stories) - Phase 3+: One phase per user story (in priority order from `spec.md`) - Each phase includes: story goal, independent test criteria, tests (if requested), implementation tasks - Final Phase: Polish & cross-cutting concerns - All tasks must follow the strict checklist format (see Task Generation Rules below) - Clear file paths for each task - Dependencies section showing story completion order - Parallel execution examples per story - Implementation strategy section (MVP first, incremental delivery) - Decision-memory notes for guarded tasks when ADRs or known traps apply 5. **Report**: Output path to generated `tasks.md` and summary: - Total task count - Task count per user story - Parallel opportunities identified - Independent test criteria for each story - Suggested MVP scope (typically just User Story 1) - Format validation: Confirm ALL tasks follow the checklist format (checkbox, ID, labels, file paths) - ADR propagation summary: which ADRs were inherited into task guardrails and which paths were rejected Context for task generation: $ARGUMENTS The `tasks.md` should be immediately executable - each task must be specific enough that an LLM can complete it without additional context. ## Task Generation Rules **CRITICAL**: Tasks MUST be organized by user story to enable independent implementation and testing. **Tests are OPTIONAL**: Only generate test tasks if explicitly requested in the feature specification or if user requests TDD approach. ### UX & Semantic Preservation (CRITICAL) - **Source of Truth**: `ux_reference.md` for UX, `.ai/standards/semantics.md` for code, and ADR artifacts for upstream technology decisions. - **Violation Warning**: If any task violates UX, ADR guardrails, or GRACE standards, flag it immediately. - **Verification Task (UX)**: Add a task at the end of each Story phase: `- [ ] Txxx [USx] Verify implementation matches ux_reference.md (Happy Path & Errors)` - **Verification Task (Audit)**: Add a mandatory audit task at the end of each Story phase: `- [ ] Txxx [USx] Acceptance: Perform semantic audit & algorithm emulation by Tester` - **Guardrail Rule**: If an ADR or contract says `@REJECTED`, task text must not schedule that path as implementation work. ### Checklist Format (REQUIRED) Every task MUST strictly follow this format: ```text - [ ] [TaskID] [P?] [Story?] Description with file path ``` **Format Components**: 1. **Checkbox**: ALWAYS start with `- [ ]` (markdown checkbox) 2. **Task ID**: Sequential number (T001, T002, T003...) in execution order 3. **[P] marker**: Include ONLY if task is parallelizable (different files, no dependencies on incomplete tasks) 4. **[Story] label**: REQUIRED for user story phase tasks only - Format: [US1], [US2], [US3], etc. (maps to user stories from `spec.md`) - Setup phase: NO story label - Foundational phase: NO story label - User Story phases: MUST have story label - Polish phase: NO story label 5. **Description**: Clear action with exact file path **Examples**: - ✅ CORRECT: `- [ ] T001 Create project structure per implementation plan` - ✅ CORRECT: `- [ ] T005 [P] Implement authentication middleware in src/middleware/auth.py` - ✅ CORRECT: `- [ ] T012 [P] [US1] Create User model in src/models/user.py` - ✅ CORRECT: `- [ ] T014 [US1] Implement UserService in src/services/user_service.py` - ❌ WRONG: `- [ ] Create User model` (missing ID and Story label) - ❌ WRONG: `T001 [US1] Create model` (missing checkbox) - ❌ WRONG: `- [ ] [US1] Create User model` (missing Task ID) - ❌ WRONG: `- [ ] T001 [US1] Create model` (missing file path) ### Task Organization 1. **From User Stories (`spec.md`)** - PRIMARY ORGANIZATION: - Each user story (P1, P2, P3...) gets its own phase - Map all related components to their story: - Models needed for that story - Services needed for that story - Endpoints/UI needed for that story - If tests requested: Tests specific to that story - Mark story dependencies (most stories should be independent) 2. **From Contracts (CRITICAL TIER)**: - Identify components marked as `@TIER: CRITICAL` in `contracts/modules.md`. - For these components, **MUST** append the summary of `@PRE`, `@POST`, `@UX_STATE`, and test contracts (`@TEST_FIXTURE`, `@TEST_EDGE`) directly to the task description. - Example: `- [ ] T005 [P] [US1] Implement Auth (CRITICAL: PRE: token exists, POST: returns User, TESTS: 2 edges) in src/auth.py` - Map each contract/endpoint → to the user story it serves - If tests requested: Each contract → contract test task [P] before implementation in that story's phase 3. **From ADRs and Decision Memory**: - For each implementation task constrained by an ADR, append a concise guardrail summary drawn from `@RATIONALE` and `@REJECTED`. - Example: `- [ ] T021 [US1] Implement payload parsing guardrails in src/api/input.py (RATIONALE: strict validation because frontend sends numeric strings; REJECTED: json.loads() without schema validation)` - If a task would naturally branch into an ADR-rejected alternative, rewrite the task around the accepted path instead of leaving the choice ambiguous. - If no safe executable path remains because ADR context is incomplete, stop and emit `[NEED_CONTEXT: target]`. 4. **From Data Model**: - Map each entity to the user story(ies) that need it - If entity serves multiple stories: Put in earliest story or Setup phase - Relationships → service layer tasks in appropriate story phase 5. **From Setup/Infrastructure**: - Shared infrastructure → Setup phase (Phase 1) - Foundational/blocking tasks → Foundational phase (Phase 2) - Story-specific setup → within that story's phase ### Phase Structure - **Phase 1**: Setup (project initialization) - **Phase 2**: Foundational (blocking prerequisites - MUST complete before user stories) - **Phase 3+**: User Stories in priority order (P1, P2, P3...) - Within each story: Tests (if requested) → Models → Services → Endpoints → Integration - Each phase should be a complete, independently testable increment - **Final Phase**: Polish & Cross-Cutting Concerns ### Decision-Memory Validation Gate Before finalizing `tasks.md`, verify all of the following: - Every repo-shaping ADR from planning is either represented in a setup/foundational task or inherited by a downstream story task. - Every guarded task that could tempt an implementer into a known wrong branch carries preventive `@RATIONALE` / `@REJECTED` guidance in its text. - No task instructs the implementer to realize an ADR path already named as rejected. - At least one explicit audit/verification task exists for checking rejected-path regressions in code review or test stages.