Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
a4450c4
chore(settings): drop the worktree.baseRef head override and its rati…
kyle-sexton Sep 2, 2026
973da37
docs: scaffold the fleet-wide prompt-audit against Claude Fable 5.1
kyle-sexton Sep 2, 2026
ce8e6b5
fix(skills): move git pre-compute out of the composed substitution bl…
kyle-sexton Sep 2, 2026
7c50787
docs(work-items): apply prompt-audit findings for Claude Fable 5.1 (0…
kyle-sexton Sep 2, 2026
221e8bd
docs(session-flow): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 2, 2026
0bc3a76
docs(specs): record wave-1 progress, fleet decisions, and follow-ups …
kyle-sexton Sep 2, 2026
d8452ea
docs(claude-memory): apply prompt-audit findings for Claude Fable 5.1…
kyle-sexton Sep 2, 2026
01268af
docs(source-control): apply prompt-audit findings for Claude Fable 5.…
kyle-sexton Sep 2, 2026
498dd48
docs(session-flow): renumber the prompt-audit bump to 0.34.22
kyle-sexton Sep 2, 2026
a694011
fix(skill-quality): make check 3 trigger-phrase preservation advisory…
kyle-sexton Sep 2, 2026
66314fd
docs(planning): apply prompt-audit findings for Claude Fable 5.1 (0.3…
kyle-sexton Sep 2, 2026
12b3180
docs(implementation): apply prompt-audit findings for Claude Fable 5.…
kyle-sexton Sep 3, 2026
b0367f4
docs(toolchain): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 3, 2026
64cc882
docs(review): apply prompt-audit findings for Claude Fable 5.1 (0.26.17)
kyle-sexton Sep 3, 2026
d057a49
docs(verification): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 3, 2026
a5722d4
docs(specs): record waves 1 to 3b progress and draft the superseding …
kyle-sexton Sep 3, 2026
e6ffe32
docs(debugging): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 3, 2026
b15ecc2
docs(discovery): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 3, 2026
0cef022
docs(bugs): apply prompt-audit findings for Claude Fable 5.1 (0.9.9)
kyle-sexton Sep 3, 2026
e502b6d
docs(testing): apply prompt-audit findings for Claude Fable 5.1 (0.7.14)
kyle-sexton Sep 3, 2026
0b08065
docs(guardrails): apply prompt-audit findings for Claude Fable 5.1 (0…
kyle-sexton Sep 3, 2026
0bb0e9c
docs(discipline): apply prompt-audit findings for Claude Fable 5.1 (0…
kyle-sexton Sep 4, 2026
d7b8900
docs(playbooks): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 4, 2026
3710040
docs(claude-ops): apply prompt-audit findings for Claude Fable 5.1 (0…
kyle-sexton Sep 4, 2026
a643f73
docs(tdd): apply prompt-audit findings for Claude Fable 5.1 (0.4.7)
kyle-sexton Sep 4, 2026
0763a8c
docs(rate-limit-guard): apply prompt-audit findings for Claude Fable …
kyle-sexton Sep 4, 2026
cc5d764
docs(claude-config): apply prompt-audit findings for Claude Fable 5.1…
kyle-sexton Sep 4, 2026
3822d48
docs(coupling): apply prompt-audit findings for Claude Fable 5.1 (0.1.6)
kyle-sexton Sep 4, 2026
53bbeaa
docs(domain-driven-design): apply prompt-audit findings for Claude Fa…
kyle-sexton Sep 4, 2026
de35c27
docs(context-guard): apply prompt-audit findings for Claude Fable 5.1…
kyle-sexton Sep 4, 2026
dce79ff
docs(skill-quality): apply prompt-audit findings for Claude Fable 5.1…
kyle-sexton Sep 5, 2026
0d30909
docs(prompt-audit): record rows through skill-quality, follow-ups F19…
kyle-sexton Sep 5, 2026
9d55edd
docs(naming): apply prompt-audit findings for Claude Fable 5.1 (0.5.4)
kyle-sexton Sep 5, 2026
64af28c
docs(evals): apply prompt-audit findings for Claude Fable 5.1 (0.2.1)
kyle-sexton Sep 5, 2026
4d957d6
docs(mcp-tools): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 5, 2026
be7060b
docs(prototype): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 5, 2026
75db56c
docs(context-budget): apply prompt-audit findings for Claude Fable 5.…
kyle-sexton Sep 5, 2026
3d2b4c7
docs(plugin-quality): apply prompt-audit findings for Claude Fable 5.…
kyle-sexton Sep 5, 2026
caa46c4
docs(plugin-quality): drop the merged-into-skills aside from the audi…
kyle-sexton Sep 5, 2026
d73d824
docs(instruction-placement): apply prompt-audit findings for Claude F…
kyle-sexton Sep 5, 2026
eab25fd
docs(autonomy): apply prompt-audit findings for Claude Fable 5.1 (0.2…
kyle-sexton Sep 5, 2026
7707497
docs(repo-hygiene): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 5, 2026
9f090fb
docs(improvement): apply prompt-audit findings for Claude Fable 5.1 (…
kyle-sexton Sep 5, 2026
50e9b47
docs(computer-use): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 5, 2026
3ee952f
docs(overengineering): apply prompt-audit findings for Claude Fable 5…
kyle-sexton Sep 5, 2026
cf7c71a
docs(visualization): apply prompt-audit findings for Claude Fable 5.1…
kyle-sexton Sep 5, 2026
419decd
docs(codebase-health): apply prompt-audit findings for Claude Fable 5…
kyle-sexton Sep 5, 2026
94e7c25
docs(mutation-testing): apply prompt-audit findings for Claude Fable …
kyle-sexton Sep 5, 2026
820f59b
docs(ai-slop): apply prompt-audit findings for Claude Fable 5.1 (0.5.10)
kyle-sexton Sep 5, 2026
249274f
docs(architecture): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 5, 2026
946fa0c
docs(repo-fleet-hygiene): apply prompt-audit findings for Claude Fabl…
kyle-sexton Sep 5, 2026
c67ba68
docs(prompt-audit): record rows through repo-fleet-hygiene, host fail…
kyle-sexton Sep 5, 2026
c477872
docs(agents): regenerate the deferred-surfaces index for two nested A…
kyle-sexton Sep 5, 2026
d5a24e5
docs(provenance): apply prompt-audit findings for Claude Fable 5.1 (0…
kyle-sexton Sep 5, 2026
fab3fe5
docs(disk-hygiene): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 5, 2026
3795410
docs(prompt-audit): record rows for provenance and disk-hygiene, host…
kyle-sexton Sep 5, 2026
bba8691
docs(actionlint): apply prompt-audit findings for Claude Fable 5.1 (0…
kyle-sexton Sep 5, 2026
0a63942
docs(prompt-audit): record wizard, actionlint, and the ten setup-only…
kyle-sexton Sep 5, 2026
7bc6ba2
docs(performance): apply prompt-audit findings for Claude Fable 5.1 (…
kyle-sexton Sep 5, 2026
e90a537
docs(code-tidying): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 5, 2026
68309e1
docs(machine-health): apply prompt-audit findings for Claude Fable 5.…
kyle-sexton Sep 5, 2026
5040a50
docs(prompt-audit): record rows for performance, code-tidying, and ma…
kyle-sexton Sep 5, 2026
9128e0e
docs(event-storming): apply prompt-audit findings for Claude Fable 5.…
kyle-sexton Sep 5, 2026
d86a59e
docs(docs-hygiene): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 5, 2026
d5931a6
docs(education): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 5, 2026
291127e
docs(playwright): apply prompt-audit findings for Claude Fable 5.1 (0…
kyle-sexton Sep 5, 2026
5eee64b
docs(kindle-dedrm): apply prompt-audit findings for Claude Fable 5.1 …
kyle-sexton Sep 5, 2026
d768d3c
docs(prompt-audit): record rows for event-storming, docs-hygiene, edu…
kyle-sexton Sep 5, 2026
b80ad55
docs(knowledge): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 5, 2026
f39de8e
docs(songwriting): apply prompt-audit findings for Claude Fable 5.1 (…
kyle-sexton Sep 5, 2026
b159dc9
docs(context7): apply prompt-audit findings for Claude Fable 5.1 (0.5.4)
kyle-sexton Sep 5, 2026
9a70321
docs(firecrawl): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 5, 2026
13c0cbc
docs(x): apply prompt-audit findings for Claude Fable 5.1 (0.2.3)
kyle-sexton Sep 5, 2026
b07154b
docs(ai-briefing): apply prompt-audit findings for Claude Fable 5.1 (…
kyle-sexton Sep 5, 2026
ccc3d2e
docs(adhd): apply prompt-audit findings for Claude Fable 5.1 (0.4.7)
kyle-sexton Sep 5, 2026
b5a6fa0
docs(prompt-audit): record wave-5 rows, the behavioral spot-check, an…
kyle-sexton Sep 5, 2026
b7a4413
docs(dometrain): apply prompt-audit findings for Claude Fable 5.1 (0.…
kyle-sexton Sep 5, 2026
891ec2a
docs(ai-briefing): remove the flair and build/shots leftovers the fir…
kyle-sexton Sep 5, 2026
9116abf
docs(github): apply prompt-audit findings for Claude Fable 5.1 (0.3.14)
kyle-sexton Sep 5, 2026
fbf13a9
docs(playgrounds): apply prompt-audit findings for Claude Fable 5.1 (…
kyle-sexton Sep 5, 2026
5b70781
docs(prompt-audit): close the sweep's rows and fill the withheld and …
kyle-sexton Sep 5, 2026
b7120e7
docs(adr): close ADR 0028 with the sweep's final counts
kyle-sexton Sep 5, 2026
f675afa
chore(changelog): renumber 31 plugins above origin/main's current ver…
kyle-sexton Sep 5, 2026
324e280
docs(prompt-audit): graduate the topic Brief into the record and prun…
kyle-sexton Sep 5, 2026
4d273a4
chore(claude-ops): renumber above origin/main's 0.42.7 (0.42.9)
kyle-sexton Sep 5, 2026
bbb2249
Merge origin/main into docs/prompt-audit-skills
kyle-sexton Sep 5, 2026
d2ca729
fix: restore the blank line before merged CHANGELOG headings and auto…
kyle-sexton Sep 5, 2026
cc4ab25
fix: apply the three Codex review findings and pin the no-worktree-ba…
kyle-sexton Sep 5, 2026
9769124
fix: regenerate the catalog, drop a stale skill-count exemption, and …
kyle-sexton Sep 5, 2026
2296a3e
fix(docs-hygiene): keep backticks out of the detect test's single-quo…
kyle-sexton Sep 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
36 changes: 36 additions & 0 deletions .claude/rules/skill-bodies-state-current-rules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
description: "Skill and agent bodies state the current rule and its reason, never the incident, PR, or model that motivated it; read before editing any skill body"
paths:
- "plugins/*/skills/**"
- "plugins/*/agents/**"
---

# Skill bodies state current rules

A skill body is read by the model on every invocation. Its authority is the behavior it
prescribes, not the incident that motivated it, so the body carries the rule and the reason and
nothing about how the rule got there. This follows the bundled `/claude-api prompt-audit` guide
(Group 2, "Brittle skill files"), applied fleet-wide in the 2026-09 audit recorded in
[`docs/specs/prompt-audit-skills-2026-09.md`](../../docs/specs/prompt-audit-skills-2026-09.md).

Keep out of a skill or agent body:

- Issue and pull-request numbers from this repository, incident IDs, and past-tense narration of
why a rule exists ("this was added after ...", "an earlier version claimed ...").
- Pinned model names in behavioral guidance. A rule that only holds on one model belongs in the
`playbooks` model-adaptation chapters, not in a skill body.
- Date-conditional guidance ("before 2026-08 ...", "until version X ships ...").
- Hardcoded paths, flags, and version numbers stated as bare fact with no verification.

Keep in the body:

- The rule, stated in the present tense, with the reason beside it.
- A pointer to an external upstream source (an official doc page, an upstream issue) when the rule
restates a volatile specific it cannot defer to at read time, recorded as the four-part
verification record the
[upstream-drift convention](../../docs/conventions/upstream-drift/README.md) defines: claim,
basis, as-of date, recheck trigger. A dated verification with a trigger is the correct form; an
undated claim is the defect.

History belongs in the plugin's `CHANGELOG.md`, the commit message, and `docs/adr/`. A reader who
needs the archaeology finds it there; the model reading the skill does not need it to act.
22 changes: 22 additions & 0 deletions .claude/rules/worktree-base-ref.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
description: "This repository sets no worktree.baseRef; new worktrees branch from the remote default branch (Claude Code's default). Never add worktree.baseRef: head back, even when a reviewer says a merge dropped it"
paths:
- ".claude/settings.json"
- ".claude/settings.local.json"
---

# No worktree.baseRef in this repository

Claude Code's `worktree.baseRef` setting picks the ref a new worktree branches from. Unset, it
is `fresh`: the repository's default branch as fetched from the remote, so every worktree
starts from the latest `main`. The value `head` branches from the local checkout's HEAD
instead, which spawns worktrees from whatever a session happens to have checked out.

The operator withdrew the `head` override on 2026-09-02 (topic-docs convention 3.1.0, in
[`docs/conventions/topic-docs/CHANGELOG.md`](../../docs/conventions/topic-docs/CHANGELOG.md)),
and the setting stays absent on purpose. Do not add `worktree` to either settings file, and do
not "restore" it because a diff against another branch shows it missing: `origin/main` can carry
it for a while after a branch that removed it opens, and a review comment reading that diff
will call the removal a regression. It is not. Before restoring any key a review says a merge
dropped, run `git log -S'"<key>"' -- .claude/settings.json` on the branch and read the commit
that removed it.
3 changes: 0 additions & 3 deletions .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@
}
]
},
"worktree": {
"baseRef": "head"
},
"enabledPlugins": {
"actionlint@melodic-software": true,
"adhd@melodic-software": true,
Expand Down
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ context, read the file directly.
| `.claude/rules/catalog-taxonomy.md` | `.claude-plugin/marketplace.json` | Where the marketplace category taxonomy lives; read before adding or changing a plugin's category |
| `.claude/rules/hook-budget.md` | `plugins/*/hooks/**` | Marketplace-wide latency budget for always-on hooks; read before adding or widening a hook |
| `.claude/rules/ruff-pin.md` | `**/*.py` | Python linting runs through the pinned ruff wrapper, never a bare ruff on PATH |
| `.claude/rules/skill-bodies-state-current-rules.md` | `plugins/*/skills/**, plugins/*/agents/**` | Skill and agent bodies state the current rule and its reason, never the incident, PR, or model that motivated it; read before editing any skill body |
| `.claude/rules/worktree-base-ref.md` | `.claude/settings.json, .claude/settings.local.json` | This repository sets no worktree.baseRef; new worktrees branch from the remote default branch (Claude Code's default). Never add worktree.baseRef: head back, even when a reviewer says a merge dropped it |
| `plugins/autonomy/AGENTS.md` | `plugins/autonomy/**` | autonomy plugin: contributor conventions |
| `plugins/machine-health/skills/audit/AGENTS.md` | `plugins/machine-health/skills/audit/**` | machine-health audit skill: contributor conventions |
| `plugins/provenance/skills/audit/AGENTS.md` | `plugins/provenance/skills/audit/**` | Editing the provenance audit skill: contributor conventions |
| `plugins/work-items/skills/work-loop/AGENTS.md` | `plugins/work-items/skills/work-loop/**` | work-loop: contributor conventions |

<!-- END GENERATED: instruction-placement rules index -->
6 changes: 3 additions & 3 deletions docs/CATALOG.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# Audit skill bodies fleet-wide against the current model and apply the findings directly

- Status: accepted
- Date: 2026-09-02
- Supersedes: [ADR-0004](0004-rightsize-instruction-surfaces-by-incumbent-first-arbitration.md) decisions D-1 and D-3, for the skill-body audit lane only; the promotion gate of [ADR-0006](0006-scope-model-doctrine-per-version-behind-a-promotion-gate.md) as retained by [ADR-0007](0007-host-per-model-doctrine-outside-skill-private-surfaces.md), for applied prompt-audit findings only

## Context

Claude Code ships a `prompt-audit` procedure inside its bundled `claude-api` skill. It reads
an instruction surface against a named target model, classifies each dated pattern into one
of four groups (obsolete scaffolding, brittle history and volatile specifics, worked examples
that constrain, and request-building code the model executes by hand), and prescribes a
concrete action per finding: remove, rewrite, move, replace with an API feature, add, or flag.
Its keep list is as binding as its pattern tables, and it states that an audit which finds
nothing changes nothing.

In September 2026 the operator ran that procedure over every skill in this marketplace with
Claude Fable 5.1 as the target model. The run is recorded in
[`docs/specs/prompt-audit-skills-2026-09.md`](../specs/prompt-audit-skills-2026-09.md): one
fresh-context auditor per plugin, one report per plugin, the lead's per-finding decisions, one
commit per plugin with a patch bump and evals updated in step, and a follow-up inventory. The
sweep closed on 2026-09-05 over all 74 plugins: 63 took a commit and 11 were clean (one
single-skill plugin and ten whose only in-scope file the setup lane had audited). Across the
64 reports the lead applied 805 finding ids and withheld 207, the withheld set listed in the
record by plugin. The branch changed 694 files under `plugins/`, and no skill lost a step, a
gate, or a safety refusal in the record's five-skill behavioral spot-check.

Three accepted decisions stood in the way, and the operator ruled before the first wave that
none of them binds this lane:

- **ADR-0004 D-1, the incumbent-first gate.** No remediation ships until it proves no existing
skill already covers it. A prompt-audit finding is a text defect at a `file:line`; its
remediation is the hunk the procedure prescribes. An incumbent search per hunk would cost
more than the hunk and answer a question the procedure already answered (the pattern table
is the incumbent).
- **ADR-0004 D-3, no bulk sweep of `plugins/**`.** Findings were to land as checks in the
plugin that owns each surface, never as a sweep. That decision was written for a
practitioner article whose claims were a third unbacked. The prompt-audit guide is the
vendor's own procedure for the vendor's own model, and its findings are edits, not
criteria. Landing them as checks would leave every body unchanged.
- **ADR-0006's promotion gate, retained verbatim by ADR-0007.** Doctrine sourced from a single
model's guide is model-scoped by default and reaches fleet-wide only when a model-agnostic
upstream document states the claim or several model guides converge on it. The audit labels
every finding `fleet` or `fable-5-1`. Applying only the `fleet` set would leave the
`fable-5-1` set, which exists precisely because the target model changed, unapplied on the
model it targets.

ADR-0004 D-15, arbitration over blanket deletion, was honored in form: every applied finding
carries the constraint's rationale and why it no longer holds for the target model, and the
guide's keep list (exact scripts for fragile operations, safety gates, working redundancy)
was applied as written. Two further ADRs were checked and left accepted:
[ADR-0005](0005-bound-instruction-surface-work-by-question-not-population.md) bounds
instruction-surface work by the question it asks, and this lane asks one question (is this
passage a dated prompting pattern for the target model), so it is consistent.
[ADR-0008](0008-admit-only-present-text-defects-to-the-instruction-audit-catalog.md) governs
what enters the `audit-instructions` catalog; this lane edits bodies and records catalog gaps
without adding rows, so it is consistent. Whether either should retire on other grounds is the
operator's call at PR time and is not decided here.

## Decision

**A skill-body audit against the current model runs as a fleet-wide sweep and applies its
high and medium confidence findings directly**, one commit per plugin, without an
incumbent-first gate and without scoping applied findings to the model that motivated them.

The procedure is the bundled `prompt-audit` guide at the Claude Code version that ran it,
with the target model named at Step 0. Where the migration guide carries guidance for a prior
model and none for the target, the prior model's guidance applies; on conflict the target
model wins.

Three rules travel with the decision:

1. **Labels are recorded, not gated.** Every finding carries `fleet` or `fable-5-1`. Both are
applied. The label exists so a consumer on another model can read what changed and why;
it does not decide whether the change ships. The promotion gate of ADR-0006 continues to
govern the `playbooks` model-adaptation chapters and the `audit-instructions` catalog's
`Model scope` rows, which are doctrine surfaces. It does not govern edits to skill bodies
that remove a pattern the target model no longer needs.
2. **Repo conventions yield to the procedure inside the lane.** A CI gate or a static check
that blocks a warranted change is changed in the same commit, and the change is recorded in
the run's record. The first instance is `skill-quality`'s check 3, which hard-failed any
dropped trigger phrase and so blocked the guide's Group 2 fix for trigger-case
enumeration; it is now advisory.
3. **Skill bodies state current rules.** The path-scoped rule
`.claude/rules/skill-bodies-state-current-rules.md` codifies the guide's Group 2 for
`plugins/*/skills/**` and `plugins/*/agents/**`: a body carries the rule and its reason
in the present tense, and history belongs in the CHANGELOG, the commit, and `docs/adr/`.

Mechanism changes the audit exposes (extracting a hand-executed shell block into a script,
adding a pre-compute block, parameterizing a hardcoded vendor) are follow-ups, not audit
hunks. The record inventories them and the PR body carries them verbatim.

## Consequences

**Bodies change fleet-wide in one PR, and the diff is large.** The record is the reviewable
unit: each plugin's row names its commit, its applied and withheld finding ids, and the
trigger phrases it deliberately dropped. A reviewer who wants the archaeology reads the
report the record points at; the body no longer carries it.

**The incumbent-first gate loses its blanket status.** ADR-0004 D-1 still binds lanes that
propose new machinery, where a duplicate is the risk. It no longer binds text-defect lanes
whose remediation is a prescribed hunk. The cost is that a future sweep can apply a hunk an
existing check would have caught differently; the record's catalog-gaps section is where that
shows up, and the `audit-instructions` catalog is extended from it under ADR-0008's
admission rule.

**Fable 5.1-specific edits are live on every model.** A consumer running an older model reads
bodies tuned for the current one. The label in the record says which edits those are, and the
`playbooks` adaptation chapters remain the place to counter-steer per model. This is the
trade the operator chose over leaving the target model under-served.

**Trigger phrases can be dropped on purpose.** Check 3 warns instead of failing, so a
description that consolidates near-synonyms into an intent category ships with the warning
recorded. A reviewer confirms the intent is still named or restores the phrase; the check no
longer decides.

**The audit repeats per model change.** The playbooks' own regeneration trigger fired with
Fable 5.1 (record follow-up F14). Each future target model re-runs this lane from the
record's method section, with the previous run's withheld items as the first candidates.
21 changes: 21 additions & 0 deletions docs/conventions/topic-docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
# Changelog — topic-docs convention

## 3.1.0 — 2026-09-02

Minor under the Versioning rule: no tier moves, no `topic-docs.yaml` key is renamed, the slug
spec is untouched, and no visibility guarantee an implementer may rely on changes. The contract
already forbade any skill, gate, or audit from assuming the `worktree.baseRef: "head"` override
was in force, so withdrawing it changes the matrix's shape, not what a context may rely on
seeing.

- **The `worktree.baseRef: "head"` mechanism is withdrawn.** This repository no longer sets it
in `.claude/settings.json`, and the convention no longer asks consuming repositories to. A
worktree Claude Code creates branches from the repository's default branch on the remote,
which is Claude Code's default, `"fresh"`, per the official worktrees page fetched
2026-09-02. The native mechanisms are now three: `.worktreeinclude`, by-value worker returns,
and the tracker as the cross-lane index.
- **Visibility matrix**: the "spawned from local HEAD" row is gone. The remaining worktree row
describes the default base, with the memory column still conditional on a `.worktreeinclude`,
and the consequences paragraph now says a contract document reaches a spawned worktree only
once merged to the default branch.
- **Consumer adoption** materializes one file, `.worktreeinclude`. The committed-settings
snippet and its untracked-settings pull-collision rollout caveat are removed with it.

## 3.0.0 — 2026-09-01

Major under the Versioning rule: the memory tier's slice shape, the reserved-name set, and the
Expand Down
Loading
Loading