plugins/scm-utils/skills/request-a-review/SKILL.md
Best practices and procedures for creating and maintaining high-quality pull requests. Covers PR creation, body formatting, title conventions, lifecycle management, and requesting reviews. Counterpart to review-code, respond-to-review, and other review-receiving skills. Triggers on: "create a PR", "update the PR", "open a pull request", "push and PR", "fix PR", "fix PR body", "PR formatting", or automatically after any push to a feature branch per the auto-pr-management rule.
npx skillsauth add nsheaps/ai-mktpl request-a-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create and maintain pull requests for feature branches using gh api with --hostname github.com (required for web sessions where the git remote is a local proxy).
Current branch: !git branch --show-current 2>/dev/null || echo "(not in a git repo)"
eval "$(mise activate bash)"
The gh CLI must be available (installed via mise) and GH_TOKEN must be set in the environment.
Always check before creating to avoid duplicates. Use server-side filtering:
gh api "repos/nsheaps/ai-mktpl/pulls?head=nsheaps:<branch-name>&state=open" \
--hostname github.com \
--jq '.[0] | {number, title, state}'
If a PR already exists, skip to Step 3: Update PR.
PR_NUMBER=$(gh api repos/nsheaps/ai-mktpl/pulls \
--hostname github.com \
--method POST \
--field title="Short descriptive title" \
--field head="<branch-name>" \
--field base="main" \
--field draft=true \
--field body="$(cat <<'PREOF'
## Summary
- What changed and why
## Test plan
- [ ] Verification steps
<!-- Include Claude Code session link if available, e.g.: https://claude.ai/code/session_XXXXX -->
PREOF
)" --jq '.number')
Then add the request-review label to trigger AI code review:
gh api repos/nsheaps/ai-mktpl/issues/${PR_NUMBER}/labels \
--hostname github.com \
--method POST \
--field 'labels[]=request-review'
After subsequent pushes, update the PR body to reflect all current changes:
gh api repos/nsheaps/ai-mktpl/pulls/<PR_NUMBER> \
--hostname github.com \
--method PATCH \
--field body="$(cat <<'PREOF'
## Summary
- Updated description reflecting all changes
## Test plan
- [ ] Updated verification steps
<!-- session link -->
PREOF
)"
Only after review feedback is addressed and CI passes:
gh api repos/nsheaps/ai-mktpl/pulls/<PR_NUMBER> \
--hostname github.com \
--method PATCH \
--field draft=false
CRITICAL: PR bodies must contain real newlines, not literal \n escape sequences.
gh api, use heredocs ($(cat <<'PREOF' ... PREOF)) — they preserve newlines naturallymcp__github__create_pull_request), pass the body as a multi-line string with actual newlines — MCP tool string parameters support real newlines\n — GitHub renders them as literal text, not line breaks| Error | Resolution |
| --------------------- | ---------------------------------------------------- |
| gh not found | Run eval "$(mise activate bash)" or mise install |
| 401 Unauthorized | Check GH_TOKEN is set and has PR write scope |
| 422 Validation failed | Branch may not exist on remote yet — push first |
| PR already exists | Use PATCH to update instead of POST to create |
tools
Manually reproduce what the github-app plugin's SessionStart hook does to make a GitHub App installation token usable in the current session — materialize the PEM, generate the token, isolate GH_CONFIG_DIR, write the runtime env file, and wire CLAUDE_ENV_FILE so every Bash call sees GH_TOKEN/GITHUB_TOKEN. Use when the hook did not run, the token is missing from the environment, or a shell/teammate needs the token wired up by hand. <example>GH_TOKEN isn't set even though github-app is configured</example> <example>the github-app SessionStart hook didn't run, set up the token manually</example> <example>wire the github app token into CLAUDE_ENV_FILE</example> <example>gh keeps falling back to the wrong account, isolate GH_CONFIG_DIR</example>
tools
Manually configure the GitHub App bot git identity the way the github-app plugin's SessionStart hook does — resolve the app slug and bot user ID, build the <slug>[bot] name and noreply email, set GIT_AUTHOR_*/GIT_COMMITTER_* env vars, and write an isolated GIT_CONFIG_GLOBAL with the gh auth git-credential helper. Use when commits are attributed to the wrong account, "Author identity unknown" appears, or git identity must be set up by hand. <example>my commits are showing up as the handler, not the bot</example> <example>git says Author identity unknown after the github-app hook ran</example> <example>configure the github app bot git identity manually</example> <example>set up the gh credential helper for git push</example>
tools
Manages spec files for requirements capture and validation
tools
# Bash Chaining Alternatives This skill teaches you how to work around the bash command chaining restriction enforced by this plugin. ## Why Chaining is Blocked The `bash-command-rejection` plugin blocks these operators: | Operator | Name | Why Blocked | | -------- | ---------- | ----------------------------------------------------------------------------------- | | `&&` | AND chain | Runs cmd2 only if cmd1 su