extensions/git/README.md
Git repository initialization, feature branch creation, numbering (sequential/timestamp), validation, remote detection, and auto-commit for Spec Kit.
This extension provides Git operations as an optional, self-contained module. It manages:
001-feature-name) or timestamp (20260319-143022-feature-name) numbering and optional templates for branch namespaces| Command | Description |
|---|---|
speckit.git.initialize | Initialize a Git repository with a configurable commit message |
speckit.git.feature | Create a feature branch with sequential or timestamp numbering |
speckit.git.validate | Validate current branch follows feature branch naming conventions |
speckit.git.remote | Detect Git remote URL for GitHub integration |
speckit.git.commit | Auto-commit changes (configurable per-command enable/disable and messages) |
| Event | Command | Optional | Description |
|---|---|---|---|
before_constitution | speckit.git.initialize | No | Init git repo before constitution |
before_specify | speckit.git.feature | No | Create feature branch before specification |
before_clarify | speckit.git.commit | Yes | Commit outstanding changes before clarification |
before_plan | speckit.git.commit | Yes | Commit outstanding changes before planning |
before_tasks | speckit.git.commit | Yes | Commit outstanding changes before task generation |
before_implement | speckit.git.commit | Yes | Commit outstanding changes before implementation |
before_checklist | speckit.git.commit | Yes | Commit outstanding changes before checklist |
before_analyze | speckit.git.commit | Yes | Commit outstanding changes before analysis |
before_taskstoissues | speckit.git.commit | Yes | Commit outstanding changes before issue sync |
after_constitution | speckit.git.commit | Yes | Auto-commit after constitution update |
after_specify | speckit.git.commit | Yes | Auto-commit after specification |
after_clarify | speckit.git.commit | Yes | Auto-commit after clarification |
after_plan | speckit.git.commit | Yes | Auto-commit after planning |
after_tasks | speckit.git.commit | Yes | Auto-commit after task generation |
after_implement | speckit.git.commit | Yes | Auto-commit after implementation |
after_checklist | speckit.git.commit | Yes | Auto-commit after checklist |
after_analyze | speckit.git.commit | Yes | Auto-commit after analysis |
after_taskstoissues | speckit.git.commit | Yes | Auto-commit after issue sync |
Configuration is stored in .specify/extensions/git/git-config.yml:
# Branch numbering strategy: "sequential" or "timestamp"
branch_numbering: sequential
# Optional branch name template. Leave empty for the default "{number}-{slug}".
# Supported tokens: {author}, {app}, {number}, {slug}; {slug} must not appear
# before {number}, and the final path segment must start with {number}-.
# Example for monorepos: "{author}/{app}/{number}-{slug}"
branch_template: ""
# Optional shorthand namespace. Leave empty to use branch_template/default behavior.
# Example: "features/{app}" expands to "features/{app}/{number}-{slug}"
branch_prefix: ""
# Custom commit message for git init
init_commit_message: "[Spec Kit] Initial commit"
# Auto-commit per command (all disabled by default)
# Example: enable auto-commit after specify
auto_commit:
default: false
after_specify:
enabled: true
message: "[Spec Kit] Add specification"
{author} is derived from Git config and sanitized for branch names. {app} is derived from the Spec Kit init directory name. Custom templates must not put {slug} before {number}, and must put {number}- at the start of the final path segment so generated names remain valid feature branches. For a monorepo project at apps/web/.specify/, a template such as {author}/{app}/{number}-{slug} produces branches like jdoe/web/008-guided-tour.
For simple namespace-only customization, branch_prefix is also accepted as a shorthand and expands to <branch_prefix>/{number}-{slug}.
# Install the bundled git extension (no network required)
specify extension add git
# Disable the git extension (spec creation continues without branching)
specify extension disable git
# Re-enable it
specify extension enable git
When Git is not installed or the directory is not a Git repository:
specs/The extension bundles cross-platform scripts:
scripts/bash/create-new-feature-branch.sh — Bash implementation (branch creation only)scripts/bash/git-common.sh — Shared Git utilities (Bash)scripts/powershell/create-new-feature-branch.ps1 — PowerShell implementation (branch creation only)scripts/powershell/git-common.ps1 — Shared Git utilities (PowerShell)