Files
gstack/skills/debug/references/legacy/guard.md
T

76 lines
3.5 KiB
Markdown

<!-- GENERATED by scripts/gstack2/generate-skill-tree.ts; do not edit. -->
<!-- GSTACK2_PROVENANCE source=guard/SKILL.md.tmpl base=bb57306d98c97011b0919c6132705a15b1579781 blob=3d34ee0c181ec7b263bf6092ba8f384619c5efb6 baseline_render_sha256=fb2609e8e305dfceb554442c4c5a8717b9f77efd8bf9c7166b9ec6335b06f481 ported_render_sha256=ff8170babcc9ad20f6de292db838d2c4545f0ed98dddd184ab5e7c52c073dc7e disposition=BUG_FIX -->
<!-- GSTACK2_ROUTING replacement=$debug --mode Diagnose-only --module guard visibility=internal depth=standard mutation=safety-policy web=none -->
<!-- GSTACK2_LEGACY_BODY_START source=guard -->
## Host-neutral runtime bindings
These assignments select stable paths only; they do not install anything or grant consent:
```bash
GSTACK_HOME="${GSTACK_HOME:-$HOME/.gstack}"
GSTACK_ROOT="$GSTACK_HOME"
GSTACK_STATE_ROOT="$GSTACK_HOME"
GSTACK_BIN="$GSTACK_HOME/bin"
B="$GSTACK_BIN/browse"
D="$GSTACK_BIN/gstack-design"
P="$GSTACK_BIN/make-pdf"
```
# $debug --mode Diagnose-only --module guard — Full Safety Mode
Activates both destructive command warnings and directory-scoped edit restrictions.
This is the combination of `$debug --mode Diagnose-only --module careful` + `$debug --mode Diagnose-only --module freeze` in a single command.
**Dependency note:** This skill references hook scripts from the sibling `$debug --mode Diagnose-only --module careful`
and `$debug --mode Diagnose-only --module freeze` skill directories. Both must be installed (they are installed together
by the gstack setup script).
Canonical execution does not write engagement analytics or telemetry.
## Setup
Ask the user which directory to restrict edits to. Use AskUserQuestion:
- Question: "Guard mode: which directory should edits be restricted to? Destructive command warnings are always on. Files outside the chosen path will be blocked from editing."
- Text input (not multiple choice) — the user types a path.
Once the user provides a directory path:
1. Resolve it to an absolute path:
```bash
FREEZE_DIR=$(cd "<user-provided-path>" 2>/dev/null && pwd)
echo "$FREEZE_DIR"
```
2. Ensure trailing slash and save to the freeze state file:
```bash
FREEZE_DIR="${FREEZE_DIR%/}/"
eval "$($GSTACK_BIN/gstack-paths)"
STATE_DIR="$GSTACK_STATE_ROOT"
mkdir -p "$STATE_DIR"
echo "$FREEZE_DIR" > "$STATE_DIR/freeze-dir.txt"
echo "Freeze boundary set: $FREEZE_DIR"
```
Tell the user:
- "**Guard mode active.** Two protections are now running:"
- "1. **Destructive command warnings** — rm -rf, DROP TABLE, force-push, etc. will warn before executing (you can override)"
- "2. **Edit boundary** — file edits restricted to `<path>/`. Edits outside this directory are blocked."
- "To remove the edit boundary, run `$debug --mode Diagnose-only --module unfreeze`. To deactivate everything, end the session."
## What's protected
See `$debug --mode Diagnose-only --module careful` for the full list of destructive command patterns and safe exceptions.
See `$debug --mode Diagnose-only --module freeze` for how edit boundary enforcement works.
<!-- GSTACK2_LEGACY_BODY_END source=guard -->
<!-- GSTACK2_BUG_FIX_START pr=679 anchor=GSTACK2_FIX_679_MATCH_USER_LANGUAGE -->
## Upstream judgment port: PR #679
[Match the user language](https://github.com/garrytan/gstack/pull/679)
### User-language rule
Write questions, progress updates, reports, and artifacts in the language used by the user. Source material, code identifiers, commands, and quotations may remain in their original language when translating them would reduce accuracy.
<!-- GSTACK2_BUG_FIX_END pr=679 -->