Create PR
User-invoked only — never self-invoke. Do NOT run this skill on your own initiative, and do not chain into it from another skill or from "wrapping up". The only valid trigger is the user explicitly invoking
/create-prin the current message. If a PR seems warranted but the user has not invoked this, ask — do not run it. (This is deliberately stricter than the general never-commit/push rule, because this skill's whole job is to commit, push, and open a PR.)
One-step "wrap up and open a PR" for the current repo. The user invoking /create-pr is the
authorization to commit + push + open a PR — it overrides the never-commit/push hard rule for that
invocation only. Nothing else (a later "continue", a prior approval, another skill) carries it.
What makes this different from close-session
close-session re-runs the full test suite; this skill does not. The user is trusting CI to
gate tests. Still run the cheap, fast checks so you never push something obviously broken — just not
the slow test suites.
Run quietly
No play-by-play. Stay silent except a rare very-short status line. Emit exactly one summary at the end (see below).
Steps (in order)
- Accessibility — if the session changed UI (HTML/JSX/CSS/component), invoke the
accessibility-reviewskill on the changed surface and fix confirmed WCAG violations. Nothing renders UI this session → skip. - Type-check, no tests — run the repo's type-checker (e.g.
npx tsc --noEmit,mypy). Honor the repo's pre-existing error baseline; report only new errors in changed files. Do not run the full test suite or integration suite. If new errors surface in changed files, halt and tell the user before opening the PR. - Save — invoke the
save-sessionskill so any learning persists, routed to the right repo. - Open the PR (current repo only):
- On the default branch? Create a branch first:
git switch -c <type>/<short-slug>. git add -A, then commit with a clear message ending in the repo's commit trailer if it has one. Push withgit push -u origin HEAD.gh pr createwith a title and a body that summarizes what changed and how it was verified — state plainly that tests are left to CI (not run locally). End the body with the repo's PR trailer if it has one.
- On the default branch? Create a branch first:
- Return to the default branch locally —
git switch <default-branch>so the local checkout is back on the default branch. Do not delete the pushed branch.
Scope & cautions
- Current repo only. If the session also touched other repos, do not bundle them into this PR — they need their own commits/PRs. Name them in the summary so the user handles them separately.
- Never force-push, never delete branches, never merge. Leave the PR open for review.
Final summary
One terse message: the a11y result, the type-check result (new errors: expected 0), what was saved, the PR URL, and confirmation you're back on the default branch. Flag anything left for the user (other-repo changes, unresolved type errors, a decision you couldn't make).