| name | pr-from-issue |
|---|---|
| description | Creates a GitHub PR for the current work using GitHub MCP; links to an existing issue with Closes |
Use GitHub MCP (server user-github) for all GitHub actions. Before calling any MCP tool, check its schema (e.g. under mcps/user-github/tools/ or via Cursor MCP discovery) so parameters are correct.
- Issue: From conversation (e.g. "issue #5") or search — identify the main issue #M. If none exists, create one via GitHub MCP and use labels from docs/ISSUE_REFINEMENTS.md / issue-refinement-triage.
- Scope: If the change is small or not splittable → single PR. If large and decomposable → create sub-issues S1…Sn, then multiple PRs (see reference.md for heuristics).
- Ensure main issue #M exists (found or created).
- Ensure branch is pushed: use jj-bookmark-push —
jj bookmark set <branch-name>thenjj git push -b <branch-name>. - Check for a PR template:
.github/PULL_REQUEST_TEMPLATE/orpull_request_template.mdin the repo; use it if present. - Create the PR via
call_mcp_toolwith serveruser-githuband the create_pull_request tool. PR body must includeCloses #M.
- Main issue #M exists. Create sub-issues S1, S2, … Sn (e.g. "Part 1: …", "Part 2: …") and reference the main issue in each sub-issue body (e.g. "Parent: #M").
- For each sub-piece of work: push its branch (jj bookmark + push), then create a PR that closes the corresponding sub-issue(s).
- PR 1: body includes
Closes #S1. - PR 2: body includes
Closes #S2. - …
- PR 1: body includes
- Last PR: Include
Closes #S_last(and any other sub-issues this PR completes) andCloses #Mso the main issue is closed when the last PR is merged.
Use call_mcp_tool with server: "user-github". Typical tools and intent:
| Tool (check schema for exact name) | Use for |
|---|---|
| get_me | Current user and permissions; infer or confirm owner/repo |
| search_issues | Find existing issue by number, title, or labels; avoid duplicate creation |
| create_issue (or equivalent) | Create main or sub-issue when missing; use ISSUE_REFINEMENTS labels |
| create_pull_request | Create PR from branch; use repo PR template if present |
| list_issue_types | Optional; use for orgs that use issue types |
Infer owner/repo from git remote or conversation. Always check the tool’s JSON descriptor for required parameters before calling.
This project uses jj. A bookmark is the branch name. Before creating a PR:
jj bookmark set <branch-name>so the bookmark points at the revision to publish.jj git push -b <branch-name>.
See jj-bookmark-push for details. Do not rewrite already-pushed commits.
- Single issue: Body must include
Closes #M(main issue number). - Sub-issue PR (not last): Body must include
Closes #S1(and any other sub-issues that PR completes). - Last PR in a breakdown: Body must include
Closes #S_lastandCloses #M.
Use the repo’s PR template if present. Title and description should reflect the issue and the change.
| Scenario | Action |
|---|---|
| No issue | Create issue via MCP; one PR with Closes #M. |
| One issue, small scope | One PR with Closes #M. |
| One issue, can break down | Create sub-issues S1…Sn; each PR closes its sub-issue(s); last PR closes its sub-issue(s) and Closes #M. |
For when to treat work as "big", how to phrase sub-issues, and example PR body snippets, see reference.md.