Files
github-spec-kit/extensions/git
Gabriel Henrique 4687c33b0f feat(scripts): optional single-segment branch prefix for gitflow (#2202)
* feat(scripts): optional single-segment branch prefix for gitflow

- Add spec_kit_effective_branch_name / Get-SpecKitEffectiveBranchName:
  when branch matches prefix/rest with exactly one slash, validate and
  resolve specs/ using only the rest (e.g. feat/001-my-feature).
- Wire into check_feature_branch, find_feature_dir_by_prefix (bash) and
  Test-FeatureBranch, Find-FeatureDirByPrefix + Get-FeaturePathsEnv (PS).
- Align git extension git-common with core validation; remove unused
  get_feature_dir / Get-FeatureDir helpers.
- Extend tests in test_timestamp_branches.py and test_git_extension.py.

Made-with: Cursor

* Update scripts/powershell/common.ps1

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix(ps): align feature-dir resolution errors with bash (no throw under Stop)

Find-FeatureDirByPrefix: on ambiguous prefix matches, write errors to stderr
and return $null instead of throwing, matching find_feature_dir_by_prefix.

Get-FeaturePathsEnv: narrow try/catch to ConvertFrom-Json only; add
Get-FeatureDirFromBranchPrefixOrExit to mirror bash get_feature_paths
(stderr + exit 1) when prefix lookup fails, avoiding unhandled terminating
errors under $ErrorActionPreference = 'Stop' in check-prerequisites,
setup-plan, and update-agent-context.

Made-with: Cursor

* Update tests/test_timestamp_branches.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update extensions/git/scripts/powershell/git-common.ps1

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update scripts/powershell/common.ps1

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-13 18:11:17 -05:00
..

Git Branching Workflow Extension

Git repository initialization, feature branch creation, numbering (sequential/timestamp), validation, remote detection, and auto-commit for Spec Kit.

Overview

This extension provides Git operations as an optional, self-contained module. It manages:

  • Repository initialization with configurable commit messages
  • Feature branch creation with sequential (001-feature-name) or timestamp (20260319-143022-feature-name) numbering
  • Branch validation to ensure branches follow naming conventions
  • Git remote detection for GitHub integration (e.g., issue creation)
  • Auto-commit after core commands (configurable per-command with custom messages)

Commands

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)

Hooks

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

Configuration is stored in .specify/extensions/git/git-config.yml:

# Branch numbering strategy: "sequential" or "timestamp"
branch_numbering: sequential

# 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"

Installation

# Install the bundled git extension (no network required)
specify extension add git

Disabling

# Disable the git extension (spec creation continues without branching)
specify extension disable git

# Re-enable it
specify extension enable git

Graceful Degradation

When Git is not installed or the directory is not a Git repository:

  • Spec directories are still created under specs/
  • Branch creation is skipped with a warning
  • Branch validation is skipped with a warning
  • Remote detection returns empty results

Scripts

The extension bundles cross-platform scripts:

  • scripts/bash/create-new-feature.sh — Bash implementation
  • scripts/bash/git-common.sh — Shared Git utilities (Bash)
  • scripts/powershell/create-new-feature.ps1 — PowerShell implementation
  • scripts/powershell/git-common.ps1 — Shared Git utilities (PowerShell)