Skip to content
Back to skills

Ablate

ASecurity

Removes one harness element at a time, reruns, and judges whether that element moves the result. Elements that do not move it are listed as delete candidates.

  • 12 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
ai-agentsgobashnode

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 24, 2026

npx -y skills add thkt/dotclaude --skill ablate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ablate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ablate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thkt-ablate-dotclaude/badge)](https://www.skillsdirectory.com/skills/thkt-ablate-dotclaude)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ablate
description: Removes one harness element at a time, reruns, and judges whether that element moves the result. Elements that do not move it are listed as delete candidates.
when_to_use: ablation, one-sided ablation, measuring a harness element's effect, listing delete candidates, harness ablation, which rules actually matter
allowed-tools: Read Write LS Bash(${CLAUDE_SKILL_DIR}/scripts/*) Bash(skills/_lib/*) Bash(claude:*)
model: opus
argument-hint: "[element path]"
---

# /ablate - one-sided harness ablation

## Input

`$ARGUMENTS` is an element path narrowing the measurement to one element. Omitted, every element Phase 1 enumerates is measured.

## Where the criteria and thresholds live

The arm list, the run count per arm, and the pass threshold are all constants in `${CLAUDE_SKILL_DIR}/scripts/arms.ts`. The classification criteria live in `${CLAUDE_SKILL_DIR}/scripts/verdict.ts`. The DR-gate criteria, the confirmed-unmet marker and where the records are read from, live in `${CLAUDE_SKILL_DIR}/scripts/dr_gate.ts`. The measurement window and the rare-by-design set live in `${CLAUDE_SKILL_DIR}/scripts/usage_counts.ts`. The per-rule trigger tasks and the fixed task set live in `${CLAUDE_SKILL_DIR}/references/measurement-criteria.md`. Do not copy a number into this body (`docs/wiki/deterministic-script-judgment.md`).

## Phase 1: Enumerate

Call `enumerate_elements(root)` in `skills/_lib/harness_elements.ts` for the harness elements and each one's classification. When `$ARGUMENTS` names an element path, hand Phase 2 that one alone.

```bash
node skills/_lib/harness_elements.ts .
```

## Phase 2: Run the arms

For each element Phase 1 returned, and each arm in `arms.ARMS`, assemble the command `arms.arm_command(arm, element)` returns and run it `arms.RUN_COUNT` times. Take that element's triggering task from `${CLAUDE_SKILL_DIR}/references/measurement-criteria.md`. Build one observation for that element out of the run results.

| Situation                                     | Treatment                                                                     |
| --------------------------------------------- | ----------------------------------------------------------------------------- |
| The run count falls short of `arms.RUN_COUNT` | Proceed with `arms.measurement_status(runs)` still returning `unmeasured`     |
| The element `wiped+1` restores is unsettled   | `arm_command` stops with ValueError, so settle the element before calling it  |
| A run fails and its result cannot be read     | Leave that run uncounted and put only the runs that landed in the observation |

## Phase 3: Report

Call `report.write_report(root, observations)`. Before a delete candidate reaches the report, `dr_gate.gate` reads `docs/decisions/` and holds back any element a live record governs, so the Summary counts them apart. It also runs `usage_counts.ts` and folds each element's fire count and last-used date into the same Harness Elements table, so there is one route to see them, not a second one running alongside it. It writes to `docs/audit/` by default, naming the file `<YYYY-MM-DD>-<HHMMSS>-ablate.md` in UTC, in the section order `${CLAUDE_SKILL_DIR}/templates/report-template.md` carries.

```bash
node --input-type=module -e 'const { write_report } = await import("./skills/ablate/scripts/report.ts"); let data = ""; for await (const chunk of process.stdin) data += chunk; console.log(write_report(".", JSON.parse(data)));' < <observations.json>
```

## Output

Removing anything the report names is a separate run: hand the delete candidates to `docs/wiki/retire-rename-procedure.md`, which owns the detection layer a retirement loses and the trigger for reviving it. This skill stops at the verdict.

| Item              | Content                                                           |
| ----------------- | ----------------------------------------------------------------- |
| Report path       | The path `write_report` returned                                  |
| Delete candidates | The report's Delete Candidates section, or that there are none    |
| Measured count    | Rows in Verdicts that are not `unmeasured`                        |
| Usage             | Each element's fire count and last-used date, in Harness Elements |

Files in this skill

  • SKILL.md4.2 KB
  • references/measurement-criteria.md8.9 KB
  • scripts/arms.ts4.3 KB
  • scripts/dr_gate.ts3.6 KB
  • scripts/enforcer_map.ts5.9 KB
  • scripts/exposure.ts5.9 KB
  • scripts/reference_arm.ts10.1 KB
  • scripts/reference_match.ts4.7 KB
  • scripts/reference_observation.ts5 KB
  • scripts/report.ts11.8 KB
  • scripts/usage_counts.ts10.5 KB
  • scripts/verdict.ts2.5 KB
  • templates/report-template.md864 B
  • tests/ablate-form.test.ts8.8 KB
  • tests/ablate-scripts-retirement.test.ts5 KB
  • tests/arms.test.ts7.1 KB
  • tests/dr-gate.test.ts3.5 KB
  • tests/enforcer-map.test.ts3.7 KB
  • tests/exposure.test.ts4.2 KB
  • tests/fixtures/enforcer-map-cases.json1009 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.