Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Headless grilling pass that challenges an approved implementation plan against the existing codebase and domain model, then writes an ADR draft and a PRD draft into the Foreman feature directory. Self-answers every question it can from the code/docs and surfaces the rest as an "Open questions for reviewer" block instead of interviewing a live user.
.claude/skills/visionforge-ou-foreman-grill-docs/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 275% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 68% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 200% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 113% | 0% |
<what-to-do>
You are running headless, with no live human in the loop. Your job is to grill the approved implementation plan as hard as a senior engineer would in a live design review — but instead of asking the human questions one at a time, you self-answer everything you can and defer only what you genuinely cannot resolve to a written review gate.
Walk the full design decision tree. For each branch:
CONTEXT.md / CONTEXT-MAP.md glossary, and its docs/adr/ log. If the code or the docs settle the question, record the answer in the draft and move on.
needs a product call, a priority trade-off, or knowledge that lives only in the reviewer's head — add it to the ## Open questions for reviewer block at the very top of the relevant draft.
Do NOT ask the user anything interactively. Do NOT wait for input. Produce the drafts and stop.
</what-to-do>
<inputs>
Foreman injects, in the prompt:
plan.md..foreman/features/<slug>/ where you must write adr.mdand prd.md.
adr.md/prd.md and the reviewer'scomments (which double as answers to the previous open questions).
</inputs>
<process>
Read the plan. Then explore the target repo to ground every claim:
CONTEXT.md (or follow CONTEXT-MAP.md to the rightcontext). Use the project's canonical terms throughout both drafts. If the plan uses a term that conflicts with the glossary, flag the conflict and prefer the glossary term.
docs/adr/. Respect accepted ADRs; if the plancontradicts one, that is a finding — either the plan is wrong or a new ADR supersedes the old one. Say which.
When the plan says "X works like Y", check whether the code agrees. Surface every contradiction.
Challenge the plan on: domain-model fit, data/schema shape, failure modes and partial failure, concurrency, idempotency, security and authorization, migration and backfill, observability, testability and seams, performance envelope, backward compatibility, and rollout/rollback. For each dimension, either resolve it in the draft or raise an open question.
Stress-test relationships with concrete scenarios. Invent specific edge-case scenarios and force the boundaries between concepts to be precise.
As decisions crystallise, update the target repo's own documentation right there, not in a batch:
CONTEXT.md using CONTEXT-FORMAT.md. CreateCONTEXT.md lazily (only once the first term is worth recording). It is a glossary only — never implementation detail.
docs/adr/ using ADR-FORMAT.md. Offer ADRs sparingly (all three tests in ADR-FORMAT must hold). Create docs/adr/ lazily.
Write adr.md and prd.md into the feature directory. Each begins with the open questions block (see format below). Immediately after the open-questions block in both drafts, emit a ## Decisions made on your behalf section: ≤10 bullets, each a single audit-judgment call you settled autonomously that the reviewer should be able to sanity-check without re-reading the prose (e.g. "Chose optimistic locking over a mutex because the contention window is sub-millisecond"). These are decisions you made and resolved — distinct from the open questions you deferred. Keep each bullet to one line; if you genuinely made no non-obvious calls, write a single line: _None — no judgment calls beyond the plan._.
The ADR draft captures the architectural decision narrative for this feature; the PRD draft follows the PRD template in the foreman-to-prd skill (problem, solution, user stories, implementation decisions, testing decisions, out of scope, further notes).
When Foreman re-runs you with reviewer comments:
guidance). Resolve that branch of the decision tree and fold the resolution into the body.
## Changelog entry at the bottom of each revised draft notingwhat changed in this version and which comments drove it.
</process>
<open-questions-format>
At the very top of BOTH adr.md and prd.md, immediately after the title:
md## Open questions for reviewer - <a question you genuinely could not resolve from code/docs> - <another>
Rules:
here you could have answered yourself.
_None — all questions resolved from the codebase and prior decisions._
remains. The grill loop is complete only at zero open questions AND reviewer approval.
left struck through, on the next pass.
</open-questions-format>
<supporting-info>
foreman-to-prd skill.</supporting-info>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,792 | 4,456 | -23% | 1 | 1 | 0% | 342 | 1,803 | +427% | 0 | 0 | — |
case-02 | fail→fail | 6,555 | 5,703 | -13% | 1 | 1 | 0% | 321 | 1,822 | +468% | 0 | 0 | — |
case-03 | fail→fail | 5,643 | 4,574 | -19% | 1 | 1 | 0% | 274 | 1,698 | +520% | 0 | 0 | — |
case-04 | fail→fail | 11,068 | 10,101 | -9% | 1 | 1 | 0% | 1,966 | 1,878 | -4% | 0 | 0 | — |
case-05 | fail→pass | 23,709 | 34,022 | +43% | 1 | 1 | 0% | 4,549 | 7,223 | +59% | 0 | 0 | — |
case-06 | fail→pass | 6,421 | 15,562 | +142% | 1 | 1 | 0% | 1,046 | 3,924 | +275% | 0 | 0 | — |
case-07 | pass→pass | 4,743 | 5,146 | +8% | 1 | 1 | 0% | 721 | 2,358 | +227% | 0 | 0 | — |
case-08 | pass→pass | 10,014 | 14,299 | +43% | 1 | 1 | 0% | 1,606 | 3,289 | +105% | 0 | 0 | — |
case-09 | fail→pass | 6,842 | 2,291 | -67% | 1 | 1 | 0% | 1,096 | 1,846 | +68% | 0 | 0 | — |
case-10 | pass→pass | 8,481 | 7,003 | -17% | 1 | 1 | 0% | 1,305 | 2,622 | +101% | 0 | 0 | — |
case-11 | pass→pass | 7,249 | 3,974 | -45% | 1 | 1 | 0% | 1,164 | 2,077 | +78% | 0 | 0 | — |
case-12 | fail→pass | 10,541 | 6,177 | -41% | 1 | 1 | 0% | 824 | 2,472 | +200% | 0 | 0 | — |
case-17 | fail→fail | 10,405 | 2,506 | -76% | 1 | 1 | 0% | 1,723 | 1,752 | +2% | 0 | 0 | — |
case-13 | fail→fail | 1,990 | 8,855 | +345% | 1 | 1 | 0% | 367 | 2,273 | +519% | 0 | 0 | — |
case-14 | pass→pass | 14,877 | 16,493 | +11% | 1 | 1 | 0% | 2,393 | 4,157 | +74% | 0 | 0 | — |
case-15 | pass→pass | 11,498 | 4,345 | -62% | 1 | 1 | 0% | 1,722 | 2,214 | +29% | 0 | 0 | — |
case-16 | pass→pass | 8,702 | 3,332 | -62% | 1 | 1 | 0% | 1,441 | 2,000 | +39% | 0 | 0 | — |
case-18 | pass→pass | 7,510 | 4,616 | -39% | 1 | 1 | 0% | 1,264 | 2,076 | +64% | 0 | 0 | — |
case-19 | fail→pass | 8,064 | 8,296 | +3% | 1 | 1 | 0% | 1,313 | 2,801 | +113% | 0 | 0 | — |
case-20 | pass→fail | 21,819 | 6,222 | -71% | 1 | 1 | 0% | 5,093 | 1,749 | -66% | 0 | 0 | — |
case-21 | pass→pass | 25,094 | 31,648 | +26% | 1 | 1 | 0% | 4,260 | 5,951 | +40% | 0 | 0 | — |
case-22 | pass→fail | 11,388 | 4,990 | -56% | 1 | 1 | 0% | 1,841 | 1,827 | -1% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 15 counted toward the lift figure. The other 7 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 15 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.