progress-tracker
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.
What this skill does
# 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:
```json
[
{
"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:
```bash
cat .spec/feature_list.json | jq '. | length'
```
Or with grep:
```bash
cat .spec/feature_list.json | grep '"id":' | wc -l
```
### Count Passing Features
Count features with `"passes": true`:
```bash
cat .spec/feature_list.json | jq '[.[] | select(.passes == true)] | length'
```
Or with grep:
```bash
cat .spec/feature_list.json | grep '"passes": true' | wc -l
```
### Count Remaining Features
Count features with `"passes": false`:
```bash
cat .spec/feature_list.json | grep '"passes": false' | wc -l
```
### Calculate Percentage
```bash
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:
```markdown
=== 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
```json
{
"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:
1. Implementation is complete
2. Browser automation verification is done
3. Screenshots captured showing it works
4. All test steps pass
5. No console errors
6. UI matches requirements
### Verification Process
Before marking as passing, verify:
1. **Navigate to the relevant page** in a real browser
2. **Perform each test step** with Playwright or Chrome DevTools MCP
3. **Take screenshots** at each step
4. **Check for errors** in browser console
5. **Verify visual appearance** matches spec
6. **Test edge cases** mentioned in steps
## Finding Features by Status
### Find Next Feature to Implement
Find the first feature with `"passes": false`:
```bash
cat .spec/feature_list.json | jq '[.[] | select(.passes == false)] | .[0]'
```
### Find All Passing Features
```bash
cat .spec/feature_list.json | jq '[.[] | select(.passes == true)]'
```
### Find Features by Category
Find all functional features:
```bash
cat .spec/feature_list.json | jq '[.[] | select(.category == "functional")]'
```
Find all style features:
```bash
cat .spec/feature_list.json | jq '[.[] | select(.category == "style")]'
```
## Progress Notes
Maintain `.spec/claude-progress.txt` with session notes:
```markdown
# 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:
```bash
# 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:
```bash
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:
```bash
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:
```bash
cat .spec/feature_list.json | jq '[.[] | select(.passes == false)] | .[0]'
```
### "Are all features complete?"
Check if all features pass:
```bash
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:
```bash
/start-project spec="Your project spec"
```
### No Features Are Passing
Normal for new projects. Begin implementation:
```bash
/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:
1. Run failing test
2. Identify regression
3. Fix the issue
4. Mark as "passes": false until fixed
5. Re-verify and mark as "passes": true
## Best Practices
1. **Always verify before marking** - Never mark as passing without thorough testing
2. **One feature at a time** - Focus on quality over speed
3. **Keep feature list immutable** - Only change "passes" field
4. **Document progress** - Update claude-progress.txt each session
5. **Commit frequently** - Each completed feature gets a commit
6. **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 strategies
- **`references/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 output
- **`scripts/update-progress.py`** - Safe progress updates with validation
### Related Skills
- **`browser-verification`** - Detailed browser automation testing guidance
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.