--- name: commit description: "Creates Conventional Commits with pre-commit validation. Triggers: commit, conventional commit, git commit, message." effort: medium disable-model-invocation: true argument-hint: "[message or scope]" allowed-tools: Bash, Read, Grep hooks: PreToolUse: - matcher: "Bash" hooks: - type: command command: "echo 'Reminder: ensure linting passes before committing'" --- # Git Commit $ARGUMENTS Creates well-structured git commits following Conventional Commits specification. ## Project context - Staged changes: !`git diff --cached --stat 2>/dev/null || echo "nothing staged"` - Current branch: !`git branch --show-current 2>/dev/null` ## Commit Format ``` (): [optional body] [optional footer] ``` ## Types | Type | Description | |------|-------------| | `feat` | New feature | | `fix` | Bug fix | | `docs` | Documentation only | | `style` | Formatting, no code change | | `refactor` | Code restructuring | | `perf` | Performance improvement | | `test` | Adding/updating tests | | `chore` | Maintenance tasks | | `ci` | CI/CD changes | ## Examples ```bash # Feature git commit -m "$(cat <<'EOF' feat(search): add multi-hop reasoning support - Implement query decomposition - Add iterative retrieval with reasoning - Include answer synthesis from aggregated context EOF )" # Bug fix git commit -m "$(cat <<'EOF' fix(cache): resolve connection pool exhaustion Root cause: connections not returned to pool on error Solution: use context manager for automatic cleanup Fixes #123 EOF )" ``` ## Automated Pre-Commit Check Run the bundled script for structured pre-commit analysis: ```bash python3 ${CLAUDE_SKILL_DIR}/scripts/pre-commit-check.py ``` Use the output to validate staged changes, detect secrets, and suggest commit type/scope. ## Pre-Commit Checklist Before committing: - [ ] Run linting: `make lint` (or `docker exec {app-container} make lint`) - [ ] Run tests: `make test` (or `docker exec {app-container} make test`) - [ ] Check for secrets: No API keys or passwords ## Git Safety - NEVER use `--force` push without explicit request - NEVER skip hooks (`--no-verify`) unless explicitly asked - ALWAYS create NEW commits (don't amend previous unless asked) - Stage specific files, avoid `git add -A` with sensitive files