# settings-atoms.yaml — Claude Code settings/hooks 자산 코퍼스 (ADR 0003 ④)
# compile_settings.py가 프로젝트에 맞는 항목을 골라 .claude/settings.json 조각을
# 생성한다. codex 권고: 선언적 permission deny 위주(안전). hook은 shell 실행이라
# 위험 표면이 크므로 기본 off(default_on:false) — 사람이 명시적으로 켠다.
#
# 필드: id, title, kind(deny|allow|hook), scope(any|web|app|game),
#       value(deny/allow 패턴) 또는 event/matcher/command(hook),
#       default_on(hook만; 기본 false), severity, why.

atoms:
  # ── permission deny — 비밀 유출 차단 (선언적, 안전) ──────────
  - id: deny-read-env
    title: .env 읽기 차단
    kind: deny
    value: 'Read(./.env)'
    scope: any
    severity: must
    why: '환경변수 파일에 비밀이 담긴다.'
  - id: deny-read-env-variants
    title: .env.* 읽기 차단
    kind: deny
    value: 'Read(./.env.*)'
    scope: any
    severity: must
    why: '.env.local/.env.production 등 변형도 차단.'
  - id: deny-read-pem
    title: 키/인증서 읽기 차단
    kind: deny
    value: 'Read(**/*.pem)'
    scope: any
    severity: must
    why: '개인키·인증서 유출 방지.'
  - id: deny-read-secrets-dir
    title: secrets 디렉터리 읽기 차단
    kind: deny
    value: 'Read(**/secrets/**)'
    scope: any
    severity: must
    why: '비밀 보관 디렉터리 보호.'
  - id: deny-read-ssh
    title: SSH 키 읽기 차단
    kind: deny
    value: 'Read(**/.ssh/**)'
    scope: any
    severity: must
    why: 'SSH 개인키 유출 방지.'

  # ── permission deny — 파괴적 명령 차단 ───────────────────────
  - id: deny-rm-root
    title: 루트 rm -rf 차단
    kind: deny
    value: 'Bash(rm -rf /*)'
    scope: any
    severity: must
    why: '시스템 파괴 명령.'
  - id: deny-rm-home
    title: 홈 rm -rf 차단
    kind: deny
    value: 'Bash(rm -rf ~*)'
    scope: any
    severity: must
    why: '홈 디렉터리 파괴 방지.'
  - id: deny-force-push
    title: 강제 푸시 차단
    kind: deny
    value: 'Bash(git push --force*)'
    scope: any
    severity: should
    why: '히스토리 덮어쓰기 사고 방지(필요 시 사람이 직접).'
  - id: deny-git-reset-hard
    title: git reset --hard 차단
    kind: deny
    value: 'Bash(git reset --hard*)'
    scope: any
    severity: should
    why: '미커밋 변경 소실 방지.'

  # ── hook — 기본 off (shell 실행, 위험 표면 큼) ────────────────
  - id: hook-bash-audit
    title: Bash 명령 감사 로그
    kind: hook
    event: PreToolUse
    matcher: Bash
    command: 'echo "[$(date)] bash: $CLAUDE_TOOL_INPUT" >> .claude/bash-audit.log'
    default_on: false
    scope: any
    severity: should
    why: '실행된 bash를 기록(디버그·사후추적). 켜려면 명시적으로.'
  - id: hook-format-on-edit
    title: 편집 후 포매터
    kind: hook
    event: PostToolUse
    matcher: Edit
    command: ''
    default_on: false
    scope: web
    severity: should
    why: '편집 후 prettier/포매터 실행(프로젝트별 명령 채워야 함). 기본 off.'
