Repo Boundaries and Sync
Boundary map (verified 2026-07-30)
Published (tracked):
skills/, design-pack/ — pack source (the marketplace roots).
hooks/, .github/, .claude-plugin/ — enforcement, CI,
manifests.
reviews/ — public review and threat-model records.
README.md, README.zh-Hant.md, LICENSE,
THIRD-PARTY-NOTICES.md — docs; the two READMEs mirror each other.
Gitignored (private — does not publish by default):
evals/, internal/, pack-eval-artifacts/, guideline*.txt —
fixtures burn on exposure; owner-private notes and drafts. These
NEVER publish.
.claude/ — live install + settings.
skills-staging/ — retiring-architect scratch (92314a6);
publishes only on explicit owner instruction.
The working tree is permanently dirty-adjacent
- The repo root can carry UNTRACKED private session transcripts. On
2026-07-30 it holds
chat-history.md and security-enhancement.md
(both full session transcripts — private content). Neither has ever
entered a commit.
- Standing defense: stage by explicit pathspec, always
(
git add -- <path>); never any stage-everything form. The
gitignore commit for skills-staging states the exact threat in its
own message: it "keeps a stray git add -A from publishing"
private content (92314a6).
- The transcripts' disposition (ignore pattern vs relocation) is the
owner's pending decision — tracked in issue #100 (
UNCERTAINTY.md
item 1). Do not stage, quote, relocate, or edit them; quoting them
in any public artifact also breaks the rule below.
No owner quotes in public artifacts
- Standing owner directive (recorded 2026-07-24, applied throughout
2026-07-29/30): the owner's message wordings never appear in PR
bodies, commit messages, PR/issue comments, or any published file.
Evaluation comments describe facts, findings, and decisions only.
AUTH quotes live in session reports to the owner, nowhere public.
- Verified against practice: the sampled evaluation comments on
#85/#94/#96 contain no owner quotes.
Live-copy model and sync duty (three locations)
skills/ — the publish source (tracked).
.claude/skills/ — repo-local live install (gitignored).
~/.claude/skills/ — global install (outside the repo).
- The README Maintainer Notes' sync contract is canonical (on any
divergence from this file, the README wins): after editing any
SKILL.md, sync (
cp -R skills/. .claude/skills/) and run the
per-skill diff loop before pushing.
- TEMPORARY overlay on that contract (delete this bullet when
UNCERTAINTY item 4 is settled): today the blanket
cp -R would
ALSO install skill-vetting, closing the known gap without the
owner's decision. Until the owner settles it, copy the changed
skill directories explicitly (cp -R skills/<name> .claude/skills/), skipping skill-vetting; do the same for the
global copy (~/.claude/skills/), then cmp-verify both at the
merge SHA (campaign practice, recorded in the close reports).
- Current expected state (2026-07-30) — this file is the SINGLE HOME
for it; START-HERE/MANIFEST/UNCERTAINTY point here. Update this
file first when the state changes:
skill-vetting exists in
skills/ but in NEITHER live install, so the README loop errors on
exactly that one directory. Known pre-existing state (the advisory
hook ships opt-in; install pending an owner decision) — not drift
you introduced. Every other skill dir cmp-clean at 79ca49c.
- Removing or renaming a published skill: delete its old dir from the
live installs by hand in the same change —
cp -R never deletes
(README Maintainer Notes).
Done definition
Nothing from a gitignored/private zone appears in the staged set
(git status read, not assumed); every commit was staged by
pathspec; after a merge, both live installs match skills/ except
the known skill-vetting gap — or that gap was closed deliberately
by the owner, in which case update this file's expected state.
When NOT to use this skill
Deciding whether content may ship at all (covenant, markers, width)
→ doctrine-change-conventions. Campaign mechanics →
contribution-gate-playbook.
Provenance
Distilled 2026-07-30 from the session transcript; verified same-day
against: .gitignore + git check-ignore; git ls-files top-level
enumeration; 92314a6's commit message; the two transcripts'
presence and untracked status (git status --short); README
Maintainer Notes; live-copy diffs run 2026-07-30 (both installs
differ from skills/ only in skill-vetting); evaluation comments
(three read in full, all nine confirmed present).
Re-verify:
git status --short
for d in skills/*/; do
diff -rq "$d" ".claude/skills/$(basename "$d")"
done
(expected today: the two ?? transcripts, one error line for
skill-vetting, and — until the delivering PR merges — this
library's own tracked entries; anything else is new state —
investigate before acting).
1---2name: repo-boundaries-and-sync3description: Load before staging or committing anything in this working tree, after any merge that touches skills/ (live-copy sync duty), when a sync or diff check reports an unexpected missing directory, or when an untracked file sits at the repo root.4---56# Repo Boundaries and Sync78## Boundary map (verified 2026-07-30)910Published (tracked):1112- `skills/`, `design-pack/` — pack source (the marketplace roots).13- `hooks/`, `.github/`, `.claude-plugin/` — enforcement, CI,14 manifests.15- `reviews/` — public review and threat-model records.16- `README.md`, `README.zh-Hant.md`, `LICENSE`,17 `THIRD-PARTY-NOTICES.md` — docs; the two READMEs mirror each other.1819Gitignored (private — does not publish by default):2021- `evals/`, `internal/`, `pack-eval-artifacts/`, `guideline*.txt` —22 fixtures burn on exposure; owner-private notes and drafts. These23 NEVER publish.24- `.claude/` — live install + settings.25- `skills-staging/` — retiring-architect scratch (`92314a6`);26 publishes only on explicit owner instruction.2728## The working tree is permanently dirty-adjacent2930- The repo root can carry UNTRACKED private session transcripts. On31 2026-07-30 it holds `chat-history.md` and `security-enhancement.md`32 (both full session transcripts — private content). Neither has ever33 entered a commit.34- Standing defense: stage by explicit pathspec, always35 (`git add -- <path>`); never any stage-everything form. The36 gitignore commit for skills-staging states the exact threat in its37 own message: it "keeps a stray `git add -A` from publishing"38 private content (`92314a6`).39- The transcripts' disposition (ignore pattern vs relocation) is the40 owner's pending decision — tracked in issue #100 (`UNCERTAINTY.md`41 item 1). Do not stage, quote, relocate, or edit them; quoting them42 in any public artifact also breaks the rule below.4344## No owner quotes in public artifacts4546- Standing owner directive (recorded 2026-07-24, applied throughout47 2026-07-29/30): the owner's message wordings never appear in PR48 bodies, commit messages, PR/issue comments, or any published file.49 Evaluation comments describe facts, findings, and decisions only.50 AUTH quotes live in session reports to the owner, nowhere public.51- Verified against practice: the sampled evaluation comments on52 #85/#94/#96 contain no owner quotes.5354## Live-copy model and sync duty (three locations)5556- `skills/` — the publish source (tracked).57- `.claude/skills/` — repo-local live install (gitignored).58- `~/.claude/skills/` — global install (outside the repo).59- The README Maintainer Notes' sync contract is canonical (on any60 divergence from this file, the README wins): after editing any61 SKILL.md, sync (`cp -R skills/. .claude/skills/`) and run the62 per-skill diff loop before pushing.63- TEMPORARY overlay on that contract (delete this bullet when64 UNCERTAINTY item 4 is settled): today the blanket `cp -R` would65 ALSO install `skill-vetting`, closing the known gap without the66 owner's decision. Until the owner settles it, copy the changed67 skill directories explicitly (`cp -R skills/<name>68 .claude/skills/`), skipping `skill-vetting`; do the same for the69 global copy (`~/.claude/skills/`), then cmp-verify both at the70 merge SHA (campaign practice, recorded in the close reports).71- Current expected state (2026-07-30) — this file is the SINGLE HOME72 for it; START-HERE/MANIFEST/UNCERTAINTY point here. Update this73 file first when the state changes: `skill-vetting` exists in74 `skills/` but in NEITHER live install, so the README loop errors on75 exactly that one directory. Known pre-existing state (the advisory76 hook ships opt-in; install pending an owner decision) — not drift77 you introduced. Every other skill dir cmp-clean at `79ca49c`.78- Removing or renaming a published skill: delete its old dir from the79 live installs by hand in the same change — `cp -R` never deletes80 (README Maintainer Notes).8182## Done definition8384Nothing from a gitignored/private zone appears in the staged set85(`git status` read, not assumed); every commit was staged by86pathspec; after a merge, both live installs match `skills/` except87the known `skill-vetting` gap — or that gap was closed deliberately88by the owner, in which case update this file's expected state.8990## When NOT to use this skill9192Deciding whether content may ship at all (covenant, markers, width)93→ `doctrine-change-conventions`. Campaign mechanics →94`contribution-gate-playbook`.9596## Provenance9798Distilled 2026-07-30 from the session transcript; verified same-day99against: `.gitignore` + `git check-ignore`; `git ls-files` top-level100enumeration; `92314a6`'s commit message; the two transcripts'101presence and untracked status (`git status --short`); README102Maintainer Notes; live-copy diffs run 2026-07-30 (both installs103differ from `skills/` only in `skill-vetting`); evaluation comments104(three read in full, all nine confirmed present).105106Re-verify:107108 git status --short109 for d in skills/*/; do110 diff -rq "$d" ".claude/skills/$(basename "$d")"111 done112113(expected today: the two `??` transcripts, one error line for114`skill-vetting`, and — until the delivering PR merges — this115library's own tracked entries; anything else is new state —116investigate before acting).