cc-safe-setup 22.1.0 → 23.1.0

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
@@ -6,7 +6,7 @@
6
6
 
7
7
  **One command to make Claude Code safe for autonomous operation.** [日本語](docs/README.ja.md)
8
8
 
9
- 8 built-in + 124 examples = **205 hooks**. 45 CLI commands. 561 tests. 5 languages. [**Hub**](https://yurukusa.github.io/cc-safe-setup/hub.html) · [Wizard](https://yurukusa.github.io/cc-safe-setup/wizard.html) · [Cheat Sheet](https://yurukusa.github.io/cc-safe-setup/hooks-cheatsheet.html) · [Builder](https://yurukusa.github.io/cc-safe-setup/builder.html) · [FAQ](https://yurukusa.github.io/cc-safe-setup/faq.html) · [Examples](https://yurukusa.github.io/cc-safe-setup/by-example.html) · [Matrix](https://yurukusa.github.io/cc-safe-setup/matrix.html) · [Playground](https://yurukusa.github.io/cc-hook-registry/playground.html)
9
+ 8 built-in + 124 examples = **215 hooks**. 45 CLI commands. 561 tests. 5 languages. [**Hub**](https://yurukusa.github.io/cc-safe-setup/hub.html) · [Wizard](https://yurukusa.github.io/cc-safe-setup/wizard.html) · [Cheat Sheet](https://yurukusa.github.io/cc-safe-setup/hooks-cheatsheet.html) · [Builder](https://yurukusa.github.io/cc-safe-setup/builder.html) · [FAQ](https://yurukusa.github.io/cc-safe-setup/faq.html) · [Examples](https://yurukusa.github.io/cc-safe-setup/by-example.html) · [Matrix](https://yurukusa.github.io/cc-safe-setup/matrix.html) · [Playground](https://yurukusa.github.io/cc-hook-registry/playground.html)
10
10
 
11
11
  ```bash
12
12
  npx cc-safe-setup
@@ -0,0 +1,5 @@
1
+ FILE=$(cat | jq -r '.tool_input.file_path // empty' 2>/dev/null)
2
+ case "$FILE" in *Dockerfile*) ;; *) exit 0;; esac
3
+ CONTENT=$(cat | jq -r '.tool_input.new_string // empty' 2>/dev/null)
4
+ echo "$CONTENT" | grep -qE "^RUN.*apt-get.*install" && echo "NOTE: Clean apt cache in Dockerfile" >&2
5
+ exit 0
@@ -0,0 +1,4 @@
1
+ # TRIGGER: PreToolUse MATCHER: "Bash"
2
+ COMMAND=$(cat | jq -r ".tool_input.command // empty" 2>/dev/null)
3
+ echo "$COMMAND" | grep -qE "git\s+add.*\.(zip|tar|bin|exe)" && [ ! -f ".gitattributes" ] && echo "NOTE: Binary file without .gitattributes LFS config" >&2
4
+ exit 0
@@ -0,0 +1,6 @@
1
+ FILE=$(cat | jq -r '.tool_input.file_path // empty' 2>/dev/null)
2
+ case "$FILE" in *package.json) ;; *) exit 0;; esac
3
+ CONTENT=$(cat | jq -r '.tool_input.new_string // empty' 2>/dev/null)
4
+ DEPS=$(echo "$CONTENT" | grep -c '":' || echo 0)
5
+ [ "$DEPS" -gt 50 ] && echo "NOTE: $DEPS deps — consider reducing" >&2
6
+ exit 0
@@ -0,0 +1,5 @@
1
+ # TRIGGER: PostToolUse MATCHER: "Edit|Write"
2
+ CONTENT=$(cat | jq -r ".tool_input.new_string // empty" 2>/dev/null)
3
+ [ -z "$CONTENT" ] && exit 0
4
+ echo "$CONTENT" | grep -qE "process\.env\.[a-z]" && echo "NOTE: Lowercase env var name — convention is UPPER_CASE" >&2
5
+ exit 0
@@ -0,0 +1,5 @@
1
+ # TRIGGER: PostToolUse MATCHER: "Edit|Write"
2
+ CONTENT=$(cat | jq -r ".tool_input.new_string // empty" 2>/dev/null)
3
+ [ -z "$CONTENT" ] && exit 0
4
+ echo "$CONTENT" | grep -qE "export default function\s*\(" && echo "NOTE: Anonymous default export — name for better debugging" >&2
5
+ exit 0
@@ -0,0 +1,5 @@
1
+ FILE=$(cat | jq -r '.tool_input.file_path // empty' 2>/dev/null)
2
+ case "$FILE" in *package.json) ;; *) exit 0;; esac
3
+ CONTENT=$(cat | jq -r '.tool_input.new_string // empty' 2>/dev/null)
4
+ echo "$CONTENT" | grep -q "peerDependencies" && echo "NOTE: Check for circular peer deps" >&2
5
+ exit 0
@@ -0,0 +1,4 @@
1
+ COMMAND=$(cat | jq -r '.tool_input.command // empty' 2>/dev/null)
2
+ echo "$COMMAND" | grep -qE 'git\s+commit' || exit 0
3
+ git diff --cached 2>/dev/null | grep -qE '^\+.*(debugger|pdb\.set_trace)' && echo "WARNING: Debug in staged" >&2
4
+ exit 0
@@ -0,0 +1,5 @@
1
+ # TRIGGER: PostToolUse MATCHER: "Edit|Write"
2
+ CONTENT=$(cat | jq -r ".tool_input.new_string // empty" 2>/dev/null)
3
+ [ -z "$CONTENT" ] && exit 0
4
+ echo "$CONTENT" | grep -qE "://\w+:\w+@" && echo "WARNING: Password in URL — use env vars" >&2
5
+ exit 0
@@ -0,0 +1,4 @@
1
+ OUTPUT=$(cat | jq -r '.tool_result // empty' 2>/dev/null)
2
+ [ -z "$OUTPUT" ] && exit 0
3
+ echo "$OUTPUT" | grep -qiE 'password|api.key|secret.key|bearer\s+[a-zA-Z0-9]' && echo "WARNING: Secret in output" >&2
4
+ exit 0
@@ -0,0 +1,5 @@
1
+ # TRIGGER: PreToolUse MATCHER: "Bash"
2
+ COMMAND=$(cat | jq -r ".tool_input.command // empty" 2>/dev/null)
3
+ [ -z "$COMMAND" ] && exit 0
4
+ if echo "$COMMAND" | grep -qE "rm\s+.*\*"; then echo "WARNING: rm with wildcard pattern" >&2; fi
5
+ exit 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-safe-setup",
3
- "version": "22.1.0",
3
+ "version": "23.1.0",
4
4
  "description": "One command to make Claude Code safe. 59 hooks (8 built-in + 51 examples). 26 CLI commands: dashboard, create, audit, lint, diff, migrate, compare, generate-ci. 284 tests.",
5
5
  "main": "index.mjs",
6
6
  "bin": {