Create PR
Complete workflow for creating pull requests following project standards.
When explicitly invoked with extra text, treat that text as additional context for branch
naming, commit context, and PR title and body generation. Compress it into a short
plain-language branch name rather than copying the full text.
Process
Preferred execution
- If subagents are available, use
github-dev:pr-creator for the full workflow.
- Pass along any extra invocation text plus session findings and motivation as additional context.
- Otherwise follow the manual steps below.
Verify staged changes exist with git diff --cached --name-only
Branch setup
- If on main/master, create a short branch first:
feature/short-topic, fix/short-topic, or docs/short-topic
- Keep the branch suffix to 2-4 short words
- Avoid long, overly specific, or sentence-like branch names
- Use
github-dev:commit-creator subagent to handle staged changes if needed, and pass session findings and motivation into the commit context
Documentation check
- Update README.md or docs based on changes compared to target branch
- For config/API changes, use
mcp__tavily__tavily_search to verify info and include sources
Analyze all commits
- Use
git diff <base-branch>...HEAD to review complete changeset
- PR message must describe all commits, not just latest
- Focus on what changed from reviewer perspective
Create PR
- Use
gh for GitHub operations and git only for local branch management
- Use
github-dev:pr-creator or gh pr create with parameters:
-t (title): Start with capital letter, use verb, NO "fix:" or "feat:" prefix
Use plain language. Avoid jargon and internal shorthand unless a command or tool name is needed.
-b (body): Brief summary + bullet points with inline markdown links
-a @me (self-assign)
-r <reviewer>: Only add if the user explicitly asks OR recent PRs by this author have reviewers.
Check with: gh pr list --repo <owner>/<repo> --author @me --limit 5 --json reviewRequests
If recent PRs have no reviewers, skip -r entirely.
PR Body Guidelines
- Single section, no headers if possible. Very concise
- Use plain language. Avoid jargon and buzzwords unless an exact command or tool name is needed.
- Few bullet points + 1 CLI/usage snippet or simple before/after snippet
- No test plans, no changed file lists, no line-number links
Examples
CLI snippet:
Add compare command for side-by-side model comparison
- Run multiple models on same images with `--models` and `--phrases` flags
- Horizontal panel concatenation with model name headers
`ultrannotate compare --source ./images --models sam3.pt,yoloe-26x-seg.pt --phrases "person,car"`
Before/after:
Inline single-use variables in compare_models
- xyxy2xywhn handles empty arrays, guard unnecessary
- Use function reference for draw dispatch
Before: `boxes = result.get(...); ops.xyxy2xywhn(boxes, ...)`
After: `ops.xyxy2xywhn(result.get(...), ...)`
1---2name: create-pr-33description: This skill should be used when user asks to "create a PR", "make a pull request", "open PR for this branch", "submit changes as PR", "push and create PR", or explicitly invokes "create-pr".4---5
6# Create PR
7
8Complete workflow for creating pull requests following project standards.
9
10When explicitly invoked with extra text, treat that text as additional context for branch
11naming, commit context, and PR title and body generation. Compress it into a short
12plain-language branch name rather than copying the full text.
13
14## Process
15
161. **Preferred execution**
17 - If subagents are available, use `github-dev:pr-creator` for the full workflow.
18 - Pass along any extra invocation text plus session findings and motivation as additional context.
19 - Otherwise follow the manual steps below.
20
212. **Verify staged changes** exist with `git diff --cached --name-only`
22
233. **Branch setup**
24 - If on main/master, create a short branch first: `feature/short-topic`, `fix/short-topic`, or `docs/short-topic`
25 - Keep the branch suffix to 2-4 short words
26 - Avoid long, overly specific, or sentence-like branch names
27 - Use `github-dev:commit-creator` subagent to handle staged changes if needed, and pass session findings and motivation into the commit context
28
294. **Documentation check**
30 - Update README.md or docs based on changes compared to target branch
31 - For config/API changes, use `mcp__tavily__tavily_search` to verify info and include sources
32
335. **Analyze all commits**
34 - Use `git diff <base-branch>...HEAD` to review complete changeset
35 - PR message must describe all commits, not just latest
36 - Focus on what changed from reviewer perspective
37
386. **Create PR**
39 - Use `gh` for GitHub operations and `git` only for local branch management
40 - Use `github-dev:pr-creator` or `gh pr create` with parameters:
41 - `-t` (title): Start with capital letter, use verb, NO "fix:" or "feat:" prefix
42 Use plain language. Avoid jargon and internal shorthand unless a command or tool name is needed.
43 - `-b` (body): Brief summary + bullet points with inline markdown links
44 - `-a @me` (self-assign)
45 - `-r <reviewer>`: Only add if the user explicitly asks OR recent PRs by this author have reviewers.
46 Check with: `gh pr list --repo <owner>/<repo> --author @me --limit 5 --json reviewRequests`
47 If recent PRs have no reviewers, skip `-r` entirely.
48
497. **PR Body Guidelines**
50 - Single section, no headers if possible. Very concise
51 - Use plain language. Avoid jargon and buzzwords unless an exact command or tool name is needed.
52 - Few bullet points + 1 CLI/usage snippet or simple before/after snippet
53 - No test plans, no changed file lists, no line-number links
54
55## Examples
56
57### CLI snippet:
58
59```
60Add compare command for side-by-side model comparison
61
62- Run multiple models on same images with `--models` and `--phrases` flags
63- Horizontal panel concatenation with model name headers
64
65`ultrannotate compare --source ./images --models sam3.pt,yoloe-26x-seg.pt --phrases "person,car"`
66```
67
68### Before/after:
69
70```
71Inline single-use variables in compare_models
72
73- xyxy2xywhn handles empty arrays, guard unnecessary
74- Use function reference for draw dispatch
75
76Before: `boxes = result.get(...); ops.xyxy2xywhn(boxes, ...)`
77After: `ops.xyxy2xywhn(result.get(...), ...)`
78```