Skip to content

vet

vet

standalonereadhands-off

Use this when: you're unsure an idea or tool is worth adopting — and where it belongs

Problem it solves — The failure mode is blessing whatever idea was raised — especially your own. Vet refuses to rubber-stamp: it argues the skip case first, then judges worth, then placement, so an idea has to earn its place rather than getting one for being mentioned.

Used in workflows: Grow the harness

Vet

The front door for "is this worth it, and what is it?" Anything you're tempted to turn into a skill, a rule, or a new layer comes through here first. Two questions, in order — worth before placement, because most candidates should end as a skip.

This is the skill: refuse to rubber-stamp

The failure mode is agreeing with whoever brought the idea — especially when that's the user. So argue the skip case first, out loud, before you argue adopt. An idea earns a place; it doesn't get one for being mentioned. If the honest answer is "a rule already covers this" or "you'd never fire it", say so. When the idea was raised in this conversation and you feel pulled to bless it — or to bless your own re-scope/trim of it ("only D2 survives" is still author-bias on a verdict you reached) — dispatch a subagent (subagent_type: Explore) with only the idea + the standards (CLAUDE.md, .claude/rules/*, the current skill list) and let it form the verdict blind — same independence trick as check-reasoning. (Phase-A fallback: do it inline, but still write the skip case first.) For a big adoption (a new layer, a standing rule change), widen the skip case with the attack personas from docs/agents/lens-deck-adversarial.mdthe cost-conscious, the future change, the misuse case fit worth-judging best; a persona frames where to hunt for the skip, it never pre-decides.

1 — Worth (always)

  • Real gap? Does an existing skill / rule / learning already cover it? (qa-skills for the set; grep .claude/rules.) Near-duplicates are a skip.
  • Fit? Does it serve the five pillars and curated-beats-maximal? A skill you'd fire twice a year is debt.
  • Risk? Boost-managed collision, drift, always-on token cost, premature abstraction, maintenance.

Verdict: adopt / adapt / skip + one line why.

Altitude calibration — at worth, cost is an input, not a veto

The rules are the conformance floor for a diff, not the ceiling for an idea. Judging worth, treat frugality, always-on token cost and curated-beats-maximal as costs to weigh against the benefit — including non-linear upside — never vetoes. code-quality.md already subordinates frugality to correctness; hold the same posture toward high-value capability.

  • A high-cost idea with exponential upside can still be adopt — price it, weigh it, don't skip on cost alone.
  • You may recommend relaxing a current rule when the upside warrants — surface the rule-tension as the user's call, don't fail the idea on it.
  • "The pain hasn't arrived" is not a skip. A deliberate ahead-of-the-curve bet is judged on expected value, not today's friction.

This calibration is for worth/idea altitude only — diff-conformance judging (qa-code/qa-tests) keeps the rules strict.

2 — Placement (only if adopt / adapt)

As what, and at what altitude:

TargetWhenAltitude
rule (.claude/rules/)an always-on coding / working principle
skill (.claude/skills/)a discrete invocable action — pick the verb (build/qa/optimise/find/source/check/be/tidy/fyi)L0 artifact · L1 a set within a pillar · L2 the whole harness
lensfolds into an existing skill instead of a new one
learning (docs/learnings/)a tactical lesson from experience
agent (.claude/agents/)needs isolation or independence
doc (CONTEXT.md / ADR / …)durable reference, not an action

Prefer lens and rule over a new skill — a new skill is the heaviest option, justify it.

Then place on the static ↔ dynamic axis (orthogonal to which target). Decide whether the thing loads always-on (static — paid every turn) or on-demand (dynamic — paid only when relevant): a CLAUDE.md line, a .claude/rules/ body, a skill description are static; a skill body, a path-scoped rule, a docs/agents/* doc are dynamic. Default dynamic; justify static. It's a real architectural decision made at add time, not just when optimise-context trims later (context as code — glossary static ↔ dynamic placement).

Output

A short verdict block: Worth (adopt/adapt/skip + why) · Placement (target + altitude) · Risks · Next step (the build-/edit that does the write). vet itself writes nothing — it proposes; you confirm; the named target (e.g. build-claude-skill, a .claude/rules/ edit) does the work.

Where it sits

qa-skills / source-* / find-harness-improvements discover candidates and hand them here; brainstorm hands over fuzzy ideas; qa-skills uses it to judge prune / improve candidates. They all end at vet. It is the judge, not the builder — and not check-reasoning, which challenges a plan's soundness rather than an idea's worth.