Git workflow
Skill viktorbezdek/skillstack/git-workflow/skills/git-workflow
Git workflow management — use when the user mentions git, conventional commits, commit quality, branch management, worktree operations, GitFlow, changelog generation, semantic versioning, release notes, backlog management, or issue tracking integration. NOT for CI/CD pipelines or pipeline YAML (use cicd-pipelines), NOT for non-git workflow orchestration (use skillstack-workflows or multi-agent-patterns), NOT for code review content or PR quality assessment (use code-review).From its SKILL.md
npx -y skills add viktorbezdek/skillstack --skill git-workflowAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 10 stars10 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
13.8 KB, ~3.3k tokens by cl100k_base, as published. Nobody here has run it
Git Workflow - Comprehensive Git Management Skill
Unified skill for commit management, branch workflows, worktree operations, and story backlog management.
When to Use / Not Use
Use when:
- Writing, validating, or reviewing commit messages for conventional commits compliance
- Grouping changed files into logical atomic commits
- Managing feature branches and worktrees with GitFlow conventions
- Generating changelogs from commit history
- Calculating next semantic version from commit types
- Managing a hierarchical story backlog linked to code changes
- Running
/commit,/validate,/changelog,/versioncommands
Do NOT use when:
- CI/CD pipeline configuration or deployment YAML -> use
cicd-pipelines - Non-git workflow orchestration -> use
skillstack-workflowsormulti-agent-patterns - Code review content (security, performance, design) -> use
code-review
Decision Tree
What Git workflow task do you need?
├── Write commits
│ ├── Single logical change -> /commit (auto-analyze staged diff)
│ ├── Multiple changed files, unclear grouping -> python scripts/group-files.py --analyze
│ ├── Validate message format -> /validate "feat(auth): add JWT refresh"
│ └── Amend/fix last commit -> /fix
├── Branch management
│ ├── New feature branch -> feature/{name}, use GitFlow conventions
│ ├── New fix branch -> fix/{name}
│ ├── Critical production fix -> hotfix/{name} from main
│ └── Need parallel work -> git worktree (scripts/create_worktree.sh)
├── Release workflow
│ ├── Generate changelog -> python scripts/changelog.py --version X.Y.Z
│ ├── Determine next version -> python scripts/version.py --verbose
│ │ ├── Has BREAKING CHANGE -> major (X.0.0)
│ │ ├── Has feat commits -> minor (0.X.0)
│ │ └── Only fix/other -> patch (0.0.X)
│ └── Clean up merged worktrees -> scripts/cleanup_worktrees.sh --merged
├── Story backlog
│ ├── Initialize tree -> "Initialize story tree"
│ ├── Generate stories -> "Generate stories for [epic-id]"
│ ├── View tree -> python scripts/tree-view.py --show-capacity
│ └── Update from commits -> "Update story tree"
├── Issue integration
│ ├── Sync issues -> python scripts/issue-tracker.py sync assigned
│ └── Suggest refs for staged changes -> python scripts/issue-tracker.py suggest-refs
└── Not a Git workflow question? -> See related skills
Part 1: Commit Management
Conventional Commits Format
<type>(<scope>): <subject>
<body>
<footer>
Types (from Angular convention):
| Type | Purpose |
|---|---|
feat | New feature |
fix | Bug fix |
docs | Documentation only |
style | Formatting, whitespace |
refactor | Code change without behavior change |
perf | Performance improvement |
test | Adding or correcting tests |
chore | Build/tooling changes |
ci | CI/CD changes |
build | Build system/dependencies |
revert | Reverts a previous commit |
Subject Rules:
- Imperative mood: "add feature" not "added feature"
- No period at end
- Lowercase
- Under 100 characters
Footer:
BREAKING CHANGE:- Breaking changesCloses #N/Fixes #N- Closes issue on mergeRefs #N- References issue without closingCo-authored-by:- Multiple authors
Commit Quality Standards
Good commit message:
feat(auth): add JWT token refresh mechanism
Implements automatic token refresh 5 minutes before expiration
to maintain seamless user sessions.
Closes #142
Commit size guidelines:
| Size | LOC | Action |
|---|---|---|
| Tiny | < 10 | Single logical change |
| Small | 10-50 | Typical atomic commit |
| Medium | 50-200 | Feature component |
| Large | 200-500 | Consider splitting |
| Too Large | > 500 | Definitely split |
Slash Commands
| Command | Action |
|---|---|
/commit | Smart commit helper with auto-analysis |
/validate <msg> | Validate commit message format |
/types | Show all commit types |
/scopes | Explain scopes with examples |
/breaking | Breaking change guide |
/changelog | Generate changelog from commits |
/version | Determine next semantic version |
/examples | Show commit examples |
/fix | Help amend/fix last commit |
Intelligent File Grouping
When multiple files need committing, group by:
- Scope-Based - Group by functional area (auth, api, ui)
- Type-Based - Separate implementation, tests, docs
- Relationship-Based - Keep related files together
Workflow:
# Analyze all changes
python {baseDir}/scripts/group-files.py --analyze
# Output example:
# Group 1: feat(auth) - 3 impl files, 245 LOC
# Group 2: test(auth) - 2 test files, 128 LOC
# Group 3: fix(api) - 2 files, 15 LOC
Issue Integration
Automatic issue detection from:
- Branch name:
feature/issue-42-> #42 - Keyword matching with file paths
- Label correlation with file patterns
Issue reference types:
Closes #N- Auto-closes on mergeFixes #N- Same as Closes (for bugs)Refs #N- References without closingProgresses #N- Partial progress
Part 2: Branch & Worktree Management
GitFlow Branch Conventions
Branch Types:
| Type | Pattern | Purpose |
|---|---|---|
| Feature | feature/{name} | New features |
| Fix | fix/{name} | Bug fixes |
| Hotfix | hotfix/{name} | Critical production fixes |
| Release | release/{version} | Release preparation |
Naming Guidelines:
- Use kebab-case (lowercase with hyphens)
- Be descriptive but concise (2-4 words)
- No spaces or special characters
Worktree Operations
Directory Structure:
project-root/ <- Main repository
project-root-worktrees/ <- Worktree parent
feature/
email-notifications/ <- feature/email-notifications
fix/
login-timeout/ <- fix/login-timeout
Commands:
# Create worktree
./scripts/create_worktree.sh feature email-notifications
# List worktrees
./scripts/list_worktrees.sh --detailed
# Cleanup merged worktrees
./scripts/cleanup_worktrees.sh --merged --dry-run
Benefits:
- Parallel development on multiple features
- No stashing needed
- Fast switching (just
cd) - Isolated build artifacts
Part 3: Release Management
Changelog Generation
python {baseDir}/scripts/changelog.py --version 2.0.0
Output format:
## [2.0.0] - 2025-01-18
### BREAKING CHANGES
- **auth**: change token format to JWT (#234)
### Features
- **auth**: add OAuth2 login (#123)
- **api**: add user search endpoint (#145)
### Bug Fixes
- **api**: prevent null pointer in user lookup (#156)
Semantic Versioning
python {baseDir}/scripts/version.py --verbose
Bump rules:
- Major (X.0.0) - Has breaking changes
- Minor (0.X.0) - Has features/fixes, no breaking
- Patch (0.0.X) - Only other changes
Part 4: Story Tree Management
Purpose
Maintain a self-managing tree of user stories where:
- Each node represents a story at some granularity level
- Nodes have capacity (target child count)
- Git commits are analyzed to mark stories as implemented
- Under-capacity nodes are identified for story generation
Database
Location: .claude/data/story-tree.db
Pattern: Closure table for hierarchical data
CRITICAL: Use Python's sqlite3 module (NOT sqlite3 CLI):
python -c "
import sqlite3
conn = sqlite3.connect('.claude/data/story-tree.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM story_nodes')
print(cursor.fetchall())
conn.close()
"
Story Format
### [ID]: [Title]
**As a** [specific user role]
**I want** [specific capability]
**So that** [specific benefit]
**Acceptance Criteria:**
- [ ] [Specific, testable criterion]
- [ ] [Specific, testable criterion]
**Related context**: [Git commits or patterns]
Workflow Commands
| Command | Action |
|---|---|
| "Update story tree" | Run full workflow |
| "Show story tree" | Visualize current tree |
| "Tree status" | Show metrics only |
| "Set capacity for [id] to [N]" | Adjust capacity |
| "Mark [id] as [status]" | Change status |
| "Generate stories for [id]" | Force generation |
| "Initialize story tree" | Create new database |
Tree Visualization
python {baseDir}/scripts/tree-view.py --show-capacity
Status symbols:
| Status | Symbol | Meaning |
|---|---|---|
| concept | . | Idea, not approved |
| approved | v | Human approved |
| epic | E | Needs decomposition |
| planned | o | Plan created |
| in-progress | D | Partially complete |
| implemented | + | Complete/done |
| ready | # | Production ready |
Anti-Patterns
| Anti-Pattern | Problem | Solution |
|---|---|---|
| Dumping all changes in one commit | Un-reviewable, un-revertable; hides logical changes | Group by scope/type using group-files.py; one logical change per commit |
| Vague commit messages ("wip", "fix stuff", "updates") | Cannot generate changelog; bisect useless | Use conventional commits: type(scope): imperative subject |
| Non-imperative subject ("added feature") | Inconsistent with conventional commits; reads as past tense | Use imperative mood: "add feature" not "added feature" |
| Missing issue references | No link between code and requirements; lost knowledge | Include Closes #N or Refs #N in commit footer |
| Commit too large (>500 LOC) | Too much surface area for review; hard to revert independently | Split into atomic commits; group-files.py suggests groupings |
| Mixing concerns in one commit (impl + tests + docs) | Hard to revert just tests or just docs; bloats review | Separate: feat commit, test commit, docs commit |
Breaking change without BREAKING CHANGE: footer | Changelog misses breaking changes; version bump wrong | Always document breaking changes in footer; triggers major version |
| Working on main instead of feature branch | No isolation; hard to revert; messy history | Use GitFlow: feature/ for new work, fix/ for bugs, hotfix/ for prod |
| Stashing instead of worktrees | Lost context; stash conflicts; no parallel work | Use git worktree for parallel feature development |
| Missing changelog before release | Manual, incomplete release notes | Run changelog.py auto-generated from conventional commits |
| Guessing version number | Incorrect semver; surprises in release | Run version.py -- auto-calculated from commit types |
Scripts Reference
Commit Scripts
| Script | Purpose |
|---|---|
analyze-diff.py | Analyze staged changes, suggest commits |
validate.py | Validate commit message format |
changelog.py | Generate changelog from commits |
version.py | Calculate next semantic version |
commit-analyzer.py | Full commit quality analysis |
conventional-commits.py | Conventional commits helper |
group-files.py | Intelligent file grouping |
issue-tracker.py | Issue sync and detection |
Workflow Scripts
| Script | Purpose |
|---|---|
create_worktree.sh | Create worktree with GitFlow conventions |
list_worktrees.sh | List all worktrees with status |
cleanup_worktrees.sh | Clean up merged/stale worktrees |
init-environment.py | Initialize GitHub workflow environment |
Story Tree Scripts
| Script | Purpose |
|---|---|
tree-view.py | ASCII tree visualization |
References
Commit References
references/conventional-commits.md- Full specificationreferences/commit-patterns.md- Patterns and anti-patternsreferences/examples.md- Commit examplesreferences/slash-commands.md- Detailed command workflows
Workflow References
references/gitflow-conventions.md- GitFlow reference
Story Tree References
references/schema.sql- Database schemareferences/sql-queries.md- SQL query patternsreferences/common-mistakes.md- Error preventionreferences/rationales.md- Design decisionsreferences/epic-decomposition.md- Epic workflowreferences/workflow-diagrams.md- Visual workflowsreferences/orchestrator-workflow-complete.md- Full orchestrator flowreferences/orchestrator-workflow-current.md- Current workflow
Assets
assets/commit-templates.json- Template patterns for commit types
Integration Points
With Issue Tracking
# Sync issues before committing
python {baseDir}/scripts/issue-tracker.py sync assigned
# Find related issues for staged changes
python {baseDir}/scripts/issue-tracker.py suggest-refs
With PR Reviews
- Validate commits in PRs
- Report format violations
- Suggest improvements before merge
With CI/CD
- Generate changelogs automatically
- Determine version bumps
- Validate commit messages in pipeline
Error Handling
Common issues:
| Issue | Recovery |
|---|---|
| Empty commit message | Generate from changes |
| No staged changes | Prompt to stage |
| Format violations | Suggest correction |
| Missing issue reference | Search and suggest |
| Commit too large | Recommend splitting |
| Database not found | Initialize first |
| Checkpoint rebased | Run full scan |
Source Skills
This skill was merged from:
story-tree---autonomous-hierarchical-backlog-managermanaging-commits-skillgit-commit-assistantgit-workflow-manager-skill
What ships with it: 29 files
229.0 KB alongside SKILL.md, 13 of them executable
assets/
- commit-templates.json6.7 KB
evals/
- evals.json1.3 KB
- trigger-evals.json2.0 KB
references/
- commit-patterns.md4.9 KB
- common-mistakes.md3.7 KB
- conventional-commits.md2.2 KB
- epic-decomposition.md1.5 KB
- examples.md2.6 KB
- gitflow-conventions.md2.7 KB
- orchestrator-workflow-complete.md23.6 KB
- orchestrator-workflow-current.md7.8 KB
- rationales.md2.2 KB
- schema.sql4.5 KB
- slash-commands.md10.7 KB
- sql-queries.md8.5 KB
- workflow-diagrams.md13.0 KB
scripts/
- analyze-diff.pyruns12.5 KB
- changelog.pyruns7.5 KB
- cleanup_worktrees.shruns5.5 KB
- commit-analyzer.pyruns12.2 KB
- conventional-commits.pyruns7.5 KB
- create_worktree.shruns2.7 KB
- group-files.pyruns9.4 KB
- init-environment.pyruns19.4 KB
- issue-tracker.pyruns24.0 KB
- list_worktrees.shruns2.9 KB
- tree-view.pyruns18.6 KB
- validate.pyruns2.2 KB
- version.pyruns6.6 KB