Skip to content

Commit 07af7a1

Browse files
kyle-sextonclaude
andauthored
chore: strip instruction surfaces for the unhobble Fable 5.1 baseline (#4090)
Phase 2 (bare) of /claude-config:unhobble, experiment claude-code-plugins-fable-5-1-20260908-15744de6. Strips five rules and the AGENTS.md "Validate a change" section, trims the skill-bodies rule, re-renders the rules index, and adds the durable experiment record under .claude/unhobble/<experiment-id>/. The observe window runs on main from this merge; the readd phase restores the register hold and ledger-defended surfaces from c41c642. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nc42dgu8oeNnjj1xwo9sNo
1 parent 677353d commit 07af7a1

15 files changed

Lines changed: 1509 additions & 128 deletions

.claude/rules/catalog-taxonomy.md

Lines changed: 0 additions & 12 deletions
This file was deleted.

.claude/rules/hook-budget.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

.claude/rules/pr-body-contract.md

Lines changed: 0 additions & 25 deletions
This file was deleted.

.claude/rules/skill-bodies-state-current-rules.md

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,18 @@
11
---
2-
description: "Skill and agent bodies state the current rule and its reason, never the incident, PR, or model that motivated it, and name their successor in a `## Next` section; read before editing any skill body"
2+
description: "Skill and agent bodies carry a four-part verification record for any volatile specific they restate, and name their successor in a `## Next` section; read before editing any skill body"
33
paths:
44
- "plugins/*/skills/**"
55
- "plugins/*/agents/**"
66
---
77

88
# Skill bodies state current rules
99

10-
A skill body is read by the model on every invocation. Its authority is the behavior it
11-
prescribes, not the incident that motivated it, so the body carries the rule and the reason and
12-
nothing about how the rule got there. This follows the bundled `/claude-api prompt-audit` guide
13-
(Group 2, "Brittle skill files").
14-
15-
Keep out of a skill or agent body:
16-
17-
- Issue and pull-request numbers from this repository, incident IDs, and past-tense narration of
18-
why a rule exists ("this was added after ...", "an earlier version claimed ...").
19-
- Pinned model names in behavioral guidance. A rule that only holds on one model belongs in the
20-
`playbooks` model-adaptation chapters, not in a skill body.
21-
- Date-conditional guidance ("before 2026-08 ...", "until version X ships ...").
22-
- Hardcoded paths, flags, and version numbers stated as bare fact with no verification.
23-
24-
Keep in the body:
25-
26-
- The rule, stated in the present tense, with the reason beside it.
27-
- A pointer to an external upstream source (an official doc page, an upstream issue) when the rule
28-
restates a volatile specific it cannot defer to at read time, recorded as the four-part
29-
verification record the
30-
[upstream-drift convention](../../docs/conventions/upstream-drift/README.md) defines: claim,
31-
basis, as-of date, recheck trigger. A dated verification with a trigger is the correct form; an
32-
undated claim is the defect.
33-
34-
History belongs in the plugin's `CHANGELOG.md`, the commit message, and `docs/adr/`. A reader who
35-
needs the archaeology finds it there; the model reading the skill does not need it to act.
36-
37-
The platform skill-authoring guidance recommends the opposite shape for superseded guidance: an
38-
in-body "Old patterns" section inside a collapsed `<details>` block
39-
([content guidelines](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices#content-guidelines),
40-
verified 2026-09-10). This repository deviates on purpose: every body line is a recurring token
41-
cost on invocation, so history routes to the CHANGELOG, the commit, and `docs/adr/`, and a volatile
42-
specific carries the four-part record above instead of a legacy stanza. Recheck this paragraph when
43-
that page drops or changes the "Old patterns" recommendation.
10+
A pointer to an external upstream source (an official doc page, an upstream issue) is required
11+
when a skill or agent body restates a volatile specific it cannot defer to at read time, recorded
12+
as the four-part verification record the
13+
[upstream-drift convention](../../docs/conventions/upstream-drift/README.md) defines: claim,
14+
basis, as-of date, recheck trigger. A dated verification with a trigger is the correct form; an
15+
undated claim is the defect.
4416

4517
## Successor sections
4618

.claude/rules/vendor-docs-are-not-style.md

Lines changed: 0 additions & 11 deletions
This file was deleted.

.claude/rules/worktree-base-ref.md

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# unhobble experiment: Fable 5.1 bare baseline
2+
3+
Durable mirror for one run of `/claude-config:unhobble` (experiment id
4+
`claude-code-plugins-fable-5-1-20260908-15744de6`). The snapshot ran in an ephemeral cloud
5+
container; that container goes away when the session that opened pull request #4090 ends, and
6+
the plugin-data copy of the manifest goes with it, so from then on this directory is the
7+
canonical experiment record, not a copy. It lives under `.claude/` rather than the topic-docs
8+
contract slice because the contract-slice gate red-lines any pull request that carries a slice,
9+
and this record has to outlive the whole observe window.
10+
11+
| File | Role |
12+
|---|---|
13+
| `stumbles.md` | The observation ledger. Append a row whenever the bare model stumbles, or does something better. |
14+
| `manifest-mirror.json` | The Phase 1 manifest with absolute paths tokenized: every surface, its class, what was stripped, how to restore it, and the four resolved decisions. |
15+
| `evidence/research-D*.md` | Source-backed research memos behind decisions D1 to D3 (official docs fetched 2026-09-11). |
16+
| `evidence/decision-*.md` | Two independent decision agents' verdicts, one on Fable 5.1 and one on Opus 5, which agreed on all four decisions. |
17+
18+
Observe phase: on 2026-09-12 the operator decided to merge #4090 so the window runs on main;
19+
from that merge on, the bare state is the state of main (the manifest records this under
20+
`checkout.merged_to_main`). Work normally on real tasks from fresh sessions on main and append a
21+
row here whenever the model stumbles or does something better without an instruction.
22+
23+
Restoring the canonical state before readd: the skill compares `checkout.worktree_path` with the
24+
resolved absolute checkout before every phase command and aborts on a mismatch, so the mirror
25+
cannot be copied back verbatim. Copy `manifest-mirror.json` to
26+
`${CLAUDE_PLUGIN_DATA}/unhobble/<experiment-id>/manifest.json` with the `<worktree>` token
27+
replaced by the output of `git rev-parse --show-toplevel` and the `<CLAUDE_PLUGIN_DATA>` token
28+
replaced by the resolved plugin data directory, copy `stumbles.md` alongside it, and create an
29+
empty `backups/` directory next to them. Keep the tokenized copy here unchanged.
30+
31+
Readd phase: start a fresh branch off main, restore `.claude/rules/pr-body-contract.md` from
32+
`git show c41c6422:.claude/rules/pr-body-contract.md` regardless of the ledger (register hold,
33+
contested external-publication), restore only what the ledger defends with repeated same-cause
34+
rows, re-render the AGENTS.md rules index with
35+
`plugins/instruction-placement/scripts/render-index.sh write --file AGENTS.md`, set
36+
`"phase": "closed"` in the manifest, and close the experiment. Every stripped surface is
37+
recoverable from commit `c41c6422` (the pre-strip base); the manifest names each one. Whether this
38+
directory is kept as the experiment's record or removed at close is the readd phase's call.

0 commit comments

Comments
 (0)