prune
Skill2 starsChanged 34 days agoMITView on GitHub
Inspect the harness surface for drag the current model no longer needs and propose prune candidates for human review — never deletes or edits anything itself. Triggers — "craft:prune", "harness prune review", "prune the harness", "delete the harness against the new model".
14 other projects use a version of this.
Adopted by
Most recently taken up by
- adelrodriguez/skillstheir own version, first seen Nov 15, 2026
- domengabrovsek/agent-configtheir own version, first seen Nov 8, 2026
- domengabrovsek/claudetheir own version, first seen Nov 8, 2026
- hiroqt/overdrivetheir own version, first seen Nov 1, 2026
- simota/agent-skillstheir own version, first seen Oct 23, 2026
- Wanghaoyihaoyi/agent-skillstheir own version, first seen Oct 15, 2026
Used with
Projects with it also use deliver, wizard and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
GoogleSkilldeliver
Posts a condensed version of the briefing to a Google Chat or Slack incoming webhook, so the daily run delivers itself — skips silently when no webhook is configured.
Also in 3 projects that use this
AWSSkillwizard
Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.
Also in 3 projects that use this
AWSSkillwait-what
Stop. That last message did not land: re-pitch it.
Also in 3 projects that use this
NVIDIASkillresearch
Before designing a feature, research how comparable libraries solve the problem, check best practices, known pitfalls, and upstream changes. Use when starting a new feature, investigating an unfamiliar area, or the user asks to research something.
Also in 5 projects that use this
GoogleSkillprototype
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
Also in 4 projects that use this
BlockSkillplan
Draft a TDD, PRD, or lightweight plan in the conversation without committing it.
Also in 3 projects that use this
Other versions14 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 14
- TokenRollAI/cc-plugin★ 483same name
- simota/agent-skills★ 96same name
- domengabrovsek/agent-config★ 22same name
- domengabrovsek/claude★ 22same name
- Wanghaoyihaoyi/agent-skills★ 3same name
- hiroqt/overdrive★ 2same name
- jtsang4/efficient-coding★ 2same name
- matthewp/tideway★ 2same name
- tyler-berggren/tb-claude-kit★ 2same name
- adelrodriguez/skills★ 1same name
4 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository20 other files it gives its agents.
- architectureSkill
- decisionsSkill
- designSkill
- documentationSkill
- impact-triageSkill
- implementationSkill
- initSkill
- integrateSkill
- lessonsSkill
- metricsSkill
- planningSkill
- promote-configSkill
- proposeSkill
- refactoringSkill
- requirementsSkill
- reviewSkill
- runSkill
- tuneSkill
- validationSkill
- workspaceSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 2 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 13 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
Before inspecting anything else, read contracts/core.md.
- Very specific: line 27
Fail-closed: If contracts/core.md cannot be read, stop here and emit no proposals.
- Distinctive: line 36
Read-only, over exactly these paths:
- Very specific: line 88
Read contracts/core.md. Unreadable → report the read failure and stop.
- Distinctive: line 94
Check every drafted candidate against the denylist read in step 1, identically for both classes: a rule-vs-fact candidate mapping to a core …
- Very specific: line 110
Before it is enacted, the maintainer *should* check an approved candidate by hand against the behavioural eval case (or cases) that drive …
“Common” is measured: kept by at least 6 in 10 of the 13 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
craft:prune — standing harness-prune review
Standalone, session-owned skill, invoked on demand. It is not a pipeline phase — it is not part of the default pipeline and never runs unless a session explicitly invokes it. An uninvoked skill is inert: zero drag, nothing to revert, nothing to maintain against a run that never happens.
This skill is ADVISORY and read-only: it writes no harness file. Its only output is a proposal a human reviews. A run that finds nothing to propose is a recorded no-op, never a blocker.
Input: $ARGUMENTS (zero-argument).
Preamble — read the denylist first, fail closed
Before inspecting anything else, read contracts/core.md. It is the undroppable-core
denylist every later candidate is checked against.
- Fail-closed. If
contracts/core.mdcannot be read, stop here and emit no proposals. Never fall back to an empty denylist and propose against it — an unreadable denylist is a hard stop, not a green light. - The same refusal covers the non-overridable cross-phase invariants documented alongside the core contract: a candidate mapping to either is refused before it is ever emitted, not merely flagged after the fact.
Inspection scope
Read-only, over exactly these paths:
contracts/*.md— the invariant floors, read both as the denylist source and as inspection material (a floor can also restate itself redundantly across files).- The lint set —
scripts/*-lint.sh,engine/bin/*-lint.js, and theengine/srcmodules those bins import. - Skill and agent prose —
skills/**,agents/**.
Resolve the current model identity from the run context; when the run context does not
carry it, read docs/guides/model-class-matrix.md. Flag drag the resolved model no longer needs:
belt-and-braces guidance that duplicates behaviour the model already carries natively, a
lint superseded by a newer mechanism, or prose restating what the model now does without
being told.
Rule-vs-fact. A unit that encodes a decision procedure the model can already run, where stating one missing fact would suffice. The candidate's replacement is the fact itself, stated once, at the place the procedure lived.
These two questions are orthogonal: the first asks whether the guidance is needed at all; this one asks whether guidance is the right shape for what it carries. A unit can fail the second and pass the first.
Output — a proposal, never an action
The only output is a structured list. Each candidate carries three fields: unit (the file
or section proposed for removal), rationale (why the current model no longer needs it),
and what-would-replace-the-safety-it-provided (what covers the gap if it is dropped — "the
model's native behaviour," "a newer lint," or "nothing — flag as a genuine regression risk,
not a candidate," when nothing would).
Emit each surviving candidate as one greppable line:
PRUNE-CANDIDATE(<unit>): <rationale>For a rule-vs-fact candidate, the rationale carries a fixed prefix so the two classes stay
greppable apart — no new token, the same PRUNE-CANDIDATE(<unit>): line, a distinguishing
rationale prefix only:
PRUNE-CANDIDATE(<unit>): rule-vs-fact — <rationale>The three-field candidate shape is unchanged; for a rule-vs-fact candidate the existing
third field (what-would-replace-the-safety-it-provided) carries the missing fact.
This token is defined here only. It does not join the skills/run/SKILL.md token
family, and no other skill or script emits it.
Procedure
- Read
contracts/core.md. Unreadable → report the read failure and stop; emit no proposals (fail-closed — see Preamble). - Resolve the current model identity (run context, else
docs/guides/model-class-matrix.md). - Walk the inspection scope. For each unit that looks like drag against the resolved model, or that encodes a decision procedure a stated fact would replace, draft a candidate with the three fields above.
- Check every drafted candidate against the denylist read in step 1, identically for both classes: a rule-vs-fact candidate mapping to a core invariant is dropped before emission, exactly as a drag candidate is. A candidate mapping to a core invariant, or to a non-overridable cross-phase invariant, is refused — drop it; it is never emitted.
- Emit the surviving candidates as
PRUNE-CANDIDATE(<unit>): <rationale>lines, and asPRUNE-CANDIDATE(<unit>): rule-vs-fact — <rationale>lines for the rule-vs-fact class. - Report the list to the user for ratification. Delete or edit nothing.
Enacting an approved prune
This skill proposes only. A candidate the user approves is enacted through a normal craft
feature run (design through validation), where the harness's existing gates —
contracts-lint, source-hygiene, the DoD lints, and the repo's validation techniques
already wired into ci.sh — protect the core exactly as they would for any other change.
This skill itself never deletes or edits a harness file.
Before it is enacted, the maintainer should check an approved candidate by hand against the
behavioural eval case (or cases) that drive its unit (evals/, procedure in
docs/contributing/maintainer-smokes.md). craft never runs claude plugin eval itself.
A with-craft score that holds once the unit is removed, or a delta near zero, is evidence the
model no longer needs it. A unit no case drives carries no such evidence; say so in the
proposal. This is advice, not a gate.
Trigger
Manual and documented here — the ratified floor. There is no auto-detection of a model
change, no cadence timer, and no new pipeline phase. A session runs this skill by name when
a human decides a review is warranted — for example, after a run deliberately records a new
model class in docs/guides/model-class-matrix.md.
Error semantics
| Condition | Behaviour |
contracts/core.md unreadable | Fail-closed: stop, emit no proposals, report the read failure — never propose against an empty denylist |
| Inspection scope quiet (no drag found) | Recorded no-op: report zero candidates; never a blocker |
| A drafted candidate maps to a core or cross-phase invariant | Refused before emission — dropped from the list, not merely flagged |
| Skill not invoked this session | Inert: no run, zero drag, nothing to report |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

