mirror of
https://github.com/garrytan/gstack.git
synced 2026-08-07 06:48:37 +02:00
feat: add /careful, /freeze, /guard, /unfreeze safety hook skills
Four new on-demand skills using Claude Code's PreToolUse hooks: - /careful: warns before destructive commands (rm -rf, DROP TABLE, force-push, etc.) - /freeze: blocks file edits outside a specified directory - /guard: composes both into one command - /unfreeze: clears freeze boundary without ending session Pure bash hook scripts with Python fallback for JSON edge cases. Safe exceptions for build artifacts (node_modules, dist, .next, etc.). Hook fire telemetry logs pattern name only (never command content). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
bc86a665b7
commit
533fdca1f2
@@ -0,0 +1,40 @@
|
||||
---
|
||||
name: unfreeze
|
||||
version: 0.1.0
|
||||
description: |
|
||||
Clear the freeze boundary set by /freeze, allowing edits to all directories
|
||||
again. Use when you want to widen edit scope without ending the session.
|
||||
Use when asked to "unfreeze", "unlock edits", "remove freeze", or
|
||||
"allow all edits".
|
||||
allowed-tools:
|
||||
- Bash
|
||||
- Read
|
||||
---
|
||||
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->
|
||||
<!-- Regenerate: bun run gen:skill-docs -->
|
||||
|
||||
# /unfreeze — Clear Freeze Boundary
|
||||
|
||||
Remove the edit restriction set by `/freeze`, allowing edits to all directories.
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.gstack/analytics
|
||||
echo '{"skill":"unfreeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true
|
||||
```
|
||||
|
||||
## Clear the boundary
|
||||
|
||||
```bash
|
||||
STATE_DIR="${CLAUDE_PLUGIN_DATA:-$HOME/.gstack}"
|
||||
if [ -f "$STATE_DIR/freeze-dir.txt" ]; then
|
||||
PREV=$(cat "$STATE_DIR/freeze-dir.txt")
|
||||
rm -f "$STATE_DIR/freeze-dir.txt"
|
||||
echo "Freeze boundary cleared (was: $PREV). Edits are now allowed everywhere."
|
||||
else
|
||||
echo "No freeze boundary was set."
|
||||
fi
|
||||
```
|
||||
|
||||
Tell the user the result. Note that `/freeze` hooks are still registered for the
|
||||
session — they will just allow everything since no state file exists. To re-freeze,
|
||||
run `/freeze` again.
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
name: unfreeze
|
||||
version: 0.1.0
|
||||
description: |
|
||||
Clear the freeze boundary set by /freeze, allowing edits to all directories
|
||||
again. Use when you want to widen edit scope without ending the session.
|
||||
Use when asked to "unfreeze", "unlock edits", "remove freeze", or
|
||||
"allow all edits".
|
||||
allowed-tools:
|
||||
- Bash
|
||||
- Read
|
||||
---
|
||||
|
||||
# /unfreeze — Clear Freeze Boundary
|
||||
|
||||
Remove the edit restriction set by `/freeze`, allowing edits to all directories.
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.gstack/analytics
|
||||
echo '{"skill":"unfreeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true
|
||||
```
|
||||
|
||||
## Clear the boundary
|
||||
|
||||
```bash
|
||||
STATE_DIR="${CLAUDE_PLUGIN_DATA:-$HOME/.gstack}"
|
||||
if [ -f "$STATE_DIR/freeze-dir.txt" ]; then
|
||||
PREV=$(cat "$STATE_DIR/freeze-dir.txt")
|
||||
rm -f "$STATE_DIR/freeze-dir.txt"
|
||||
echo "Freeze boundary cleared (was: $PREV). Edits are now allowed everywhere."
|
||||
else
|
||||
echo "No freeze boundary was set."
|
||||
fi
|
||||
```
|
||||
|
||||
Tell the user the result. Note that `/freeze` hooks are still registered for the
|
||||
session — they will just allow everything since no state file exists. To re-freeze,
|
||||
run `/freeze` again.
|
||||
Reference in New Issue
Block a user