Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Read an approved GRACE 4 GraceChangeSpec and optional design context, then create a GraceChangePlan with assertions, scopes, tasks, and verification gates.
.claude/skills/osovv-grace-plan/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 459% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 539% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 683% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 751% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 545% | 0% |
<skill> <purpose>Convert one approved active GraceChangeSpec into the executable GraceChangePlan; do not implement source code.</purpose>
<inputs>
.grace/changes/active/C-CHANGE-ID/spec.xmldesign-context.xml.grace/context, graph and verification indexes, and their routed documents</inputs>
<preflight>
.grace/changes/active/C-CHANGE-ID/spec.xml with GraceChangeSpec, status approved, and exactly one matching direct C-* wrapper.design-context.xml as explanatory; spec.xml wins on conflict.grace lint --path PROJECT --assertions current before planning and surface stale or invalid active baselines.</preflight>
<approved_plan_immutability>
plan.xml already exists with status approved, stop before writing.BaselineAssertions, TargetAssertions, DurableScope, ObservedWriteScope, or tasks in place.C-* bundle and mark the old bundle superseded with an explicit replacement reference.</approved_plan_immutability>
<must_do> Produce plan.xml from references/change-plan-template.xml as draft unless the user explicitly approves the completed plan. Require a matching C-* wrapper, meaningful intent, non-empty machine-checkable baseline and target assertions, explicit durable and observed scopes, and unique acyclic T-NNN tasks. A scope with no writes must use an explicit <None /> marker; prose such as "none" is invalid. Every task has one Title, one DependsOn element listing zero or more predecessors as canonical comma-separated T-NNN values (for example <DependsOn>T-001, T-002</DependsOn>), non-empty acceptance criteria, and non-empty verification commands. Dependencies form a directed acyclic graph: list only true predecessors and never linearize independent tasks into a chain to express ordering. Surface stale-state and coexistence warnings, and reject unsupported scope glob syntax instead of guessing. </must_do>
<command_phase_rules>
current is an active-baseline preflight and is valid only before observed writes begin.baseline is the selected pre-edit gate, target is selected post-edit evidence, and final is the outer apply/archive gate owned by grace-execute.MustPassCommand contains leaf project evidence such as tests, typecheck, build, format, or package checks. Never place grace lint, grace status, or another GRACE lifecycle command inside it.--assertions current in TargetAssertions or in task verification that runs after writes. Use selected target/final lint externally instead.MustPassCommand must complete within its declared budgetSeconds (absent, the global --command-timeout applies) on the reference host; declare the budget you have measured rather than inheriting a default that will kill the command mid-gate.</command_phase_rules>
<validation>
grace lint --path PROJECT --assertions currentgrace lint --path PROJECT --parallel-preflightgrace status --path PROJECT --json after approval.</validation>
<hard_rules> Do not implement code, silently approve a plan, overwrite an approved plan, or mutate current graph/verification artifacts while planning. Semantic anchors are canonical XML tags, never attributes. </hard_rules> </skill>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 19,716 | 17,589 | -11% | 1 | 1 | 0% | 290 | 1,213 | +318% | 0 | 0 | — |
case-02 | fail→fail | 17,226 | 20,539 | +19% | 1 | 1 | 0% | 318 | 1,345 | +323% | 0 | 0 | — |
case-03 | fail→fail | 7,190 | 20,862 | +190% | 1 | 1 | 0% | 350 | 1,693 | +384% | 0 | 0 | — |
case-04 | fail→pass | 11,856 | 6,493 | -45% | 1 | 1 | 0% | 332 | 1,855 | +459% | 0 | 0 | — |
case-05 | fail→pass | 15,485 | 9,896 | -36% | 1 | 1 | 0% | 389 | 2,486 | +539% | 0 | 0 | — |
case-06 | fail→pass | 8,200 | 16,854 | +106% | 1 | 1 | 0% | 398 | 3,115 | +683% | 0 | 0 | — |
case-07 | fail→pass | 7,075 | 17,251 | +144% | 1 | 1 | 0% | 309 | 2,630 | +751% | 0 | 0 | — |
case-08 | fail→pass | 7,252 | 13,709 | +89% | 1 | 1 | 0% | 273 | 1,762 | +545% | 0 | 0 | — |
case-09 | pass→pass | 6,562 | 4,918 | -25% | 1 | 1 | 0% | 858 | 1,300 | +52% | 0 | 0 | — |
case-10 | fail→pass | 10,534 | 4,608 | -56% | 1 | 1 | 0% | 1,528 | 1,665 | +9% | 0 | 0 | — |
case-11 | pass→pass | 12,566 | 2,559 | -80% | 1 | 1 | 0% | 1,000 | 1,250 | +25% | 0 | 0 | — |
case-12 | fail→pass | 13,224 | 4,065 | -69% | 1 | 1 | 0% | 1,758 | 1,385 | -21% | 0 | 0 | — |
case-13 | fail→pass | 7,952 | 3,813 | -52% | 1 | 1 | 0% | 1,414 | 1,426 | +1% | 0 | 0 | — |
case-14 | pass→pass | 13,219 | 26,618 | +101% | 1 | 1 | 0% | 2,142 | 1,869 | -13% | 0 | 0 | — |
case-15 | fail→pass | 9,295 | 4,945 | -47% | 1 | 1 | 0% | 1,437 | 1,591 | +11% | 0 | 0 | — |
case-16 | fail→pass | 14,437 | 6,511 | -55% | 1 | 1 | 0% | 1,223 | 1,531 | +25% | 0 | 0 | — |
case-17 | pass→pass | 11,259 | 9,851 | -13% | 1 | 1 | 0% | 1,654 | 2,350 | +42% | 0 | 0 | — |
case-18 | pass→pass | 15,877 | 6,391 | -60% | 1 | 1 | 0% | 2,280 | 1,872 | -18% | 0 | 0 | — |
case-19 | fail→pass | 16,334 | 5,152 | -68% | 1 | 1 | 0% | 2,595 | 1,694 | -35% | 0 | 0 | — |
case-20 | fail→pass | 10,410 | 2,677 | -74% | 1 | 1 | 0% | 1,599 | 1,215 | -24% | 0 | 0 | — |
case-21 | fail→pass | 12,187 | 2,588 | -79% | 1 | 1 | 0% | 1,639 | 1,167 | -29% | 0 | 0 | — |
case-22 | fail→pass | 14,903 | 2,484 | -83% | 1 | 1 | 0% | 1,953 | 1,092 | -44% | 0 | 0 | — |
case-23 | pass→pass | 14,833 | 10,097 | -32% | 1 | 1 | 0% | 2,165 | 2,238 | +3% | 0 | 0 | — |
case-24 | fail→pass | 15,146 | 3,812 | -75% | 1 | 1 | 0% | 2,032 | 1,314 | -35% | 0 | 0 | — |
case-25 | pass→pass | 13,620 | 4,710 | -65% | 1 | 1 | 0% | 2,165 | 1,586 | -27% | 0 | 0 | — |
case-26 | pass→pass | 17,900 | 6,871 | -62% | 1 | 1 | 0% | 1,925 | 1,788 | -7% | 0 | 0 | — |
case-27 | fail→pass | 23,501 | 8,036 | -66% | 1 | 1 | 0% | 1,877 | 2,179 | +16% | 0 | 0 | — |
case-28 | fail→pass | 11,446 | 5,820 | -49% | 1 | 1 | 0% | 1,419 | 1,614 | +14% | 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. 28 cases were attempted, and 20 counted toward the lift figure. The other 8 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 +61 percentage points is the difference between those two pass rates over the 20 comparable cases.
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.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 9/3/2026 | +57% |
| gemini-3.6-flash | verified | 8/24/2026 | +59% |
Other measured skills in the registry, with their headline benchmark lift.