docs(agents): add internal meta-issue-creation and meta-pr-creation skills - #919
Conversation
…kills Agent-authored issues and PRs on this repo have had no documented structure. These two skills capture the conventions that worked in practice: Background / Problem / Proposal issue sections written for a reader new to CipherStash, signed-commit verification and the rebase recipe for an unsigned commit, the changeset/skills/meta-file checklist by pointer to AGENTS.md, and the reference traps (bare #N autolinks; Linear CIP- numbers never appear on GitHub). They live in .claude/skills/ deliberately: skills/ ships to customers inside the stash tarball via packages/cli/tsup.config.ts, and these are internal-only.
|
freshtonic
left a comment
There was a problem hiding this comment.
Approve. Right content, right location, and the one claim that matters for a "these must not ship" PR checks out: I verified packages/cli/tsup.config.ts copies only skills/ (→ dist/skills) and src/commands/init/doctrine (→ dist/doctrine) — nothing touches .claude/, so these two files stay internal. The meta- prefix cleanly separates repo-process skills from the customer-facing stash-* set.
Content spot-checks against the rules these skills encode:
- The changeset guidance matches AGENTS.md exactly, including the two subtle cases that actually trip people: a
skills/-only change needs astashpatch changeset (tarball-shipped), a.claude/-only change doesn't — and this PR correctly practices the second rule on itself. - The signed-commit recipe (
%G?check,rebase --force-rebase+--force-with-lease) matches how this repo actually operates, and pointing at AGENTS.md § "Adding Features Safely" as the authoritative checklist rather than restating it is the right durability call — the skill can't drift from a list it doesn't duplicate. - The two reference traps are real and worth encoding: bare
#Nautolinking to an unrelated issue has bitten these sessions, and the Linear (CIP-) exclusion is a genuine public/private boundary, correctly stated as absolute. - The issue-shape guidance ("a closed issue is a finding, not a dead end", verified-vs-plausible separation, symptom-first titles) distills what has observably made the recent agent-filed issues in this repo good ones.
Two non-blocking observations:
- The draft-first rule in
meta-pr-creation("always open as a draft, mark ready only when the user says so") is a policy choice worth having written down precisely because nothing enforces it — same category as the rest of the file, fine. - These skills are only read by agents whose session loads
.claude/skills/— Codex sessions on this repo won't see them. Not worth solving now (mirroring into.codex/skills/would create a sync burden), just worth knowing the coverage boundary exists.
Summary
Agents working on this repo now file issues and open PRs regularly, with no documented structure — quality has depended on the session. This adds two internal skills setting the conventions: a required issue shape (Background / Problem / Proposal) written for a reader who is new to CipherStash, and the branch/commit/PR authoring rules (signed commits, the changeset checklist, PR body sections).
They live in
.claude/skills/, notskills/— everything underskills/ships to customers inside thestashnpm tarball (packages/cli/tsup.config.tscopies the whole directory), and these are internal-only. Themeta-prefix marks them as repo-process skills, distinct from the customer-facingstash-*set.Changes
.claude/skills/meta-issue-creation/SKILL.md— pre-filing checks (search existing issues open and closed, verify claims against code, pick the right repo), the required section structure, dumbed-down wording rules, cross-linking in both directions..claude/skills/meta-pr-creation/SKILL.md— branch/commit conventions, signed-commit verification (%G?) and the re-sign rebase recipe, the AGENTS.md pre-PR checklist by pointer, PR body structure, force-push etiquette.Both encode two reference traps from recent sessions: bare
#Nautolinks to an unrelated issue unless a GitHub reference is intended, and internal Linear (CIP-) numbers must never appear on GitHub.Verification
Docs-only; no build or tests apply. Checked that
.claude/skills/is outside every tarball copy path (tsup.config.tscopiesskills/anddoctrine/only). No changeset:.claude/is internal and ships nowhere, per the changeset rule these skills themselves document.Related
Conventions distilled from the sessions around #895/#897 (skill corrections), #896 (hazard comments), and #918 (issue filing).