Create Pull Request
Create a pull request for the current branch with a structured description.
Configuration
Read cloudstack.json from the project root at the start of execution. Extract relevant fields:
REPO_OWNER/REPO_NAME=repository.owner/repository.name(default: detect fromgit remote -v)SOLUTION=backend.solutionPath(default: find*.sln)FRONTEND_PATH=frontend.path(default:web)CHARTS_PATH=infrastructure.chartsPath(default:deploy/charts)TF_PATH=infrastructure.terraformPath(default:infra/terraform/modules)
If cloudstack.json does not exist, auto-detect by scanning the project structure and parsing the GitHub remote URL.
Arguments
{issue}-- GitHub issue number to link (optional). If not provided, attempt to extract from the branch name.
Prerequisites
- You must be on a feature branch (not main)
- All changes should be committed (warn if working tree is dirty)
- Branch should have at least one commit ahead of main
Process
Gather context:
git status-- check for uncommitted changes, warn if dirty.git log origin/main..HEAD --oneline-- list all commits on this branch.git diff origin/main...HEAD --stat-- summary of changed files.- Extract issue number from branch name or argument.
Analyze changes:
- Identify which layers were modified (Domain, Application, Infrastructure, Host, Frontend, Tests).
- Detect affected services by checking paths against known service directories:
git diff origin/main...HEAD --name-only | grep -oP 'src/\K[^/]+' | sort -u - Detect what was added vs changed vs removed from the diff stat.
- Check if documentation may need updating (new endpoints, entities, or events).
Push and create PR:
- Push the branch to origin with
-uflag. - Create the PR using MCP.
- Push the branch to origin with
PR Body Format
## Summary
{1-3 bullet points describing what this PR does}
Closes #{issue-number}
## Affected Services
{List only services that were actually modified}
## Changes
- **Domain:** {changes or "No changes"}
- **Application:** {changes or "No changes"}
- **Infrastructure:** {changes or "No changes"}
- **Endpoints:** {changes or "No changes"}
- **Frontend:** {changes or "No changes"}
- **Tests:** {changes or "No changes"}
## Test Plan
- [ ] Unit tests pass
- [ ] Integration tests pass (if applicable)
- [ ] Frontend lint clean (if applicable)
- [ ] Frontend type-check clean (if applicable)
- [ ] Helm lint clean (if applicable)
- [ ] Terraform validate clean (if applicable)
- [ ] Architecture check passes
- [ ] {Any feature-specific manual verification steps}
Generated with [Claude Code](https://claude.com/claude-code)
Commands
# Push branch
git push -u origin HEAD
Create the PR using MCP for structured creation:
mcp__github-mcp-server__create_pull_request(
owner: "{REPO_OWNER}",
repo: "{REPO_NAME}",
title: "{title}",
body: "{body}",
head: "{branch-name}",
base: "main"
)
Error Handling
- No commits ahead of main: Warn the user -- there's nothing to PR.
- Push fails (no upstream): Use
git push -u origin HEADto set the upstream. - PR already exists: Check with
gh pr list --head {branch}and report the existing PR URL instead of creating a duplicate.
Guidelines
- Keep the PR title under 70 characters, in imperative mood ("Add user group assignments", not "Added").
- Use
Closes #{issue}to auto-close the linked issue on merge. - If the branch has many commits, suggest the user consider squashing before creating the PR.
- Report the PR URL when done.