Git workflow
Team git conventions and PR process. Invoked when Claude needs to apply branching, commit, or PR rules. Triggers include "git workflow", "branch strategy", "how do we do PRs", "commit conventions", "open a PR", "merge strategy", "worktree", "conventional commits", "should this be one PR or many", "squash merge", "branch naming", "what type of commit", "release workflow".From its SKILL.md
npx -y skills add bRRRITSCOLD/compainy --skill git-workflowAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.7 KB, as published. Nobody here has run it
Git Workflow
Practical playbook for branching, committing, and merging on this team. Covers the decisions you hit every day — not a git tutorial.
Branching
One branch per unit of work, cut from main. Always start from a fresh main:
git checkout main && git pull
Naming: issue-<n>-<slug> (preferred when an issue exists) or <type>/<slug>.
Isolation: use a git worktree so the main checkout stays clean. Defer to superpowers:using-git-worktrees for mechanics — do not restate them here.
Concurrency safety (non-negotiable when more than one agent is active)
Parallel agents that share one working tree race and clobber each other, and a careless worktree teardown can wipe a sibling's uncommitted work. These rules prevent that:
- One agent per branch/worktree per issue — ever. Never let two agents work the same issue or the same branch concurrently. Claim the issue (e.g. read labels, then
gh issue edit <n> --add-label in-progressif not already claimed) before starting; another agent that sees the claim stops. The label is a best-effort advisory claim, not an atomic lock — the real cross-run guard is "one orchestration per repo" below. - Each parallel agent gets its OWN worktree. If work can't be isolated per agent, run it serially instead. (In the Workflow tool, dispatch mutating agents with
isolation: 'worktree'.) - Commit as soon as you have a working scaffold. Never hold a large uncommitted tree across long operations — a reset or a sibling's teardown can destroy uncommitted work permanently. Commit early, commit often; the branch is your safety net.
- Never
--force-remove or reset a worktree that has uncommitted or unpushed work. Before removing a worktree, verify it's safe:
Only thengit -C <worktree> status --porcelain # must be empty (nothing uncommitted) git -C <worktree> log --oneline @{u}.. # must be empty (nothing unpushed)git worktree remove <path>. Never--forcepast a dirty/ahead worktree to "clean up". - Only the creator removes its worktree, and only after its PR is merged or its branch is pushed. The dispatcher (main session) owns worktree lifecycle; specialist agents never remove a worktree they didn't create.
- Run one orchestration at a time. Do not launch two
/orchestrate(or/deliver) sessions against the same repo — in-memory dedup is per-run; concurrent runs double-dispatch and collide.
PR sizing — the key rule
One PR = one cohesive, small, revertible change.
Default to one PR per issue. Two exceptions:
- Group only tightly-related trivial issues into a single PR. The PR body must reference all of them:
Closes #a,Closes #b. Grouping is appropriate when issues are so small that separate PRs add more overhead than value. - Split a large issue into multiple PRs when it is too big to review in one sitting. A good split point is any seam where one PR can stand alone and be reverted independently.
Never let a branch run away. If the diff spans unrelated concerns, or you cannot hold the whole change in your head, stop and split. Prefer small, concise chunks — this is principles-dry-kiss applied to version control.
Conventional Commits
Every commit subject follows:
type(scope): summary
Types: feat, fix, docs, chore, refactor, test, ci, build, perf.
These are not cosmetic. The release.yml CI workflow parses the squash-merge subject to pick the semver bump:
| Subject form | Bump |
|---|---|
feat: or feat(…): | minor |
fix:, chore:, refactor:, etc. | patch |
type!: subject (e.g. feat!:), or BREAKING in the subject | major |
Rules:
- Imperative mood: "add X", not "adds X" or "added X".
- Subject ≤ ~72 characters.
- The release workflow parses only the squash-merge subject line (the PR title). To signal a major bump, put
!after the type in the PR title (feat!: …) or the wordBREAKINGin the title — aBREAKING CHANGE:footer in the body is not read by the currentrelease.yml. - Every commit ends with the footer:
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
PR flow
# create
gh pr create --title "type(scope): summary" --body "$(cat <<'EOF'
## Summary
- …
Closes #<n>
EOF
)"
# review + merge (squash)
gh pr merge <branch> --squash --delete-branch
# add --admin for solo auto-merge without required checks
After merging: remove the worktree and pull main before starting the next unit of work.
Before pushing
Run the local CI gate:
node scripts/ci/validate.mjs
This is the same check validate.yml runs on every PR. Fix failures before pushing.
Releases are automatic
Do not hand-edit plugin.json version. On merge to main, release.yml:
- Parses the squash-merge subject for bump type.
- Bumps
plugin.jsonviascripts/ci/bump-version.mjs. - Commits as
chore(release): vX.Y.Z [skip ci], tagsvX.Y.Z, cuts a GitHub Release.
Consumers update via /plugin marketplace update compainy → /plugin update compainy@compainy → /reload-plugins.
Cross-references
superpowers:using-git-worktrees— worktree creation and teardown mechanicshandoff— persist state between work chunks before switching branchesprinciples-dry-kiss— small cohesive changes = KISS applied to version control