--- description: Update Implementation Checklist items in Linear issue description allowed-tools: [LinearMCP, AskUserQuestion, Bash] argument-hint: --- # Update Checklist: $1 Updating Implementation Checklist directly in the Linear issue description. ## 🚨 CRITICAL: Safety Rules **READ FIRST**: ``$CCPM_COMMANDS_DIR/SAFETY_RULES.md`` **NEVER** submit, post, or update anything to Jira, Confluence, BitBucket, or Slack without explicit user confirmation. - ✅ **Linear** operations are permitted (our internal tracking) - ⛔ **External PM systems** require user confirmation for write operations ## Checklist Update Workflow ### Step 1: Fetch Linear Issue Use **Linear MCP** to get issue: $1 Extract: - Full description (markdown) - Current status - Title ### Step 2: Parse Checklist from Description Look for the Implementation Checklist section in the description using these markers: **Pattern 1: Marker Comments (Preferred)** ```markdown - [ ] Task 1: Description - [x] Task 2: Description (completed) - [ ] Task 3: Description ``` **Pattern 2: Header-Based (Fallback)** ```markdown ## ✅ Implementation Checklist - [ ] Task 1 - [ ] Task 2 ... (until next ## header or end of content) ``` **Parsing Logic:** 1. Search for `` marker 2. If found, extract all lines between start and end markers 3. If not found, look for "## ✅ Implementation Checklist" or similar headers 4. Extract all checklist items (lines starting with `- [ ]` or `- [x]`) 5. Parse each item to extract: - Index (0-based position) - Status (checked or unchecked) - Content (the text after the checkbox) **Edge Cases:** - No checklist found → Display warning, offer to skip - Corrupted format → Attempt recovery, show warning - Multiple checklists → Use marker comments to identify the right one - Empty checklist → Display error ### Step 3: Display Current Checklist Show current state with indices: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📋 Current Implementation Checklist ($1) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Progress: X% (Y/Z completed) 0. [ ] Task 1: Description 1. [x] Task 2: Description ✅ 2. [ ] Task 3: Description 3. [ ] Task 4: Description 4. [x] Task 5: Description ✅ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ### Step 4: Choose Update Mode First, ask user if they want to mark items complete or rollback (uncheck) items: Use **AskUserQuestion**: ```javascript { questions: [ { question: "What would you like to do with the checklist?", header: "Action", multiSelect: false, options: [ { label: "Mark items complete", description: "Check off completed tasks (default)" }, { label: "Rollback items", description: "Uncheck incorrectly marked items" } ] } ] } ``` ### Step 5: Interactive Selection **If "Mark items complete" selected:** Use **AskUserQuestion** with multi-select to let user choose which items to check: ```javascript { questions: [ { question: "Which checklist items did you complete? (Select all that apply)", header: "Completed", multiSelect: true, options: [ { label: "0: Task 1: Description", description: "Mark this task as complete" }, { label: "2: Task 3: Description", description: "Mark this task as complete" }, { label: "3: Task 4: Description", description: "Mark this task as complete" } // Only show UNCHECKED items ] } ] } ``` **If "Rollback items" selected:** Use **AskUserQuestion** with multi-select to let user choose which items to uncheck: ```javascript { questions: [ { question: "Which items were incorrectly marked complete? (Select all to rollback)", header: "Rollback", multiSelect: true, options: [ { label: "1: Task 2: Description", description: "Uncheck this item (mark incomplete)" }, { label: "4: Task 5: Description", description: "Uncheck this item (mark incomplete)" } // Only show CHECKED items ] } ] } ``` **Parse user selections:** - Extract indices from selected options (first number before ":") - Store as array of indices - Store mode: "complete" or "rollback" ### Step 6: Update Checklist via Linear Operations Subagent **Use the Task tool to update the checklist:** Invoke the `ccpm:linear-operations` subagent: - **Tool**: Task - **Subagent**: ccpm:linear-operations - **Prompt**: ``` operation: update_checklist_items params: issue_id: "{issue ID from step 1}" indices: [{selected indices from step 5}] mark_complete: {true if mode is "complete", false if mode is "rollback"} add_comment: true # Document the change with a comment update_timestamp: true context: command: "utils:update-checklist" purpose: "Manual checklist update by user" ``` **This operation will:** 1. Use shared checklist helpers (`_shared-checklist-helpers.md`) for parsing 2. Update the specified checkbox states (✓ or uncheck) 3. Recalculate progress percentage automatically 4. Update the progress line with current timestamp 5. Add a comment documenting the changes 6. Return structured result with before/after progress **Example response:** ```yaml success: true data: checklist_summary: items_updated: 2 previous_progress: 20 new_progress: 60 completed: 3 total: 5 changed_items: - index: 1 content: "Task 2: Description" previous_state: unchecked new_state: checked metadata: duration_ms: 320 used_shared_helpers: true ``` ### Step 7: Display Confirmation Show success message with details **Timestamp**: [current date/time] ``` **If mode is "rollback":** ```markdown ## 🔄 Checklist Rollback **Progress**: X% → Y% (-Z%) **Unmarked Items** (marked incomplete): - ⏪ Task 2: Description - ⏪ Task 3: Description **Reason**: Incorrectly marked complete, rolling back for accuracy **Timestamp**: [current date/time] ``` 3. **Track version history** in comment: - Include previous state - Include new state - Record who made the change and why ### Step 8: Display Confirmation ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ Checklist Updated Successfully! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📋 Issue: $1 🔗 Linear: [issue URL] 📊 Progress: X% → Y% (+Z%) ✅ Marked Complete (N items): • Task 2: Description • Task 3: Description 📝 Updated in Linear: ✅ Issue description updated ✅ Progress comment added ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🎯 Next Actions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1. ⭐ Continue Implementation /ccpm:implementation:next $1 2. Sync Progress /ccpm:implementation:sync $1 3. Run Quality Checks /ccpm:verification:check $1 4. View Updated Status /ccpm:utils:status $1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ## Helper Functions (Inline Logic) ### Parse Checklist **Pseudocode:** ``` 1. Get description text 2. Find start marker: 3. Find end marker: 4. If markers found: - Extract lines between markers 5. Else: - Find "## ✅ Implementation Checklist" or "## Implementation Checklist" - Extract lines until next ## header 6. Filter lines that match: /^- \[([ x])\] (.+)$/ 7. Parse each line: - Extract checkbox state: [ ] or [x] - Extract content after checkbox - Store index, state, content 8. Return array of checklist items ``` ### Calculate Completion **Pseudocode:** ``` 1. Count total items 2. Count checked items (- [x]) 3. Calculate percentage: (checked / total) * 100 4. Round to nearest integer 5. Return percentage and counts ``` ### Update Checklist Items **Pseudocode:** ``` 1. Get current description 2. Parse checklist (get start/end positions) 3. For each index in indices_to_complete: - Find line in checklist section - Replace "- [ ]" with "- [x]" 4. Calculate new completion % 5. Find or create progress line 6. Update progress line with new % 7. Add/update timestamp 8. Return modified description ``` ## Rollback Capability (Built-in) The rollback feature is now fully integrated into the main workflow (Step 4): **Features:** - ✅ Two-mode operation: Complete or Rollback - ✅ Rollback shows only checked items - ✅ Complete shows only unchecked items - ✅ Version history tracked in comments - ✅ Clear reasoning documented **Use Cases:** - Accidentally marked wrong item complete - Item thought complete but needs more work - Task requirements changed, no longer complete - Quality issues discovered after marking complete ## Examples ### Example 1: Mark Multiple Items Complete ```bash /ccpm:utils:update-checklist PSN-26 ``` **Interactive Flow:** ``` Current Progress: 20% (1/5 completed) Which items did you complete? [x] 0: Create checklist parser functions [ ] 2: Modify /ccpm:implementation:sync [ ] 3: Modify /ccpm:implementation:update → User selects items 0 and 2 ✅ Updated! Progress: 20% → 60% (+40%) ``` ### Example 2: No Changes Needed ```bash /ccpm:utils:update-checklist PSN-26 ``` **Interactive Flow:** ``` Current Progress: 100% (5/5 completed) All items complete! ✅ No changes needed. ``` ### Example 3: Rollback Mistake ```bash /ccpm:utils:update-checklist PSN-26 ``` **Interactive Flow:** ``` What would you like to do? ( ) Mark items complete (●) Rollback items Which items were incorrectly marked complete? [x] 3: Modify /ccpm:implementation:update [x] 4: Modify /ccpm:verification:check → User selects items 3 and 4 ✅ Rolled back! Progress: 80% → 40% (-40%) Comment added: "🔄 Checklist Rollback Unmarked: Task 3, Task 4 Reason: Incorrectly marked complete, rolling back for accuracy" ``` ## Notes - **Idempotent**: Running multiple times is safe - **Atomic**: Either all updates succeed or none - **Tracked**: Every change creates a comment for history - **Visible**: Progress visible in description, not just comments - **Flexible**: Works with or without marker comments ## Integration with Other Commands This command provides the core checklist update logic that other commands can reference: - `/ccpm:implementation:sync` - Auto-suggest completed items based on git diff - `/ccpm:implementation:update` - Update specific item by index - `/ccpm:verification:check` - Check completion % before verification - `/ccpm:complete:finalize` - Require 100% before finalization