/spec-kitty-git-workflow
Understand how Spec Kitty manages git: what git operations Python handles automatically, what agents must do manually, worktree lifecycle, auto-commit behavior, merge execution, and the safe-commit pattern. Triggers: "how does spec-kitty use git", "worktree management",
$ npx -y skills add Priivacy-ai/spec-kitty --skill spec-kitty-git-workflow --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/spec-kitty-git-workflow
Context preview
The summary Claude sees to decide when to auto-load this skill.
Understand how Spec Kitty manages git: what git operations Python handles automatically, what agents must do manually, worktree lifecycle, auto-commit behavior, merge execution, and the safe-commit pattern. Triggers: "how does spec-kitty use git", "worktree management",
SKILL.md
spec-kitty-git-workflow.SKILL.mdname: spec-kitty-git-workflow
description: >-
Understand how Spec Kitty manages git: what git operations Python handles
automatically, what agents must do manually, worktree lifecycle, auto-commit
behavior, merge execution, and the safe-commit pattern.
Triggers: "how does spec-kitty use git", "worktree management", "auto-commit",
"who commits what", "git workflow", "merge workflow", "rebase WPs",
"worktree cleanup", "safe commit".
Does NOT handle: runtime loop advancement (use runtime-next),
setup or repair (use setup-doctor), mission selection (use mission-system).
spec-kitty-git-workflow
Understand the boundary between what spec-kitty's Python code does with git and what LLM agents are expected to do. This boundary is critical — agents that try to create worktrees manually or skip implementation commits will break the workflow.
---
The Core Boundary
**Python handles infrastructure git** — worktrees, lane commits, merges, cleanup. **Agents handle content git** — implementation commits, rebases, conflict resolution.
| Git Operation | Who Does It | When | |---|---|---| | `git worktree add` | Python | `spec-kitty implement WP##` | | `git commit` (planning artifacts) | Python | Before worktree creation | | `git commit` (lane transitions) | Python | WP moves through claimed/in_progress/for_review/in_review | | `git commit` (implementation code) | **Agent** | After writing code in worktree | | `git merge`/auto-rebase (stale lane sync) | Python or **Agent** | When stale checks classify the lane as recoverable | | `git merge` (lane → mission → target) | Python | `spec-kitty merge` | | `git push` | Python (opt-in) | `spec-kitty merge --push` only | | `git push` | **Agent** | Any other push scenario | | Conflict resolution | **Agent** | During rebase or manual merge | | `git worktree remove` | Python | After successful merge | | `git branch -d` (cleanup) | Python | After successful merge |
---
What Python Does Automatically
1. Worktree Creation
When you run `spec-kitty implement WP01`, Python:
git worktree add -b kitty/mission-042-mission-lane-a .worktrees/042-mission-lane-a kitty/mission-042-mission
It also records the lane workspace context in `.kittify/workspaces/<feature>-<lane>.json` so later commands resolve the same lane worktree deterministically.
The agent never creates worktrees. Always use `spec-kitty implement`.
For dependent WPs in the same execution lane:
spec-kitty implement WP02
This reuses the lane worktree instead of creating a second workspace:
# WP02 reuses .worktrees/042-mission-lane-a
2. Planning Artifact Auto-Commits
Before creating a worktree, Python checks if `kitty-specs/042-mission/` has uncommitted changes on the primary branch. If so, it commits through `BookkeepingTransaction` and `safe_commit`:
safe_commit(paths=["kitty-specs/042-mission/"], message="chore: Planning artifacts for 042-mission")
**Controlled by:** `auto_commit: true` in `.kittify/config.yaml` (default: true). Can be disabled per-command with `--no-auto-commit`.
3. Lane Transition Auto-Commits
When a WP moves to `doing` or `for_review`, Python uses the **safe-commit pattern** to commit only the WP frontmatter file:
- Moving to doing: `"chore: Start WP01 implementation [claude]"`
- Moving to for_review: `"chore: Start WP01 review [claude]"`
**The safe-commit pattern** prevents accidentally committing agent work-in-progress: 1. Stash current staging area 2. Stage only the target files (WP frontmatter, status artifacts) 3. Commit 4. Pop stash to restore previous staging
4. Status Event Log (No Auto-Commit)
`emit_status_transition()` appends to `status.events.jsonl`, updates `status.json`, and modifies WP frontmatter — but does **NOT** auto-commit these files. They accumulate as uncommitted changes until the next lane transition auto-commit or the agent commits them.
This is by design — status changes happen frequently and committing each one would create excessive git noise.
5. Merge Execution
Run `spec-kitty accept --mission 042-mission` before merge once every WP is approved. Acceptance is a readiness nudge and artifact check; merge still owns the final mission-close transition.
`spec-kitty merge --mission 042-mission` runs the full merge sequence:
Python creates a detached merge worktree from the target branch, merges lane branches into the mission branch, merges the mission ref using the selected strategy, advances the target branch ref to the detached result, then removes merged lane worktrees and branches.
Merge order follows the dependency graph (topological sort).
Supports 3 strategies: `squash` (default), `merge` (--no-ff), `rebase`.
`--push` is opt-in — without it, the merge is local only.
6. Pre-flight Validation (Read-Only)
Before merge, Python validates: 1. All expected WPs have worktrees 2. All worktrees are clean (`git status --porcelain`) 3. Target branch is not behind origin (`git rev-list --left-right --count`) 4. WPs in done lane with missing worktrees are skipped (already merged)
If any check fails, merge is blocked with specific error messages.
---
What Agents Must Do
1. Implementation Commits
All actual code work must be committed by the agent. Python creates the worktree but never commits code:
cd .worktrees/042-mission-lane-a
# ... write code, run tests ...
git add src/ tests/
git commit -m "feat(WP01): implement auth middleware"
**Validation:** When the agent tries to move WP to `for_review`, spec-kitty checks that the worktree has commits ahead of the base branch (`git rev-list --count <base>..HEAD`). If zero commits, the transition is rejected.
2. Refreshing a Stale Lane Workspace
If a lane branch has advanced while you were away:
cd .worktrees/042-mission-lane-a
spec-kitty implement WP## --mission 042-mission
Let the stale-check and auto-merge classifier decide whether the lane can be refreshed automatically f
Read more
name: spec-kitty-git-workflow description: >- Understand how Spec Kitty manages git: what git operations Python handles automatically, what agents must do manually, worktree lifecycle, auto-commit behavior, merge execution, and the safe-commit pattern. Triggers: "how does spec-kitty use git", "worktree management", "auto-commit", "who commits what", "git workflow", "merge workflow", "rebase WPs", "worktree cleanup", "safe commit". Does NOT handle: runtime loop advancement (use runtime-next), setup or repair (use setup-doctor), mission selection (use mission-system).
spec-kitty-git-workflow
Understand the boundary between what spec-kitty's Python code does with git and what LLM agents are expected to do. This boundary is critical — agents that try to create worktrees manually or skip implementation commits will break the workflow.
---
The Core Boundary
**Python handles infrastructure git** — worktrees, lane commits, merges, cleanup. **Agents handle content git** — implementation commits, rebases, conflict resolution.
| Git Operation | Who Does It | When | |---|---|---| | `git worktree add` | Python | `spec-kitty implement WP##` | | `git commit` (planning artifacts) | Python | Before worktree creation | | `git commit` (lane transitions) | Python | WP moves through claimed/in_progress/for_review/in_review | | `git commit` (implementation code) | **Agent** | After writing code in worktree | | `git merge`/auto-rebase (stale lane sync) | Python or **Agent** | When stale checks classify the lane as recoverable | | `git merge` (lane → mission → target) | Python | `spec-kitty merge` | | `git push` | Python (opt-in) | `spec-kitty merge --push` only | | `git push` | **Agent** | Any other push scenario | | Conflict resolution | **Agent** | During rebase or manual merge | | `git worktree remove` | Python | After successful merge | | `git branch -d` (cleanup) | Python | After successful merge |
---
What Python Does Automatically
1. Worktree Creation
When you run `spec-kitty implement WP01`, Python:
git worktree add -b kitty/mission-042-mission-lane-a .worktrees/042-mission-lane-a kitty/mission-042-mission
It also records the lane workspace context in `.kittify/workspaces/<feature>-<lane>.json` so later commands resolve the same lane worktree deterministically.
The agent never creates worktrees. Always use `spec-kitty implement`.
For dependent WPs in the same execution lane:
spec-kitty implement WP02
This reuses the lane worktree instead of creating a second workspace:
# WP02 reuses .worktrees/042-mission-lane-a
2. Planning Artifact Auto-Commits
Before creating a worktree, Python checks if `kitty-specs/042-mission/` has uncommitted changes on the primary branch. If so, it commits through `BookkeepingTransaction` and `safe_commit`:
safe_commit(paths=["kitty-specs/042-mission/"], message="chore: Planning artifacts for 042-mission")
**Controlled by:** `auto_commit: true` in `.kittify/config.yaml` (default: true). Can be disabled per-command with `--no-auto-commit`.
3. Lane Transition Auto-Commits
When a WP moves to `doing` or `for_review`, Python uses the **safe-commit pattern** to commit only the WP frontmatter file:
- Moving to doing: `"chore: Start WP01 implementation [claude]"`
- Moving to for_review: `"chore: Start WP01 review [claude]"`
**The safe-commit pattern** prevents accidentally committing agent work-in-progress: 1. Stash current staging area 2. Stage only the target files (WP frontmatter, status artifacts) 3. Commit 4. Pop stash to restore previous staging
4. Status Event Log (No Auto-Commit)
`emit_status_transition()` appends to `status.events.jsonl`, updates `status.json`, and modifies WP frontmatter — but does **NOT** auto-commit these files. They accumulate as uncommitted changes until the next lane transition auto-commit or the agent commits them.
This is by design — status changes happen frequently and committing each one would create excessive git noise.
5. Merge Execution
Run `spec-kitty accept --mission 042-mission` before merge once every WP is approved. Acceptance is a readiness nudge and artifact check; merge still owns the final mission-close transition.
`spec-kitty merge --mission 042-mission` runs the full merge sequence:
Python creates a detached merge worktree from the target branch, merges lane branches into the mission branch, merges the mission ref using the selected strategy, advances the target branch ref to the detached result, then removes merged lane worktrees and branches.
Merge order follows the dependency graph (topological sort).
Supports 3 strategies: `squash` (default), `merge` (--no-ff), `rebase`.
`--push` is opt-in — without it, the merge is local only.
6. Pre-flight Validation (Read-Only)
Before merge, Python validates: 1. All expected WPs have worktrees 2. All worktrees are clean (`git status --porcelain`) 3. Target branch is not behind origin (`git rev-list --left-right --count`) 4. WPs in done lane with missing worktrees are skipped (already merged)
If any check fails, merge is blocked with specific error messages.
---
What Agents Must Do
1. Implementation Commits
All actual code work must be committed by the agent. Python creates the worktree but never commits code:
cd .worktrees/042-mission-lane-a # ... write code, run tests ... git add src/ tests/ git commit -m "feat(WP01): implement auth middleware"
**Validation:** When the agent tries to move WP to `for_review`, spec-kitty checks that the worktree has commits ahead of the base branch (`git rev-list --count <base>..HEAD`). If zero commits, the transition is rejected.
2. Refreshing a Stale Lane Workspace
If a lane branch has advanced while you were away:
cd .worktrees/042-mission-lane-a spec-kitty implement WP## --mission 042-mission
Let the stale-check and auto-merge classifier decide whether the lane can be refreshed automatically f
Spec-Driven Development for serious software developers. Spec Coding with with Claude, Cursor, Gemini, Codex. Kanban dashboard, git worktrees, auto-merge and more.
Other skills on spec-kitty.
- /ad-hoc-profile-load
Legacy alias for resolver-backed profile loading. Use the canonical spk-doctrine-profile-load skill for identity, boundaries, and governance. Triggers: "act as the architect", "load the reviewer profile", "switch to researcher", "use the planner role", "adopt a profile".
Open skill - /adversarial-squad
Deploy a bounded, profile-loaded adversarial review squad at an SDD point-cut (post-spec, post-plan, post-tasks, pre-merge, or an ad-hoc decision) so independent doctrine lenses converge on findings one reviewer would miss. Triggers: "deploy a squad", "adversarial squad",
Open skill - /spec-kitty-bulk-edit-classification
Recognize when a mission is a bulk edit and drive the occurrence-classification guardrail on the user's behalf. Triggers: user says any variant of "rename X to Y", "change the terminology", "migrate all occurrences", "replace across the codebase", "the X feature is now the Y
Open skill - /spec-kitty-charter-doctrine
Run charter interview, generation, context, and sync workflows for project governance in Spec Kitty 3.x. Access doctrine artifacts programmatically via DoctrineService. Resolve agent profiles. Load action-scoped governance context iteratively, not all at once. Triggers:
Open skill - /spec-kitty-glossary-context
Curate and apply canonical terminology across Spec Kitty missions. Triggers: "update the glossary", "use canonical terms", "check terminology", "add a term", "fix term drift", "glossary conflicts", "resolve ambiguity", "review terminology consistency". Does NOT handle: runtime
Open skill - /spec-kitty-implement-review
Orchestrate the implement-review loop for Spec Kitty work packages using any configured agent. Covers agent dispatch, state transitions, rejection cycles, arbiter escalation, and dependency-aware sequencing across all 13 supported coding agents. Triggers: "implement and review
Open skill

