Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .lefthook/pre-commit/secret-scan.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash
# Secret scan — called by lefthook pre-commit hook.
# Scans staged files with gitleaks to block secrets from being committed.
# Skipped during merge/rebase (configured in lefthook.yml).

set -euo pipefail

if ! command -v gitleaks >/dev/null 2>&1; then
echo "ERROR: gitleaks is not installed." >&2
echo " Install it via mise, brew, or download from https://github.com/gitleaks/gitleaks" >&2
echo " Override with git commit --no-verify if needed." >&2
exit 1
fi

gitleaks protect --staged --verbose
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,17 @@ A starter template for new GitHub repositories.
This template includes `lefthook.yml` for git hook management.

```bash
# Install lefthook (via mise or your package manager)
# Install lefthook and gitleaks (via mise or your package manager)
mise use lefthook
mise use gitleaks

# Install hooks into .git/hooks/
lefthook install
```

Hooks configured:
- **pre-commit**: runs `npm run lint` if package.json exists (skips merge/rebase)
- **pre-commit**: scans staged files with gitleaks to block secrets (skips merge/rebase)
Comment thread
greptile-apps[bot] marked this conversation as resolved.
- **commit-msg**: enforces `type(scope): summary` commit message format via `.lefthook/commit-msg/commit-msg-lint.sh`

Scripts live under `.lefthook/<hook-name>/`. Override with `git commit --no-verify` when needed.
Expand Down
5 changes: 5 additions & 0 deletions lefthook.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@

pre-commit:
commands:
secret-scan:
run: bash .lefthook/pre-commit/secret-scan.sh
skip:
- merge
- rebase
lint:
run: |
# Run project lint if available
Expand Down
Loading