Skip to content
Agent Orchestration
Skill

/harness-stripping

Systematically remove one harness component at a time and measure impact, killing scaffolding that no longer earns its complexity.

BOOST
From plugin
loopkit
75553 skills1 agent4 commands2 MCP
Install
$ npx -y skills add Archive228/loopkit --skill harness-stripping --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/harness-stripping

Context preview

The summary Claude sees to decide when to auto-load this skill.

Systematically remove one harness component at a time and measure impact, killing scaffolding that no longer earns its complexity.

SKILL.md

harness-stripping.SKILL.md
name: harness-stripping
description: Systematically remove one harness component at a time and measure impact, killing scaffolding that no longer earns its complexity.
when_to_use: auditing a harness after a model upgrade to see what workarounds are now obsolete, a component encodes an assumption about model weakness worth re-testing, or the harness has grown organically and you suspect dead/redundant machinery

Harness Stripping

Every harness component was added to compensate for a specific model failure. Models improve. Components don't retire themselves. The scaffolding that saved you on Sonnet 4.5 may be dead weight — or actively harmful — on Opus 4.6. Strip it deliberately, one piece at a time, and let evals tell you what still earns its keep.

Inspired by Prithvi's March 2026 harness post on evaluator-generator separation and the general "re-test your assumptions each model bump" discipline.

When to apply

  • A model upgrade just landed and your harness was tuned for the previous generation.
  • A component's justification is "we added this because the model used to do X" — and you haven't checked whether it still does X.
  • The harness has accreted over months and nobody remembers what half the machinery is for.
  • Cost or latency is climbing and you suspect redundant belt-and-suspenders layers.

Procedure

1. **Inventory the components.** List every distinct piece of scaffolding: prompt sections, tool wrappers, post-hoc validators, retry loops, evaluator personas, structured-output enforcers, sandbox rules. One row per component. Note the failure mode each was added to prevent.

2. **Rank by suspicion.** Put the components most likely to be obsolete at the top: anything added before the last two model bumps, anything targeting a failure mode you haven't seen recently, anything whose original justification is now folklore.

3. **Pick a baseline eval.** You need a repeatable metric before you touch anything. Reuse an existing eval set if you have one; otherwise pick 20–60 tasks representative of production work. Record baseline score, cost, and wall-clock.

4. **Strip one component.** Only one. Comment it out or gate it behind a flag — don't delete yet. Re-run the eval.

5. **Compare against baseline.**

  • Score within noise, cost/latency down → the component is dead weight. Delete.
  • Score drops measurably → the component still earns its complexity. Restore and note *what failure mode* returned.
  • Score *improves* → the component was actively harmful. Delete and investigate why (often: over-constraining a now-capable model).

6. **Commit the delta.** Land the strip (or the restore-with-notes) as its own commit. Do not batch multiple strips into one change — you lose the ability to attribute the score movement.

7. **Repeat for the next component.** Re-establish baseline from the *new* state each round, not the original. Compounding strips have compounding effects.

Anti-patterns

  • **Stripping two components at once** — you can't tell which one mattered. Halve the signal, double the confusion.
  • **Skipping the eval "because it's obviously safe to remove"** — the harness accreted for reasons. Some are still real. Measure.
  • **Deleting instead of gating on the first pass** — you will want to A/B mid-review. Flag first, delete after the eval confirms.
  • **Trusting anecdotes over the eval** — "it feels better without it" is how load-bearing components get removed. If the eval doesn't show it, it isn't there.
  • **Stripping components that guard safety, sandboxing, or cost caps** — those aren't compensating for model weakness. Leave them.
  • **Doing this on prod traffic** — run against an eval set, not real users. The failure modes you're re-probing are exactly the ones that hurt users.

What to strip first

Highest yield in practice:

  • Structured-output enforcers layered on top of models that now emit valid JSON natively.
  • Multi-step "plan then execute" wrappers on tasks the model now one-shots.
  • Retry loops around tool calls that no longer flake.
  • Evaluator personas whose critiques the generator now anticipates on its own.
  • Verbose "remember to do X" prompt sections where X is now default behavior.

When NOT to apply

Don't strip mid-project on a live long-running run — you'll perturb sessions in flight. Do it between projects, or on a forked branch. Also skip if you don't have an eval you trust; stripping without measurement is guessing.

Related

  • [[shift-notes]] — record which components were stripped and when, so the next audit doesn't re-strip and re-restore the same piece.
  • [[adversarial-verify]] — the evaluator-generator pattern that may itself be a strip candidate on newer models.
  • [[broken-window-check]] — if you strip a component and the eval regresses in a specific way, that's your new broken window to hunt.
Read more
Ships withloopkit

33 battle-tested skills + minimal .claude harness for any coding agent (Claude Code, Cursor, Codex, Gemini CLI).

Get the whole plugin

Other skills on loopkit.