Build artifact · correction + extension · three-experiment arc
Skills 2.0 — falsified, partially fixed, then fixed
TL;DR
Three weeks ago BW-2026-005 said Skills 2.0 lifts median trust score across five skills from 0.25 to 0.53, and to 1.00 on the fully-implemented growth-accounting. The numbers were real. The interpretation was wrong.
This issue corrects the record. We ran a controlled three-arm experiment (EXP-008), the original Skills 2.0 runtime lost, we identified the mechanism, fixed it twice, and the third version won the original hypothesis. Everything below is pre-registered SHA-locked and blind-judged with κ_self-consistency = 1.000 across three experiments.
The headline is not "Skills 2.0 works." The headline is three experiments, three different verdicts, and a v1.0 product specification that falls out of the data.
The three-row table.
One table, the entire story. Anyone who reads only this paragraph gets the truth.
| Experiment | A3 mechanism | A3 mean FF | vs A2 (checklist) | Gates passed |
|---|---|---|---|---|
| EXP-008 | v0.5 — telemetry-only runtime | 2.83 | −0.43 (lost) | 1 of 6 |
| EXP-009 | v0.6 — mandatory @step narration |
3.06 | −0.20 | 2 of 4 |
| EXP-010 | v0.7 — runtime narration + LLM case elaboration | 3.83 | +0.57 (won) | 5 of 6 |
Procedural compliance, same arc: v0.5 = 3% → v0.6 = 100% → v0.7 = 98%. Cumulative framework-fidelity lift v0.5 → v0.7: +1.00 points on the 0–4 scale (35% improvement). The v0.7 win is the first time the contract-runtime arm beats the prompt-checklist arm on framework fidelity in the entire program.
Skills 2.0 v1.0 product specification: transformer + runtime + elaborator. Three modules, each empirically load-bearing. Remove any one and the lift disappears.
The correction.
BW-2026-005 reported 0.25 → 0.53 trust-score lifts using a self-built 3-axis metric (FIDELITY × COVERAGE × ANCHORING) on cases I had written and tuned the runtime against. EXP-008 redid the work properly: three arms (prose alone, prose + step checklist, full skills2 runtime), 120 prompts authored by a separate LLM session that never saw the runtime, 40 cases per skill across three skills, blind LLM judge using a rubric also authored by an independent session, two-pass self-consistency check.
The headline number from BW-2026-005 does not survive that protocol. Under blind judging:
| Skill | A1 mean FF | A2 mean FF | A3 v0.5 mean FF |
|---|---|---|---|
growth-accounting (fully implemented) | 3.23 | 3.26 | 2.83 |
psych-framework (transformer stubs) | 2.00 | 4.00 | 4.00 |
abw-design (transformer stubs) | 3.97 | 3.89 | 2.63 |
A3 lost the comparison that mattered (A3 vs A2, the strong baseline) on two of three skills, by 0.43 and 1.26 points respectively. Five of six pre-registered gates failed. The pre-registered falsifier — "A3 ≤ A2 OR Δ < 0.20 across all three skills" — fired on the first clause.
The 0.53 number BW-2026-005 reported was the trust-score metric I had built into the audit. It rewarded structural compliance (steps fired, schema validated) without checking whether the response text reflected the framework. The blind judge — reading the response_text the user would see — disagreed.
What broke.
The skills2 v0.5 runtime fires Python @step functions in order, with Pydantic I/O validation and invariant enforcement, and records everything in steps.jsonl. EXP-008's judge transcripts said the same thing across every A3 cell:
The contract was enforced. The user couldn't see it. The judge — modeling the user — couldn't see it. The trust-score metric could see the telemetry. The user can't. A skill that does the right thing in the audit and the wrong thing in the response is exactly the output-passing behavioral regression pattern Paper 1 names. Skills 2.0 v0.5 was a behavioral regression of itself.
Three stages, three verdicts.
EXP-008 · v0.5 telemetry only · pre-reg af019866…30b6f92
Falsified.
Three skills, 120 cases, 360 traces, 720 blind judge ratings. A3 lost to A2 by 1 median point on framework fidelity. Procedural compliance 3% — the runtime fires, the prose doesn't reflect it. Five of six pre-registered gates failed. The pre-registered falsifier triggered. Full INTERPRETATION.
EXP-009 · v0.6 mandatory narration · pre-reg d8e4738e…c0c44d
Procedural compliance fixed; framework fidelity still below baseline.
v0.6 fix: @step decorator now accepts (output, narration). Runtime accumulates narrations and exposes render_narrations(). The procedure surfaces in prose alongside the typed output.
Procedural compliance: 3% → 100%. Largest single mechanism improvement in the program. Mean framework fidelity: 2.83 → 3.06 (+0.23). Still 0.20 below A2 (3.26). Judge transcripts named the next ceiling:
The hard-coded prescriptions in step bodies are generic by construction. Two of four gates pass. Full INTERPRETATION.
EXP-010 · v0.7 hybrid (runtime + LLM case elaboration) · same pre-reg as EXP-009
Won the original claim.
v0.7 keeps the runtime structural enforcement intact. After all steps fire, the LLM takes the rendered narration plus the user's case and elaborates the per-flow prescription with case-specific tactical advice. The runtime narration is the structural skeleton; the LLM adds case-conditional texture.
Mean framework fidelity: 3.06 → 3.83 (+0.77). Median: 3 → 4. A3 beats A2 by +0.57 mean / +1.0 median framework-fidelity points. First experiment in the program where the contract-runtime arm beats the prompt-checklist arm. Five of six gates pass. Full INTERPRETATION.
The elaboration is case-conditional, not blanket:
- Resurrection-as-vanity warning fired on 12% of cases — only when Resurrected ≥ 1.5× New.
- Big New + thin Retained → fix activation fired on 52% — only when Churned ≥ 60% of New and resurrection wasn't dominant.
- Contraction as leading indicator fired on 9% — only when contraction was actually growing in the case data.
- Aggregate MAU masking motivation fired on 100% of normal cases.
- 1.5 quick-ratio threshold cited on 100% of normal cases.
The elaborator surfaces signals the data warrants. The judge rewarded that with 33 of 40 score 4s (vs. v0.6's 7 of 40 score 4s).
The skills2 v1.0 spec falls out.
The original Skills 2.0 thesis — runtime contracts > prompts — was half-right and half-wrong.
Half-right: runtime contracts deliver something prompts cannot. They enforce step order, validate I/O via Pydantic, and write telemetry that makes a session auditable. EXP-009 proved 100% procedural compliance versus 83% for the best prompt baseline.
Half-wrong: runtime contracts alone do not lift the quality of the response prose. They can't, because the prose has to adapt to the case and the runtime's hard-coded prescriptions can't. EXP-008 falsified "runtime contracts beat prompts on framework fidelity" as written.
v0.7 splits the job. The runtime owns structural compliance. The elaborator owns case-specific reasoning. Together they win.
Skills 2.0 v1.0 ships with three modules, each empirically load-bearing:
- Transformer — produces
skill.toml+ step inventory + Pydantic schemas from a v1 SKILL.md. Already valuable; powers the A2 prompt baseline. - Runtime —
@stepdecorator with mandatory narration, telemetry, invariants. Proven by EXP-009: 100% procedural compliance. - Elaborator — post-runtime case-specific reasoning that ties the runtime's structural narration to the user's specific data using the rubric's signal list. Proven by EXP-010: +0.57 framework fidelity mean over the strongest prompt baseline.
Removing any one of the three loses the lift. Runtime without narration = EXP-008. Runtime with narration but no elaborator = EXP-009. All three = EXP-010.
What this issue does not claim
(1) Generalization beyond growth-accounting. The v0.7 elaborator is packaged with a reference implementation for one skill; psych-framework and abw-design ship skeleton elaborators that need per-skill author extension before they hit the same lift.
(2) Human-rater agreement. Judges are LLM (Sonnet 4.6 subagents). Self-consistency κ = 1.000 across all three experiments — the rubric is internally reliable. Human-LLM agreement on this rubric has not been measured. A small human anchor pass on a stratified sample is deferred to EXP-011.
(3) Model independence. The elaboration uses the same model that judges. A different elaborator model could shift the gap. EXP-012 candidate.
(4) Cost neutrality. The hybrid adds one LLM call per skill run on top of the runtime. Latency + token cost rise. Quantification not yet captured.
(5) The original BW-2026-005 "0.25 → 0.53 across 5 skills" finding. It does not survive blind judging. We deprecate the 0.53 number.
What ships
skills2 v0.7.1— transformer + runtime + packaged elaborator + reference skillgithub.com/raising-agents/skills2- EXP-008 falsifying experiment
lab/exp/exp-008/ - EXP-009 narration mechanism partial fix
lab/exp/exp-009/ - EXP-010 hybrid mechanism full fix
lab/exp/exp-010/ - Pre-registration SHAs
af019866… / d8e4738e… - Aggregate sample size
1,080 traces · 720 judge ratings
Sources and pairings
- BW-2026-005 — the superseded issue. This issue corrects it. The original remains live for the historical record.
- Paper 1 — Output-Passing Behavioral Regressions. Skills 2.0 v0.5 turned out to be an instance of the failure mode Paper 1 names.
- Paper 3 — Mined Contracts via Process Mining. Produces the
behavior-spec.yamlartifacts the runtime executes. - Paper 3.5 (in progress) — Decomposing Skill-Runtime Lifts: How Structural Compliance and Case-Specific Elaboration Combine to Beat Prompt-Engineered Baselines. Academic writeup of the three-experiment arc.
- Anthropic (2025). Equipping agents with Agent Skills. anthropic.com/engineering. The v1 spec this work extends.
- cto-strategy vault-contract pattern (private repository). The three-tier enforcement scaffolding the runtime layer is built on.