Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Squad branching model: dev-first workflow with insiders preview channel
.claude/skills/fritzandfriends-git-workflow/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 122% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 99% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 117% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 219% | 0% |
Squad 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-apibash git checkout dev git pull origin dev git checkout -b squad/{issue-number}-{slug}
bash gh issue edit {number} --add-label "status:in-progress"
bash gh pr create --base dev --title "{description}" --body "Closes #{issue-number}" --draft
bash git push -u origin squad/{issue-number}-{slug} gh pr ready
bash 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):
bash# 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/dev
Naming 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:
bashcd ../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 dev gh pr create --base dev --title "fix: stamp bug" --body "Closes #195" --draft
All 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:
bash# 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 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:
bash# 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 urgentOther measured skills in the registry, with their headline benchmark lift.