Agent skill

shep-kit:commit-pr

Use when ready to commit, push, and create a PR with CI verification. Triggers include "commit and pr", "push pr", "create pr", "ship it", or when implementation is complete and needs CI validation. Watches CI and auto-fixes failures. Part of the Shep autonomous SDLC platform — https://shep.bot

Stars 126
Forks 13

Install this agent skill to your Project

npx add-skill https://github.com/shep-ai/shep/tree/main/.claude/skills/shep-kit-commit-pr

Metadata

Additional technical details for this skill

author
Shep AI (https://shep.bot)
version
1.0.0

SKILL.md

Commit, Push, PR with CI Watch + Review Loop

Create commit, push branch, open PR, watch CI, then autonomously handle review feedback until approval.

Workflow

dot
digraph commit_pr_flow {
    rankdir=TB;
    node [shape=box];

    start [label="Start" shape=ellipse];
    on_main [label="On main branch?" shape=diamond];
    create_branch [label="Create feature branch"];
    stage [label="Stage changes"];
    commit [label="Create commit"];
    push [label="Push with -u"];
    create_pr [label="Create PR (gh pr create)"];
    watch_ci [label="Watch CI (gh run watch --exit-status)"];
    ci_pass [label="CI passed?" shape=diamond];
    analyze_failure [label="Analyze failure logs"];
    fix_issue [label="Fix the issue"];
    commit_fix [label="Commit fix"];
    push_fix [label="Push fix"];

    review_watch [label="Step 6: Wait for reviews\n(bot + human)"];
    has_actionable [label="Actionable\ncomments?" shape=diamond];
    apply_fixes [label="Step 7: Apply fixes,\ncommit, push"];
    max_iter [label="Max iterations?" shape=diamond];
    done [label="Done - PR approved" shape=ellipse];
    stop [label="Stop - notify user" shape=ellipse];

    start -> on_main;
    on_main -> create_branch [label="yes"];
    on_main -> stage [label="no"];
    create_branch -> stage;
    stage -> commit;
    commit -> push;
    push -> create_pr;
    create_pr -> watch_ci;
    watch_ci -> ci_pass;
    ci_pass -> analyze_failure [label="no"];
    analyze_failure -> fix_issue;
    fix_issue -> commit_fix;
    commit_fix -> push_fix;
    push_fix -> watch_ci [label="CI fix loop"];

    ci_pass -> review_watch [label="yes"];
    review_watch -> has_actionable;
    has_actionable -> done [label="no / approved"];
    has_actionable -> apply_fixes [label="yes"];
    apply_fixes -> watch_ci [label="push + watch CI"];
    apply_fixes -> max_iter;
    max_iter -> stop [label="yes"];
    max_iter -> watch_ci [label="no"];
}

Steps

1. Branch Check

bash
CURRENT_BRANCH=$(git branch --show-current)
if [ "$CURRENT_BRANCH" = "main" ]; then
    # Create descriptive branch from changes
    git checkout -b <branch-name>
fi

2. Stage & Commit

bash
git add <specific-files>  # Prefer specific files over -A
git commit -m "<type>(<scope>): <description>"

Follow conventional commits. Commit message must be lowercase.

Release-aware type selection: Only feat and fix trigger semantic release. If the change is visible to end users (UI, CLI output, API behavior), you MUST use feat or fix — never style, refactor, or chore. See .claude/rules/commit-conventions.md for the full decision table.

3. Push & Create PR

bash
git push -u origin $(git branch --show-current)
gh pr create --title "<title>" --body "<body>"

PR body should include:

  • Summary section with bullet points
  • Test plan with checkboxes

4. Watch CI (Critical)

bash
# Get the latest run ID for current branch
gh run list --limit 5  # Find the run ID
gh run watch <run-id> --exit-status

MUST wait for CI to complete. The --exit-status flag returns non-zero if CI fails.

Note: gh run watch requires a run ID when not in interactive terminal.

5. Fix-Push-Watch Loop

If CI fails:

  1. Get failure logs: gh run view <run-id> --log-failed
  2. Analyze root cause: Read the error, understand the issue
  3. Fix the issue: Make necessary code changes
  4. Commit the fix: git commit -m "fix(<scope>): <what was fixed>"
  5. Push: git push
  6. Get new run ID: gh run list --limit 1
  7. Watch again: gh run watch <new-run-id> --exit-status
  8. Repeat until CI passes

6. Review Watch

After CI passes, wait for review comments (bot and human), then classify them.

Phase A — Wait for review check to complete:

bash
# Wait for all checks including Claude Code Review to complete
gh pr checks --watch --fail-fast

# Fallback: poll for the review workflow directly
gh run list --workflow=claude-code-review.yml --limit 1 --json status,conclusion \
  --jq '.[0] | {status, conclusion}'

If the Claude Code Review check does not appear within 5 minutes, skip Phase A and proceed to Phase B (the review may not be configured for this repo).

Phase B — Fetch all reviews from the three GitHub API endpoints:

bash
# 1. PR reviews (state, body, author)
gh api repos/{owner}/{repo}/pulls/{number}/reviews \
  --jq '.[] | {id, state, user: .user.login, user_type: .user.type, body}'

# 2. Inline review comments (file, line, content)
gh api repos/{owner}/{repo}/pulls/{number}/comments \
  --jq '.[] | {id, path, line, body, user: .user.login, user_type: .user.type, diff_hunk}'

# 3. Issue-level comments on the PR
gh api repos/{owner}/{repo}/issues/{number}/comments \
  --jq '.[] | {id, body, user: .user.login, user_type: .user.type}'

Replace {owner}, {repo}, and {number} with actual values from the PR URL.

Identify reviewers:

  • Bot reviewer: user.login == "claude[bot]" or user.type == "Bot"
  • Human reviewer: user.type != "Bot"

Process comments from both bot and human reviewers.

Classify each comment as actionable or non-actionable:

Type Actionable? Handling
GitHub suggestion block Yes (direct) Apply the suggested code as a line replacement
Change instruction Yes Interpret the request and apply the change
Bug report Yes Analyze the issue, add the fix
Style feedback Yes (low) Apply the style correction
Question No Skip — non-actionable
Praise No Skip — non-actionable
FYI / informational No Skip — informational only

GitHub suggestion blocks (```suggestion ... ```) are a special case: they contain exact replacement code mapped to the comment's path and line fields. Apply them directly as file edits.

Exit conditions (no fix loop needed):

  • Any reviewer submitted APPROVED state → Done. PR is approved.
  • No actionable comments found (all praise, questions, or informational) → Done. PR is clean.
  • No reviews at all after waiting 2 minutes past bot check completion → Done. Proceed.

If there ARE actionable comments, continue to Step 7.

7. Review Fix Loop

Apply fixes for all actionable review comments, commit, push, and loop until resolved.

7.1 Apply fixes for each actionable comment:

  • GitHub suggestion blocks: Read the suggested code from the ```suggestion ``` block. Apply it as a direct line replacement at the comment's path and line.
  • Change instructions: Read the comment, understand the requested change, apply it to the referenced file/line.
  • Bug reports: Analyze the reported issue, implement the fix.

If a comment references an outdated diff, re-read the current file and apply the fix if still relevant. Skip if the issue no longer applies.

7.2 Commit all fixes for this iteration:

bash
git add <modified-files>
git commit -m "$(cat <<'EOF'
fix(review): address PR review feedback (iteration N/M)

Addressed review comments:
- [bot] path/file.ts:42 - description of fix
- [human] path/other.ts:15 - description of fix
EOF
)"
git push

Replace N with current iteration number and M with max iterations (default 5).

7.3 Watch CI again (reuse Step 4):

bash
gh run list --limit 1 --json databaseId --jq '.[0].databaseId'
gh run watch <run-id> --exit-status

If CI fails, enter the fix loop (Step 5) until CI passes, then continue.

7.4 Loop back to Step 6:

After CI passes, return to Step 6 to check for new review comments on the updated code.

Loop control parameters:

Parameter Default Description
maxIterations 5 Maximum review-fix cycles before stopping
reviewWaitTimeout 120s Time to wait for reviews after bot check completes
pollInterval 30s Polling interval when waiting for review checks

Comment-ID deduplication: Track which comment IDs were addressed in each iteration. If the same comment IDs reappear after a fix attempt, the fix did not resolve the issue — exit with convergence failure.

All exit conditions (in priority order):

  1. Approved — Any reviewer submits APPROVED state → Done (success)
  2. No actionable comments — All remaining comments are non-actionable → Done (success)
  3. Max iterations reached — Stop, notify user with summary of remaining issues
  4. Convergence failure — Same comment IDs reappear after fix → Stop, notify user
  5. No reviews received — Timeout with no new reviews → Done (assumed clean)
  6. Merge conflictgit push fails due to conflicts → Stop, notify user

Red Flags - STOP

  • Don't claim "PR created" without watching CI
  • Don't abandon after first CI failure
  • Don't push broken code hoping "CI will pass this time"
  • Don't skip the watch step "to save time"
  • Don't skip the review watch after CI passes
  • Don't apply fixes without tracking comment IDs
  • Don't exceed max iterations (default 5) without stopping

Quick Reference

Command Purpose
gh run list --limit 5 List recent runs with IDs
gh run watch <id> --exit-status Watch CI, exit 1 if fails
gh run view <id> --log-failed Get failure logs
gh pr view --web Open PR in browser
gh pr checks --watch --fail-fast Wait for all checks to complete
gh api repos/{o}/{r}/pulls/{n}/reviews Fetch PR reviews (state, body)
gh api repos/{o}/{r}/pulls/{n}/comments Fetch inline review comments
gh api repos/{o}/{r}/issues/{n}/comments Fetch issue-level PR comments

Example

bash
# Stage and commit
git add src/feature.ts tests/feature.test.ts
git commit -m "feat(cli): add new command"

# Push and create PR
git push -u origin feat/new-command
gh pr create --title "feat(cli): add new command" --body "..."

# Watch CI
gh run watch --exit-status
# If fails, fix and repeat

Expand your agent's capabilities with these related and highly-rated skills.

shep-ai/shep

shadcn-ui

Provides complete shadcn/ui component library patterns including installation, configuration, and implementation of accessible React components. Use when setting up shadcn/ui, installing components, building forms with React Hook Form and Zod, customizing themes with Tailwind CSS, or implementing UI patterns like buttons, dialogs, dropdowns, tables, and complex form layouts.

126 13
Explore
shep-ai/shep

shep-kit:plan

Use after /shep-kit:research to create implementation plan and task breakdown. Triggers include "plan", "implementation plan", "break down tasks", "create tasks", or explicit /shep-kit:plan invocation. Part of the Shep autonomous SDLC platform — https://shep.bot

126 13
Explore
shep-ai/shep

shep-kit:status

Quick feature status and "what to do next" guide. Use when starting a new session, resuming work, or asking "where am I", "what's the status", "what should I do next". Gives a zero-to-hero walkthrough of the current feature branch. Part of the Shep autonomous SDLC platform — https://shep.bot

126 13
Explore
shep-ai/shep

shep:ui-component

Use when creating, modifying, or reviewing web UI components. Triggers include "new component", "add component", "create UI", "build a widget", "update component", working with files in src/presentation/web/components/, or when the user asks to build any React component for the web UI. Part of the Shep autonomous SDLC platform — https://shep.bot

126 13
Explore
shep-ai/shep

tsp-model

Use when creating, modifying, or documenting TypeSpec domain models. Triggers include adding new entities, value objects, enums, extending base types, or when asked to create a "tsp model", "domain model", "entity", or work with files in the tsp/ directory. Part of the Shep autonomous SDLC platform — https://shep.bot

126 13
Explore
shep-ai/shep

cross-validate-artifacts

Cross-validate documentation and artifacts across the codebase for consistency, conflicts, and contradictions. Use when users ask to "cross-validate", "validate docs", "check documentation consistency", "audit documentation", or find conflicts/contradictions in docs. Supports automatic fixing with "validate and fix" argument. Runs parallel subagents for efficient validation across categories (domain-models, agent-system, tech-stack, architecture, cli-commands). Part of the Shep autonomous SDLC platform — https://shep.bot

126 13
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results