# 전체 안전 모드 (guard)

> 위험 명령 경고와 디렉터리 범위 편집 제한을 함께 켜서 /careful과 /freeze를 한 번에 적용합니다.

- 카테고리: [보안 강화](https://www.myskills.tools/ko/categories/hardening/)
- 출처: 커뮤니티 · Garry Tan
- 저장소: https://github.com/garrytan/gstack/tree/main/guard (commit 6237994 · v0.1.0)
- SKILL.md: https://github.com/garrytan/gstack/blob/main/guard/SKILL.md
- 설치 명령: `npx skills add garrytan/gstack --skill guard`
- 라이선스: MIT
- 호환 도구: Claude Code, Codex, Cursor, Copilot
- 권한: read-repo ✓, write-files ✗, shell ✓, network ✗
- 상태: 스캔 통과
- 규칙 스캔으로 모든 위험을 찾을 수는 없습니다. 설치 전에 이 스킬의 SKILL.md를 읽고 권한을 확인하세요.
- ⚠ 디렉터리 밖 편집을 막는 훅을 등록하며, 경계는 세션이 끝나도 /unfreeze 전까지 남습니다. 사용 기록은 로컬 gstack 분석 파일에 저장됩니다.

## 핵심 규칙

경계 설정 헬퍼가 실패하면 경계가 활성화됐다고 말하지 않으며, 공유 writer를 우회해 직접 쓰거나 삭제하지 않습니다.

## 실행 단계

1. **디렉터리 선택** — AskUserQuestion의 텍스트 입력으로 편집을 제한할 디렉터리를 사용자에게 묻습니다.
2. **편집 경계 설정** — 공유 freeze-state.sh set으로 경로를 설정하며, 실패하면 상태를 보존하고 복구 방법을 보고합니다.
3. **두 가지 보호 안내** — rm -rf, 강제 푸시 같은 명령은 경고되고 치명적인 경우는 거부되며, 디렉터리 밖 편집은 차단되고 /unfreeze로 해제할 수 있음을 알립니다.

## 권한 설명 (SKILL.md 기준)

| 기능 | 필요 여부 | 설명 |
|---|---|---|
| 파일 쓰기 | 필요 없음 | allowed-tools에 Write/Edit가 없으며, 오히려 훅으로 경계 밖 파일 편집을 차단합니다. |
| 명령 실행 | 일부 필요 | gstack의 freeze-state.sh 등 헬퍼만 실행하고 훅으로 위험 명령을 검사합니다. |
| 네트워크 송신 | 필요 없음 | 네트워크 접근이 필요 없습니다. |

## SKILL.md 프런트매터(YAML)

```yaml
---
name: guard
version: 0.1.0
description: "Full safety mode: destructive command warnings + directory-scoped edits. (gstack)"
triggers:
  - full safety mode
  - guard against mistakes
  - maximum safety
allowed-tools:
  - Bash
  - Read
  - AskUserQuestion
hooks:
  PreToolUse:
    - matcher: "Bash"
      hooks:
        - type: command
          command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/careful/bin/check-careful.sh\""'
          statusMessage: "Checking for destructive commands..."
    - matcher: "PowerShell"
      hooks:
        - type: command
          command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/careful/bin/check-careful.sh\""'
          statusMessage: "Checking for destructive commands..."
    - matcher: "Edit"
      hooks:
        - type: command
          command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/freeze/bin/check-freeze.sh\""'
          statusMessage: "Checking freeze boundary..."
    - matcher: "Write"
      hooks:
        - type: command
          command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/freeze/bin/check-freeze.sh\""'
          statusMessage: "Checking freeze boundary..."
    - matcher: "NotebookEdit"
      hooks:
        - type: command
          command: 'bash -c "exec bash \"$HOME/.claude/skills/gstack/freeze/bin/check-freeze.sh\""'
          statusMessage: "Checking freeze boundary..."
---
```

홈: https://www.myskills.tools/ko/ · URL: https://www.myskills.tools/ko/skills/guard/
