This skill should be used when the user asks to "track feature completion", "check progress", "verify all features pass", "count passing tests", "show completion status", or "update feature_list.json". Use for managing and querying the progress of autonomous coding projects.
Tracks feature completion in `.spec/feature_list.json` by counting passing vs remaining tests. Use when users ask to check progress, verify features, or update completion status.
/plugin marketplace add adlsdztony/claude-marketplace/plugin install web-clone@adlsdztonyThis skill inherits all available tools. When active, it can use any tool Claude has access to.
references/feature-validation.mdscripts/check-progress.pyscripts/update-progress.pyThis skill provides guidance for tracking and managing progress in autonomous coding projects using the .spec/feature_list.json file as the single source of truth.
Progress tracking in autonomous coding projects centers on .spec/feature_list.json, which contains all test cases that need to be implemented. Each feature has a "passes" field that indicates completion status.
.spec/feature_list.json is an array of test cases:
[
{
"id": 1,
"category": "functional",
"description": "User can login with email and password",
"steps": [
"Navigate to /login",
"Enter email and password",
"Click submit button",
"Verify redirect to dashboard"
],
"passes": false
}
]
Count all features in the list:
cat .spec/feature_list.json | jq '. | length'
Or with grep:
cat .spec/feature_list.json | grep '"id":' | wc -l
Count features with "passes": true:
cat .spec/feature_list.json | jq '[.[] | select(.passes == true)] | length'
Or with grep:
cat .spec/feature_list.json | grep '"passes": true' | wc -l
Count features with "passes": false:
cat .spec/feature_list.json | grep '"passes": false' | wc -l
PASSING=$(cat .spec/feature_list.json | jq '[.[] | select(.passes == true)] | length')
TOTAL=$(cat .spec/feature_list.json | jq '. | length')
echo "scale=1; $PASSING * 100 / $TOTAL" | bc
Generate a human-readable progress summary:
=== Development Progress ===
Total Features: 30
✓ Completed: 15 (50%)
○ Remaining: 15 (50%)
Category Breakdown:
Functional: 10/20 (50%)
Style: 5/10 (50%)
Feature Breakdown by Status:
- Authentication: 3/3 (100%)
- User Interface: 7/10 (70%)
- Data Management: 3/5 (60%)
- API Integration: 2/7 (29%)
After implementing and verifying a feature, update the "passes" field:
CRITICAL: Only modify the "passes" field. Never:
{
"id": 1,
"category": "functional",
"description": "User can login with email and password",
"steps": [...],
"passes": true // ← Only change this field
}
Only mark a feature as "passes": true AFTER:
Before marking as passing, verify:
Find the first feature with "passes": false:
cat .spec/feature_list.json | jq '[.[] | select(.passes == false)] | .[0]'
cat .spec/feature_list.json | jq '[.[] | select(.passes == true)]'
Find all functional features:
cat .spec/feature_list.json | jq '[.[] | select(.category == "functional")]'
Find all style features:
cat .spec/feature_list.json | jq '[.[] | select(.category == "style")]'
Maintain .spec/claude-progress.txt with session notes:
# Session - [Date]
## Accomplished
- Implemented feature #1: User login
- Implemented feature #2: Password reset
## Tests Completed
- Test #1 now passing
- Test #2 now passing
## Issues Found and Fixed
- Fixed login form validation
- Fixed redirect after login
## Next Session
- Implement feature #3: User profile
- Implement feature #4: Settings page
## Current Status
15/30 tests passing (50%)
Track progress by feature category:
# Functional features
FUNC_PASSING=$(cat .spec/feature_list.json | jq '[.[] | select(.category == "functional" and .passes == true)] | length')
FUNC_TOTAL=$(cat .spec/feature_list.json | jq '[.[] | select(.category == "functional")] | length')
# Style features
STYLE_PASSING=$(cat .spec/feature_list.json | jq '[.[] | select(.category == "style" and .passes == true)] | length')
STYLE_TOTAL=$(cat .spec/feature_list.json | jq '[.[] | select(.category == "style")] | length')
Each completed feature should be committed:
git add .spec/feature_list.json
git commit -m "Implement [feature name] - verified end-to-end
- Added [specific changes]
- Tested with browser automation
- Updated .spec/feature_list.json: marked test #X as passing
"
Run /show-progress or manually check:
echo "Total: $(cat .spec/feature_list.json | jq 'length')"
echo "Passing: $(cat .spec/feature_list.json | jq '[.[] | select(.passes == true)] | length')"
echo "Remaining: $(cat .spec/feature_list.json | jq '[.[] | select(.passes == false)] | length')"
Find the first non-passing feature:
cat .spec/feature_list.json | jq '[.[] | select(.passes == false)] | .[0]'
Check if all features pass:
REMAINING=$(cat .spec/feature_list.json | jq '[.[] | select(.passes == false)] | length')
if [ "$REMAINING" -eq 0 ]; then
echo "✓ All features complete!"
else
echo "○ $REMAINING features remaining"
fi
Initialize project first:
/start-project spec="Your project spec"
Normal for new projects. Begin implementation:
/continue
Project is complete! Review and deploy.
Previous session may have introduced bugs. Fix before implementing new features:
For detailed feature validation processes and browser verification workflows, consult:
references/feature-validation.md - Comprehensive feature validation guide with testing strategiesreferences/verification-workflows.md - Step-by-step verification proceduresThe scripts/ directory contains helper scripts:
scripts/check-progress.py - Automated progress checking with detailed outputscripts/update-progress.py - Safe progress updates with validationbrowser-verification - Detailed browser automation testing guidanceThis skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.