program-repair

program-repair is a skill for Claude Code from uqeu/estelle-cli. It costs 0 tokens per session (992 once invoked), scanned A, original, Apache-2.0.

An automated repair process that finds the likely location of a failing program, creates several patches, and keeps a patch that passes the project's checks. It can compare candidate patches in isolated copies of the repository.

In plain words
What is it for?
Use it when a known failing test, a security update, or another executable check provides a clear way to judge success. It is for machine-assisted fixes rather than open-ended debugging.
Why use it?
Fixing a failing test by hand can require repeated searching and trial and error. This process evaluates multiple possible fixes against compilation, tests, security checks, and repository grounding.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the estelle plugin — 26 skills, 4 agents, 9 hooks shipped together

Good fit Use it when a known failing test, a security update, or another executable check provides a clear way to judge success. It is for machine-assisted fixes rather than open-ended debugging.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/uqeu/estelle-cli/program-repair
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add uqeu/estelle-cli --skill program-repair
Clone the repo
git clone --depth 1 https://github.com/uqeu/estelle-cli

Made for: Claude Code.

Or install estelle, the plugin that ships this one along with the rest of its 26 skills, 4 agents, 9 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for program-repair

README.md
[![agentmods](https://agentmods.dev/badge/skills/uqeu/estelle-cli/program-repair/github.svg)](https://agentmods.dev/skills/uqeu/estelle-cli/program-repair)
Your own site
<a href="https://agentmods.dev/skills/uqeu/estelle-cli/program-repair"><img src="https://agentmods.dev/badge/skills/uqeu/estelle-cli/program-repair/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for program-repair

Your own site · 80×15
<a href="https://agentmods.dev/skills/uqeu/estelle-cli/program-repair"><img src="https://agentmods.dev/badge/skills/uqeu/estelle-cli/program-repair.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 992 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.00992
Opus 5.5 $0.00000 $0.00397
Sonnet 5.5 $0.00000 $0.00198
Haiku 4.5 $0.00000 $0.00099

Measured 1mo ago against content hash dc44ff04f1fa, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

program-repair scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

estelle-plugin/skills/program-repair/SKILL.md · 49 lines

How it starts

The opening of the file, as written. The whole thing — 49 lines — stays where its author put it; the contents beside it link to each section on GitHub.

program-repair

Estelle's automated program-repair pipeline. This is not the interactive, human-driven debugging of bug-hunt or root-cause-loop — here a red test suite drives a machine loop: localize the fault with the whole-repo CodeGraph, fan N candidate patches out across isolated worktrees (run_swarm), gate each one against compile + the real pytest summary (run_and_repair_suite / parse_suite_output) + the security scan (scan_diff) + the grounding gate, and select the winner by majority vote (majority / select_best). Grounded in Agentless's 3-phase localize→repair→validate (2407.01489), AutoCodeRover's spectrum+AST localization (2404.05427), and Meta's SapFix.

When to run

When the acceptance signal is executable — a red suite with a known failing test, an incoming CVE patch, or a mechanical fix you'd rather not babysit. The loop only works when "did it work?" can be answered by running tests, so it can select a patch without a human in the loop. If there is no failing test to localize from and no green condition to validate against, use root-cause-loop first to establish one.

Procedure

  1. Localize by spectrum first. Start from the failing test node ids in parse_suite_output(...).failures (agent/verify_suite.py) and map each failing test to the files it exercises — the code the red tests actually touch is the first suspect set.
  2. Narrow by AST and the code graph. Resolve the symbols named in the traceback with the CodeGraph (conveyor/code_graph.py): definition_sites / files_defining to find where they live, references / blast_radius for what a change would ripple to, and central_files / betweenness_centrality to rank the suspects. The union, ranked, is the repair target.
  3. Generate N candidate patches in parallel. Fan the localized task out with run_swarm (serve/swarm.py) — one isolated worktree per candidate at PROPOSE+ autonomy — routing the work through route(kind="repair") → the FRONTIER tier. Diversify candidates (temperature) so the vote has real alternatives, not one answer echoed N times.
  4. Apply each candidate to its own sandbox. Turn every model reply into bytes on disk with extract_code_block (agent/patching.py), each in its own worktree, so the repo's real tests can run against it without candidates colliding.
  5. Gate on compile + the failing test. Run run_and_repair_suite / parse_suite_output: a run is GREEN only when the pytest summary line says passed and reports no failed/error — a passing coverage %, a clean import, or a partial run never count. Discard any candidate whose targeted test still fails.
  6. Gate on regression + safety. Re-run the whole suite (no new red allowed), then run scan_diff (secret + SAST + OSV dependency-CVE) and the grounding gate (no invented APIs). A candidate that fixes the target test but breaks another test or introduces a vulnerability is rejected — this is exactly the composition _gate_verdict (serve/api.py) uses for merge.
  7. Select by majority vote. Among the surviving patches, majority / self_consistency (agent/candidates.py) picks the convergent diff (independent candidates arriving at the same fix are more trustworthy than any single one); break ties toward the grounded candidate with select_best — fewest ungrounded APIs wins.
  8. Record the run and gate for merge. Persist the repair (run history + remember_fact) and the caught mistake (ExperienceStore.record) so recall improves on this codebase, then hand the winning patch to verify-gate before the PR.

Read the full file on GitHub · 49 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 49 lines · 0 tokens per session scan A dc44ff04f1fa

Subscribe to this mod's changes

program-repair is a skill published in the GitHub repository uqeu/estelle-cli (0 stars, last pushed 14d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 992 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-12.