本文へ移動
cccskills
無料GitHub で公開

simplify-precision

Measure and raise the precision of `bun run simplify`, the simplify census, shape by shape. Harvests every recorded census reading and not-slop answer, replays the current scans over history, has blind judges label a seeded sample, scores each shape with a Wilson interval, and tunes a scan's source until the sites it prints are ones a reader would act on (target 0.8). Use when asked how good the census is, why it flags the wrong things, or to tune a tree scan or a staged catcher.

インストール方法を見る

含まれるファイル(6)

  • SKILL.md8.0 KB
  • labels.tsv119.1 KB
  • passes/pr120.tsv23.8 KB
  • references/judge.md2.7 KB
  • scripts/precision.mts21.0 KB
  • scripts/usage.mts5.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Simplify census precision

The census (tools/oxlint/simplify-census.ts) predicts where /simplify would cut. The goal here is precision: a printed site should be one a reader acts on. Missing some is cheap. The target is a point of 0.8 per shape, with the Wilson lower bound at or above 0.6 once 20 sites are judged. A shape that cannot reach that is narrowed until it does, or goes to the operator with its figures.

Recall is out of scope. A shape that is narrowed to fewer, truer sites has improved, even if it now prints nothing on today's tree. That is where every scan should sit on a clean tree.

What counts as a label

sourcewhat it saysweight
a not-slop ledger row (tools/oxlint/not-slop.tsv, either repository)a reader answered noa true no; also calibrates the judge
a blind judge verdict (labels.tsv)would a maintainer make this change, as proposedthe precision figure
a scan narrowed by a commita class of no, now silenthistory, not a label: the site no longer prints
a site gone by a later revisionthe code changednever a yes on its own: edits, renames and rewrites also remove sites

Outcome-based rates are in tools/oxlint/SHAPE-RULESET.md ("What the simplify record lets a deterministic catcher see"). They read 0.15 to 0.55 per visit and 0.7 to 0.9 eventually, and neither is the reader's judgement. The judge is the measure. The ledger keeps the judge honest.

The loop

Scripts run with Bun from a worktree whose scans are the rule under test. S is a scratch directory.

  1. Harvest usage. bun .claude/skills/simplify-precision/scripts/usage.mts --since <date> [--rows] [--answers] lists every census reading (time, session, findings, shapes) and every written not-slop answer across all ~/.claude* accounts and ~/.codex/sessions. It takes about a minute. Read which shapes readers met, and what they answered no to, before sampling. Narrowing history: git log --format='%h %ad %s' --date=short -- tools/oxlint/tree-*.ts.

  2. Replay. Run precision.mts replay --repo <repo> --out $S/sites.jsonl --every 40 --since <date> for this repository, and again for its sibling: ~/Developer/harness-builder-v4 and ~/Developer/anabasis carry the same scans (--every 6 for anabasis, a younger history). Each row carries the rule digest of the scan sources. Two rules never mix in one file. The replay prints what the census would have printed: registers are skipped and censusReads is applied.

  3. Sample. Run precision.mts sample --sites <pooled> --per-shape 16 --seed <n> --out $S/round<k>. It draws unjudged sites, one per id at its oldest revision, into 10-item packets and a manifest.json that the judges never see. Write down the prediction per shape before the verdicts arrive.

  4. Judge. Launch one read-only subagent per packet, at most eight at once (the operator's cap), with references/judge.md as its instruction, the repository path and the verdict file. Each writes verdicts-<n>.tsv. For the model's view, route through codex-luna-swarm when Claude allowance is short. To re-judge a round after changing the instruction, sample --again <round>/manifest.json --out <new round> repacks the same sites in the same order; ingest under a new --judge name adds rows beside the old ones, and score reads the latest judge per site.

  5. Ingest. Run precision.mts ingest --manifest ... --verdicts ... --judge <model> for each verdict file. This appends to labels.tsv, and the file is committed with the tuning.

  6. Score. Run precision.mts score --sites <pooled> --ledger <sibling>/tools/oxlint/not-slop.tsv, which adds the sibling's answers to this tree's. For each shape it prints the judged yes/n, the point, the 95% interval, and how many ledger no rows the judge also answered no. When the judge disagrees with the ledger, fix the judge instruction before you read the precision figure.

  7. Tune. Read the no reasons of the weakest shape (grep <kind> labels.tsv). Group them into classes and pick the largest class that a syntactic or whole-tree condition can separate. Change the scan's source, then add a fixture for the admitted no and for its nearest yes in test/simplify-census.test.ts.

  8. Measure the candidate. Replay again from the candidate worktree over the same revisions, then run score --candidate $S/candidate.jsonl. The line dropped N (yes a, no b) is the ablation. A condition is kept only when b is well above a. The v7 lesson in SHAPE-RULESET applies: it cost 18 yes for 8 no. The candidate's new sites and the precision you claim come from a fresh sample drawn after the rule is frozen. Verdicts that shaped a condition cannot also confirm it.

  9. Decide per shape.

    • Point at or above 0.8 with 20 or more judged: keep it as it is.
    • Between 0.6 and 0.8: narrow it again (step 7).
    • Below 0.6 after two narrowings: give the operator the figures and the no classes that no condition separates. A scan is never switched off here; a quiet tier was tried on 2026-09-24 and reverted, because the low figures came from a miscalibrated judge.

    Record the decision and its figures in a dated SHAPE-RULESET.md section. Also update the shape's argument in TREE_FINDING_ARGUMENTS, which prints above its sites.

Rules this skill inherits

  • AGENTS.md rule 8 governs tuning: change the rule's source so it targets the slop more precisely, with a fixture for each side. Never add an "off" entry.
  • Judges are read-only and blind: no ledger, no later commits, no outcome. They must not edit the tree or answer ledger rows.
  • A judge's yes understates the operator's. On 2026-09-21 the judge matched 7 of 7 operator no answers and 7 of 13 operator yes answers. A judged 0.8 is therefore a floor, not a ceiling.
  • A judge reads the rules of the checkout its session opened in, which may be stale. On 2026-09-24 round 1 was judged under a working-branch AGENTS.md that still said historical evidence stays readable, and answered no to 31 of 32 legacy readers the operator had removed. The instruction now makes the judge read origin/main's rules and prints each shape's census argument at the top of the packet. Re-judged on the same sites (round 1b), the overall precision went from 40 of 145 (0.28) to 94 of 144 (0.65). When a figure moves that much, suspect the instrument first.
  • Replay the current rule over old trees. Sites the rule was already tuned on are in-sample. Say so when you report a figure, and prefer sites from revisions after the last narrowing.
  • On today's trees the census reads 0 findings: every site is either fixed or answered. A zero does not mean the census failed to run. Fresh sites come from new commits, so re-run steps 2 to 6 with --since set to the last labelled date.

Files

  • scripts/precision.mts: replay, sample, ingest, score, pass.
  • passes/pr120.tsv: every surface PR #120's simplification removed or kept on purpose, at its base 0b3e5927. Replay a candidate rule at that revision and run pass --sites <replay> --pass passes/pr120.tsv: the kept column must read 0, and the removed column is recall.
  • scripts/usage.mts: census readings and not-slop answers from every transcript.
  • references/judge.md: the judge instruction.
  • labels.tsv: every judged site (id kind verdict source reason), appended, never rewritten.
  • Figures and decisions per round: the dated sections of tools/oxlint/SHAPE-RULESET.md.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use when deciding which Anabasis stage owns a change, when carrying one bounded build/measure slice from the user's prompt to evidence, or when deciding what may enter a run: the exact one-line prompt, context files, public catalogues, research and solve-side public data. Maps the product loop, the input contract, the authoring sessions, the adoption gates, the four owners, and validate-or-reopen behaviour. Not a long-running campaign controller.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月13日 更新

Use after an Anabasis run, comparison, or system change and before claiming improvement. Attributes movement to one owner, reports identities and censored denominators, separates deterministic proof from model judgement, keeps measurement validity apart from observed exploitation, and states what remains unrun or provisional.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月13日 更新

Use for 1-7 independent read-only sessions investigating one bounded Anabasis failure, diff, or design question before a fix. Defines non-leading prompts, evidence packets, symmetric fault hypotheses, self-falsification, source adjudication, and concise synthesis. Do not use for whole-run coverage at any session count; use whole-run-investigation instead.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月13日 更新

Get told the moment a live Builder session is blocked (five refused submits in a row, a repeated findings set, twelve checks without acceptance, two environment previews in a row, two hours since a submit or rehearsal last returned) and fix the owner iteratively: read, fix on the owning PR, then keep the run or kill it and relaunch on the upgraded system, and rearm. Use while a paid run is live and the operator wants blocking caught and repaired, not only reported.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月13日 更新

Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月13日 更新

Launch, start, monitor, and collect independent Codex subagents (gpt-6-luna at high, xhigh or max; gpt-6.1-sol for small review batches) for bounded parallel work, from Codex or from Claude Code, including requests supplied as a Markdown file of session prompts. This skill owns Codex subagent transport even when another investigation or review skill defines the questions. Use whenever the user asks for Luna or Sol agents, a swarm, many sessions, a concurrency test, a particular reasoning effort, a Codex subagent from Claude Code, or later collection of reports. Distinguish launch-only requests from requests to wait, collect, or synthesise. Route high and xhigh through the direct launcher; for 16 or more sessions, also invoke the direct launcher instead of native spawn_agent.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月13日 更新

s-smits のスキルをすべて見る

このスキルの問題を報告する