Uh oh!
There was an error while loading. Please reload this page.
docs(agents): harden the three internal worktree recipes to the canonical form - #14003
Merged
Merged
Conversation
…ical form The three internal copies that PRESCRIBE a worktree recipe to an agent still taught the unhardened spelling. Each now reads as the form AGENTS.md Prime Directive 11 and CLAUDE.md teach: `git fetch origin main && git worktree add --no-track ... origin/main`. - `.claude/skills/checklist-author/SKILL.md` - gained `--no-track` and the fetched `origin/main` base (it was the only copy still basing on local `main`) - `.claude/agents/os-dev.md` - gained `--no-track` and the fetch - `.claude/skills/dogfood-verification/SKILL.md` - gained `--no-track` and the fetch Plain `-b` writes `branch.NAME.remote`/`branch.NAME.merge` into the `.git/config` that every worktree of the repo SHARES; `--no-track` is the adjudicated fix. Each edit is byte-budget and line-count neutral, because `check:pm-skill-ratchet` binds twice here: all three files sit at ZERO line-count headroom, and every line has a 120-byte budget. So the longer recipe is reflowed within the lines the sentence already occupied rather than wrapped onto a new one - neither ratchet moves, and neither needs a maintainer ruling. No other text in these files is touched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2
This was referenced Aug 31, 2026
os-zhuang
approved these changes
Sep 1, 2026
os-zhuang
marked this pull request as ready for review
September 1, 2026 00:01
os-zhuang
enabled auto-merge
September 1, 2026 00:02
Uh oh!
There was an error while loading. Please reload this page.
os-zhuang
deleted the
claude/issue-13729-worktree-recipe-internal-fold
branch
September 1, 2026 00:41
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#13729
The three INTERNAL copies that PRESCRIBE a worktree recipe to an agent still taught the unhardened spelling. Each now reads as the form AGENTS.md Prime Directive 11 and CLAUDE.md already teach:
Exactly one recipe sentence per file; nothing else in these files is touched.
What changed, per copy
.claude/skills/checklist-author/SKILL.mdL33git worktree add ../objectstack-TASK -b BRANCH main--no-trackand thegit fetch origin main+origin/mainbase.claude/agents/os-dev.mdL32-33git worktree add ../REPO-issue-N -b claude/issue-N-SLUG origin/main--no-trackand the fetch.claude/skills/dogfood-verification/SKILL.mdL140git worktree add -b BRANCH /tmp/pr origin/main--no-trackand the fetchPlaceholder metavariables are spelled in caps above because this body is sanitized; the files themselves keep each copy's own angle-bracket placeholder naming verbatim (
../objectstack-TASKstays the checklist-author spelling,claude/issue-N-SLUGstays the os-dev spelling,/tmp/prstays the dogfood one).Why
Plain
-bwritesbranch.NAME.remote/branch.NAME.mergeinto the.git/configthat every worktree of the repo SHARES — the class already adjudicated in #13052 / objectstack-ai/objectui#6880 and already hardened inAGENTS.mdPD#11 andCLAUDE.md; these copies were never swept with it. Thechecklist-authorcopy was additionally the only one still basing a new tree on localmainwith no fetch — the objectstack-ai/objectui#6208 class.The published fourth copy (
skills/objectstack-pm-dispatch/SKILL.md) is NOT in this diff: it was discharged separately in #13891, which has landed, with its{default_branch}interpolation preserved. Verified on today'sorigin/mainbefore editing.Two ratchets bind here, so the edits are reflows rather than rewraps
check:pm-skill-ratchetconstrains these files twice, and the obvious spellings break one each:So each recipe is reflowed within the lines its sentence already occupied: the break moves, the line count does not, and every touched line lands under budget (97/81, 105/106, 92/106 bytes). Neither ratchet moves and no ceiling is raised, so no maintainer ruling is needed for either.
Verification
Gate union derived on the final head with
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(no hand-built path list) atf977b0b54— 10 families, all run at that same head:check:pm-skill-ratchet—.claude/agents/os-dev.md is 466 lines (ceiling 466; headroom 0),checklist-author/SKILL.md is 62 lines (ceiling 62; headroom 0),dogfood-verification/SKILL.md is 157 lines (ceiling 157; headroom 0); widest-table-row pins all unchanged at 0check:agent-model-declared·check:agent-test-spelling·check:doc-authoring·check:nul-bytes·check:pm-governed-merges·check:pm-skill-id-lint·check:skill-frame-syncpnpm --filter @objectstack/lint run check:doc-formula-expressions—self-test: 58 cases passed,22 record-scoped formula example(s) across 427 files / 1451 TS blocks judged clean(needed@objectstack/formulaand@objectstack/lintbuilt first; its own PREREQUISITE NOT MET refusal is not a finding)node scripts/pm/check-governed-queue-guard.mjs— NOT MEASURED locally, by construction: it readsGITHUB_EVENT_PATHand nothing else, so outside a workflow run it exits 1 withcould not read GITHUB_EVENT_PATH. That is its refusal path, not a finding. CI measures it.pnpm lint(repo-wide ESLint) is a declared narrowing, measured on all three axes: (1) the population comes from ESLint's own resolved config, not a guess — all three files reportFile ignored because no matching configuration was supplied., i.e. markdown is outside the linted population entirely; (2) the count comes from--format json— 3 files reported, 0 errors; (3) invariance for untouched files holds because the diff contains noeslint.config.mjs, no tsconfig and no TypeScript at all, so no untouched file's verdict can move.No changeset: the diff is
.claude/**only and publishes nothing from any package, soskip-changesetapplies.Scope guard
.claude/agents/os-dev.mdcarries adjacent text owned by other in-flight cards — the verify-lock and skip-changeset paragraphs of #12800 / #13300 / #13432. Those are deliberately untouched here; this diff is the recipe sentence only. Those three cards are not addressed by this PR and remain open.Draft on purpose: governed
.claude/**markdown, human merge.Generated by Claude Code