Files
code-crispies/.wave/prompts/implement/create-pr.md
Michael Czechowski ab6dabd542
Some checks failed
CI / ci (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
fix(ci): correct image digest separator
2026-04-30 12:20:26 +02:00

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.