Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Headless self-verification gate a Foreman worker runs before it claims an issue is done. Re-run the real commands, read the actual output, and only then write the FOREMAN-SUMMARY — evidence before claims, always. Used inside a foreman-tdd build session; emits no summary of its own.
.claude/skills/visionforge-ou-foreman-verify/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 164% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 327% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 29% | 0% |
(Adapted from obra/superpowers verification-before-completion (MIT) — see NOTICE. Made headless and wired to Foreman's trust boundary: the "claim" you are gating is the foreman-tdd FOREMAN-SUMMARY block and its evidence array, and the verification commands are the project's own, run through the foreman-test wrapper. Foreman re-runs every command itself regardless, so a dishonest claim is not just wrong — it is rejected and counts as a failed attempt.)
You are invoked inside a foreman-tdd build session, right before it would claim the slice is complete. Your job is to make that claim true and evidenced. You run headless and emit no FOREMAN-SUMMARY of your own — you populate the evidence the surrounding foreman-tdd run reports.
NO COMPLETION CLAIM WITHOUT FRESH VERIFICATION EVIDENCEIf you have not run the verifying command in this session and read its output, you may not claim it passes. "Should pass", "I'm confident", "it worked earlier" are not evidence.
For every claim the FOREMAN-SUMMARY will make (tests pass, lint clean, typecheck clean, the issue's acceptance_check passes, the behaviour works):
foreman-test suite (not just --fast),then lint, then typecheck if configured, then the acceptance_check.
ERROR lines.Foreman gave you (the test log at minimum, plus each command's output tail, plus a screenshot for UI work via the configured e2e tooling).
not done — let foreman-tdd keep working or, for a real blocker, escalate. Never round a failure up to a pass.
| Claim | Requires | Not sufficient | |-------|----------|----------------| | Tests pass | full foreman-test: 0 failures, saved log | a --fast subsample, a previous run | | Lint / typecheck clean | the command's own output: 0 errors | "the diff looks clean" | | Acceptance check passes | running the issue's acceptance_check | the unit tests passing | | Bug fixed | the original failing symptom now passes | the code changed | | Regression test real | red→green proven (it failed before the fix) | it passes once now |
You do not write the summary — you guarantee it can be written honestly. Hand back to foreman-tdd with: the verification commands run, their pass/fail and output tails, and the exact list of evidence artifacts you saved (which becomes the FOREMAN-SUMMARY evidence array). An empty or unbacked evidence array is rejected by Foreman — so if you could not produce real evidence, say so plainly rather than claiming done.
has actually run in this session.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,078 | 9,777 | +93% | 1 | 1 | 0% | 283 | 1,799 | +536% | 0 | 0 | — |
case-02 | fail→fail | 5,073 | 6,284 | +24% | 1 | 1 | 0% | 207 | 1,144 | +453% | 0 | 0 | — |
case-03 | fail→fail | 6,244 | 6,341 | +2% | 1 | 1 | 0% | 198 | 1,049 | +430% | 0 | 0 | — |
case-04 | fail→pass | 6,100 | 9,662 | +58% | 1 | 1 | 0% | 871 | 2,303 | +164% | 0 | 0 | — |
case-09 | pass→fail | 9,555 | 5,387 | -44% | 1 | 1 | 0% | 1,552 | 1,052 | -32% | 0 | 0 | — |
case-05 | pass→pass | 9,679 | 11,832 | +22% | 1 | 1 | 0% | 1,823 | 3,092 | +70% | 0 | 0 | — |
case-06 | fail→fail | 2,655 | 6,428 | +142% | 1 | 1 | 0% | 390 | 1,027 | +163% | 0 | 0 | — |
case-07 | fail→pass | 3,991 | 6,454 | +62% | 1 | 1 | 0% | 428 | 1,826 | +327% | 0 | 0 | — |
case-08 | fail→pass | 9,429 | 3,123 | -67% | 1 | 1 | 0% | 1,419 | 1,320 | -7% | 0 | 0 | — |
case-10 | fail→pass | 11,175 | 4,025 | -64% | 1 | 1 | 0% | 1,758 | 1,355 | -23% | 0 | 0 | — |
case-11 | fail→pass | 8,889 | 6,154 | -31% | 1 | 1 | 0% | 1,319 | 1,701 | +29% | 0 | 0 | — |
case-12 | pass→pass | 9,810 | 3,781 | -61% | 1 | 1 | 0% | 1,468 | 1,359 | -7% | 0 | 0 | — |
case-13 | pass→pass | 9,364 | 4,821 | -49% | 1 | 1 | 0% | 1,412 | 1,537 | +9% | 0 | 0 | — |
case-14 | fail→pass | 12,585 | 2,944 | -77% | 1 | 1 | 0% | 1,788 | 1,272 | -29% | 0 | 0 | — |
case-15 | fail→fail | 6,036 | 3,309 | -45% | 1 | 1 | 0% | 932 | 1,078 | +16% | 0 | 0 | — |
case-16 | fail→fail | 11,201 | 7,575 | -32% | 1 | 1 | 0% | 1,899 | 2,035 | +7% | 0 | 0 | — |
case-17 | fail→pass | 9,856 | 3,594 | -64% | 1 | 1 | 0% | 1,429 | 1,283 | -10% | 0 | 0 | — |
case-18 | fail→pass | 8,540 | 3,601 | -58% | 1 | 1 | 0% | 1,231 | 1,389 | +13% | 0 | 0 | — |
case-19 | fail→pass | 12,612 | 11,557 | -8% | 1 | 1 | 0% | 1,972 | 2,901 | +47% | 0 | 0 | — |
case-20 | pass→pass | 10,032 | 4,674 | -53% | 1 | 1 | 0% | 1,571 | 1,493 | -5% | 0 | 0 | — |
case-21 | pass→pass | 8,729 | 3,442 | -61% | 1 | 1 | 0% | 1,308 | 1,292 | -1% | 0 | 0 | — |
case-22 | pass→pass | 4,451 | 3,610 | -19% | 1 | 1 | 0% | 548 | 1,331 | +143% | 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 17 counted toward the lift figure. The other 5 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 +36 percentage points is the difference between those two pass rates over the 17 comparable cases. 1 case got worse with the skill loaded, and it is 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.