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…
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.
/spec-kitty-git-workflowContext 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",
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).
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.
---
**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 |
---
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
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`.
When a WP moves to `doing` or `for_review`, Python uses the **safe-commit pattern** to commit only the WP frontmatter file:
**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
`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.
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.
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.
---
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.
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.
Legacy alias for resolver-backed profile loading. Use the canonical spk-doctrine-profile-load skill for identity, boundaries, and governance. Triggers: "act as…
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…
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…
Run charter interview, generation, context, and sync workflows for project governance in Spec Kitty 3.x. Access doctrine artifacts programmatically via…
Curate and apply canonical terminology across Spec Kitty missions. Triggers: "update the glossary", "use canonical terms", "check terminology", "add a term",…
Orchestrate the implement-review loop for Spec Kitty work packages using any configured agent. Covers agent dispatch, state transitions, rejection cycles,…