3.8 KiB
You are creating a {{ forge.pr_term }} for the implemented issue.
Input: {{ input }}
Working Directory
You are running in an isolated git worktree shared with previous pipeline steps. Your working directory IS the project root. The feature branch was created by the plan step and is already checked out. All git operations here are isolated from the main working tree.
Read the issue assessment artifact to find the issue number, repository, branch name, and issue URL.
SAFETY: Do NOT Modify the Working Tree
This step MUST NOT run git checkout, git stash, or any command that changes
the current branch or working tree state. The branch already exists from the
implement step — just push it and create the {{ forge.pr_term }}.
Instructions
Step 1: Load Context
From the issue assessment artifact, extract:
- Issue number and title
- Repository (
owner/repo) - Branch name
- Issue URL
Step 2: Push the Branch
Push the feature branch. If SSH push fails, retry with HTTPS:
git push -u origin <BRANCH_NAME> || GIT_SSH_COMMAND="ssh -F /dev/null" git push -u origin <BRANCH_NAME>
Step 3: Create {{ forge.pr_term }}
Use the appropriate CLI for your platform ({{ forge.type }}) to create the {{ forge.pr_term }}.
The description MUST include Related to #<NUMBER> to link the issue (without auto-closing it when the PR is closed without merge).
For GitHub (gh):
gh pr create --repo <OWNER/REPO> --head <BRANCH_NAME> --title "<concise title>" --body "$(cat <<'EOF'
## Summary
<3-5 bullet points describing the changes>
Related to #<ISSUE_NUMBER>
## Changes
<list of key files changed and why>
## Test Plan
<how the changes were validated>
EOF
)"
For GitLab (glab):
cat > /tmp/mr-body.md <<'EOF'
## Summary
<3-5 bullet points describing the changes>
Related to #<ISSUE_NUMBER>
## Changes
<list of key files changed and why>
## Test Plan
<how the changes were validated>
EOF
glab mr create --repo <OWNER/REPO> --source-branch <BRANCH_NAME> --target-branch main --title '<concise title>' --description "$(cat /tmp/mr-body.md)"
For Bitbucket (REST API):
cat > /tmp/bb-payload.json << 'PRBODY'
{
"title": "PR title",
"description": "PR description\n\nRelated to #NUMBER",
"source": {"branch": {"name": "BRANCH_NAME"}},
"destination": {"branch": {"name": "main"}},
"close_source_branch": true
}
PRBODY
curl -s -X POST -H "Authorization: Bearer $BB_TOKEN" -H "Content-Type: application/json" \
-d @/tmp/bb-payload.json \
"https://api.bitbucket.org/2.0/repositories/WORKSPACE/REPO/pullrequests" \
| jq '{id, url: .links.html.href}'
For Gitea (tea):
cat > /tmp/pr-body.md <<'EOF'
## Summary
<3-5 bullet points describing the changes>
Related to #<ISSUE_NUMBER>
## Changes
<list of key files changed and why>
## Test Plan
<how the changes were validated>
EOF
tea pulls create --repo <OWNER/REPO> --head <BRANCH_NAME> --base main --title '<concise title>' --description "$(cat /tmp/pr-body.md)"
Step 4: Request Review (Best-Effort)
After the {{ forge.pr_term }} is created, attempt to add a reviewer. This is a best-effort operation — if it fails, the {{ forge.pr_term }} is still created successfully.
For GitHub: gh pr edit --add-reviewer "copilot"
For GitLab: glab mr update <MR_NUMBER> --reviewer "<username>"
For Bitbucket: Update PR via REST API with reviewers
For Gitea: Skip (not directly supported by tea CLI)
CONSTRAINTS
- Do NOT spawn Task subagents — work directly in the main context
- Do NOT run
git checkout,git stash, or any branch-switching commands - The {{ forge.pr_term }} description MUST contain
Related to #<NUMBER>to link to the issue - Do NOT include Co-Authored-By or AI attribution in commits
Output
Produce a JSON status report matching the injected output schema.