Initial commit
This commit is contained in:
91
commands/create_prs.md
Normal file
91
commands/create_prs.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Create Pull Requests from Stack
|
||||
|
||||
You are tasked with creating pull requests for all changes in the current jj tree.
|
||||
|
||||
## Process:
|
||||
|
||||
1. **Ask about PR configuration:**
|
||||
- Ask the user: "Should all PRs be based on the main branch, or should each PR be based on its direct parent branch?"
|
||||
- Ask the user: "Should the PRs be created as drafts or published immediately?"
|
||||
- Wait for user responses before proceeding
|
||||
|
||||
2. **Understand the current state:**
|
||||
- Run `jj log` to visualize the current commit tree
|
||||
- Identify which commits need PRs
|
||||
- Understand the branch structure and relationships
|
||||
|
||||
3. **Push branches to origin:**
|
||||
- Run `jj git push --allow-new` to push all branches
|
||||
- Parse the output to identify which branches were pushed
|
||||
- Track the branch names and their corresponding commits
|
||||
|
||||
4. **Create PRs for each new branch:**
|
||||
- For each new branch that was pushed:
|
||||
- Determine the commit range for changes (use `jj log` and `jj diff`)
|
||||
- Generate a clear, descriptive PR title based on the commit message(s)
|
||||
- Create a PR body that describes the changes:
|
||||
- Summarize what changed and why
|
||||
- Include relevant context about the implementation
|
||||
- Do NOT include Claude attribution or co-author information
|
||||
- Determine the base branch:
|
||||
- If user chose "main branch": use main (or master)
|
||||
- If user chose "parent branch": use the direct parent commit's branch
|
||||
- Create the PR:
|
||||
- If user chose "drafts": Run `gh pr create --draft -H <bookmark-name> --base <base-branch> --head <branch-name> --title "<title>" --body "<body>"`
|
||||
- If user chose "published": Run `gh pr create -H <bookmark-name> --base <base-branch> --head <branch-name> --title "<title>" --body "<body>"`
|
||||
- Store the PR URL and branch name for later use
|
||||
|
||||
5. **Build the stack information:**
|
||||
- Determine the order of PRs from closest to main to furthest
|
||||
- For each PR, identify its position in the stack
|
||||
|
||||
6. **Update all PR descriptions with stack links:**
|
||||
- For each PR created:
|
||||
- Build the stack section showing all PRs in order
|
||||
- Mark the current PR with `<-- This PR`
|
||||
- Use `gh pr edit <PR-URL> --body "<updated-body>"` to add the stack section
|
||||
- Stack format:
|
||||
```md
|
||||
Stack:
|
||||
- https://github.com/<org>/<project>/pull/<id>
|
||||
- https://github.com/<org>/<project>/pull/<id2> <-- This PR
|
||||
- https://github.com/<org>/<project>/pull/<id3>
|
||||
```
|
||||
|
||||
7. **Generate summary:**
|
||||
- Create a summary table showing:
|
||||
- Bookmark/branch name
|
||||
- Corresponding PR URL
|
||||
- Base branch
|
||||
- Present this to the user
|
||||
|
||||
## Important:
|
||||
|
||||
- **NEVER add co-author information or Claude attribution**
|
||||
- PRs should be authored solely by the user
|
||||
- Do not include any "Generated with Claude" messages
|
||||
- Do not add "Co-Authored-By" lines
|
||||
- Write PR descriptions in the user's voice
|
||||
|
||||
## Jujutsu and GitHub CLI notes:
|
||||
|
||||
- `jj git push --allow-new` will push all branches and output which ones are new
|
||||
- Use `jj log -r 'bookmarks()'` to see all bookmarks
|
||||
- Use `jj diff -r <revision>` to see changes for a specific commit
|
||||
- Use `gh pr create` to create PRs programmatically
|
||||
- Use `gh pr edit` to update PR descriptions after creation
|
||||
- Use `gh pr list --json url,number,headRefName` to query existing PRs if needed
|
||||
|
||||
## Error handling:
|
||||
|
||||
- If push fails, report the error and stop
|
||||
- If PR creation fails for a branch, report it but continue with other branches
|
||||
- If PR description update fails, report it but continue with other PRs
|
||||
- At the end, report any errors encountered
|
||||
|
||||
## Remember:
|
||||
|
||||
- The stack visualization helps reviewers understand dependencies
|
||||
- PRs based on parent branches create a more granular review process
|
||||
- PRs based on main are simpler but may have larger diffs
|
||||
- Each PR should stand alone in its description despite being part of a stack
|
||||
Reference in New Issue
Block a user