pm-branches
Use this skill when creating a git branch for a Linear or GitHub issue, writing a PR description, opening a pull request, or linking a PR to its tracked issue. Trigger phrases "create a branch", "new branch for this issue", "branch for
What this skill does
# PM Branches & PR Linking
Enforce consistent branch naming and PR descriptions that trigger Linear's auto-close via PR link.
## Usage
```
/pm-branches [<issue-id>] [<type>] [<short-description>]
```
Workflow-driven (no flags) — inputs are gathered from the branch/context:
- `<issue-id>` *(Linear ID e.g. `ENG-42` or GitHub `#42`, required)* — the tracked issue to branch for and `Closes` in the PR. If untracked, file it first via `pm-issues`.
- `<type>` *(one of `feat` `fix` `chore` `refactor` `docs` `test`, optional)* — branch-name prefix; defaults from the nature of the change.
- `<short-description>` *(2-4 words, lowercase, hyphenated, optional)* — the branch-name suffix.
- PR title/body *(derived)* — title is `<issue-id>: <concise title>`; body uses the PR description template and ends with `Closes <issue-id>`.
- Runs `git checkout -b`, `git push -u origin <branch>`, and `gh pr create`.
## Core Rule: 1 PR = 1 Issue
One PR closes one Linear issue. If extra work surfaces mid-PR:
- **Bug found** → new issue, fix in separate PR first, rebase your feature branch
- **Scope creep** → use `pm-pivot`
- **Tiny cleanup** (<10 lines, directly related) → include it; if you have to explain why it's in this PR, it belongs in its own issue
For larger features, use Linear's parent/sub-issue hierarchy. Parent issue needs no PR — it closes when all sub-issues close. Each sub-issue gets its own branch (`feat/NTH-44-auth-middleware`) and PR with `Closes <SUB-ID>`.
## PR Scope
**Target:** ~200-400 lines changed. Under 200 is ideal. Over 500 warrants a check-in.
Before opening a PR, verify every changed file relates to the issue's acceptance criteria, there are no unrelated changes, and test changes match code changes.
Check in with the user after completing the core change, when the diff crosses ~300 lines, or when unexpected complexity appears. If the diff exceeds ~500 lines, suggest splitting into a shippable subset + follow-up issue.
---
## Branch Naming Convention
Format: `<type>/<LINEAR-ID>-<short-description>`
- `type` = `feat`, `fix`, `chore`, `refactor`, `docs`, `test`
- `LINEAR-ID` = the Linear issue identifier (e.g., `ENG-42`)
- `short-description` = 2-4 words, lowercase, hyphenated
**Examples:**
```
feat/ENG-42-auth-middleware-refactor
fix/ENG-45-pagination-off-by-one
chore/ENG-51-update-dependencies
```
### Creating a Branch
```bash
git checkout -b feat/ENG-42-auth-middleware-refactor
```
Always confirm the Linear issue ID before creating the branch. If the work isn't tracked yet, use the `pm-issues` skill to create the issue first.
---
## PR Description Template
```markdown
## Summary
[1-3 bullet points describing what changed and why]
## Changes
- [Specific change 1]
- [Specific change 2]
## Testing
- [ ] [How to verify this works]
- [ ] [Edge cases tested]
Closes ENG-42
```
**Critical:** The `Closes <ID>` line at the end of the PR description is what triggers Linear to auto-close the issue when the PR merges. Always include it. One PR, one `Closes` line.
---
## Opening a PR
When the user says "open a PR" or "push this up":
1. Confirm the Linear issue ID from the current branch name or context
2. Check the current branch has been pushed: `git push -u origin <branch>`
3. Draft the PR description using the template above
4. Show the user the description for review
5. Create the PR:
```bash
gh pr create \
--title "<LINEAR-ID>: <concise title>" \
--body "<description with Closes ENG-XX>"
```
### PR Title Format
```
ENG-42: Refactor auth middleware to support OAuth
```
The Linear ID at the front of the title makes it easy to scan in GitHub's PR list.
---
## Verifying the Link
After creating the PR, confirm the Linear issue shows the PR as attached:
```
get_issue { id: "<issue_id>" } → check attachments or relations
```
If Linear doesn't pick it up automatically within a few minutes, the `Closes` keyword in the PR body is what matters — Linear scans it on merge.
Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.