name: cp description: Commit all current changes, push to a feature branch, and create a PR. Use when the user asks to commit, push, save progress, or ship changes. user_invocable: true
commit-and-push (PR workflow)
Commit all current changes, push to a feature branch, and open a pull request. All pre-push checks must pass before pushing.
Instructions
Run pre-push checks with auto-fix (quiet mode suppresses output on success):
tools/pre-push --fix -qIf this fails, fix the issues and re-run until it passes. Do NOT skip this step — it is the project's only gate against broken code.
Check for changes:
git status git diff --stat git log --oneline -5Stage all changes (including any fixes from step 1):
git add -AWrite a commit message following the project convention:
- Prefix with
synq:(lowercase) - Concise summary line describing the "why"
- For non-trivial changes, add a structured body: a short lead-in paragraph explaining the motivation, then a bullet list covering the specifics (e.g. one bullet per file / module / subsystem touched). This body also becomes the PR description in step 8, so invest in it once.
- Prefix with
Commit using a HEREDOC:
git commit -m "$(cat <<'EOF' synq: <summary> <optional body> EOF )"Create a feature branch if on main: If currently on
main, create and switch to a descriptive branch:git checkout -b <branch-name>Branch naming: use lowercase kebab-case describing the change (e.g.,
add-cte-column-validation,fix-fmt-trailing-comma). No prefixes needed.Push the branch:
git push -u origin HEADCreate a PR using
gh pr create. For single-commit PRs the body should be the commit body verbatim — the lead-in + bullets structure from step 4 is exactly the structure a PR wants. Don't rewrite it into a single paragraph, don't add section headings, don't restate the title. The shortcut:git log -1 --format=%b HEAD | gh pr create --title "<title>" --body-file -For multi-commit PRs, write the body in the same shape (short lead-in + bullets covering the important changes across commits). One-liners are fine only when the title and diff genuinely speak for themselves.
- Keep the title under 70 characters, prefixed with
synq:
- Keep the title under 70 characters, prefixed with
Report the PR URL to the user.