一键导入
git-workflow
Squad branching model: main-as-trunk workflow with short-lived issue branches
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Squad branching model: main-as-trunk workflow with short-lived issue branches
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Reproducible playbook for verifying azure-analyzer is fully clean before/after a release. Covers docs freshness, simulation/mock leakage, runtime correctness, CI green, and PSGallery publish parity. Every step writes its result to the decisions inbox so the run is auditable.
When a multi-track plan references unbuilt modules, decide extract vs consume-as-built
Write repository documentation in the house voice: direct, concrete, no AI-tells, only ✅ ❌ emojis
{what this skill teaches agents}
Rubber-duck Copilot PR/issue comments against the 3-model gate before changing any code
| name | git-workflow |
| description | Squad branching model: main-as-trunk workflow with short-lived issue branches |
| domain | version-control |
| confidence | high |
| source | team-decision |
Squad uses a main-as-trunk model. All feature work branches from main and PRs target main. There is no long-lived dev integration branch.
| Branch | Purpose | Publishes |
|---|---|---|
main | Trunk - all feature work merges here via PR | npm publish on tag |
squad/{issue}-{slug} | Short-lived issue branches | (deleted after merge) |
hotfix/{slug} | Urgent fixes branched from main | (PR back to main) |
Issue branches MUST use: squad/{issue-number}-{kebab-case-slug}
Examples:
squad/195-fix-version-stamp-bugsquad/42-add-profile-apiAgent-prefixed names (e.g., iris/134-main-trunk-docs) are also acceptable when an agent owns the branch end-to-end.
Branch from main:
git checkout main
git pull origin main
git checkout -b squad/{issue-number}-{slug}
Mark issue in-progress:
gh issue edit {number} --add-label "status:in-progress"
Create draft PR targeting main:
gh pr create --base main --title "{description}" --body "Closes #{issue-number}
The `## Self-review` block is mandatory for every squad PR (policy gate, CI enforcement deferred). See `.copilot/copilot-instructions.md` → "Squad Pre-PR Self-Review" for the full contract.
Do the work. Make changes, write tests, commit with issue reference.
Push and mark ready:
git push -u origin squad/{issue-number}-{slug}
gh pr ready
After merge to main:
git checkout main
git pull origin main
git branch -d squad/{issue-number}-{slug}
git push origin --delete squad/{issue-number}-{slug}
When the coordinator routes multiple issues simultaneously (e.g., "fix bugs X, Y, and Z"), use git worktree to give each agent an isolated working directory. No filesystem collisions, no branch-switching overhead.
| Scenario | Strategy |
|---|---|
| Single issue | Standard workflow above — no worktree needed |
| 2+ simultaneous issues in same repo | Worktrees — one per issue |
| Work spanning multiple repos | Separate clones as siblings (see Multi-Repo below) |
From the main clone (must be on main or any branch):
# Ensure main is current
git fetch origin main
# Create a worktree per issue — siblings to the main clone
git worktree add ../squad-195 -b squad/195-fix-stamp-bug origin/main
git worktree add ../squad-193 -b squad/193-refactor-loader origin/main
Naming convention: ../{repo-name}-{issue-number} (e.g., ../squad-195, ../squad-pr-42).
Each worktree:
squad/{issue-number}-{slug} branch from main.git object store (disk-efficient)Each agent operates inside its worktree exactly like the single-issue workflow:
cd ../squad-195
# Work normally — commits, tests, pushes
git add -A && git commit -m "fix: stamp bug (#195)"
git push -u origin squad/195-fix-stamp-bug
# Create PR targeting main (include ## Self-review block in body, see PR template above)
gh pr create --base main --title "fix: stamp bug" --body "Closes #195
## Self-review
### Diff summary
- {bullet 1: what changed, 3 bullets max}
- {bullet 2}
- {bullet 3}
### Risks considered
- {risk 1}: {mitigation}
- Out of scope on purpose: {what was deliberately NOT touched}
### Testing
- Ran: {test command(s) and pass/fail counts}
- Added: {new tests, or 'none, doc-only'}
- Skipped: {tests that don't apply}, {reason or 'n/a'}
" --draft
All PRs target main independently. Agents never interfere with each other's filesystem.
The .squad/ directory exists in each worktree as a copy. This is safe because:
.gitattributes declares merge=union on append-only files (history.md, decisions.md, logs).squad/ files in a worktree — append onlyAfter a worktree's PR is merged to main:
# From the main clone
git worktree remove ../squad-195
git worktree prune # clean stale metadata
git branch -d squad/195-fix-stamp-bug
git push origin --delete squad/195-fix-stamp-bug
If a worktree was deleted manually (rm -rf), git worktree prune recovers the state.
When work spans multiple repositories (e.g., squad-cli changes need squad-sdk changes, or a user's app depends on squad):
Clone downstream repos as siblings to the main repo:
~/work/
squad-pr/ # main repo
squad-sdk/ # downstream dependency
user-app/ # consumer project
Each repo gets its own issue branch following its own naming convention. If the downstream repo also uses Squad conventions, use squad/{issue-number}-{slug}.
Closes #42
**Depends on:** squad-sdk PR #17 (squad-sdk changes required for this feature)
Before pushing, verify cross-repo changes work together:
# Node.js / npm
cd ../squad-sdk && npm link
cd ../squad-pr && npm link squad-sdk
# Go
# Use replace directive in go.mod:
# replace github.com/org/squad-sdk => ../squad-sdk
# Python
cd ../squad-sdk && pip install -e .
Important: Remove local links before committing. npm link and go replace are dev-only — CI must use published packages or PR-specific refs.
These compose naturally. You can have:
dev; branch from main, PR to main)main for normal feature worksquad/{number}-{slug} or {agent}/{number}-{slug})main (use PRs)Hotfixes follow the same model: branch from main as hotfix/{slug}, PR back to main. Tag and release once merged.