mcpField
C
commit-push-pr-workflow

commit-push-pr-workflow

github.com/yiyousiow000814Development047 installsUpdated 15w ago
Repository

About commit-push-pr-workflow

A repository-specific skill for managing changes from feature branch creation through commit, push, and pull request. It documents commit and PR conventions, verification checks, and several PR creation methods, with guidance for Windows PowerShell.

Key features

  1. 01Feature branch workflow
  2. 02Commit message conventions
  3. 03Pre-commit and pre-push checks
  4. 04Push approval checklist
  5. 05Draft PR by default
  6. 06PowerShell and API instructions

Use cases

  1. 01Prepare a repository change on a feature branch
  2. 02Record checks and format a commit message
  3. 03Create a draft PR using an available method

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/yiyousiow000814/xauusd-calendar-agent --skill commit-push-pr-workflow

After installing, type/commit-push-pr-workflowin Claude Code to confirm it loaded.

Details

From the project README

Commit, Push & PR Workflow

Applies to this repo's conventions:

  • Do not commit directly to main; use a feature branch and a PR.
  • PR/issue titles: English. PR bodies/comments: Simplified Chinese by default (unless the request starts with [EN]).
  • Avoid GitHub CLI --body with escaped newlines; prefer --body-file or stdin to prevent literal \\n.

This skill is written to work well on Windows (PowerShell 5.1+). Bash examples are optional.

Branch

  • Create a feature branch from main before making changes:
    • git fetch origin --prune
    • git switch main
    • git pull --ff-only
    • git switch -c docs/example-change

Commit

  • Confirm required checks have run for the current change scope before committing (record the exact commands).
  • Stage intended files only (prefer git add -p).
  • Write commit messages using a file (avoid multi--m formatting pitfalls).
  • Commit title: prefix: subject or prefix(scope): subject, English only, ideally <= 50 chars (hard wrap <= 72), no trailing period.
  • Include a body for non-trivial changes: blank line after title, wrap at 72 columns, include risk/verification notes.
Template (PowerShell, UTF-8 without BOM)
$msg = @'
fix(scope): concise subject

What changed, why, how (if relevant). Wrap at 72 columns.
Risks/side effects if any.
'@

$path = Join-Path $env:TEMP 'commit_msg.txt'
[System.IO.File]::WriteAllText($path, $msg, [System.Text.UTF8Encoding]::new($false))
git commit -F $path
Remove-Item -Force $path
Template (Bash, optional)
cat <<'EOF' > /tmp/commit_msg.txt
fix(scope): concise subject

What changed, why, how (if relevant). Wrap at 72 columns.
Risks/side effects if any.
EOF

git commit -F /tmp/commit_msg.txt
rm -f /tmp/commit_msg.txt

Push

  • Push only after checks pass.
  • Prefer git push -u origin <branch> for a new branch.
  • Avoid force-push.
    • If history rewrite is required (e.g., credential leak removal), confirm explicitly and expect branch rules (e.g., default-branch non-fast-forward) to block force-push unless temporarily adjusted.
    • If git-filter-repo was used: it may remove origin automatically; re-add it before pushing.

Pre-push checklist

  • Checks executed (exact commands recorded).
  • Commit title/body comply with repo rules.
  • User explicitly approved the push (especially for --force).

PR

  • Default to a draft PR.
Option A: GitHub CLI (gh)
gh --version
gh auth status

@'
Summary:
- ...

Verification:
- ...
'@ | gh pr create --draft --base main --title "docs: ..." --body-file -
Option B: Browser (no extra tools)
  • Push the branch, then open:
    • https://github.com/<owner>/<repo>/pull/new/<branch>
Option C: GitHub API (PowerShell, encoding-safe)
  • Prefer using an env var token (do not echo it in logs):
    • $env:GITHUB_TOKEN = '...'
$headers = @{
  Authorization = "token $env:GITHUB_TOKEN"
  'User-Agent' = 'codex-cli'
  Accept = 'application/vnd.github+json'
}

$payload = @{
  title = 'docs: ...'
  head  = '<branch>'
  base  = 'main'
  body  = @"
Summary:
- ...

Verification:
- ...
"@
  draft = $true
} | ConvertTo-Json

$bytes = [System.Text.Encoding]::UTF8.GetBytes($payload)
Invoke-RestMethod -Method Post `
  -Uri 'https://api.github.com/repos/<owner>/<repo>/pulls' `
  -Headers $headers `
  -ContentType 'application/json; charset=utf-8' `
  -Body $bytes
Option D: GitHub API via git credential (PowerShell, no env token)
  • If gh is not installed and you do not have GITHUB_TOKEN set, you can reuse the GitHub credential that git already has:
$cred = "protocol=https`nhost=github.com`n`n" | git credential fill
$token = (($cred | Select-String -Pattern '^password=').Line).Substring(9)

$headers = @{
  Authorization = "token $token"
  'User-Agent'  = 'codex-cli'
  Accept        = 'application/vnd.github+json'
}

$payloadObj = @{
  title = 'docs: ...'
  head  = '<branch>'
  base  = 'main'
  body  = "Summary:`n- ...`n"
  draft = $true
}

$json  = $payloadObj | ConvertTo-Json -Depth 5
$bytes = [System.Text.Encoding]::UTF8.GetBytes($json)

Invoke-RestMethod -Method Post `
  -Uri 'https://api.github.com/repos/<owner>/<repo>/pulls' `
  -Headers $headers `
  -ContentType 'application/json; charset=utf-8' `
  -Body $bytes

If editing PR bodies via GitHub API from PowerShell:

  • Serialize JSON as UTF-8 bytes (no BOM) to preserve Chinese text reliably.
  • Avoid printing tokens or Authorization headers.

Comments

Markdown supported