Configuration
Set in.planning/config.json:
Branching Strategies
Controls when and how GSD creates branches:
none— Commit directly to current branch (default)phase— Create branch per phasemilestone— Create branch for entire milestone
Strategy: None (Default)
Behavior:- All commits go to current branch
- No automatic branch creation
- Simple, straightforward workflow
- Solo development
- Trunk-based development
- Simple projects
- When you manage branches manually
Strategy: Phase
Behavior:- Creates new branch at start of each
execute-phase - Branch name from
phase_branch_template - Offers merge back to base branch at phase completion
- Next phase branches from base (not previous phase)
- Code review per phase
- Granular rollback
- Testing phases independently
- Team workflows
- Phase execution starts
- Create branch from current (base)
- Execute all plans, commit to branch
- Offer merge to base:
- Squash merge (recommended) — Single commit per phase
- Merge with history — Preserve individual task commits
- Next phase branches from base, not previous phase branch
Strategy: Milestone
Behavior:- Creates branch at first
execute-phasein milestone - All phases commit to same milestone branch
- Offers merge at
complete-milestone - Clean release branch workflow
- Release branches
- PR per version/milestone
- Feature branches
- When phases are tightly coupled
- First phase execution in milestone
- Create milestone branch from current (base)
- All subsequent phases commit to milestone branch
- At milestone completion, offer merge to base
- New milestone creates new branch
Branch Name Templates
Phase Branch Template
Template for phase branch names.
{phase}— Zero-padded phase number (e.g., “01”, “03”, “12”){slug}— Lowercase hyphenated phase name
| Template | Phase 3: “User Authentication” | Result |
|---|---|---|
gsd/phase-{phase}-{slug} | Phase 3 | gsd/phase-03-user-authentication |
feature/{phase}-{slug} | Phase 3 | feature/03-user-authentication |
phase-{phase} | Phase 3 | phase-03 |
{slug}-phase-{phase} | Phase 3 | user-authentication-phase-03 |
Milestone Branch Template
Template for milestone branch names.
{milestone}— Version identifier (e.g., “v1.0”, “v2.1”){slug}— Lowercase hyphenated milestone name
| Template | v1.0: “MVP” | Result |
|---|---|---|
gsd/{milestone}-{slug} | v1.0 MVP | gsd/v1.0-mvp |
release/{milestone} | v1.0 MVP | release/v1.0 |
{milestone}/{slug} | v1.0 MVP | v1.0/mvp |
milestone-{slug} | v1.0 MVP | milestone-mvp |
Custom Templates
Edit.planning/config.json directly:
Commit Behavior
GSD commits automatically during execution:Commit Frequency
Every task gets its own commit immediately after completion. Example phase execution:Commit Message Format
feat— New feature implementationfix— Bug fixrefactor— Code refactoringtest— Test additionsdocs— Documentation (plan summaries)chore— Maintenance tasks
Planning Docs in Git
Track
.planning/ directory in git.When Enabled (Default)
Commits include:PROJECT.md,REQUIREMENTS.md,ROADMAP.md- Phase plans (
XX-YY-PLAN.md) - Research findings (
XX-RESEARCH.md) - Execution summaries (
XX-YY-SUMMARY.md) - Verification results (
XX-VERIFICATION.md) - Context and validation docs
- Full project history
- Context for future work
- Audit trail
- Team visibility
When Disabled
Set when:- Working on sensitive/private projects
- Don’t want planning artifacts in version control
.planning/is in.gitignore
- Planning docs stay local
- Only code/tests committed
.planning/in.gitignoreauto-disables this
Add
--no-ignore to searches to include .planning/..planning/is gitignored- Need to search planning docs for context
Merge Strategies
Squash Merge (Recommended)
Combines all task commits into single phase/milestone commit. Benefits:- Clean, linear history
- One commit per phase
- Easy to review
- Simple to revert
Merge with History
Preserves individual task commits. Benefits:- Full granular history
- Git bisect to exact task
- Detailed audit trail
- Noisy commit history
- Many commits per phase
Git Workflow Examples
Solo Developer (Default)
Team with Phase Reviews
Release Branch Workflow
Atomic Commits
Every task creates an atomic commit: Benefits:- Git bisect — Find exact failing task
- Surgical reverts — Undo specific task
- Clear history — See what changed when
- AI context — Claude reads commit history in future sessions
Safety Features
Always Confirm Destructive
Force pushes, hard resets always require confirmation regardless of mode.Pre-commit Hooks
GSD respects your pre-commit hooks:- Runs hooks before each commit
- If hook fails, fixes issues and retries
- Never uses
--no-verify
Merge Conflicts
If merge conflict detected:- GSD stops execution
- Provides conflict details
- Offers manual resolution or abort
Related References
- Configuration Schema — Full config.json reference
- Commands — Git-related commands
- Workflows — Phase execution and branching flows