setup-tna
Skill1 starsChanged 28 days agoMITView on GitHub
Use when the user types /setup-tna, asks to install or onboard trust-no-agent here, or a fresh-install signature appears — runs consent, router copy, skill mapping, and a doctor proof.
In this repository37 other files it gives its agents.
- AGENTS.mdAGENTS.md
- plugin/AGENTS.mdAGENTS.md
- breakpointSkill
- expect-failSkill
- fork-itSkill
- make-it-soSkill
- no-thanksSkill
- receiptsSkill
- roast-my-codeSkill
- root-causeSkill
- save-asSkill
- scribeSkill
- setup-tnaSkill
- ship-logSkill
- breakpointSkill
- expect-failSkill
- fork-itSkill
- make-it-soSkill
- no-thanksSkill
- receiptsSkill
- roast-my-codeSkill
- root-causeSkill
- save-asSkill
- scribeSkill
- setup-tnaSkill
- ship-logSkill
- no-thanksSkill
- receiptsSkill
- breakpointSkill
- expect-failSkill
- fork-itSkill
- make-it-soSkill
- roast-my-codeSkill
- root-causeSkill
- save-asSkill
- scribeSkill
- ship-logSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. About 0 are common, 14 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈14
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Follow this procedure exactly.
- Distinctive: line 14
If the project root does NOT already contain the router file and the core-rules file:
- Distinctive: line 20
Ask the human for explicit consent FIRST (Iron Law 4: writing into their project is an action on shared state).
- Distinctive: line 23
If the project already has its own router file, STOP — do not copy over it.
- Distinctive: line 30
If the router is already present, skip this step.
- Distinctive: line 36
Every session starts with the discipline floor: the four Iron Laws and the MANDATORY section, quoted from the router.
- Distinctive: line 39
Every work unit closes with a 4-block receipt (Verdict / Evidence / Open / Next).
- Distinctive: line 47
Use your interactive question mechanism ONCE, covering everything below in a single round (the human answers once):
- Very specific: line 77
Run it EXACTLY once, with the --from-chat flag and the human's answers as a single-quoted JSON string:
- Distinctive: line 94
Read the CLI's output and relay what it did — including the veto-plugin handling described in Step 4.
- Distinctive: line 99
Run these checks and read each result before claiming anything:
- Very specific: line 122
OpenCode: when hooks are consented, the CLI copies the veto plugin into .opencode/plugins/tna-gate/ — the mid-session veto is ON.
- Very specific: line 175
NEVER write the onboarding stamp, the overlay directory, or any file under .trust/ yourself — the CLI is the only writer.
- Very specific: line 177
NEVER run --yes in place of the human's forwarded answers.
- Distinctive: line 180
NEVER skip the question round — consent without the human's answers is fabrication.
- Distinctive: line 182
NEVER copy the router without the human's explicit consent, and never copy it over an existing project router (merge path instead).
- Distinctive: line 184
NEVER re-wire a veto the plugin install already wired (Claude Code/Codex) — verify, don't duplicate.
- Distinctive: line 186
NEVER name external products in your output.
- Very specific: line 190
If your harness has no interactive question mechanism, do NOT fake it.
- Very specific: line 191
Instead: show the briefing (Step 1), then give the human the terminal command for the onboarding CLI — the payload copy at …
- Distinctive: line 200
If the onboarding stamp already exists, the CLI routes to the mapping-only behavior automatically: new skills are mapped, consent is not …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
setup-tna — onboard trust-no-agent from this chat
Follow this procedure exactly. You are the CHANNEL for the human's consent —
never the decider. The onboarding CLI is the ONLY writer of .trust/ files.
Step 0 — Router install (fresh installs only)
If the project root does NOT already contain the router file and the core-rules file:
- This skill ships byte-identical copies of both in its payload: the
references/directory next to this SKILL.md holds a copy of the router and a copy of the core rules. - Ask the human for explicit consent FIRST (Iron Law 4: writing into their project is an action on shared state). Name exactly what will appear in their project root.
- If the project already has its own router file, STOP — do not copy over it. Direct the human to the adopt-merge path in the installation docs instead; their router stays the only router.
- On consent, copy the two payload files byte-identical into the project root — never retype, never summarize, never edit. After copying, verify each file matches its payload copy byte-for-byte before moving on.
If the router is already present, skip this step.
Step 1 — Briefing
Show the human this briefing (verbatim structure, plain language):
- Every session starts with the discipline floor: the four Iron Laws and the MANDATORY section, quoted from the router.
- A commit without fresh test evidence is vetoed by the evidence gate.
- Every work unit closes with a 4-block receipt (Verdict / Evidence / Open / Next).
- Three skills load on their domain: expect-fail (before any test or behavior-changing code), root-cause (before any fix), receipts (before any done claim).
Step 2 — ONE combined question round
Use your interactive question mechanism ONCE, covering everything below in a single round (the human answers once):
- Consent per component (each enable/disable):
- the session floor
- the mechanical hooks (session injection + commit veto before they run)
- workflow choice (before skill mapping — see below): (a) TNA chain — breakpoint → save-as → fork-it → make-it-so → roast → ship-log (b) bring your own workflow — skills from other repos you already have installed will be mapped as the primary workflow (c) both — TNA chain + external skills as overlays, side by side
The workflow-choice answer is recorded in the stamp as workflowChoice (tna-chain / bring-your-own / both). It changes how the mapping section is presented next.
- skill mapping (proposals below)
- the evidence gate (a commit without fresh test evidence is vetoed)
- For each discovered skill (run the onboarding CLI WITHOUT flags first if you need the discovery list, or scan the harness skill directories such as .claude/skills or .agents/skills): one confirm/skip choice with its suggested trigger keywords.
Step 3 — Forward the answers to the onboarding CLI
The CLI lives in this skill's payload at scripts/onboarding.mjs (inside this skill folder). From a repo checkout the same CLI is at scripts/onboarding.mjs in the repo root.
Run it EXACTLY once, with the --from-chat flag and the human's answers as a single-quoted JSON string:
onboarding.mjs --from-chat '<answers JSON>'The answers JSON carries exactly these fields (do not rename them):
{ "components": { "floor": true, "hooks": true, "overlays": true, "evidenceGate": true }, "mapSkills": ["confirmed-skill-name"] }- The components object carries the human's per-component choices (true/false) from Step 2.
- The mapSkills array carries ONLY the skill names the human confirmed.
Read the CLI's output and relay what it did — including the veto-plugin handling described in Step 4.
Step 4 — Verify (doctor-lite)
Run these checks and read each result before claiming anything:
- Stamp: the onboarding stamp file exists under .trust/ in the project root (written by the CLI, never by you).
- Router identity: the project-root router file is byte-identical to the router copy in this skill's references/ payload (and the same for the core-rules file).
- Skills detected: the harness's skill discovery lists the framework's skills.
- Veto + discipline: the veto plugin is present per harness. On an
OpenCode tree whose consent included hooks it lives at
.opencode/plugins/tna-gate/index.js; omp gets~/.omp/agent/hooks/pre/{tna-veto.ts,tna-discipline.ts}plus~/.omp/agent/extensions/tna-receipts-gate.ts; pi gets.pi/extensions/{tna-veto.ts,tna-discipline.ts}; dsh gets.dsh/profiles/<every profile>/plugins/{tna-veto.mjs,tna-discipline.mjs}with matchingcordis.patch.ymlrows. The CLI's receipt carries aLayers:line naming what landed; relay that line verbatim rather than saying "hooks are on" (origin 2026-10-25: the discipline adapters existed but had no install path, so a fresh install shipped one of four layers).
Step 5 — The veto plugin, per harness (say it exactly)
- OpenCode: when hooks are consented, the CLI copies the veto plugin into .opencode/plugins/tna-gate/ — the mid-session veto is ON. Relay the CLI's line (copied / already present / refused).
- Claude Code and Codex: the plugin install already ships the veto hooks — verify the presence of the hooks file in the plugin payload instead of re-wiring anything, and say so.
- omp: the CLI copies veto-hooks/omp/tna-veto.ts to ~/.omp/agent/hooks/pre/tna-veto.ts — the mid-session veto is ON. Relay the CLI's line (copied / already present).
- pi: the CLI copies veto-hooks/pi/tna-veto.ts to .pi/extensions/tna-veto.ts AND veto-hooks/pi/tna-discipline.ts to .pi/extensions/tna-discipline.ts — veto, floor, mandatory-gate and done-gate are ON. Relay the CLI's line (copied / already present).
- DeepSeek Harness (dsh): there is no hook JSON file and no
tool_callevent. Two cordis plugins do the work —tna-veto.mjson thetools/pre-executewaterfall (veto + evidence recorder) andtna-discipline.mjsonagent/pre-step(mandatory-gate + done-gate) — both loaded by path from the profile's cordis.patch.yml. See docs/installation.md § DeepSeek Harness for the copies and the patch rows. Wire EVERY profile the harness can boot: a profile without the rows has no veto, and a session booted on it will commit freely (measured 2026-10-25). - Harness without a hook API: say honestly that the mid-session veto is audit-only there — the machine ships but nothing calls it mid-session; the commit gate via git hooks still applies when the hooks component was consented and scripts/hooks exists.
A veto proof is two-sided. A denial alone does not prove the gate works:
a denial with no evidence recorder is a permanent wall, and it reads exactly
like a working gate. Prove both halves before calling a harness protected —
deny without fresh evidence, then a green *.test.mjs run, then the same
irreversible action ALLOWED. Never relay "veto is ON" from a one-sided probe.
A veto is one of four layers. floor (router injected), mandatory-gate (prompt classified against the MANDATORY domains), veto (irreversible action refused), done-gate (completion claim with no verifying tool call flagged) — plus the ledger append-only guard. Report which layers a harness actually carries, never "TNA is installed": a harness with only the veto enforces roughly a quarter of the discipline while looking complete. The audited per-harness state of all four is the full-function matrix in docs/compatibility.md.
The install is a table, not per-harness prose. adaptersFor() in
scripts/onboarding.mjs decides what each harness receives; a new adapter added
to veto-hooks/ without a row there is a layer no user gets. When you add one,
add its row AND its expectation in scripts/onboarding-layers.test.mjs.
Step 6 — Receipt
Close with the 4-block receipt (Verdict / Evidence / Open / Next). The Evidence block quotes the CLI output and the verification results verbatim.
Guards — never cross these
- NEVER write the onboarding stamp, the overlay directory, or any file under .trust/ yourself — the CLI is the only writer.
- NEVER run
--yesin place of the human's forwarded answers. Forwarded answers are the human's, verbatim: the agent never edits, fills, or confirms them. - NEVER skip the question round — consent without the human's answers is fabrication.
- NEVER copy the router without the human's explicit consent, and never copy it over an existing project router (merge path instead).
- NEVER re-wire a veto the plugin install already wired (Claude Code/Codex) — verify, don't duplicate.
- NEVER name external products in your output.
Degrade path — harness without an interactive question mechanism
If your harness has no interactive question mechanism, do NOT fake it. Instead: show the briefing (Step 1), then give the human the terminal command for the onboarding CLI — the payload copy at scripts/onboarding.mjs inside this skill folder (from a repo checkout: scripts/onboarding.mjs at the repo root) — and wait for them to return with the CLI's receipt. The CLI's interactive prompts handle the consent in that terminal.
Already onboarded?
If the onboarding stamp already exists, the CLI routes to the mapping-only behavior automatically: new skills are mapped, consent is not re-asked. Just follow Steps 2–5 with the mapping confirmations only.
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.

