skills/pr-creator/SKILL.md
Creates GitHub pull requests with short, human-sounding descriptions. Adds a Linear issue ID prefix when available, keeps titles under 60 chars, and defaults to one short paragraph instead of generated summaries or test-plan sections. Restructures noisy commit history into reviewable order and adds reviewer guidance for large diffs. Use when "create a PR", "make a PR", "open a pull request", "PR this", "ship it", "make this PR easy to review", "polish this PR", "tidy the PR", "clean up commits", "restructure commits", or "split this PR". For reviewing a diff for bugs, use pr-reviewer. For monitoring a PR after creation, use pr-babysitter. For npm releases, use autoship.
npx skillsauth add mblode/agent-skills pr-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Write PR descriptions like a developer posting in Slack, not like an AI summarizing a diff.
pr-reviewer), watching CI and review comments after creation (use pr-babysitter), or cutting npm releases (use autoship).| File | Read When |
|------|-----------|
| references/pr-polish.md | Commit history is noisy (fixup, WIP, or "address review" commits), the diff exceeds 500 lines, or the user asks to polish, tidy, restructure, or split the PR |
Copy this checklist and work through it:
PR creation progress:
- [ ] Inspect: git status, git log origin/main..HEAD, git diff origin/main...HEAD
- [ ] Find the Linear ID (branch, commits, prompt, PR context); skip the prefix if none
- [ ] Noisy commits or >500-line diff? Read references/pr-polish.md and restructure first
- [ ] Push with upstream: git push -u origin HEAD
- [ ] Draft title and body against the rules and anti-pattern list below
- [ ] Check for .github/PULL_REQUEST_TEMPLATE.md; fill its sections briefly if present
- [ ] Create with gh pr create; verify with gh pr view; return the URL
Do not ask the user to confirm the description before creating. The whole point is speed.
ABC-123: Add auth flow. Without one: Add auth flow. Under 60 chars, no trailing period.Risk: line only for migrations, billing/auth/permission changes, irreversible writes, wide blast radius, or subtle behavior changes.Test plan section.Bad (default AI behavior):
Title: Implement user authentication flow with session management and error handling
## Summary
- Added new `AuthProvider` component in `src/components/AuthProvider.tsx`
- Implemented `useAuth` hook for login, logout, and session refresh
- Updated `src/app/layout.tsx` to include the AuthProvider wrapper
- Configured session timeout to 30 minutes with automatic refresh
## Test plan
- [ ] Verify login flow works with valid credentials
- [ ] Verify session persists across page refreshes
Good (assume ABC-123 is the real Linear ID):
Title: ABC-123: Add auth flow with session management
Adds the auth flow needed for session-based login, including refresh, timeout handling, and a small error boundary for auth failures.
Bad:
Title: Fix issue with duplicate invoice creation in webhook handler
## Summary
This PR addresses an issue where the Stripe webhook handler was not idempotent,
which could result in duplicate invoices under certain retry conditions. The
handler has been updated to track processed event IDs, ensuring retried events
are safely ignored.
## Test plan
- [ ] Verify duplicate webhooks no longer create duplicate invoices
Good:
Title: PAY-482: Dedupe Stripe webhook retries
Stripe retries webhooks on timeout and our handler wasn't idempotent, so retried events created duplicate invoices. Now we record processed event IDs and skip repeats. Tested by replaying a captured retry sequence locally.
Risk: touches the billing write path.
Bad:
Title: Refactor data fetching utilities to improve maintainability
This commit introduces a unified retry mechanism, refactoring the existing
data fetching utilities to leverage a shared helper. This ensures consistency
across the codebase and improves long-term maintainability.
Good:
Title: Collapse three copies of fetch retry logic into one helper
Same retry behavior we had in three places, now in one withRetry helper. No behavior change.
git push -u origin HEAD # skip if upstream already set
gh pr create --title "ABC-123: Add auth flow" --body "$(cat <<'EOF'
One short paragraph that explains what changed and why it matters.
EOF
)"
gh pr view --json url,title # evidence the PR exists; return the url
gh pr create on a branch with no upstream hangs on an interactive "Where should we push?" prompt; agents stall there forever. Run git push -u origin HEAD first.<<'EOF'). With an unquoted <<EOF the shell expands backticks and $vars inside the body, corrupting the description or executing commands.--body silently discards .github/PULL_REQUEST_TEMPLATE.md. If the template exists, fill its sections with short answers instead of ignoring it, and do not add sections it does not ask for.mblode/abc-123-add-auth gives ABC-123, uppercased). Never guess one: Linear's GitHub integration links the PR to whatever ID the title contains.gh pr create from the default branch fails with "no commits between main and main". Check git branch --show-current during inspection.git diff shows only uncommitted changes, so on a committed branch it is empty and the description will be written blind. Diff against the merge base: git diff origin/main...HEAD.pr-reviewer: run before creating when the user wants the diff checked for bugs.pr-babysitter: hand off after creation to watch CI, conflicts, and review comments.autoship: npm release pipeline (changesets, version PR, publish); not this skill's job.development
Designs and builds UI end to end, from visual direction (palettes, type scales, design tokens, layout systems, landing-page CRO strategy, brand kits) to Tailwind implementation with the ui.sh design guideline system, including multiple variants with an in-browser picker, semantic markup scaffolds from screenshots, retrofitting dark mode or responsive behavior, and componentizing or canonicalizing Tailwind code. Use when asked to "build a landing page", "create a dashboard", "make this look good", "make this look premium", "pick a visual style", "design the UI for", "show me 3 hero options", "improve conversions", "create a brand kit", "turn this screenshot into markup", "add dark mode", "make a dark version of this image", "make this responsive", "fix this on mobile", "componentize this page", "clean up the Tailwind", or any prompt that designs, creates, or refines UI code. For auditing existing UI use ui-audit; for motion use ui-animation; for landing page copy use copywriting.
development
Collaborative interrogation that produces an implementation plan before any code is written. Explores the codebase and relevant docs first, asks one question at a time with a concrete recommended answer, grills the rationale behind documented decisions, flags fuzzy terminology, and walks a decision tree until shared understanding is reached, then writes a plan file. First step of the shipping pipeline; it creates plans, plan-reviewer stress-tests them, pr-creator opens the PR. Use when asked to "create a plan", "help me think through this", "plan this feature", "I want to build X", "grill me", "grill with docs", "understand the docs", "unpack the decisions", "brainstorm a spec", "what should the plan be", "think this through with me", or before starting any non-trivial implementation.
development
--- name: pr-reviewer description: Reviews the current local diff or branch and returns a read-only, severity-tiered findings report. It never edits files. Four modes: standard bug and compliance review, structural quality, AI slop detection, and whole-codebase security audit. Use when asked to run /pr-reviewer, "review my changes", or "code review" before commit, push, or handoff. "Thermo-nuclear review", "structural review", "deep code quality audit", "harsh maintainability review", and "code
development
--- name: ux-audit description: Feature-level UX audit for React/Next.js code, diff-aware by default. Catches what Lighthouse, axe, ESLint, and Storybook miss: state-coverage gaps (missing loading/empty/error), form data loss on validation, double-submit, broken focus management, optimistic UI without rollback, stale async responses, skeleton-induced layout shift, and vague microcopy. 33 modern failure-mode rules plus 30 Laws of UX rules across 12 feature playbooks. Produces a 3-tier ship-readin