You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refs #912 (audit umbrella; finding F6). #913 declared f6 "folded", but PR #925 shipped no setup-skill change — this delivers the fold.
What to build
When /source-control:setup apply writes the team-tracked <repo>/.claude/source-control.md, the file gives a non-plugin teammate no signal about what it is or whether it binds them. Two changes:
Self-describing header — setup apply (team layer) prepends a short comment/preamble: read by the source-control Claude Code plugin (and the guardrails enforcement gate per docs/conventions/commit-convention/); inert and safe to ignore without those plugins.
Draft-aid framing — setup output (and the header) states the file is a drafting aid + CC-layer enforcement input for plugin users, not team-wide enforcement; tool-agnostic enforcement for all committers is a commit-msg hook / CI check (point at feat(guardrails): opt-in git commit-msg hook for tool-agnostic subject enforcement #919's opt-in hook once it lands).
Header must not break the parse contract: lib/resolve-convention-pattern.sh reads first non-empty body line under each ## <key> H2 — a preamble above the first H2 is inert by construction; add a resolver test proving it.
Acceptance criteria
setup apply (team layer) writes the header; re-running on an existing file does not duplicate it
Setup output states the draft-aid vs enforcement distinction and names the commit-msg/CI path for team-wide enforcement
Resolver test: convention file with preamble resolves identically to one without
Parent
Refs #912 (audit umbrella; finding F6). #913 declared f6 "folded", but PR #925 shipped no setup-skill change — this delivers the fold.
What to build
When
/source-control:setup applywrites the team-tracked<repo>/.claude/source-control.md, the file gives a non-plugin teammate no signal about what it is or whether it binds them. Two changes:apply(team layer) prepends a short comment/preamble: read by the source-control Claude Code plugin (and the guardrails enforcement gate per docs/conventions/commit-convention/); inert and safe to ignore without those plugins.commit-msghook / CI check (point at feat(guardrails): opt-in git commit-msg hook for tool-agnostic subject enforcement #919's opt-in hook once it lands).Header must not break the parse contract:
lib/resolve-convention-pattern.shreads first non-empty body line under each## <key>H2 — a preamble above the first H2 is inert by construction; add a resolver test proving it.Acceptance criteria
setup apply(team layer) writes the header; re-running on an existing file does not duplicate itBlocked by
None — can start immediately