Enumerate every end-to-end feature as strict JSON entries with passes:false, editable-passes-only discipline, and priority order. The ledger fresh-context sessions read to know what's done, what's next, and what they're forbidden to touch.
SkillScore86Maintained
Automatic
◆Coding pack
Last verified 8/16/2026
What it changes
Passed 18 of 21 test cases with the skill, and 8 of 21 without it.
Without skill36%
With skill86%
Checks it passed that the model alone missed
Sets every passes field to boolean false
Uses infra or data as the category string value
Outputs a top-level JSON array containing feature objects
and 11 more in the full report
12 fixed7 passed either way2 still failing1 broke
Pass-rate lift
+50 pp
Tokens
+16%
Agent turns
0%
Response time
-54%
Model gemini-3.6-flashMeasured 8/16/2026v119 of 22 cases passed with skill · 21 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 12
Prompt
We are initializing a 150-feature web app ledger in feature_list.json. The smoke test and baseline setup are already complete in the repository. What initial value should be assigned to the 'passes' field for these setup entries?
What was checked, without and with the skill
Checked
Without skill
With skill
Sets passes to false for every single entry including baseline setup items
Missed
Passed
case-06 · gemini-3.6-flash · 8/16/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md75 linessingle file
feature_list.json
The ledger of every feature the product will eventually have. Fresh-context sessions read it to pick work; they flip exactly one boolean when done. JSON, not Markdown — the syntactic strictness is load-bearing. Prose gets edited freely; data gets edited carefully.
Format per entry:
{
"category": "functional",
"description": "New chat button creates a fresh conversation",
"steps": [
"Navigate to main interface",
"Click the 'New Chat' button",
"Verify a new conversation is created",
"Check that chat area shows welcome state",
"Verify conversation appears in sidebar"
],
"passes": false
}
Categories: functional, ux, data, infra. Order the array in implementation order — the top is the next thing to build.
When to apply
Initializer agent at scaffold time: produce the full list, every entry passes: false. Aim for breadth — 200 well-scoped entries beats 30 vague ones.
Coding agent at end of session: after end-to-end verification, flip exactly one passes from false to true.
Any session at start: jq '[.[] | select(.passes==false)] | length' to see remaining work; pick the topmost unblocked entry.
Procedure — initializer
Enumerate every user-observable behavior the spec implies. Login, list rendering, empty states, error states, keyboard shortcuts, mobile layout — all of it.
Write each as one entry. description is one sentence, steps is a user's actual action sequence (not implementation notes).
Order the array so an agent walking top-to-bottom builds prerequisites before dependents.
Every passes starts false. No exceptions, not even for the smoke test.