{
 "format": "LSC-1",
 "edition": 2,
 "cut": "2026-10-14",
 "header": "AI SKILL CARD · LSC-1",
 "house": "THE METHODS",
 "wing": "CLAUDE CODE",
 "no": "Nº 486",
 "name": "THE HOOK CARD",
 "handle": "hook-card",
 "role": "The enforcement seat: rules that must never be skipped, made to run on their own and watched once.",
 "description": "Use when a rule must run automatically in an agent's session: a check after every edit, a block before a command, a note at the stop. Not for writing the rules down or running the agent in a pipeline.",
 "wakes_when": {
  "face": "A rule needs to run on its own.",
  "situations": [
   "The agent skipped a check again and a written rule was not enough.",
   "A team wants tests, a secret scan or a format check to run after every edit without anyone remembering.",
   "Someone wants to see the hooks a project already has and whether any were ever fired on purpose.",
   "A hook someone wrote does something it should not, like sending files off the machine."
  ]
 },
 "loop": [
  "List the rules that must never be skipped",
  "Place each on its event, with its check",
  "Write the hooks; refuse any that send data away",
  "Fire each hook once on purpose and record it"
 ],
 "never": [
  "Never writes a hook that sends data away",
  "Never writes a hook that silences approvals",
  "Never calls a hook in force before it is fired",
  "Never claims a certainty it does not have"
 ],
 "hand_off": [
  "Writing the rules themselves → THE CLAUDE.MD CARD",
  "Running the agent unattended in a pipeline → THE HEADLESS CARD",
  "Undoing what an agent did → THE CHECKPOINT CARD"
 ],
 "in_the_box": [
  "SKILL.md",
  "CARD.md",
  "▣ scripts/hooks.py (machine)",
  "▣ scripts/evals.py (test runner)",
  "tests/EVALS.json (9 tests)",
  "references/ (schema + fictional demo)",
  "START-HERE.md · system/ doors",
  "MY-LEDGER.md · LICENSE-NOTE.md",
  "card.svg · card.json · card.html",
  "AUDIT.md · MANIFEST.md · WITNESS.md · SELFTEST.md"
 ],
 "machine": {
  "file": "scripts/hooks.py",
  "usage": [
   "python3 scripts/hooks.py plan --rules RULES.csv --out PLAN.json  — place every rule on its event (after an edit, before a command, at the stop) and name the rules with NO EVENT",
   "python3 scripts/hooks.py write --rules RULES.csv --out settings.json  — write the hooks block from the rules; a rule whose command sends data away or silences approvals is refused",
   "python3 scripts/hooks.py check --file settings.json  — check a hooks file someone already has: SENDS DATA AWAY and SILENCES APPROVALS are refused (exit 1); NO MATCHER and UNTESTED are flagged",
   "python3 scripts/hooks.py fire --file settings.json --event EVENT --log LOG.csv [--today YYYY-MM-DD]  — record that a hook was fired on purpose and watched; the log is what UNTESTED reads",
   "python3 scripts/hooks.py list --file settings.json  — print every hook: event, matcher, command, and whether the log shows it fired",
   "python3 scripts/hooks.py selftest  — build fictional rules in a temp dir and prove every command and every refusal"
  ],
  "selftest": "12/12"
 },
 "punch": {
  "hex": "4254BD38222412AA1120512F",
  "bits": "010000100101010010111101001110000010001000100100000100101010101000010001001000000101000100101111",
  "of": "SKILL.md",
  "method": "first 96 bits of SHA-256"
 },
 "proof": "Machine selftest 12/12 witnessed in Claude, 2026-10-14, on fictional fixtures. Tests in fresh chats and any run on real data are owed.",
 "seal": {
  "score": 98,
  "of": 100,
  "band": "LEGENDARY",
  "mark": "WITNESSED",
  "criteria": {
   "Trigger": 5,
   "Machinery": 5,
   "Law": 5,
   "Portability": 5,
   "Proof": 5
  },
  "scale": "five Skill Scale criteria, each out of 5, ×4, capped at 98; computed by the cutter from the packet",
  "computed": {
   "Trigger": "+2 description 200 characters with a trigger and an anti-trigger; +1 4 situations it wakes on; +2 9 tests of all three kinds aboard",
   "Machinery": "+3 a machine of its own, `hooks.py`, whose selftest passes (12/12); +1 eight or more selftest checks; +1 5 working commands besides the selftest",
   "Law": "+1 4 never-lines; +1 3 hand-offs; +1 a written law; +2 8 selftest checks prove a refusal or a flag inside the machine",
   "Portability": "+3 Python standard library only; +1 no network calls; +1 runs no other programs",
   "Proof": "+3 the machine's selftest witnessed in Claude on 2026-10-14, on fictional fixtures; +1 run from inside the packet itself; +1 the 9 tests asked in a fresh chat holding only the card, scored by scripts/evals.py: 9/9, witnessed on 2026-10-14"
  }
 },
 "term": {
  "price": "set on the store at sale",
  "licence": "one person, any number of their own AIs and computers; never another person",
  "renewal": "nothing auto-renews"
 },
 "you_bring": [
  "The rules the team keeps breaking.",
  "The commands that check each rule, as they are run by hand today.",
  "The hooks file the project already has, if any."
 ],
 "studio_edition": "Planned as a separate seat, not in this box and not yet on sale: the hooks the studio runs on its own repositories.",
 "hold": null,
 "disclaimer": "not a security guarantee · not a payment card · no refunds · © 2026 Lund Studio LLC",
 "endorsement": "The holder brings their own AI; no endorsement by Anthropic or any other AI company is claimed."
}
