跳到正文
cccskills
免费在 GitHub 公开

harness-audit

The harnesses a campaign keeps, read outside a run: which there are and where each came from, what each is made of and what moved from its parent, what each was measured to be, trying one on a task, the audit before a promotion and the blind review at a handover, whether a part earns its place, and changing what makes a harness or what a seat is told about one. Use when the operator asks which harness is current, what a Builder changed, whether a harness is ready to promote or hand over, to run a kept harness on a task, or to change the harness contract. Reading one run is whole-run-investigation's, wording a claim attribution-and-proof's.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(2)

  • SKILL.md10.7 KB
  • scripts/harness-versions.ts16.6 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Harness audit

A campaign keeps every harness a session froze under its digest, in states/ beside its log (tools/d2/campaign.ts). The log says how each came to be there and what measured it: harness.version (the session, its parent and its note), harness.imported, harness.promoted, and each comparison's start and report. This skill reads the two together. Its script writes nothing of the campaign's, starts no solve and calls no model; the commands it names that solve are marked, and each needs the operator's word (AGENTS.md, section 10).

The questionRead
Which harnesses, where each came from, what measured itharness-versions.ts
What moved from a parent to its childharness-versions.ts --diff, and lane 13 for what it means
How one runs on a taskTrying a kept harness
Ready to promote, or to hand overBefore a promotion and At a handover
Which part of a harness did ita checkpoint against programs-of:<digest>, worded by attribution-and-proof
Whether a part earns its placeFrom recorded use
A change to what makes a harness, or to what a seat is toldThe contract

The versions

bun .claude/skills/harness-audit/scripts/harness-versions.ts --name <campaign> [--json]
bun .claude/skills/harness-audit/scripts/harness-versions.ts --log <log> [--json]
bun .claude/skills/harness-audit/scripts/harness-versions.ts --name <campaign> --diff <harness> [--against <harness>]

A harness is named as the campaign's commands name one (keptAs): starter, promoted, latest or a whole digest, or its unambiguous letter from namesOf; --log reads a log copied out of its campaign, with its states/ beside it. The list gives each harness the log names or the folder keeps, the starter first:

  • whether it opens as kept. Every command that hands a harness to a solve opens it first and refuses one that opens as another digest: a state that lost its tool tree when its campaign was moved had two solves paid for under its name. The list says it of every state at once.
  • how it was made: the session and the parent it froze from, with the length of its note; an import and where from; the starter as this checkout writes it; or no record. A harness with no record is a stored sweep's first parent, which stands in the sweep's root and is not kept here, a starter written by another checkout, since a change to the Starter's parts changes its digest, or a programs-of control, which no event records. Say which; do not rebuild a missing state.
  • its roles, starter, reference and latest, each naming the starter until something else holds it.
  • its parts: nonblank lines of the guide and of agent/tools.ts, the presets and the tools the spec declares, the files and size of .toolchain and whether it is a link, and other files. agent/config.yaml is ignored; a module may import other files under the harness.
  • what measured it: each session that started from it, with its practice solves and counted fails, and each comparison it stood in, on which side, against what, and how it read, with its tally. The fold is campaignOf (src/builder/handover.ts), the one the view and the campaign command read.

--diff counts what moved, part by part, against the parent the log records or --against: lines added and removed in the guide and the tools module, tools added and removed in the spec, files added, removed and changed in the tool tree and under which folders, and other files by path. It quotes no line, and neither does anything written from it (lane 13). It takes no control: the command that compares one makes it.

Trying a kept harness

  • One task, as handed over. bun tools/d2/close.ts --name <campaign> --to <folder outside the repository> --solve <task id> writes the handover and solves that task under the harness from the folder it wrote, with the campaign's solver and checks, in a log of its own (handover/log.jsonl) that no reading counts. Name a released task. It is a solve: the operator's word.
  • Two harnesses on the same tasks. bun tools/d2/checkpoint.ts with --reference and --new, through run-management. programs-of:<harness> on either side separates the installed programs from the guide and the tools.
  • Another question needs its own campaign. The --solve flag names an existing task id; it does not fit a new question into a recorded task.

Before a promotion

The campaign promotes automatically unless --hitl is set (AGENTS.md, section 3). For a manual promotion, put these in front of the operator.

  1. The rule. bun tools/d2/promote.ts --name <campaign> --harness <digest>, without --yes, prints the comparisons the harness was the new side of and asks unpromoted: one comparison against the current reference read step. It records nothing. --yes records the promotion; --despite "<why>" with it records the operator's exception to the rule.
  2. The state. The list: it opens as kept, its line back to the starter, each session's practice and each comparison's tally. Every comparison the promotion would rest on names this digest as its new side.
  3. What moved since the reference. --diff <digest> --against promoted counts the whole change a promotion makes, which can span several sessions. Attributing a gain to one part requires a checkpoint against programs-of:<digest> (AGENTS.md, section 9).
  4. What it measured. Lane 31 of whole-run-investigation reads a promotion's rule, what its step measured and the climb after it; lanes 13 to 16 read the change, the guide's truth, check mirroring and the finish. Open them when a reading is in doubt, not as a ritual.

At a handover

bun tools/d2/close.ts --name <campaign> --to <folder> writes harness/, the reference harness opened there as kept, RULES.md, the domain's public contract, and REPORT.md, the closing report. Without --solve it calls no model. Then arrange a blind review:

  • Hand an independent reviewer harness/ and RULES.md and nothing else: not REPORT.md, the log, a reading, the operator's diagnosis, an expected fix or an earlier review. A Codex reviewer is one read-only row through codex-gpt-swarm, with the folder as its workdir.
  • Ask neutrally: the structure; whether tools-spec.json has one row for each tool tools.ts returns, under the same name and in the same order; whether the guide's account of each program and tool matches what is there; stale or duplicate files; a launcher or a link that names a path outside the folder; anything that answers a particular task: a part that names a task, copies its text or holds its answer (AGENTS.md, section 2); obvious missing parts. A search that tests its candidates against the public rules and reports which meet them is allowed since 20 October (src/builder/prompt.ts).
  • Record the digest and the folder beside the review. The review is advisory: it decides no promotion, reading or claim. A harness promoted after it is another handover and another review.

Whether a part earns its place

A program, a tool or a guide line is read from what solves under it did: their solve.call rows, which lane 14 counts. Count use over the solves where the need arose and the part was there; a missing record is unknown, never zero. A successful call is not a valid answer, a failed answer does not say which part failed it, and a shell command alone is no reason for a tool.

DecisionThe evidence for it
enrich a partrepeated work fits its purpose, and a richer result closes the gap
add onea recurring job has no adequate owner, and a compact interface helps
consolidateparts keep needing the same inputs, or force a hand-off that could be avoided
describethe capability is there, but its purpose, inputs or limits are unclear
removeit has no distinct purpose, and its work is done elsewhere
keepit saves useful work, serves a rare real need, or the shell already does

What a harness holds is the Builder's to choose (AGENTS.md, section 2, rule 3). The table reads what a Builder did, and it grounds a change to the Starter or to the account a Builder is handed, which waits for the operator's word (run-improvement-campaign, Rules).

The contract

WhatOwnerWhat holds it
what opens as a harness, and its digestsrc/solve/harness.ts, openHarnesstest/harness-tools.test.ts
the Starter, and the generated HARNESS.md a Builder is handedwriteStarter, HARNESS_ACCOUNT in src/solve/starter.ts; written by src/builder/session.tstest/starter.test.ts: the worked harness opens as printed
installed program names and their accountsinstalledPrograms, programsOf in src/solve/programs.tstest/programs.test.ts
what a Builder is toldsrc/builder/prompt.tstest/builder.test.ts, "what crosses to the Builder"
what a solver is toldsrc/solve/prompt.tstest/solver-prompt.test.ts
what the Examiner and the Referee are toldsrc/examiner/prompt.ts, src/review/referee.tstest/examiner.test.ts, test/review.test.ts

HARNESS.md is generated in the Builder's home, not a repository file. Its four parts are agent/tools-spec.json, .toolchain/, agent/BUILT_AGENTS.md and agent/tools.ts. Read their purposes in AGENTS.md, section 3, and their shapes in HARNESS_ACCOUNT before changing them. installedPrograms lists executable names in the command's search directories, taking the first of each name. programsOf adds accounts from file heads without running the programs.

For a change to this contract, follow AGENTS.md sections 2 and 8 for authority and the wall, section 12 for checks, and section 9 for what those checks prove. Read the parser, tool, wall or limit that carries an instruction before changing its wording.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Use after an Anabasis v2 comparison, checkpoint or system change, and before any sentence claims that a harness, a model or a patch improved something. States what one reading may be said to show: the identities it was made under, the counts kept apart, whether it was repeated, which part of a harness it belongs to, whether a mechanism was live in the run, and whether the measurement is valid as distinct from whether it was exploited. Ends in one fixed report.

中文简介正在准备中。当前显示原文说明。

s-smits/anabasis652026年10月22日 更新

Launch and collect independent Codex sessions (gpt-6-luna at high, xhigh or max; gpt-6.1-sol at low to xhigh) for bounded parallel work, from Claude Code or Codex: one manifest, one detached launcher, one report a session, a drain while it runs, and a retry of incomplete sessions. Owns the Codex transport when another skill sets the questions, as whole-run-investigation does for its lanes. Use when the operator asks for Luna or Sol sessions, a swarm, many sessions, a reasoning effort, a Codex subagent from Claude Code, or a later collection of reports. Distinguish a request to launch from one to wait and collect.

中文简介正在准备中。当前显示原文说明。

s-smits/anabasis652026年10月22日 更新

commit-r

免费

The commit-R protocol: a test-driven rewrite of one compartment of Anabasis v2. Commit what is in flight, remove the compartment's tests in an "R:" commit, write them again from a stated hypothesis so the production code fails on purpose, remove the production files in a second "R:" commit, then write the production code again, rewrite the neighbouring functions the old shape bent, and delete what served only it. Use when the operator says "commit R", "commit-R protocol", "remove and rewrite the tests" or "rewrite from scratch", or asks for a test-first pass that looks for a faster, simpler path to the same outcome.

中文简介正在准备中。当前显示原文说明。

s-smits/anabasis652026年10月22日 更新

Hand a question about Anabasis v2 to an outside Oracle model as one task document and one zip. The Oracle reads GitHub; the zip carries what it cannot fetch: campaign logs and kept harnesses through `bun run runs zip`, a reader's output, predictions with how each resolved, patches for commits never pushed. Use when the operator asks to prepare an Oracle question, a report request, a problem statement or a second opinion on a run, a reading or a design, or to send the latest runs to an outside model. Produces local files; uploading is the operator's.

中文简介正在准备中。当前显示原文说明。

s-smits/anabasis652026年10月22日 更新

Replay recorded promotions through a tree's own rule without models or spend. Read which promotions the rule supports, what unsuccessful attempts missed by, their A/A controls, and hours and dollars per promotion. Compare a baseline and a candidate that changes one rule.

中文简介正在准备中。当前显示原文说明。

s-smits/anabasis652026年10月22日 更新

Measure whether a change made the tree simpler: line counts, branching, coupling, interface width, rule count, standing exemptions and model-visible prose across one diff or a stack of pull requests. Use before claiming a pass reduced complexity, when deciding which pull request added machinery, and to read a function's branch count, which no v2 gate reports.

中文简介正在准备中。当前显示原文说明。

s-smits/anabasis652026年10月22日 更新

查看 s-smits 的全部技能

报告此技能的问题