Skip to content
Security
Skill

/meta-pr-creation

How an agent authors branches, commits, and pull requests on cipherstash/stack — naming, signed commits, the changeset/skills/meta-file checklist, and PR body structure with dumbed-down wording. Use when committing work or opening/updating a PR.

BOOST
From plugin
stack
16116 skills1 command
Install
$ npx -y skills add cipherstash/stack --skill meta-pr-creation --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/meta-pr-creation

Context preview

The summary Claude sees to decide when to auto-load this skill.

How an agent authors branches, commits, and pull requests on cipherstash/stack — naming, signed commits, the changeset/skills/meta-file checklist, and PR body structure with dumbed-down wording. Use when committing work or opening/updating a PR.

SKILL.md

meta-pr-creation.SKILL.md
name: meta-pr-creation
description: How an agent authors branches, commits, and pull requests on cipherstash/stack — naming, signed commits, the changeset/skills/meta-file checklist, and PR body structure with dumbed-down wording. Use when committing work or opening/updating a PR.

Authoring PRs as an agent

Internal skill — lives in `.claude/skills/` on purpose. `skills/` ships to customers inside the `stash` tarball; this must not.

Branch and commits

  • Branch names are type-prefixed slugs: `docs/skill-psl-functional-indexes`,

`fix/…`, `feat/…`, `chore/…`. Never commit to `main`.

  • Commit subjects are conventional: `type(scope): imperative summary` —

`docs(skills): …`, `fix(stack-prisma): …`. The body explains **why** and the mechanism, not a list of what changed (the diff shows that). Reference the GitHub issue the commit serves.

  • **Commits must be signed.** `commit.gpgsign` is on, but verify before

pushing:

  git log --format='%h %G? %s' main..HEAD   # G = signed, N = unsigned

An unsigned commit (`N`) in the stack: `git rebase --force-rebase main` re-commits everything signed, then `git push --force-with-lease`. Always `--force-with-lease`, never bare `--force`.

Before opening the PR

The authoritative checklist is `AGENTS.md` § "Adding Features Safely" — read it, don't work from memory. The three most-missed items:

1. **Changeset** — required when the change touches a published package's surface, *including* a `skills/`-only change (those ship in the `stash` tarball, so they need a `stash` patch changeset). A `.claude/`-only change is internal: no changeset. 2. **Skills check** — a change to a public API, CLI surface, or user-facing workflow must fix the affected `skills/*/SKILL.md` in the same PR (package→skill map in `AGENTS.md`). 3. **Meta files** — adding/removing/renaming a package, example, skill, or subpath export must update `AGENTS.md` Repository Layout and `SECURITY.md`.

Then run: `pnpm run code:fix`, `pnpm --filter <pkg> build`, `pnpm --filter <pkg> test`.

PR body

Same wording rule as [meta-issue-creation](../meta-issue-creation/SKILL.md): **dumbed down** — assume the reviewer is new to CipherStash, stack, and EQL. Define product terms at first use; say what breaks or improves in the user's world, not just the code's.

Sections, in order:

  • **Summary** — what and why, two or three plain sentences. Lead with the

user-visible effect.

  • **Changes** — grouped by area, one line each.
  • **Verification** — exactly what was run and what it showed. Honest: a

failing or skipped check is stated, not omitted. "Verified against the 0.17 dist" beats "should work".

  • **Related** — `Closes #N` / `Refs #N` for the GitHub issues this serves;

cross-repo refs in full `owner/repo#N` form.

  • **Review notes** *(optional)* — where to look first, and anything

deliberately deferred with the reason.

Reference wording traps (same as issues):

  • `#N` **only** as a real GitHub issue/PR reference — GitHub autolinks every

`#N`, so "option #2" mints a bogus link. Write "option 2".

  • **Never** reference internal Linear issues (`CIP-…`) in PRs, commits, or

comments — GitHub is public.

Mechanics

  • **Always open as a draft**: `gh pr create --draft --title '…' --body '…'`

(title follows the commit-subject convention). Mark it ready for review only when the user says so — either ask, or rely on an explicit "open it ready" / "mark it ready" from them. `gh pr ready <number>` flips it.

  • Force-pushing a branch with an open PR is fine (rebases, re-signs) — but

say so in a PR comment when the rewrite changes more than commit hashes.

  • Don't merge, close, or mark ready-for-review without being asked.
Read more
Ships withstack

Searchable, application-level encryption for building privacy-first apps

Get the whole plugin

Other skills on stack.

stash-auth
Skill

stash-auth

How a CipherStash client authenticates — the canonical skill for credentials, auth strategies, and lock context. Covers the…

stash-cli
Skill

stash-cli

Drive CipherStash setup and encryption migrations through the `stash` CLI — `init`, `plan`, `impl`, `status`, `auth login`, `eql…