Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Read git log since initial scaffold + last 3 progress notes, draft feature additions to a SEPARATE suggestions file so feature_list.json stays immutable
.claude/skills/archive228-suggest-next-features/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -21% | 0% |
The ledger runs dry. Either every feature_list.json entry has passes: true, or the last few sessions have been shuffling half-features and adding no new work because the spec grew and the list did not.
This skill drafts candidate additions — but to a separate file, feature_list.suggestions.json. feature_list.json is immutable except for the single passes: false → true flip that feature-list-json]] permits. Silently appending entries would break that contract and let a runaway session invent its own scope.
The suggestions file is a proposal. A human hand-merges chosen entries into feature_list.json; the rest are ignored or deleted. No agent, ever, edits feature_list.json directly from this skill.
Apply when either condition holds:
jq '[.[] | select(.passes==false)] | length' feature_list.json returns 0.claude-progress.txt show no new passes: true flips AND the user has referenced behavior not present in feature_list.json.Do not apply just because the list looks short. 30 unfinished entries is not a trigger; 0 is.
git log --pretty=format:'%h %s' "$(git log --grep='chore: initial scaffold' --format=%H | tail -1)"..HEAD — every commit since the scaffold. This is what actually shipped, not what was claimed.claude-progress.txt. This is where recent scope creep leaks.feature_list.json in full. You need to know what is already enumerated so you do not propose duplicates.feature_list.json. Every one starts passes: false. Order them roughly by priority.feature_list.suggestions.json at the project root. Overwrite any prior draft — this file is regenerable, not append-only.feature_list.json. Do not commit feature_list.suggestions.json (it is a proposal, not project state).feature_list.suggestions.json — same schema as feature_list.json:
json[ { "category": "ux", "description": "Empty conversation list shows an onboarding CTA", "steps": [ "Load app as a user with zero conversations", "Verify the sidebar shows a 'Start your first chat' CTA", "Click the CTA and land in a fresh conversation" ], "passes": false, "rationale": "Sessions 41/43 both hit the empty-list path and rendered a blank sidebar; no entry covers it." } ]
The rationale field is unique to the suggestions file — it justifies the proposal so the human merger can decide fast. Strip rationale before merging into feature_list.json.
feature_list.json directly from this skill. Not to append, not to reorder, not to add a comment. The immutability rule from feature-list-json]] wins.feature_list.suggestions.json on the next run. Overwrite it — the operator may have partly consumed it, and a rewrite is clearer than a diff-merge.claude-progress.txt.feature_list.suggestions.json to .gitignore if the operator has not already.Other measured skills in the registry, with their headline benchmark lift.