# Commit Push Pr

> Validate code, commit, push, and create PR if needed

- Skill: `majiayu000/commit-push-pr` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/commit-push-pr`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/commit-push-pr/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/commit-push-pr

---


# Validated Commit, Push, and PR

This skill ensures code quality, commits, pushes, and creates a PR if one doesn't exist.

## Process

### Step 1: Run Formatting Check

```bash
cd backend && cargo fmt --check
```

If this fails, run `cargo fmt` to auto-fix, then re-check.

### Step 2: Run Clippy Lints

```bash
cd backend && cargo clippy --workspace --all-targets --all-features -- -D warnings
```

If clippy fails, fix the issues before proceeding. Do NOT commit code with clippy warnings.

### Step 3: Run Tests

```bash
cd backend && cargo test --workspace
```

If tests fail, fix the failing tests before proceeding. Do NOT commit code with failing tests.

### Step 4: Check for Changes

```bash
git status
```

Review what will be committed. If there are no changes to commit, skip to Step 8 (PR creation).

### Step 5: Stage Changes

```bash
git add -A
```

### Step 6: Create Commit

Ask the user for a commit message, or generate one based on the changes.

**IMPORTANT**: Never include:
- "Generated with Claude Code"
- "Co-Authored-By: Claude"
- Any AI/Claude attribution

### Step 7: Push to Remote

```bash
git push origin HEAD
```

If push fails due to upstream changes:
```bash
git pull --rebase origin HEAD && git push origin HEAD
```

### Step 8: Check for Existing PR

```bash
gh pr list --head $(git branch --show-current) --state open
```

If a PR already exists for this branch, inform the user and provide the PR URL. Done.

### Step 9: Create PR (if none exists)

Get the current branch and base branch:
```bash
CURRENT_BRANCH=$(git branch --show-current)
```

Create the PR:
```bash
gh pr create --title "PR title here" --body "$(cat <<'EOF'
## Summary
- Brief description of changes

## Test plan
- [ ] Tests pass
- [ ] Lints pass

EOF
)"
```

**PR Title**: Generate from the commit message or ask user.

**PR Body**: Include:
- Summary of changes (2-3 bullet points)
- Test plan checklist

Do NOT include "Generated with Claude Code" or similar.

### Step 10: Report Success

Provide the PR URL to the user.

## Failure Handling

If ANY step fails (fmt, clippy, or tests):
1. Stop immediately
2. Report the failure to the user
3. Do NOT proceed to commit
4. Help fix the issues if requested

## Quick Reference

```bash
# Full validation
cd backend && cargo fmt --check && cargo clippy --workspace --all-targets --all-features -- -D warnings && cargo test --workspace

# Check for existing PR
gh pr list --head $(git branch --show-current) --state open

# Create PR
gh pr create --title "Title" --body "Body"
```

