--- name: speckit-refine-propagate description: Propagate spec changes downstream to plan.md and tasks.md compatibility: Requires spec-kit project structure with .specify/ directory metadata: author: github-spec-kit source: refine:commands/speckit.refine.propagate.md --- # Propagate Spec Changes After refining a specification with `/speckit.refine.update`, use this command to cascade changes downstream to plan.md and tasks.md without regenerating them from scratch. ## User Input ```text $ARGUMENTS ``` You **MUST** consider the user input before proceeding (if not empty). The user may specify which artifacts to propagate to (e.g., "only plan" or "plan and tasks"). ## Prerequisites 1. Verify a spec-kit project exists by checking for `.specify/` directory 2. Locate the current feature's spec directory (same logic as `/speckit.refine.update`) 3. Verify spec.md exists and has been refined (check for `**Refined**:` entries or `**Status**: Refined`) 4. Check which downstream artifacts exist: plan.md, tasks.md ## Outline 1. **Load artifacts**: Read from the current feature directory: - **Required**: `spec.md` (the refined specification) - **Target**: `plan.md` and/or `tasks.md` (artifacts to update) - **Optional**: `research.md`, `data-model.md`, `contracts/` (for context) 2. **Identify what changed**: Parse the refinement notes in spec.md: - Look for `**Refined**:` entries to understand the change history - Look for `~~removed~~` items to identify dropped requirements - Compare user stories, requirements, and success criteria against plan.md/tasks.md 3. **Propagate to plan.md** (if it exists and user didn't exclude it): - **Added user stories**: Add corresponding sections to the plan (project structure, complexity tracking) - **Modified requirements**: Update the Technical Context, Project Structure, or Complexity Tracking sections as needed - **Removed requirements**: Mark corresponding plan sections with strikethrough and reason - **Preserve**: All existing plan structure, formatting, and sections not affected by the change - Remove any `⚠️ **STALE**` warning from the top of the file - Add a propagation note: ``` **Propagated**: [DATE] — Updated from spec.md refinement ``` 4. **Propagate to tasks.md** (if it exists and user didn't exclude it): - **Added user stories**: Add a new Phase section with tasks following the existing format (`[ID] [P?] [Story?] Description [(depends on ...)]`) - **Modified requirements**: Update affected tasks in-place — adjust descriptions, dependencies, or file paths - **Removed requirements**: Mark affected tasks with `~~[REMOVED]~~` prefix and strikethrough, do not delete - **Renumber if needed**: If new tasks are added, assign IDs continuing from the last used ID - **Update Execution Wave DAG**: If the tasks.md has a Wave DAG section, regenerate it to reflect the new task dependencies - **Update Dependencies section**: Adjust phase dependencies and user story dependencies - Remove any `⚠️ **STALE**` warning from the top of the file - Add a propagation note: ``` **Propagated**: [DATE] — Updated from spec.md refinement ``` 5. **Validate consistency**: After propagation, verify: - Every user story in spec.md has a corresponding phase in tasks.md - Every requirement in spec.md is traceable to at least one task - No orphaned tasks reference removed requirements - Dependencies still form a valid DAG (no circular dependencies) 6. **Report**: Output a summary: - What changed in each artifact - How many tasks were added, modified, or marked removed - Any consistency warnings found during validation - Suggest next step: `/speckit.refine.diff` to review changes, or `/speckit.implement` to continue building ## Rules - **Never regenerate from scratch** — propagate surgically updates only affected sections - **Never delete content** — mark removed items with strikethrough - **Preserve all formatting** — match existing artifact styles - **Track changes** — always add propagation notes with dates - **Remove staleness warnings** — after successful propagation, clear the stale markers - **Maintain traceability** — every spec requirement must map to plan/task items