
progress-tracker
This skill should be used when the user asks to "track feature completion", "check progress", "verif
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