From blueprint-plugin
Synchronizes feature-tracker.json with TODO.md checkboxes and PRDs to manage task progress, update statuses, and generate markdown summaries via CLI.
How this skill is triggered — by the user, by Claude, or both
Slash command
/blueprint-plugin:blueprint-feature-tracker-syncsonnetThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Synchronize the feature tracker JSON with TODO.md and manage task progress.
Synchronize the feature tracker JSON with TODO.md and manage task progress.
Note: As of v1.1.0, feature-tracker.json is the single source of truth for progress tracking. The tasks section replaces work-overview.md.
Usage: /blueprint:feature-tracker-sync [--summary]
Flags:
| Flag | Description |
|---|---|
--summary | Generate human-readable markdown summary (stdout only, no file) |
--summary)When --summary is provided, generate a human-readable progress report without modifying any files:
jq -r '
"# Work Overview: \(.project)\n\n" +
"## Current Phase: \(.current_phase // "Not set")\n\n" +
"**Progress**: \(.statistics.complete)/\(.statistics.total_features) features (\(.statistics.completion_percentage)%)\n\n" +
"### In Progress\n" +
(if (.tasks.in_progress | length) == 0 then "- (none)\n" else (.tasks.in_progress | map("- \(.description) [\(.id)]") | join("\n")) + "\n" end) +
"\n### Pending\n" +
(if (.tasks.pending | length) == 0 then "- (none)\n" else (.tasks.pending | map("- \(.description) [\(.id)]") | join("\n")) + "\n" end) +
"\n### Recently Completed\n" +
(if (.tasks.completed | length) == 0 then "- (none)\n" else (.tasks.completed | map("- \(.description) [\(.id)]") | join("\n")) + "\n" end) +
"\n## Phase Status\n" +
(.phases | map("- \(.name): \(.status)") | join("\n"))
' docs/blueprint/feature-tracker.json
Output example:
# Work Overview: my-project
## Current Phase: phase-1
**Progress**: 22/42 features (52.4%)
### In Progress
- Implement OAuth integration [FR2.3]
- Add rate limiting [FR3.1]
### Pending
- Webhook support [FR4.1]
- Admin dashboard [FR5.1]
### Recently Completed
- User authentication [FR2.1]
- Session management [FR2.2]
## Phase Status
- Foundation: complete
- Core Features: in_progress
- Advanced Features: not_started
Exit after displaying summary.
test -f docs/blueprint/feature-tracker.json
If not found, report:
Feature tracking not enabled in this project.
Run `/blueprint-init` and enable feature tracking to get started.
docs/blueprint/feature-tracker.json for current feature and task statusTODO.md for checkbox states (if exists)For each feature in the tracker:
a. Verify status consistency:
complete: Check TODO.md has [x] (if tracked there)partial: Some checkboxes checked, some notin_progress: Should have entry in tasks.in_progressnot_started: Check TODO.md has [ ], not in completedblocked: Note if blocking reason is documentedb. Check implementation evidence (optional, for thorough sync):
implementation.filesimplementation.testsimplementation.commitsLook for inconsistencies:
complete in tracker but unchecked in TODO.mdcomplete in trackertasks.in_progress but tracker says completeIf discrepancies found (use AskUserQuestion):
question: "Found {N} discrepancies. How should they be resolved?"
options:
- label: "Update tracker from TODO.md"
description: "Trust TODO.md, update tracker to match"
- label: "Update TODO.md from tracker"
description: "Trust the tracker, update TODO.md to match"
- label: "Review each discrepancy"
description: "Show each discrepancy and decide individually"
- label: "Skip - don't resolve discrepancies"
description: "Report discrepancies but don't change anything"
(complete / total) * 100complete if all features completein_progress if any feature in_progresspartial if some complete, some notnot_started if no features startedstatistics sectionlast_updated to today's datecurrent_phase to first incomplete phase[x] for complete features[ ] for not_started featuresFeature Tracker Sync Report
===========================
Last Updated: {date}
Statistics:
- Total Features: {total}
- Complete: {complete} ({percentage}%)
- Partial: {partial}
- In Progress: {in_progress}
- Not Started: {not_started}
- Blocked: {blocked}
Current Phase: {current_phase}
Phase Status:
- Phase 0: {status}
- Phase 1: {status}
...
Active Tasks:
{tasks.in_progress | list}
Changes Made:
{If changes made:}
- {feature}: {old_status} -> {new_status}
- Updated TODO.md: checked {N} items
{If no changes:}
- No changes needed, all in sync
{If discrepancies skipped:}
Unresolved Discrepancies:
- {feature}: tracker says {status}, TODO.md shows {checkbox_state}
Update the task registry entry in docs/blueprint/manifest.json:
jq --arg now "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--arg todo_hash "$(sha256sum TODO.md 2>/dev/null | cut -d' ' -f1)" \
--argjson processed "${FEATURES_SYNCED:-0}" \
'.task_registry["feature-tracker-sync"].last_completed_at = $now |
.task_registry["feature-tracker-sync"].last_result = "success" |
.task_registry["feature-tracker-sync"].context.last_todo_hash = $todo_hash |
.task_registry["feature-tracker-sync"].stats.runs_total = ((.task_registry["feature-tracker-sync"].stats.runs_total // 0) + 1) |
.task_registry["feature-tracker-sync"].stats.items_processed = $processed' \
docs/blueprint/manifest.json > tmp.json && mv tmp.json docs/blueprint/manifest.json
Use AskUserQuestion:
question: "Sync complete. What would you like to do next?"
options:
- label: "View detailed status"
description: "Run /blueprint-feature-tracker-status for full breakdown"
- label: "Continue development"
description: "Run /project:continue to work on next task"
- label: "I'm done"
description: "Exit sync"
When starting work on a feature:
jq '.tasks.in_progress += [{"id": "FR2.3", "description": "Implement OAuth integration", "source": "PRP-002", "added": "2026-02-04"}]' \
docs/blueprint/feature-tracker.json > tmp.json && mv tmp.json docs/blueprint/feature-tracker.json
When finishing work:
# Move from in_progress to completed (keep last 10)
jq '
.tasks.completed = ([.tasks.in_progress[] | select(.id == "FR2.3") | . + {"completed": "2026-02-04"}] + .tasks.completed)[:10] |
.tasks.in_progress = [.tasks.in_progress[] | select(.id != "FR2.3")]
' docs/blueprint/feature-tracker.json > tmp.json && mv tmp.json docs/blueprint/feature-tracker.json
When planning future work:
jq '.tasks.pending += [{"id": "FR4.1", "description": "Webhook support", "source": "PRD-001", "added": "2026-02-04"}]' \
docs/blueprint/feature-tracker.json > tmp.json && mv tmp.json docs/blueprint/feature-tracker.json
Feature Tracker Sync Report
===========================
Last Updated: 2026-02-04
Statistics:
- Total Features: 42
- Complete: 22 (52.4%)
- Partial: 4
- In Progress: 2
- Not Started: 14
- Blocked: 0
Current Phase: phase-2
Phase Status:
- Phase 0: complete
- Phase 1: complete
- Phase 2: in_progress
- Phase 3-8: not_started
Active Tasks:
- Implement OAuth integration [FR2.3]
- Add rate limiting [FR3.1]
Changes Made:
- FR2.6.1 (Skill Progression): partial -> complete
- FR2.6.2 (Experience Points): not_started -> complete
- Updated TODO.md: checked 2 items
All sync targets updated successfully.
npx claudepluginhub laurigates/claude-plugins --plugin blueprint-pluginTracks feature implementation status against requirements documents using hierarchical FR codes, phase management, task tracking, and TODO.md sync. Useful for progress monitoring during development phases and milestones.
Reconciles Plans.md with git state and implementation progress. Detects drift between markers and actual work, updates statuses, and optionally saves snapshots. Useful for syncing status or checking progress.
Analyzes git status, PRDs, feature trackers, and work orders to identify next development task and resume work via TDD workflow.