| name | progress-tracker |
| description | 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. |
| version | 1.0.0 |
Progress Tracker Skill
This 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.
Overview
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.
Feature List Structure
.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
}
]
Fields
- id: Unique identifier (integer)
- category: "functional" or "style"
- description: What the feature/test verifies
- steps: Detailed test steps
- passes: Completion status (false = not done, true = verified)
Checking Progress
Count Total Features
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 Passing Features
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 Remaining Features
Count features with "passes": false:
cat .spec/feature_list.json | grep '"passes": false' | wc -l
Calculate Percentage
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
Display Progress Summary
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%)
Updating Progress
Mark Feature as Passing
After implementing and verifying a feature, update the "passes" field:
CRITICAL: Only modify the "passes" field. Never:
- Remove features
- Edit descriptions
- Modify steps
- Reorder features
{
"id": 1,
"category": "functional",
"description": "User can login with email and password",
"steps": [...],
"passes": true // ← Only change this field
}
When to Mark as Passing
Only mark a feature as "passes": true AFTER:
- Implementation is complete
- Browser automation verification is done
- Screenshots captured showing it works
- All test steps pass
- No console errors
- UI matches requirements
Verification Process
Before marking as passing, verify:
- Navigate to the relevant page in a real browser
- Perform each test step with Playwright or Chrome DevTools MCP
- Take screenshots at each step
- Check for errors in browser console
- Verify visual appearance matches spec
- Test edge cases mentioned in steps
Finding Features by Status
Find Next Feature to Implement
Find the first feature with "passes": false:
cat .spec/feature_list.json | jq '[.[] | select(.passes == false)] | .[0]'
Find All Passing Features
cat .spec/feature_list.json | jq '[.[] | select(.passes == true)]'
Find Features by Category
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")]'
Progress Notes
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%)
Category Breakdown
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')
Integration with Git
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
"
Common Queries
"What's the progress?"
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')"
"What should I work on next?"
Find the first non-passing feature:
cat .spec/feature_list.json | jq '[.[] | select(.passes == false)] | .[0]'
"Are all features complete?"
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
Troubleshooting
feature_list.json Doesn't Exist
Initialize project first:
/start-project spec="Your project spec"
No Features Are Passing
Normal for new projects. Begin implementation:
/continue
All Features Pass
Project is complete! Review and deploy.
Features Fail After Passing
Previous session may have introduced bugs. Fix before implementing new features:
- Run failing test
- Identify regression
- Fix the issue
- Mark as "passes": false until fixed
- Re-verify and mark as "passes": true
Best Practices
- Always verify before marking - Never mark as passing without thorough testing
- One feature at a time - Focus on quality over speed
- Keep feature list immutable - Only change "passes" field
- Document progress - Update claude-progress.txt each session
- Commit frequently - Each completed feature gets a commit
- Fix regressions first - Before implementing new features
Additional Resources
Reference Files
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 procedures
Utility Scripts
The scripts/ directory contains helper scripts:
scripts/check-progress.py- Automated progress checking with detailed outputscripts/update-progress.py- Safe progress updates with validation
Related Skills
browser-verification- Detailed browser automation testing guidance