Squad branching model: dev-first workflow with insiders preview channel
56
65%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.copilot/skills/git-workflow/SKILL.mdSquad uses a three-branch model. All feature work starts from dev, not main.
| Branch | Purpose | Publishes |
|---|---|---|
main | Released, tagged, in-npm code only | npm publish on tag |
dev | Integration branch — all feature work lands here | npm publish --tag preview on merge |
insiders | Early-access channel — synced from dev | npm publish --tag insiders on sync |
Issue branches MUST use: squad/{issue-number}-{kebab-case-slug}
Examples:
squad/195-fix-version-stamp-bugsquad/42-add-profile-apiBranch from dev:
git checkout dev
git pull origin dev
git checkout -b squad/{issue-number}-{slug}Mark issue in-progress:
gh issue edit {number} --add-label "status:in-progress"Create draft PR targeting dev:
gh pr create --base dev --title "{description}" --body "Closes #{issue-number}" --draftDo the work. Make changes, write tests, commit with issue reference.
Push and mark ready:
git push -u origin squad/{issue-number}-{slug}
gh pr readyAfter merge to dev:
git checkout dev
git pull origin dev
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 dev or any branch):
# Ensure dev is current
git fetch origin dev
# Create a worktree per issue — siblings to the main clone
git worktree add ../squad-195 -b squad/195-fix-stamp-bug origin/dev
git worktree add ../squad-193 -b squad/193-refactor-loader origin/devNaming convention: ../{repo-name}-{issue-number} (e.g., ../squad-195, ../squad-pr-42).
Each worktree:
squad/{issue-number}-{slug} branch from dev.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
# ⚠️ NEVER use `git add .`, `git add -A`, or other broad staging commands
git add -- {specific files you modified} && git commit -m "fix: stamp bug (#195)"
git push -u origin squad/195-fix-stamp-bug
# Create PR targeting dev
gh pr create --base dev --title "fix: stamp bug" --body "Closes #195" --draftAll PRs target dev 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 dev:
# 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-bugIf 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 projectEach 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:
hotfix/{slug}, PR to dev, cherry-pick to main if urgente23dd92
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.