# 봇 작업 중 자동 micro-commit 강제 시스템

## 목적
봇이 파일을 수정할 때마다 자동으로 git commit하여, 커밋되지 않은 변경사항이 다른 task에 의해 덮어쓰여지는 것을 물리적으로 방지.

## 구현 방식

### 방안: DIRECT-WORKFLOW의 worktree 작업 단계에 강제 커밋 포함

**현재**: 봇이 작업 완료 후 마지막에 한 번 커밋
**변경**: 봇이 각 마이크로태스크(sub-agent 작업) 완료 시마다 커밋

### 구현 1: team_prompts.py 수정

**파일**: `/home/jay/workspace/prompts/team_prompts.py`

팀장 프롬프트에 마이크로태스크 완료 시 커밋 지시를 추가:
```
각 팀원(sub-agent) 작업이 완료되면 즉시 커밋하세요:
git add -A && git commit -m "[task-{task_id}] {팀원명}: {작업 요약}"
예: git commit -m "[task-1825] 프레이야: 키워드 순위 UI 수정"
```

### 구현 2: DIRECT-WORKFLOW.md 강화

**파일**: `/home/jay/workspace/prompts/DIRECT-WORKFLOW.md`

Step 3 (팀원 에이전트 실행) 부분에 추가:
```
3-1. 각 팀원 작업 완료 후 즉시 micro-commit:
   git add -A && git commit -m "[{task_id}] {member}: {summary}"
3-2. 모든 팀원 작업 완료 후 통합 테스트
```

### 구현 3: PostToolUse hook으로 자동 커밋 (물리적 강제)

**파일**: `/home/jay/.claude/settings.json` 또는 프로젝트 `.claude/settings.json`

봇이 Edit/Write 도구를 사용할 때마다 자동 커밋하는 hook:
```json
{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Edit|Write",
      "hooks": [{
        "type": "command",
        "command": "bash /home/jay/workspace/hooks/auto-commit.sh"
      }]
    }]
  }
}
```

`/home/jay/workspace/hooks/auto-commit.sh`:
```bash
#!/bin/bash
# worktree 내에서만 동작 (main에서는 스킵)
BRANCH=$(git -C "$PWD" rev-parse --abbrev-ref HEAD 2>/dev/null)
if [[ "$BRANCH" == "main" || "$BRANCH" == "master" ]]; then
    exit 0  # main에서는 자동 커밋 안 함
fi

# 변경된 파일이 있으면 auto-commit
if git -C "$PWD" diff --quiet && git -C "$PWD" diff --cached --quiet; then
    exit 0  # 변경 없음
fi

# 디바운스: 마지막 커밋 후 30초 이내면 스킵
LAST_COMMIT=$(git -C "$PWD" log -1 --format=%ct 2>/dev/null || echo 0)
NOW=$(date +%s)
if (( NOW - LAST_COMMIT < 30 )); then
    exit 0
fi

git -C "$PWD" add -A
git -C "$PWD" commit -m "auto: micro-commit $(date +%H:%M:%S)" --no-verify 2>/dev/null
```

**★ 이 방식이 가장 강력**: 봇이 규칙을 까먹어도 hook이 물리적으로 실행됨.
**★ main 브랜치 제외**: worktree에서만 동작하므로 main의 커밋 히스토리는 깔끔하게 유지.
**★ 30초 디바운스**: 연속 수정 시 매번 커밋하지 않고 30초 간격으로 묶음.

## 주의사항
- PostToolUse hook은 **봇 세션에서만** 실행됨 (아누 직접 세션 포함)
- main 브랜치에서는 스킵 → main 커밋 히스토리 오염 방지
- `--no-verify` 사용 → pre-commit hook 충돌 방지
- data/ 디렉토리 파일(json, db)은 .gitignore에 적절히 설정되어 있어야 함

## 검증 시나리오
1. worktree에서 파일 수정 → 30초 후 자동 커밋 발생 확인
2. main 브랜치에서 파일 수정 → 자동 커밋 안 됨 확인
3. 30초 이내 연속 수정 → 마지막 수정만 커밋 확인
4. 봇이 sub-agent 작업 완료 → 커밋 로그에 micro-commit 기록 확인