# Pre-commit hooks for clawdbot # Install: prek install # Run manually: prek run --all-files # # See https://pre-commit.com for more information repos: # Basic file hygiene - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: trailing-whitespace exclude: '^(docs/|dist/|vendor/|.*\.snap$)' - id: end-of-file-fixer exclude: '^(docs/|dist/|vendor/|.*\.snap$)' - id: check-yaml args: [--allow-multiple-documents] - id: check-added-large-files args: [--maxkb=500] - id: check-merge-conflict # Secret detection (same as CI) - repo: https://github.com/Yelp/detect-secrets rev: v1.5.0 hooks: - id: detect-secrets args: [--baseline, .secrets.baseline] # Shell script linting - repo: https://github.com/koalaman/shellcheck-precommit rev: v0.11.0 hooks: - id: shellcheck args: [--severity=error] # Only fail on errors, not warnings/info # Exclude vendor and scripts with embedded code or known issues exclude: '^(vendor/|scripts/e2e/)' # GitHub Actions linting - repo: https://github.com/rhysd/actionlint rev: v1.7.10 hooks: - id: actionlint # GitHub Actions security audit - repo: https://github.com/zizmorcore/zizmor-pre-commit rev: v1.22.0 hooks: - id: zizmor args: [--persona=regular, --min-severity=medium, --min-confidence=medium] exclude: '^(vendor/|Swabble/)' # Project checks (same commands as CI) - repo: local hooks: # oxlint --type-aware src test - id: oxlint name: oxlint entry: npx oxlint --type-aware src test language: system pass_filenames: false types_or: [javascript, jsx, ts, tsx] # oxfmt --check src test - id: oxfmt name: oxfmt entry: npx oxfmt --check src test language: system pass_filenames: false types_or: [javascript, jsx, ts, tsx] # swiftlint (same as CI) - id: swiftlint name: swiftlint entry: swiftlint --config .swiftlint.yml language: system pass_filenames: false types: [swift] # swiftformat --lint (same as CI) - id: swiftformat name: swiftformat entry: swiftformat --lint apps/macos/Sources --config .swiftformat language: system pass_filenames: false types: [swift]