precommit
Pre-Commit Checks (Full)
Trigger
- Keywords: precommit, pre-commit, lint and test, quality gate
When NOT to Use
- Quick checks without build (use
/precommit-fast) - Verification loop without lint:fix (use
/verify) - Just running tests (run directly)
Workflow Steps
| Step | Goal | Safety | Skip if Missing |
|---|---|---|---|
| lint-fix | Auto-fix code style issues | read-write | yes |
| build | Verify compilation succeeds | read-only | yes |
| test-unit | Run full test suite | read-only | yes |
Failure behavior: continue-all (run all steps, report all results)
Task
Run pre-commit checks: lint:fix -> build -> test
Step 1: Check for runner script
Use Glob to check if .claude/scripts/precommit-runner.js exists in the project root.
- Found → run:
node .claude/scripts/precommit-runner.js --mode full --tail 80- If runner succeeds, use its output and skip to the Output section.
- If runner fails, treat as a real precommit failure (do not silently fallback).
- NOT found → Auto-install attempt (see precommit-fast for identical auto-install logic), then fallback to Step 2.
Step 2: Fallback (no runner script)
Detect the project ecosystem to run steps manually.
Ecosystem detection:
| Manifest | Ecosystem | Lint-fix | Build | Test |
|---|---|---|---|---|
package.json |
Node.js | {pm} lint:fix |
{pm} build |
{pm} test:ci / test / test:fast / test:unit |
pyproject.toml |
Python | ruff check --fix . |
— | pytest tests/unit/ |
Cargo.toml |
Rust | cargo clippy --fix |
cargo build |
cargo test |
go.mod |
Go | golangci-lint run --fix |
go build ./... |
go test ./... |
build.gradle |
Java (Gradle) | ./gradlew spotlessApply |
./gradlew build |
./gradlew test |
pom.xml |
Java (Maven) | mvn spotless:apply |
mvn compile |
mvn test |
Gemfile |
Ruby | bundle exec rubocop -a |
— | bundle exec rspec |
For Node.js projects, auto-detect package manager from lockfile.
| Step | package.json script | If missing |
|---|---|---|
| lint:fix | lint:fix |
Skip with note |
| build | build |
Skip with note |
| test | test:ci → test → test:fast → test:unit |
Skip with note |
After lint:fix completes, run git diff --name-only to capture auto-fixed files.
Output
## Precommit (full)
## Results
| Step | Status | Notes |
|------|--------|-------|
| lint:fix | ✅/❌/⏭️ | skipped if no script |
| build | ✅/❌/⏭️ | skipped if no script |
| test | ✅/❌/⏭️ | skipped if no script |
## Changed Files (after lint:fix)
- <files or "(none)">
## Overall: ✅ PASS / ❌ FAIL
## Checklist
- [ ] All available checks pass
- [ ] git status reviewed
More from sd0xdev/sd0x-dev-flow
statusline-config
Customize Claude Code statusline. Use when: user says 'statusline', 'status line', 'customize statusline', 'modify statusline', 'statusline settings', 'statusline theme', 'change theme', 'color scheme', wants to add/remove/change segments (cost, git, model, context), switch color themes (catppuccin, dracula, nord), or asks what can be shown in the statusline.
52contract-decode
EVM contract error and calldata decoder. Use when: user pastes hex revert data, calldata, function selector, or mentions custom error, execution reverted, 4byte, decode. Input contains 0x + 8+ hex chars.
6create-pr
Create or update GitHub PR with gh CLI. Auto-extracts ticket ID from branch name, generates title/summary from commits. Auto-detects existing PR and switches to update mode. Default: --dry-run (show command, don't execute). Use when: user asks to open/create/update a PR, says /create-pr, wants to refresh PR description after new commits, or says 'update pr', 'update PR title', 'refresh PR body'.
6skill-health-check
Validate skill quality against routing, progressive loading, and verification criteria. Use when: auditing skills, checking skill health, reviewing skill design. Not for: code review (use codex-code-review) or doc review (use doc-review). Output: health report with per-skill ratings + Gate.
6debug
Interactive debugging workflow with hypothesis-driven probe loop. Use when: unknown bugs, script errors, silent failures, troubleshooting. Not for: known bugs (use bug-fix), GitHub issue analysis (use issue-analyze), code understanding (use code-explore). Output: debug report with probe journal + root cause + fix.
3