skills/git-workflow/SKILL.md
--- name: git-workflow description: 'Git commit, branching, and documentation conventions. Use when: writing commit messages, creating branches, preparing pull requests, reviewing changelogs, squashing commits, establishing git workflow standards, auditing commit history for convention compliance, or improving an existing project git workflow.' tags: - developer - manager --- # Git Workflow Standards ## When to Use - Writing or reviewing commit messages - Creating branches for features, fix
npx skillsauth add michaelsvanbeek/personal-agent-skills skills/git-workflowInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Follow the Conventional Commits specification. This enables automated changelog generation, semantic versioning, and clear history.
<type>(<scope>): <subject>
<body>
<footer>
| Type | When to use |
|------|-------------|
| feat | New feature or capability |
| fix | Bug fix |
| docs | Documentation only |
| style | Formatting, whitespace, semicolons (no logic change) |
| refactor | Code restructuring without behavior change |
| perf | Performance improvement |
| test | Adding or updating tests |
| build | Build system, dependencies, CI config |
| chore | Maintenance tasks, tooling, config |
| ci | CI pipeline changes |
| revert | Reverting a previous commit |
Optional, but encouraged. Use the module, component, or area affected:
feat(api): add user search endpointfix(auth): handle expired refresh tokensbuild(deps): update fastapi to 0.115docs(readme): add deployment instructionsSingle-line (small, self-explanatory changes):
fix(cors): allow credentials in preflight responses
With body (changes that need context):
feat(cache): add IndexedDB caching for dashboard data
Store API responses in IndexedDB keyed by endpoint and query params.
Serve cached data immediately on page load, then refresh in the
background. Reduces perceived load time for repeat visits.
With breaking change:
feat(api)!: change auth from API key to OAuth2
Migrate all endpoints to require Bearer token authentication.
API key header is no longer accepted.
BREAKING CHANGE: Clients must update to use OAuth2 tokens.
All existing API keys are invalidated.
Closes #142
update stuff - Vague, no type, no scope, no useful informationfix bug - Which bug? What was the symptom?WIP - Never commit with WIP; use git stash or draft branchesaddress review comments - Describe what actually changedgit bisect).<type>/<short-description>
| Pattern | Example |
|---------|---------|
| feat/user-search | Feature work |
| fix/token-expiry | Bug fix |
| docs/api-reference | Documentation |
| refactor/auth-module | Refactoring |
| release/v1.2.0 | Release branch |
| hotfix/null-pointer | Production hotfix |
Rules:
feat/PROJ-123-user-search.Follow the same conventional commit format as the squash/merge commit:
feat(api): add user search endpoint
## What
Brief description of what this PR does.
## Why
Context on why this change is needed. Link to issue or ticket.
## How
High-level description of the approach taken.
## Testing
How this was tested. Include commands to verify, test output, or screenshots.
## Checklist
- [ ] Linter passes with no errors (`ruff check .` / `eslint .`)
- [ ] Formatter applied (`ruff format .` / `prettier --write .`)
- [ ] Type checker passes (`mypy .` for Python, `tsc --noEmit` for TypeScript)
- [ ] Tests pass
- [ ] Documentation updated
- [ ] No secrets or credentials committed
When maintaining a CHANGELOG.md, follow the Keep a Changelog format. See the release-management skill for changelog automation from conventional commits and release cadence guidance.
# Changelog
## [Unreleased]
### Added
- User search endpoint with fuzzy matching (#142)
### Fixed
- Token refresh handling for expired sessions (#138)
### Changed
- Auth migrated from API key to OAuth2 (#140)
## [1.1.0] - 2026-03-15
### Added
- Dashboard caching with IndexedDB
Categories: Added, Changed, Deprecated, Removed, Fixed, Security.
Run these before every commit:
Python projects:
ruff format . # format
ruff check --fix . # lint with auto-fix
mypy . # type check
pytest # tests
Web projects:
prettier --write . # format
eslint . --fix # lint with auto-fix
tsc --noEmit # type check
npm test # tests
Consider automating this with a pre-commit hook or lint-staged.
.gitignore before the first commit to avoid committing generated files.git stash for work-in-progress rather than WIP commits.v1.2.0 (see release-management skill for full SemVer conventions).Use annotated tags for all releases. Annotated tags store author, date, and message — essential for audit and tooling:
git tag -a v1.5.0 -m "Release v1.5.0"
git push origin main --follow-tags
v: v1.5.0, not 1.5.0.chore(release) for the version-bump commit:chore(release): v1.5.0
For full semantic versioning rules (when to bump MAJOR vs MINOR vs PATCH), release workflows, hotfix procedures, and changelog automation, see the release-management skill.
development
TypeScript coding standards and type safety conventions. Use when: creating TypeScript files, defining interfaces and types, writing type-safe code, reviewing TypeScript for type correctness, auditing a codebase for type safety gaps, eliminating any or ts-ignore usage, or improving strict-mode compliance. Covers strict typing, avoiding any and ts-ignore, discriminated unions, Zod runtime validation, immutability patterns, and proper type definitions.
testing
Writing clear, actionable tickets in any issue tracker (Jira, Linear, GitHub Issues, ServiceNow, etc.). Use when: creating epics, stories, tasks, bugs, or spikes; writing acceptance criteria; decomposing work for a sprint; linking dependencies between tickets; auditing backlog items for clarity; or coaching a team on ticket quality. Covers title conventions, description templates, acceptance criteria, decomposition rules, dependency linking, and org-specific pluggable configuration.
development
Testing strategy, patterns, and evaluation for software and LLM/AI systems. Use when: writing tests, choosing test boundaries, designing test data, structuring test suites, evaluating LLM outputs, building evaluation pipelines, setting coverage thresholds, auditing test coverage gaps in existing projects, or improving test quality and structure.
development
Writing effective status updates for different audiences and cadences. Use when: writing a weekly status update, preparing a monthly summary, drafting a quarterly review, sending updates to leadership, sharing progress with stakeholders, or improving the clarity and impact of team communications. Covers weekly, monthly, and quarterly formats tailored for upward, lateral, and downward communication.