cc-safe-setup 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,6 +25,7 @@ Installs 8 production-tested safety hooks in ~10 seconds. Zero dependencies. No
25
25
  ✗ Force-push rewriting shared branch history
26
26
  ✗ API keys committed to public repos via git add .
27
27
  ✗ Syntax errors cascading through 30+ files
28
+ ✗ Laravel migrate:fresh wiping production database
28
29
  ✗ Sessions losing all context with no warning
29
30
 
30
31
  Hooks to install:
@@ -141,7 +142,7 @@ Need custom hooks beyond the 8 built-in ones? See [`examples/`](examples/) for r
141
142
  ## Learn More
142
143
 
143
144
  - [Official Hooks Reference](https://code.claude.com/docs/en/hooks) — Claude Code hooks documentation
144
- - [Hooks Cookbook](https://github.com/yurukusa/claude-code-hooks/blob/main/COOKBOOK.md) — 11 ready-to-use recipes from real GitHub Issues
145
+ - [Hooks Cookbook](https://github.com/yurukusa/claude-code-hooks/blob/main/COOKBOOK.md) — 12 ready-to-use recipes from real GitHub Issues
145
146
  - [Japanese guide (Qiita)](https://qiita.com/yurukusa/items/a9714b33f5d974e8f1e8) — この記事の日本語解説
146
147
  - [The incident that inspired this tool](https://github.com/anthropics/claude-code/issues/36339) — NTFS junction rm -rf
147
148
 
@@ -0,0 +1,47 @@
1
+ #!/bin/bash
2
+ # auto-approve-python.sh — Auto-approve Python development commands
3
+ #
4
+ # Solves: Permission prompts for pytest, mypy, ruff, black, isort
5
+ # that slow down autonomous Python development
6
+ #
7
+ # Usage: Add to settings.json as a PreToolUse hook
8
+ #
9
+ # {
10
+ # "hooks": {
11
+ # "PreToolUse": [{
12
+ # "matcher": "Bash",
13
+ # "hooks": [{ "type": "command", "command": "~/.claude/hooks/auto-approve-python.sh" }]
14
+ # }]
15
+ # }
16
+ # }
17
+
18
+ INPUT=$(cat)
19
+ COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)
20
+
21
+ [[ -z "$COMMAND" ]] && exit 0
22
+
23
+ # Python test runners
24
+ if echo "$COMMAND" | grep -qE '^\s*(pytest|python\s+-m\s+pytest|python\s+-m\s+unittest)(\s|$)'; then
25
+ jq -n '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow","permissionDecisionReason":"Python test auto-approved"}}'
26
+ exit 0
27
+ fi
28
+
29
+ # Linters and formatters
30
+ if echo "$COMMAND" | grep -qE '^\s*(ruff\s+(check|format)|black\s|isort\s|flake8\s|pylint\s|mypy\s|pyright\s)'; then
31
+ jq -n '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow","permissionDecisionReason":"Python lint/format auto-approved"}}'
32
+ exit 0
33
+ fi
34
+
35
+ # Package management (read-only)
36
+ if echo "$COMMAND" | grep -qE '^\s*(pip\s+list|pip\s+show|pip\s+freeze|pipdeptree)(\s|$)'; then
37
+ jq -n '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow","permissionDecisionReason":"pip read-only auto-approved"}}'
38
+ exit 0
39
+ fi
40
+
41
+ # Python syntax check
42
+ if echo "$COMMAND" | grep -qE '^\s*python3?\s+-m\s+py_compile\s'; then
43
+ jq -n '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow","permissionDecisionReason":"Python compile check auto-approved"}}'
44
+ exit 0
45
+ fi
46
+
47
+ exit 0
package/index.mjs CHANGED
@@ -261,6 +261,7 @@ function examples() {
261
261
  'edit-guard.sh': 'Block Edit/Write to protected files (.env, credentials)',
262
262
  'enforce-tests.sh': 'Warn when source files change without test files',
263
263
  'notify-waiting.sh': 'Desktop notification when Claude waits for input',
264
+ 'auto-approve-python.sh': 'Auto-approve pytest, mypy, ruff, black, isort commands',
264
265
  };
265
266
 
266
267
  console.log();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-safe-setup",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "One command to make Claude Code safe for autonomous operation. 8 hooks: destructive blocker, branch guard, force-push protection, secret leak prevention, syntax checks, and more.",
5
5
  "main": "index.mjs",
6
6
  "bin": {