{
  "summary": "Read-only audit of the AI coding harness to find legacy rules, duplicate instructions, global-context tax, over-broad skills, and risky permissions. Report only — no file edits.",
  "agentCount": 11,
  "logs": [
    "parallel[2] failed: agent({schema}): subagent completed without calling StructuredOutput (after 2 in-conversation nudges)",
    "parallel[3] failed: agent({schema}): subagent completed without calling StructuredOutput (after 2 in-conversation nudges)",
    "수집된 발견 항목: 49건"
  ],
  "result": {
    "report": "## 어드버서리얼 보정\n\nAdversarial Reviewer가 직접 검증으로 Planner 권고를 뒤집은 항목이다. 아래 두 건은 본문 전체에서 보정된 값을 사용한다.\n\n| 경로 | Planner 권고 | 보정 권고 | 뒤집은 근거 |\n|------|------------|---------|-----------|\n| `.claude/rules/autopus/lore-commit.md` + `.claude/skills/autopus/lore-commit.md` | SHRINK | **KEEP** | SHRINK 근거 2개가 모두 사실과 반대다. git log 전체 히스토리에서 Co-Authored-By는 0건이고 최근 15개 커밋 전부 Lore 형식 + 🐙 사인오프를 정확히 따른다(100% 준수). `auto check --lore`도 실재한다 — `/usr/local/bin/auto`는 22MB 바이너리이고 `pre-commit-lore.sh`가 매 커밋 능동 게이트한다. 능동 훅 + 100% 준수로 입증된 load-bearing 규칙이라 KEEP. |\n| `.claude/skills/autopus/monitor-patterns.md` | DELETE | **SPLIT** | `idea.md:277`이 이 파일을 라이브 참조한다(`명령 템플릿과 line-buffered grep 규칙은 monitor-patterns.md를 따릅니다`). idea.md는 SKILL.md 라우터에 연결된 살아있는 스킬이라, 단독 삭제 시 dangling reference가 발생한다. idea.md 축소 작업과 묶어서(coupled)만 처리하는 SPLIT으로 보정. 자동 삭제 금지. |\n\n---\n\n## 발견 항목 상세\n\n### 전역 컨텍스트세 (always-on 중복·모순)\n\n**[1] CLAUDE.md 가이드라인 1~10 이중 주입**\n- 경로: `/home/lucas/CLAUDE.md` vs `/home/lucas/.www/kakago/CLAUDE.md` (가이드라인 1~10, ~135줄)\n- 현재 목적: 매 세션 always-on으로 주입되는 LLM 행동 가이드라인 1~10.\n- 발견한 문제: 전역본과 프로젝트본의 가이드라인 1~10 본문이 바이트 단위로 동일하다. 같은 ~135줄이 한 세션에 두 번 주입되어 컨텍스트 비용이 정확히 2배다.\n- 근거: `diff` 결과 line 140(프로젝트명 `lucas` vs `kakago`)만 차이, 1~139줄 전부 동일.\n- 추천 조치: SHRINK\n- 옮긴다면 추천 위치: (해당 없음 — 프로젝트본을 프로젝트 고유 delta만 남기고 전역 참조로 축소)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[2] 전역 CLAUDE.md의 always-on 주입 + Rule Isolation 자기모순**\n- 경로: `/home/lucas/CLAUDE.md` 전체 + 프로젝트 `CLAUDE.md:153` (Rule Isolation)\n- 현재 목적: 전역 가이드라인을 모든 프로젝트에 always-on으로 고정.\n- 발견한 문제: 자기모순이다. 프로젝트 CLAUDE.md:153은 부모 디렉토리 규칙을 무시하라고 명시하는데, 전역 CLAUDE.md ~177줄은 여전히 always-on 주입된다. 작동하면 순수 낭비 토큰이고, 작동 안 하면 전역의 'AI responses: English'가 실운용(한국어)과 충돌한다. 어느 쪽이든 이 프로젝트에 always-on일 이유가 없다.\n- 근거: 프로젝트 CLAUDE.md:153 'You MUST ignore any ... rules loaded from parent directories'. 동시에 전역 CLAUDE.md(177줄)가 claudeMd 컨텍스트에 주입됨.\n- 추천 조치: DELETE (이 프로젝트 주입에서 제거)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium (전역 설정 — 다른 프로젝트 영향)\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (사람 승인 필요)\n\n**[3] 언어 정책 3중 모순**\n- 경로: `/home/lucas/CLAUDE.md` Language Policy('AI responses: English') + `.claude/rules/autopus/language-policy.md`\n- 현재 목적: 언어 정책을 always-on으로 고정.\n- 발견한 문제: ai_responses에 대해 (1) 전역 CLAUDE.md는 English 단정, (2) language-policy.md 예시 표는 ko, (3) 같은 파일 Defaults는 en. 실운용은 한국어(커밋·메모리)다. 에이전트가 무엇을 따를지 결정 불가하다.\n- 근거: 전역 CLAUDE.md 'AI responses: English (en)'. language-policy.md 예시 표 `ai_responses | ko` + Defaults `en` 동시 존재. 최근 커밋 메시지 한국어.\n- 추천 조치: SHRINK (실운용과 일치하는 단일 권위 진술로 축약 — 응답/커밋 한국어, 코드 주석 영어)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[4] spec-quality.md (197줄, always-on, Go 경로 오인용)**\n- 경로: `.claude/rules/autopus/spec-quality.md`\n- 현재 목적: SPEC 4종 문서 작성 후 품질 체크리스트. /auto plan 파이프라인 전용.\n- 발견한 문제: 197줄 always-on이지만 일상 Next.js 코딩과 무관하다. 본문이 `pkg/spec/types.go`, `pkg/orchestra/output_parser.go` 등 Go 심볼을 실제 코드처럼 인용하는데 이 repo엔 go.mod도 pkg/spec도 없다(autopus-adk Go repo 규칙 복사).\n- 근거: ls 결과 NO go.mod / NO pkg/spec, package.json+prisma만 존재. spec-quality.md 본문에 다수 Go 심볼.\n- 추천 조치: MOVE\n- 옮긴다면 추천 위치: on-invoke — `.claude/skills/auto/SKILL.md`가 /auto plan|spec 실행 시에만 로드하도록 참조\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[5] context7-docs.md (148줄, always-on 절차)**\n- 경로: `.claude/rules/autopus/context7-docs.md`\n- 현재 목적: 라이브러리 작업 전 Context7 MCP 문서 fetch 파이프라인 절차(Phase 1.8).\n- 발견한 문제: 148줄 always-on이지만 /auto go Phase 1.8 전용이다. context7 MCP 서버 instruction이 이미 세션마다 별도 주입되므로 일상 문서 fetch엔 이 148줄이 중복이다. SPEC-CTX7-001 같은 ADK 내부 SPEC ID도 참조한다.\n- 근거: 전체가 'Phase 1.8 (Doc Fetch)', '## Ref SPEC-CTX7-001' 파이프라인 절차.\n- 추천 조치: MOVE\n- 옮긴다면 추천 위치: on-invoke (/auto go Phase 1.8) — SKILL.md 참조\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[6] techstack-freshness.md (65줄, SPEC 산출물 전용)**\n- 경로: `.claude/rules/autopus/techstack-freshness.md`\n- 현재 목적: greenfield/brownfield 기술스택 freshness 규칙, research.md/prd.md에 Technology Stack Decision 표 강제.\n- 발견한 문제: 65줄 always-on이나 출력 대상이 SPEC 산출물(research/prd)이다. `pkg/techstack.InferMode()`를 source contract로 인용하지만 이 repo에 pkg/techstack 없음. 일상 brownfield 코딩엔 매 세션 가치 낮음.\n- 근거: 'Use pkg/techstack.InferMode() as the source contract'. ls 결과 NO pkg.\n- 추천 조치: MOVE\n- 옮긴다면 추천 위치: on-invoke (/auto plan) — SKILL.md 참조\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[7] worktree-safety.md (75줄, 런타임 소유 동작)**\n- 경로: `.claude/rules/autopus/worktree-safety.md`\n- 현재 목적: 병렬 executor worktree의 gc 금지·락 재시도·5슬롯 동시성을 규정.\n- 발견한 문제: worktree 생성/정리/동시성은 Claude Code 네이티브 EnterWorktree/ExitWorktree와 auto 런타임이 소유하는 동작이다. LLM 프롬프트 규칙으로 중복 기술할 필요 없다. 단일 솔로 repo라 5-worktree 병렬도 일어나지 않는다(`git worktree list` 1개).\n- 근거: 'These rules apply whenever parallel executor agents run ... during pipeline Phase 2'. 세션 deferred-tools에 EnterWorktree/ExitWorktree 노출.\n- 추천 조치: MOVE\n- 옮긴다면 추천 위치: on-invoke (/auto go Phase 2) / autopus-adk 런타임 문서 — always-on에서 제거\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[8] doc-storage.md (49줄, 멀티모듈 전제 부재)**\n- 경로: `.claude/rules/autopus/doc-storage.md`\n- 현재 목적: SPEC/BS/CHANGELOG를 meta repo와 module repo로 나눠 저장하는 매트릭스와 sync 커밋 규칙.\n- 발견한 문제: 전제하는 meta-repo+submodule 멀티모듈 구조가 이 프로젝트에 없다(`.gitmodules` 부재, 단일 repo). Module Detection이 Go 경로(pkg/cmd/internal)를 가정한다. /auto sync 시에만 의미.\n- 근거: 'WHEN /auto sync runs', Module Detection 경로 매칭. 검증상 .gitmodules 부재.\n- 추천 조치: MOVE\n- 옮긴다면 추천 위치: on-invoke (/auto sync) — SKILL.md 참조\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[9] objective-reasoning.md (81줄, 톤 가이드 과대)**\n- 경로: `.claude/rules/autopus/objective-reasoning.md`\n- 현재 목적: 증거기반 응답 톤 가이드.\n- 발견한 문제: 증거기반 톤은 일반적으로 유용하나 81줄 always-on은 톤 가이드치고 과하다. 짧은 원칙으로 압축 가능.\n- 근거: 81줄 본문, R1~R5 + Prohibited/Anti-Patterns 반복 서술.\n- 추천 조치: SHRINK\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[10] branding.md (64줄, 죽은 포인터)**\n- 경로: `.claude/rules/autopus/branding.md`\n- 현재 목적: 세션 시작/명령/규칙 적용 시 🐙 배너·푸터를 출력하는 5-tier 규정.\n- 발견한 문제: canonical source로 지정한 `templates/shared/branding-formats.md.tmpl`가 저장소 어디에도 없어(죽은 포인터) 규칙이 실행 불가능한 상태다. 매 세션/명령 배너·푸터 출력을 강제하는 장식 부담이기도 하다.\n- 근거: 'All branding formats are defined in templates/shared/branding-formats.md.tmpl'. 파일시스템 확인 결과 해당 .tmpl 부재.\n- 추천 조치: SHRINK (최소 배너 계약만 남기거나 깨진 tmpl 참조 제거)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: low\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[11] subagent-delegation.md (30줄) + 4파일 중복 블록**\n- 경로: `.claude/rules/autopus/subagent-delegation.md` + CLAUDE.md/GEMINI.md/AGENTS.md 내 중복 블록\n- 현재 목적: 3파일/200줄/멀티도메인 작업 시 서브에이전트 위임 강제.\n- 발견한 문제: Claude Code 런타임이 위임을 상황 기반으로 판단해 제공한다(이 세션에 superpowers:dispatching-parallel-agents 로드). 정량 임계값을 always-on 규칙으로 박으면 사소한 변경에도 위임을 유도해 역효과다. 같은 문구가 4파일에 중복.\n- 근거: 'Task modifies 3 or more files ... exceed 200 lines'. 동일 내용 GEMINI.md/CLAUDE.md/AGENTS.md 중복. 세션 스킬 목록에 위임 제공 스킬 존재.\n- 추천 조치: SHRINK (짧은 원칙으로 축약 + 중복 제거)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[12] deferred-tools.md (70줄)**\n- 경로: `.claude/rules/autopus/deferred-tools.md`\n- 현재 목적: 지연 로드 도구 스키마를 호출 전 ToolSearch로 선로드하라는 규칙.\n- 발견한 문제: 없음. 제품 '제약(지연 로딩)'을 보완하는 load-bearing 규칙이다. 이번 세션 system-reminder가 '스키마 미로드 직접 호출 시 InputValidationError'를 명시 — 규칙이 실제 한계를 막는다.\n- 근거: 세션 system-reminder의 InputValidationError 경고가 규칙 L9/L30 ToolSearch 선로드 규정과 정확히 대응.\n- 추천 조치: KEEP\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (KEEP)\n\n**[13] lore-commit.md (규칙 50줄 + 스킬 99줄)** — *어드버서리얼 보정 적용*\n- 경로: `.claude/rules/autopus/lore-commit.md` + `.claude/skills/autopus/lore-commit.md`\n- 현재 목적: Lore 커밋 형식·트레일러·🐙 사인오프 강제.\n- 발견한 문제: 표면상 rule/skill 내용 중복은 실재하나, Planner의 SHRINK 근거(Co-Authored-By 사용, CLI 부재)는 검증상 거짓이다. 능동 훅 + 100% 커밋 준수로 입증된 load-bearing 규칙이라 줄이면 그 규율이 사라진다.\n- 근거: git log 전체 Co-Authored-By 0건, 최근 15개 커밋 Lore + 🐙 정확 준수. `/usr/local/bin/auto` 22MB 바이너리 + `pre-commit-lore.sh` 능동 게이트.\n- 추천 조치: KEEP (rule을 source of truth로, skill 중복은 별도 깨끗한 dedup 정당화가 생기면 그때 처리)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (KEEP)\n\n**[14] CLAUDE.md #7 Plan+Checklist+Context Notes + #4 Goal-Driven**\n- 경로: `/home/lucas/.www/kakago/CLAUDE.md` #7, #4\n- 현재 목적: 비자명 작업 전 checklist.md + context-notes.md 강제.\n- 발견한 문제: 네이티브 TodoWrite/Task 추적과 부분 중복이다(세션이 TaskCreate 사용 권유 받음). 다만 순수 중복 아님 — checklist.md/context-notes.md는 docs/push-notification·docs/auth-redesign에 실제 산출되어 세션 간 영속성을 준다. '비자명 작업마다 항상 파일 강제'는 과하므로 영속 문서가 정말 필요한 다회차 작업으로 범위 축소.\n- 근거: 실제 산출물 존재 + 세션 system-reminder의 TaskCreate 권유 동시 확인.\n- 추천 조치: SHRINK\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[15] AGENTS.md (155줄) + GEMINI.md (39줄)**\n- 경로: `/home/lucas/.www/kakago/AGENTS.md`, `GEMINI.md`\n- 현재 목적: Codex/Gemini-CLI 플랫폼 진입 문서.\n- 발견한 문제: Claude always-on 컨텍스트세 기준 비용은 0이다(claudeMd 주입 블록에 미포함). 멀티플랫폼 유지비이지 세션세가 아니다. (부차: AGENTS.md 언어정책 필드 공란.)\n- 근거: 세션 claudeMd 컨텍스트에 본문 미포함. AGENTS.md L28-30 정책값 공란.\n- 추천 조치: KEEP\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가 (KEEP)\n\n### 스킬 품질 (스택 오적용·고아·중복)\n\n**[16] performance.md (153줄, Go 100%, 넓은 트리거)**\n- 경로: `.claude/skills/autopus/performance.md`\n- 현재 목적: 성능 측정/최적화 가이드.\n- 발견한 문제: 내용 100% Go(go test -bench, go tool pprof, net/http/pprof; JS 참조 0건)인데 트리거는 '성능'/'최적화'/'benchmark'로 매우 넓다. Next.js 성능 논의에서 오발동해 Go 코드를 주입한다 — 넓은 트리거 + 잘못된 스택 = 능동적으로 해롭다.\n- 근거: grep으로 Go 명령 다수, JS/lighthouse/web-vitals 0건. 프로젝트는 Next.js+Prisma.\n- 추천 조치: CONVERT (Lighthouse/Web Vitals/React Profiler/Prisma 분석으로 재작성, 워크플로 없으면 삭제)\n- 옮긴다면 추천 위치: 동일 경로 Next.js 스택용 전면 재작성\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (내용 전면 교체 필요)\n\n**[17] migration.md (162줄, Go 예시)**\n- 경로: `.claude/skills/autopus/migration.md`\n- 현재 목적: 버전 업그레이드 전략 가이드.\n- 발견한 문제: 개념은 스택 무관하나 본문 100% Go(go list -m -u all, go mod graph/edit, go test -race). 넓은 트리거(upgrade/마이그레이션)로 Next.js 의존성 업그레이드 대화에서 go mod를 안내한다.\n- 근거: grep Go 명령 다수, JS 매칭 1건(generic).\n- 추천 조치: CONVERT (npm/pnpm·Next.js·Prisma migrate 예시로 재작성, 절차 골격 유지)\n- 옮긴다면 추천 위치: 동일 경로 재작성\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[18] monitor-patterns.md (202줄)** — *어드버서리얼 보정 적용*\n- 경로: `.claude/skills/autopus/monitor-patterns.md`\n- 현재 목적: Monitor tool로 orchestra Round 2 응답 대기하는 내부 배관.\n- 발견한 문제: autopus-adk 내부 orchestra 전용이고 참조하는 `.autopus/project/orchestra-patterns.yaml`가 부재(MISSING)다. 그러나 `idea.md:277`이 라이브 참조하므로 단독 삭제 시 dangling ref 발생.\n- 근거: idea.md:277 라이브 참조. orchestra-patterns.yaml MISSING 확인.\n- 추천 조치: SPLIT (idea.md 축소와 coupled로만 처리, 단독 삭제 금지)\n- 옮긴다면 추천 위치: idea.md 작업과 묶어 함께 제거/이전\n- 변경 시 위험도: medium\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가 (결합 해소 선행)\n\n**[19] idea.md (507줄, 300줄 초과)**\n- 경로: `.claude/skills/autopus/idea.md`\n- 현재 목적: 멀티프로바이더 orchestra 아이디어 발산 → BS 저장 워크플로우.\n- 발견한 문제: 507줄로 권장 한계 초과. orchestra 전용이며 `.autopus/brainstorms/`가 비어 있어 BS 산출 흔적이 없다. SKILL.md 라우터가 참조하므로 죽지는 않았다.\n- 근거: wc -l 507. ls brainstorms → BS-* 0건. SKILL.md 참조 존재.\n- 추천 조치: SHRINK (core 호출 규약만 SKILL.md, orchestra 전략/Round 2 상세는 reference.md 분리)\n- 옮긴다면 추천 위치: orchestra 상세 → reference.md\n- 변경 시 위험도: medium\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가 (라우터 참조)\n\n**[20] playwright-cli.md (206줄, 바이너리 부재 + MCP 중복)**\n- 경로: `.claude/skills/autopus/playwright-cli.md`\n- 현재 목적: playwright-cli 바이너리로 브라우저 자동화.\n- 발견한 문제: 의존 바이너리가 PATH에 없다(NOT in PATH). 동시에 세션에 Playwright MCP 서버가 로드되어 동일 기능을 제공한다. 실행 불가 CLI를 안내하며 동작 가능한 MCP와 충돌한다.\n- 근거: `which playwright-cli` 부재. 세션 deferred-tools에 mcp__plugin_playwright_playwright__* 다수.\n- 추천 조치: DELETE (Playwright MCP로 대체)\n- 옮긴다면 추천 위치: (다른 스킬의 playwright-cli 참조 확인 후 제거)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (참조 확인 권장)\n\n**[21] hash-anchored-edit.md (78줄, 고아 + 내장 동작 재서술)**\n- 경로: `.claude/skills/autopus/hash-anchored-edit.md`\n- 현재 목적: SHA256 앵커로 병렬 에이전트 파일 충돌 방지.\n- 발견한 문제: 병렬 worktree 멀티에이전트 전용 개념(file_ownership **/*.go)이고 핵심 메시지는 Edit 도구 내장 동작이다. 어떤 에이전트도 주입 안 함. '안전한 수정' 한국어 트리거가 일반 편집에 오발동.\n- 근거: 'backend-dev: [\"**/*.go\"]', Edit 내장 충돌감지 재서술, 넓은 트리거.\n- 추천 조치: DELETE (병렬 worktree 실사용 시 worktree-isolation에 흡수)\n- 옮긴다면 추천 위치: (필요시 worktree-isolation 스킬)\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[22] tdd.md (105줄, Go 예시, 4에이전트 주입)**\n- 경로: `.claude/skills/autopus/tdd.md`\n- 현재 목적: RED-GREEN-REFACTOR TDD 스킬. executor/tester/debugger/deep-worker가 주입.\n- 발견한 문제: 예시 전부 Go(t *testing.T, t.Parallel(), go test -race). 이 프로젝트는 Go 0파일 Next.js/Prisma — Vitest/Jest/Playwright를 써야 한다. 4개 에이전트가 TS 작업 중 무관한 Go 패턴을 받는다.\n- 근거: 본문 Go, find *.go 0건. 4개 에이전트가 `- tdd` 선언.\n- 추천 조치: CONVERT (Vitest/Jest + Playwright로 교체, 방법론 골격 유지)\n- 옮긴다면 추천 위치: 동일 경로 재작성\n- 변경 시 위험도: medium\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[23] verification.md (101줄, Go 게이트, 빌트인 중복)**\n- 경로: `.claude/skills/autopus/verification.md`\n- 현재 목적: 구현 후 품질 게이트 검증. 6개 에이전트 주입.\n- 발견한 문제: 2단계 게이트 전부 Go(go build, go test -race, golangci-lint, go vet). Next.js에서 실행 불가. 빌트인 /verify와 중복.\n- 근거: 본문 Go 명령. 6개 에이전트 `- verification` 선언. 빌트인 `verify` 스킬 존재.\n- 추천 조치: CONVERT (npm run build / vitest run / eslint / tsc --noEmit로 교체)\n- 옮긴다면 추천 위치: 동일 경로 재작성\n- 변경 시 위험도: medium\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[24] review.md (117줄, @AX 미사용 컨벤션 + Go 우선)**\n- 경로: `.claude/skills/autopus/review.md`\n- 현재 목적: TRUST 5 코드리뷰. reviewer/security-auditor 주입.\n- 발견한 문제: @AX 태그 시스템(ANCHOR/WARN/fan_in≥3)은 autopus-adk 내부 컨벤션으로 미적용. 본문 Go 우선. 빌트인 /code-review·/review·/simplify와 중복.\n- 근거: @AX Compliance 섹션, Go 우선 매트릭스. 빌트인 스킬 다수 존재.\n- 추천 조치: SHRINK (@AX 섹션 제거, TS/Next.js 게이트만 남김)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[25] security-audit.md (113줄, Go 예시, 빌트인 중복)**\n- 경로: `.claude/skills/autopus/security-audit.md`\n- 현재 목적: OWASP Top 10 보안감사. security-auditor 주입.\n- 발견한 문제: 체크리스트 골격은 언어 무관하나 예시 전부 Go(govulncheck, go.sum). Next.js는 npm audit/Prisma 바인딩 필요. 빌트인 /security-review와 중복.\n- 근거: 본문 Go, 빌트인 `security-review` 존재.\n- 추천 조치: CONVERT (TS/Prisma 예시로 교체 또는 /security-review 위임)\n- 옮긴다면 추천 위치: 동일 경로 재작성 또는 빌트인 위임\n- 변경 시 위험도: medium\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[26] testing-strategy.md (146줄, Go + QAMESH 블록)**\n- 경로: `.claude/skills/autopus/testing-strategy.md`\n- 현재 목적: 통합/E2E/계약 테스트 전략. tester 주입.\n- 발견한 문제: (1) 예시 전부 Go(TestMain, go tool cover). (2) 75-86줄 QAMESH 블록이 `auto qa` CLI와 `.autopus/qa/journeys/**`를 설명 — 순수 autopus-adk 릴리스QA 머신, 제품 개발 무관.\n- 근거: Go 예시 + QAMESH 8종 CLI. .autopus/qa/ 미사용.\n- 추천 조치: SHRINK (QAMESH 제거, Go 예시 → Playwright/Vitest)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[27] refactoring.md (117줄, 고아 + Go)**\n- 경로: `.claude/skills/autopus/refactoring.md`\n- 현재 목적: 안전한 리팩토링 패턴.\n- 발견한 문제: 어떤 에이전트도 주입 안 하는 고아다(에이전트는 별도 ast-refactoring 참조). 예시 전부 Go(gopls rename, go vet), 미사용 @AX:ANCHOR 컨벤션. 고아라 정리 안전.\n- 근거: exact-word grep으로 `refactoring`(ast- 제외) 참조 0건. Go 예시.\n- 추천 조치: DELETE\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[28] using-autopus.md (123줄, 하네스 메타 + 고아)**\n- 경로: `.claude/skills/autopus/using-autopus.md`\n- 현재 목적: Autopus-ADK 설치/업데이트 메타가이드.\n- 발견한 문제: 제품 개발이 아닌 하네스 설치 메타다. 고아(참조 0건). 넓은 트리거('autopus'/'harness').\n- 근거: external 참조 0건. auto init/doctor/update 설치 CLI 본문.\n- 추천 조치: DELETE (필요시 autopus-adk 문서로 이전)\n- 옮긴다면 추천 위치: autopus-adk README\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[29] writing-skills.md (154줄, 고아 + 빌트인 중복)**\n- 경로: `.claude/skills/autopus/writing-skills.md`\n- 현재 목적: 기술문서 + CC 스킬/에이전트 작성 가이드.\n- 발견한 문제: 하네스 저작 메타스킬. 고아(참조 0건). 빌트인 skill-creator·superpowers:writing-skills와 정면 중복. 넓은 트리거('문서 작성').\n- 근거: external 참조 0건. 빌트인 `skill-creator` 존재.\n- 추천 조치: DELETE (빌트인 skill-creator 사용)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[30] subagent-dev.md (131줄, 메타 + 1에이전트 주입)**\n- 경로: `.claude/skills/autopus/subagent-dev.md`\n- 현재 목적: 서브에이전트 설계/오케스트레이션 가이드. architect 주입.\n- 발견한 문제: CC 에이전트 저작 메타로 제품 개발 무관. subagent-delegation 규칙·writing-skills와 중복. architect 1곳만 주입.\n- 근거: 프론트매터/permissionMode 카탈로그. architect.md만 선언.\n- 추천 조치: SHRINK (architect가 실제 쓰는 핵심만 남기고 필드 카탈로그 축소)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[31] worktree-isolation.md (216줄, 규칙과 대량 중복)**\n- 경로: `.claude/skills/autopus/worktree-isolation.md`\n- 현재 목적: Phase 2 병렬 worktree 격리/병합. SKILL.md @-embed.\n- 발견한 문제: 전적으로 파이프라인 내부 기계(SPEC-WORKTREE-001)이고 worktree-safety.md 규칙과 대량 중복(GC억제/lock retry/5슬롯). Go 경로 예시. 216줄. 솔로 개발에선 거의 미발동.\n- 근거: Safety Rules가 worktree-safety.md와 동일. SKILL.md가 둘 다 참조(이중 유지).\n- 추천 조치: SHRINK (중복분 규칙으로 일원화, 스킬은 참조만)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가\n\n**[32] spec-review.md (85줄, 실 CLI 구동)**\n- 경로: `.claude/skills/autopus/spec-review.md`\n- 현재 목적: 멀티프로바이더 SPEC 리뷰 게이트. `auto spec review` CLI 구동.\n- 발견한 문제: 없음 — Q-Z 중 유일하게 실제 CLI가 구동하는 정당한 파이프라인 스킬. 짧고 description 좁아 오발동 낮음.\n- 근거: auto/SKILL.md @embed + review_gate 분기에서 `auto spec review` 호출.\n- 추천 조치: KEEP\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (KEEP)\n\n**[33] 기획 파이프라인 스킬군 (metrics/prd/planning/product-discovery/korean-writing-refiner)**\n- 경로: `.claude/skills/autopus/{metrics.md(138),prd.md(198),planning.md(130),product-discovery.md(141),korean-writing-refiner.md(139)}`\n- 현재 목적: 제품 기획/디스커버리/한국어 교정 스킬군.\n- 발견한 문제: 없음. 스택 무관이고 실 SPEC(SPEC-APP-001, SPEC-TR-001 4파일 816줄)이 존재해 파이프라인 실사용 증거가 있다. korean-writing-refiner는 '자동 미적용' 조건을 명시한 모범 스킬.\n- 근거: ls specs → 실 SPEC 존재. korean-writing-refiner 본문에 자동적용 차단 섹션.\n- 추천 조치: KEEP\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (KEEP)\n\n### 안전·권한 (사람 승인 필요 영역)\n\n**[34] node -e 프리픽스 와일드카드 (임의 코드 실행)**\n- 경로: `.claude/settings.local.json:31,64`\n- 현재 목적: Prisma 쿼리 디버깅용 node -e 허용.\n- 발견한 문제: `Bash(node -e ' *)`는 `node -e '`로 시작하는 모든 JS를 무프롬프트 실행한다 — 파일쓰기/네트워크/프로세스 제어 포함 임의 코드 실행을 영구 allow한 것과 같다.\n- 근거: line 31 prefix wildcard + line 49/50 동일 클래스.\n- 추천 조치: SHRINK (와일드카드를 실제 필요한 구체 명령으로 교체)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 가능 (단, 권한 변경이라 사람 승인 권장)\n\n**[35] sudo 와일드카드 (권한 상승 자동화)**\n- 경로: `.claude/settings.local.json:14-15,63`\n- 현재 목적: 배포/재시작/로그용 sudo 허용.\n- 발견한 문제: `Bash(sudo cp *)`는 임의 파일을 root로 임의 위치에 덮어쓸 수 있어(시스템 바이너리/설정 교체) 사실상 권한 상승 자동화다. 인자 검증 전무.\n- 근거: line 14 `sudo cp *`, 15 `sudo systemctl *`, 63 `sudo journalctl *`.\n- 추천 조치: SHRINK (특정 배포/경로로 좁힘)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (사람 승인)\n\n**[36] npm/npx/node 와일드카드 tracked allow (공급망)**\n- 경로: `.claude/settings.json:53-57`\n- 현재 목적: 일상 Next.js 개발 프롬프트 회피.\n- 발견한 문제: `node *`/`npx *`/`npm *`는 임의 코드 실행 클래스다. npx는 레지스트리 임의 패키지를 즉시 실행(공급망 위험). git tracked라 모든 클론/세션에 적용 — 영향 범위가 settings.local보다 넓다.\n- 근거: line 53-57 와일드카드. tracked 파일.\n- 추천 조치: SHRINK (특히 npx 좁힘, scoped npm run 유지)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가 (사람 승인)\n\n**[37] Read(//etc/**) 과확장**\n- 경로: `.claude/settings.local.json:6`\n- 현재 목적: nginx/caddy 설정 읽기.\n- 발견한 문제: `Read(//etc/**)`는 /etc 전체(서비스 설정·시크릿)를 무프롬프트 읽기 허용한다. line 4-5의 `/etc/nginx/**`, `/etc/caddy/**`로 충분한데 6번이 과확장.\n- 근거: line 4-6. 6번이 4-5를 무의미하게 만듦.\n- 추천 조치: SHRINK (넓은 항목 제거, 구체 경로 유지)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (사람 승인)\n\n**[38] psql 평문 자격증명**\n- 경로: `.claude/settings.local.json:43-45`\n- 현재 목적: DB 디버깅용 psql allow + 연결문자열 박제.\n- 발견한 문제: DB 사용자/비밀번호(`transit:transit`)가 allow 목록에 평문 노출. 실행 흔적이 있어 유효 working credential로 봐야 한다. settings.local.json은 .gitignore되어 외부 유출 위험은 medium으로 완화되나 로컬 파일·백업·세션 컨텍스트엔 잔존.\n- 근거: line 43-45 인라인 평문. `git check-ignore` → IGNORED.\n- 추천 조치: SHRINK (env-var 참조로 교체 또는 비밀번호 제거)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 불가 (사람 승인 — 자격증명)\n\n**[39] npx -y @latest MCP 서버 (버전 핀 부재)**\n- 경로: `.mcp.json:9,18` + `.codex/config.toml:29`\n- 현재 목적: context7/sequential-thinking MCP를 항상 최신 실행.\n- 발견한 문제: `npx -y @...@latest`는 세션마다 최신 패키지를 받아 즉시 실행한다(-y로 확인 생략). 버전 핀 부재로 업스트림 손상 시 임의 코드 로컬 실행(공급망). .codex도 동일 패턴 중복.\n- 근거: .mcp.json line 9/18, .codex/config.toml line 29 @latest.\n- 추천 조치: SHRINK (버전 핀, @latest 제거)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가 (사람 승인)\n\n**[40] 박제된 일회성 kill/pkill PID**\n- 경로: `.claude/settings.local.json:21-22,26,29,32,37,40-41,52,54,61`\n- 현재 목적: 멈춘 next-server 종료 일회성 명령이 영구 allow로 누적.\n- 발견한 문제: 특정 PID(`kill -9 1469095` 등)는 그 세션에서만 의미인데 영구 박제됐다. 위험은 낮으나(죽은 PID 무해, 제거 시 fail-closed) allow 목록을 부풀려 감사성을 떨어뜨린다.\n- 근거: 다수의 1회성 PID kill + `pkill -f` 패턴.\n- 추천 조치: DELETE (stale PID 항목 제거)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: high\n- /harness-diet 자동 처리 가능 여부: 가능\n\n**[41] 매 Bash마다 auto check --arch / react check 훅**\n- 경로: `.claude/settings.json:3-26` + `.codex/hooks.json`\n- 현재 목적: 모든 Bash 전후 아키텍처/CI 반응 검사.\n- 발견한 문제: matcher가 `Bash`라 모든 Bash마다 외부 `/usr/local/bin/auto`가 실행된다(timeout 30/60s 지연). `--arch`는 Go 아키텍처 규칙 대상이라(pre-commit-arch.sh가 `.go$`만 필터) 이 Next.js 스택에선 산출물이 거의 없다 — 매 Bash 비용은 드는데 효과 빈약.\n- 근거: matcher:Bash + auto check --arch. pre-commit-arch.sh `grep \"\\.go$\"`.\n- 추천 조치: SHRINK (matcher 좁힘 또는 이 스택에서 arch 게이트 비활성)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: medium\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가 (훅 변경 — 사람 승인)\n\n**[42] react-review / react-ci-failure 훅 (상태파일 기록)**\n- 경로: `.claude/hooks/autopus/react-review.sh:27-36`, `react-ci-failure.sh:22-31`\n- 현재 목적: PR 변경요청·CI 실패 이벤트 시 루트에 JSON 상태파일 기록 + auto react check.\n- 발견한 문제: 루트에 고정명 JSON 파일을 쓰고(워크스페이스 오염, 낮은 위험), REVIEWER/PR_BRANCH 등 외부값을 검증 없이 보간(특수문자 시 JSON 깨짐 가능). 파괴적 부작용은 없음. 이벤트 트리거형이라 매 세션 실행 아님.\n- 근거: `cat > .auto-review-request.json`, 미검증 보간.\n- 추천 조치: KEEP (보간 하드닝은 부차 후속, 제거 사유 아님)\n- 옮긴다면 추천 위치: (해당 없음)\n- 변경 시 위험도: low\n- 신뢰도: medium\n- /harness-diet 자동 처리 가능 여부: 불가 (KEEP)\n\n**[43] 멀티플랫폼 미러 (.codex/.gemini/.opencode + manifest)**\n- 경로: `.codex/` + `.gemini/` + `.opencode/` + `.autopus/{codex,gemini-cli,opencode}-manifest.json`\n- 현재 목적: Codex/Gemini/OpenCode용 하네스 복제본.\n- 발견한 문제: 활성 플랫폼은 Claude Code(현재 세션, .claude/ 활성 훅)다. 미러 ~30k줄(.codex 12,310 + .gemini 13,627 + .opencode 4,047)은 Claude 세션에서 전혀 로드되지 않는다. 실사용은 이 위치에서 검증 불가(config.toml model='gpt-5.5'는 install 기본값일 뿐). auto sync가 4종을 유지하므로 미사용이면 4배 유지비. 확정 DELETE는 사용여부 미확인으로 부적절.\n- 근거: 세션 claudeMd 미포함. 활성 훅은 .claude/ 경로만. manifest 4종.\n- 추천 조치: KEEP (사용자에게 실사용 플랫폼 확인 후 미사용분 install 비활성)\n- 옮긴다면 추천 위치: (확인 후 autopus 플랫폼 목록 축소)\n- 변경 시 위험도: medium\n- 신뢰도: low\n- /harness-diet 자동 처리 가능 여부: 불가 (사람 확인 필요)\n\n---\n\n## 1. 전체 요약\n\n**하네스 규모.** 이 프로젝트(kakago, Next.js+Prisma)의 Claude Code 하네스는 프로젝트 규칙 13개(926줄)가 always-on으로 주입되고, 동일 13개 규칙(926줄)이 전역에도 존재해 사실상 이중 로드 상태다. 스킬은 autopus 45개(~7203줄, 스카우트의 50은 오기) + 프로젝트 전용 2개, 서브에이전트 16개, 셸 훅 8개, 멀티플랫폼 미러 ~30k줄(.codex/.gemini/.opencode)이 따로 유지된다.\n\n**핵심 문제 (상위 5).**\n1. **always-on 컨텍스트세 과적재.** spec-quality(197줄)·context7-docs(148줄)·techstack-freshness·worktree-safety·doc-storage 등 SPEC 파이프라인 전용 규칙이 일상 코딩 세션마다 주입된다. 이들은 on-invoke로 옮겨야 한다.\n2. **CLAUDE.md 이중 주입 + 자기모순.** 전역·프로젝트 CLAUDE.md가 가이드라인 1~10을 바이트 단위로 중복하는데, 프로젝트의 Rule Isolation은 전역을 무시하라고 명시한다 — 토큰을 쓰고 곧바로 폐기 지시.\n3. **Go 저장소 규칙의 Next.js 오적용.** 다수 규칙·스킬이 pkg/spec/types.go 등 존재하지 않는 Go 경로를 실제 코드처럼 인용하고, performance/migration/tdd/verification/security-audit 스킬은 본문 100% Go 예시다 — 넓은 트리거와 결합 시 능동적으로 해롭다.\n4. **권한 allow 과적재.** psql 평문 자격증명, sudo 와일드카드, node/npx 임의 코드 실행 클래스, 박제된 일회성 PID kill이 영구 allow로 누적됐다.\n5. **고아·중복 스킬.** refactoring/using-autopus/writing-skills는 고아이고, lore-commit 스킬·worktree-isolation은 규칙과 중복, playwright-cli는 부재 바이너리를 안내한다.\n\n**총 발견 수: 43개 항목** (단일 항목으로 묶인 그룹 포함).\n\n**권고 분포 (어드버서리얼 보정 반영).**\n- DELETE: 5 (refactoring, using-autopus, writing-skills, hash-anchored-edit, playwright-cli) + 권한 1(박제 PID kill) + 전역 CLAUDE.md 1 = **7**\n- SHRINK: CLAUDE.md dedup, 언어정책, objective-reasoning, branding, subagent-delegation, idea, review, testing-strategy, subagent-dev, worktree-isolation, CLAUDE.md #7, node-e wildcard, sudo, npm/npx, Read(/etc), psql, npx@latest, auto check 훅 = **18**\n- MOVE: spec-quality, context7-docs, techstack-freshness, worktree-safety, doc-storage = **5**\n- CONVERT: performance, migration, tdd, verification, security-audit = **5**\n- SPLIT: monitor-patterns = **1**\n- KEEP: deferred-tools, lore-commit, AGENTS/GEMINI, spec-review, 기획 스킬군(5), react 훅, 멀티플랫폼 미러 = **7**\n\n---\n\n## 2. 유지해야 할 항목\n\n- `.claude/rules/autopus/deferred-tools.md` — 제품 제약(지연 로딩 InputValidationError)을 막는 load-bearing.\n- `.claude/rules/autopus/lore-commit.md` + 스킬 — **(어드버서리얼 보정)** 능동 훅 + 100% 커밋 준수로 입증된 load-bearing. 줄이지 말 것.\n- `.claude/skills/autopus/spec-review.md` — 실 CLI(`auto spec review`) 구동.\n- 기획 파이프라인 스킬군 (metrics/prd/planning/product-discovery/korean-writing-refiner) — 스택 무관 + 실 SPEC 사용 증거.\n- `.claude/hooks/autopus/react-review.sh`, `react-ci-failure.sh` — 이벤트 트리거형, 파괴적 부작용 없음.\n- AGENTS.md / GEMINI.md — Claude always-on 비용 0(멀티플랫폼 유지비일 뿐).\n- 멀티플랫폼 미러(.codex/.gemini/.opencode) — 실사용 확인 전까지 보존.\n\n## 3. 줄여야 할 항목\n\nCLAUDE.md 가이드라인 dedup, 언어정책 3중 모순 통합, objective-reasoning(81→짧은 원칙), branding(깨진 tmpl 참조 제거), subagent-delegation(4파일 중복 제거 + 원칙 축약), idea(orchestra 상세 분리), review(@AX 제거), testing-strategy(QAMESH 제거 + 예시 교체), subagent-dev(필드 카탈로그 축소), worktree-isolation(규칙으로 일원화), CLAUDE.md #7(다회차 작업으로 범위 축소).\n\n## 4. 전역 지침에서 Skill로 옮길 항목 (always-on → on-invoke)\n\n- `spec-quality.md` (197줄) → /auto plan|spec 호출 시 SKILL.md가 로드\n- `context7-docs.md` (148줄) → /auto go Phase 1.8\n- `techstack-freshness.md` (65줄) → /auto plan\n- `worktree-safety.md` (75줄) → /auto go Phase 2 / autopus-adk 런타임 문서\n- `doc-storage.md` (49줄) → /auto sync\n\n이들은 always-on 규칙에서 제거하고 해당 파이프라인 스킬이 참조하도록 옮기면 매 세션 컨텍스트세가 ~534줄 줄어든다.\n\n## 5. Skill에서 reference.md 또는 examples.md로 분리할 항목\n\n- `idea.md` (507줄, 300줄 초과) — core 호출 규약만 SKILL.md 본문에 두고 orchestra 전략/Round 2 monitor 상세는 `reference.md`로 분리.\n- `worktree-isolation.md` (216줄) — Safety Rules(R5) 중복분을 worktree-safety 규칙으로 일원화하고 스킬엔 참조만 남김.\n- `monitor-patterns.md` — **(SPLIT)** idea.md 분리 작업과 묶어 함께 처리. 단독 분리/삭제 금지(idea.md:277 라이브 참조).\n\n## 6. 삭제 후보\n\n- `.claude/skills/autopus/refactoring.md` — 고아 + Go 예시.\n- `.claude/skills/autopus/using-autopus.md` — 하네스 설치 메타 + 고아.\n- `.claude/skills/autopus/writing-skills.md` — 고아 + 빌트인 skill-creator 중복.\n- `.claude/skills/autopus/hash-anchored-edit.md` — 고아 + Edit 내장 동작 재서술.\n- `.claude/skills/autopus/playwright-cli.md` — 부재 바이너리 + Playwright MCP 중복.\n- `.claude/settings.local.json` 박제된 일회성 kill/pkill PID — stale, fail-closed 안전.\n\n## 7. 사람이 직접 승인해야 하는 위험한 변경 (high-risk: 권한/훅/자격증명/전역)\n\n- **psql 평문 자격증명** (`settings.local.json:43-45`) — env-var 참조로 교체. 자격증명 회전 검토.\n- **sudo 와일드카드** (`settings.local.json:14-15,63`) — `sudo cp *`는 권한 상승 자동화. 특정 경로로 좁힘.\n- **npm/npx/node tracked 와일드카드** (`settings.json:53-57`) — npx 공급망 위험. git tracked라 영향 범위 넓음.\n- **Read(//etc/**)** (`settings.local.json:6`) — /etc 전체 읽기. 구체 경로로 축소.\n- **npx -y @latest MCP** (`.mcp.json:9,18`) — 버전 핀 부재 공급망. 버전 고정.\n- **매 Bash auto check --arch 훅** (`settings.json:3-26`) — 훅 변경이라 사람 승인. 이 스택에서 효과 빈약한데 모든 셸에 지연 부과.\n- **전역 CLAUDE.md DELETE** (이 프로젝트 주입에서 제거) — changeRisk medium, 다른 프로젝트에 영향하므로 사람 판단 필요.\n- **멀티플랫폼 미러 비활성** — 실사용 플랫폼 확인 후 install 목록 축소.\n\n## 8. /harness-diet로 넘겨도 되는 low-risk 변경 목록 (harnessDietSafe:true)\n\n- CLAUDE.md 가이드라인 1~10 dedup (SHRINK)\n- spec-quality.md → on-invoke MOVE\n- context7-docs.md → on-invoke MOVE\n- techstack-freshness.md → on-invoke MOVE\n- worktree-safety.md → on-invoke MOVE\n- doc-storage.md → on-invoke MOVE\n- objective-reasoning.md SHRINK\n- branding.md SHRINK (깨진 tmpl 참조 제거)\n- subagent-delegation.md SHRINK + 중복 제거\n- refactoring.md DELETE\n- using-autopus.md DELETE\n- writing-skills.md DELETE\n- hash-anchored-edit.md DELETE\n- node -e 프리픽스 와일드카드 SHRINK (권한이므로 적용 후 사람 확인 권장)\n- 박제된 일회성 kill/pkill PID DELETE\n\n(주의: 어드버서리얼 `confirmedSafe`는 '분류 미반박'을 뜻할 뿐 `harnessDietSafe`와 다르다. lore-commit·monitor-patterns 등 harnessDietSafe:false 항목은 이 목록에서 제외했다.)\n\n## 9. /harness-diet 실행용 추천 프롬프트\n\n```\n/harness-diet 다음 low-risk 변경만 적용해줘. 권한/훅/자격증명/전역 CLAUDE.md/멀티플랫폼 미러는 건드리지 말고, 아래 KEEP·SPLIT 항목도 절대 손대지 마.\n\n[MOVE — always-on 규칙을 on-invoke로]\n- .claude/rules/autopus/spec-quality.md → /auto plan|spec 호출 시에만 SKILL.md가 로드하도록\n- .claude/rules/autopus/context7-docs.md → /auto go Phase 1.8\n- .claude/rules/autopus/techstack-freshness.md → /auto plan\n- .claude/rules/autopus/worktree-safety.md → /auto go Phase 2\n- .claude/rules/autopus/doc-storage.md → /auto sync\n\n[SHRINK]\n- 전역 vs 프로젝트 CLAUDE.md 가이드라인 1~10 중복 제거(프로젝트는 delta만)\n- objective-reasoning.md 짧은 원칙으로 압축\n- branding.md 깨진 templates/shared/branding-formats.md.tmpl 참조 제거\n- subagent-delegation.md 축약 + CLAUDE.md/GEMINI.md/AGENTS.md 중복 블록 정리\n\n[DELETE — 고아/부재/내장중복]\n- .claude/skills/autopus/refactoring.md\n- .claude/skills/autopus/using-autopus.md\n- .claude/skills/autopus/writing-skills.md\n- .claude/skills/autopus/hash-anchored-edit.md\n- .claude/settings.local.json 박제된 일회성 kill -9 <pid> / pkill / kill -HUP 항목\n\n[권한 SHRINK — 적용 후 사람에게 확인]\n- .claude/settings.local.json Bash(node -e ' *) 와일드카드를 실제 필요 명령으로 좁힘\n\n[절대 손대지 말 것 — KEEP/SPLIT]\n- lore-commit(규칙+스킬): 능동 훅 + 100% 준수로 입증된 load-bearing\n- monitor-patterns.md: idea.md:277 라이브 참조 — idea.md 작업과 묶을 때만 처리\n- deferred-tools.md, spec-review.md, 기획 스킬군, react 훅, 멀티플랫폼 미러\n- 모든 sudo/psql/npx/etc 권한 와일드카드와 auto check 훅: 사람 승인 전까지 유지\n\n각 변경 전 대상 파일을 읽어 실제 내용과 줄 번호를 재확인하고, MOVE는 참조가 끊기지 않게 SKILL.md 연결을 함께 갱신해줘.\n```\n\n---\n\n`.cursor/rules/**` — 해당 없음 (`.cursor` 디렉토리 부재 확인).\n`.claude/workflows/**` — 해당 없음 (`.claude/workflows` 디렉토리 부재 확인).",
    "findingsCount": 49,
    "inventory": {
      "areas": [
        {
          "area": "프로젝트 규칙 (.claude/rules/autopus)",
          "paths": "/home/lucas/.www/kakago/.claude/rules/autopus/*.md",
          "fileCount": 13,
          "totalLines": 926,
          "role": "EARS/품질/커밋/브랜딩/언어정책 등 행동 규칙 13개. spec-quality.md(197줄) 단독으로 전체의 21% 차지. 다수가 Go 경로(pkg/spec/types.go 등)를 실제 코드처럼 인용 — Next.js 앱과 무관한 autopus-adk 저장소용 규칙 복사 정황.",
          "loadScope": "always-on"
        },
        {
          "area": "전역 규칙 (~/.claude/rules/autopus)",
          "paths": "/home/lucas/.claude/rules/autopus/*.md",
          "fileCount": 13,
          "totalLines": 926,
          "role": "프로젝트 규칙과 사실상 동일한 13개 규칙이 전역에도 존재. 프로젝트 CLAUDE.md의 'Rule Isolation' 지시가 이 전역본을 무시하라고 명시 — 매 세션 로드되지만 곧바로 무시 대상으로 선언되는 이중 로드.",
          "loadScope": "always-on"
        },
        {
          "area": "최상위 가이드라인 (CLAUDE/AGENTS/GEMINI)",
          "paths": "/home/lucas/.www/kakago/{CLAUDE.md,AGENTS.md,GEMINI.md} + /home/lucas/CLAUDE.md",
          "fileCount": 4,
          "totalLines": 544,
          "role": "프로젝트 CLAUDE.md(173)와 전역 CLAUDE.md(177)가 가이드라인 1~10 거의 동일 중복. AGENTS.md(155)·GEMINI.md(39)는 동일 Autopus 헤더의 멀티플랫폼 사본. 프로젝트 CLAUDE.md는 'AI responses: English'이나 실제 운용은 한국어 — 정책 충돌.",
          "loadScope": "always-on"
        },
        {
          "area": "auto 커맨드 라우터",
          "paths": "/home/lucas/.www/kakago/.claude/skills/auto/SKILL.md",
          "fileCount": 1,
          "totalLines": 2813,
          "role": "/auto 서브커맨드 라우터. 거대 단일 파일이나 스킬 본문이므로 /auto 호출 시에만 로드됨(매 세션 always-on 아님). 항상 로드되는 것은 1줄 description뿐.",
          "loadScope": "on-invoke"
        },
        {
          "area": "autopus 스킬 라이브러리",
          "paths": "/home/lucas/.www/kakago/.claude/skills/autopus/*.md",
          "fileCount": 45,
          "totalLines": 7203,
          "role": "tdd/refactoring/security-audit/spec-review 등 도메인 스킬 45개(스카우트의 50은 오기). 본문은 호출 시에만 로드. 다수가 SPEC 파이프라인 전용으로 일상 앱 개발과 무관할 수 있음.",
          "loadScope": "on-invoke"
        },
        {
          "area": "프로젝트 전용 스킬",
          "paths": "/home/lucas/.www/kakago/.claude/skills/{deploy.md,design-system.md}",
          "fileCount": 2,
          "totalLines": 271,
          "role": "deploy.md(97)·design-system.md(174). 이 프로젝트 고유로 작성된 스킬로 autopus 보일러플레이트와 구분됨. 호출 시 로드.",
          "loadScope": "on-invoke"
        },
        {
          "area": "서브에이전트 정의 (.claude/agents)",
          "paths": "/home/lucas/.www/kakago/.claude/agents/autopus/*.md",
          "fileCount": 16,
          "totalLines": 2845,
          "role": "architect/executor/reviewer/tester 등 16개 서브에이전트 페르소나. Task/Agent 호출 시에만 본문 로드.",
          "loadScope": "on-invoke"
        },
        {
          "area": "셸 훅 (.claude/hooks)",
          "paths": "/home/lucas/.www/kakago/.claude/hooks/autopus/*.sh + .claude/hooks/task-created-validate.sh",
          "fileCount": 8,
          "totalLines": 575,
          "role": "pre-commit(arch/lore), react(ci-failure/review), stop 훅(claude/codex/gemini), task-created 검증. settings.json이 PreToolUse(auto check --arch)·PostToolUse(auto react check)로 Bash마다 자동 트리거.",
          "loadScope": "hook-triggered"
        },
        {
          "area": "Claude 설정 (settings)",
          "paths": "/home/lucas/.www/kakago/.claude/{settings.json,settings.local.json}",
          "fileCount": 2,
          "totalLines": 132,
          "role": "settings.json(65): 훅 와이어링 + permissions.allow + statusLine. settings.local.json(67): 과도하게 구체적·누적적 allow — plaintext psql 자격증명, sudo, 하드코딩된 kill -9 <pid> 다수가 영구 박제됨. 설정 자체는 매 세션 유효, 와이어된 훅은 트리거 시 실행.",
          "loadScope": "always-on"
        },
        {
          "area": "statusline 스크립트",
          "paths": "/home/lucas/.www/kakago/.claude/statusline.sh",
          "fileCount": 1,
          "totalLines": 203,
          "role": "settings.json statusLine.command이 가리키는 상태줄 렌더 스크립트. 상태줄 갱신 시 실행.",
          "loadScope": "hook-triggered"
        },
        {
          "area": "MCP 서버 (.mcp.json)",
          "paths": "/home/lucas/.www/kakago/.mcp.json",
          "fileCount": 1,
          "totalLines": 23,
          "role": "context7(문서 fetch)·sequential-thinking 2개 MCP 서버. 서버 instructions는 매 세션 시스템 프롬프트에 주입(always-on 확인됨), 개별 도구 스키마는 deferred로 호출 시 로드.",
          "loadScope": "always-on"
        },
        {
          "area": "Codex 플랫폼 하네스 (.codex)",
          "paths": "/home/lucas/.www/kakago/.codex/{config.toml,hooks.json,skills/,prompts/,agents/,rules/}",
          "fileCount": 103,
          "totalLines": 12310,
          "role": "Codex 전용 미러: skills 54개(7276줄)·prompts 18개(1064줄)·agents 16개 toml(2987줄)·rules 10개(933줄). Claude Code 세션에서는 전혀 로드되지 않는 비활성 사본 — enum에 '비활성' 값이 없어 manifest-only로 분류. 멀티플랫폼 중복 유지비용의 핵심.",
          "loadScope": "manifest-only"
        },
        {
          "area": "Gemini 플랫폼 하네스 (.gemini)",
          "paths": "/home/lucas/.www/kakago/.gemini/{settings.json,statusline.sh,skills/,rules/,agents/,commands/}",
          "fileCount": 90,
          "totalLines": 13627,
          "role": "Gemini 전용 미러: auto/SKILL.md + autopus 스킬 디렉토리·rules 11개·agents 16개·commands 9개 toml. Claude Code 세션에서 비활성. .codex/.opencode와 합쳐 ~30k줄 미러 중복 중 최대.",
          "loadScope": "manifest-only"
        },
        {
          "area": "OpenCode 플랫폼 하네스 (.opencode)",
          "paths": "/home/lucas/.www/kakago/.opencode/{commands/,agents/,rules/,plugins/}",
          "fileCount": 48,
          "totalLines": 4047,
          "role": "OpenCode 전용 미러: commands 18개·agents 16개·rules 13개 + autopus-hooks.js(65줄). Claude Code 세션에서 비활성.",
          "loadScope": "manifest-only"
        },
        {
          "area": "체크섬 매니페스트 (.autopus/*-manifest)",
          "paths": "/home/lucas/.www/kakago/.autopus/{claude-code,codex,gemini-cli,opencode}-manifest.json",
          "fileCount": 4,
          "totalLines": 1640,
          "role": "4개 플랫폼별 설치 파일 체크섬 매니페스트. ADK가 동기화 검증에만 사용, 세션 컨텍스트로 로드되지 않음.",
          "loadScope": "manifest-only"
        },
        {
          "area": "개발 아티팩트 (.autopus/project, specs, plugins)",
          "paths": "/home/lucas/.www/kakago/.autopus/{project/*.md,specs/SPEC-*/,plugins/auto/}",
          "fileCount": 11,
          "totalLines": 1006,
          "role": "project/(product/tech/structure/scenarios/canary 104줄)·specs(SPEC-APP-001, SPEC-TR-001 900줄)·plugins/auto. project-identity 규칙상 '하네스 설정'이 아니라 개발 산출물 — 호출/참조 시에만 사용.",
          "loadScope": "manifest-only"
        }
      ],
      "notablePresences": [
        "멀티플랫폼 미러 ~30k줄 비활성 중복: .codex(12,310줄)+.gemini(13,627줄)+.opencode(4,047줄) = 29,984줄이 Claude Code 세션에서 전혀 로드되지 않으면서 유지·동기화 비용만 발생. 동일 규칙·에이전트·스킬을 4벌(claude/codex/gemini/opencode)로 보유.",
        "규칙 이중 로드 + 자기모순: 동일 13개 autopus 규칙(926줄)이 전역(~/.claude)과 프로젝트(.claude) 양쪽에 always-on으로 주입되는데, 프로젝트 CLAUDE.md의 'Rule Isolation'이 전역본을 무시하라고 명시 — 토큰을 쓰고 곧바로 폐기 지시.",
        "거대 always-on 컨텍스트 부담: 시스템 프롬프트에 13개 프로젝트 규칙 + 13개 전역 규칙 + 양쪽 CLAUDE.md 전문이 매 세션 주입됨. spec-quality.md(197줄) 1개가 전역+프로젝트로 2번 로드.",
        "settings.local.json allow 과적재: plaintext psql 자격증명(psql postgresql://transit:transit@localhost), sudo cp/systemctl, 하드코딩된 일회성 kill -9 <pid> 10건 이상, pkill, printenv ANTHROPIC_API_KEY가 영구 allow로 박제 — 일회성 명령이 정리되지 않고 누적.",
        "Go 저장소 규칙의 Next.js 프로젝트 오적용: rules/autopus의 spec-quality·techstack-freshness·context7-docs 등이 pkg/spec/types.go·pkg/techstack.InferMode()·internal/cli 등 존재하지 않는 Go 경로를 실제 코드처럼 인용 — autopus-adk Go 저장소용 규칙이 통째 복사된 정황.",
        "auto/SKILL.md 2813줄 단일 거대 파일(스킬 본문이라 on-invoke이지 always-on은 아님 — 스카우트의 '매 세션 잠재 컨텍스트' 표현은 부정확).",
        "언어정책 충돌: 프로젝트 CLAUDE.md는 'AI responses: English' 명시이나 메모리·커밋·실제 운용은 한국어.",
        "스킬 수 불일치: 스카우트는 .claude/skills/autopus 50개로 봤으나 실제 45개 확인."
      ],
      "absences": [
        ".cursor/rules/** — 부재 확인됨(.cursor 디렉토리 자체 없음). Cursor 플랫폼 하네스 미설치.",
        ".claude/workflows/** — 부재 확인됨(.claude/workflows 디렉토리 없음). 워크플로 정의 미사용."
      ]
    },
    "planner": {
      "classified": [
        {
          "path": "/home/lucas/CLAUDE.md vs /home/lucas/.www/kakago/CLAUDE.md (guidelines 1-10, ~135 lines)",
          "dimension": "global-context-tax",
          "finalRecommendation": "SHRINK",
          "rationale": "Global and project CLAUDE.md duplicate guidelines 1-10 byte-for-byte (only line 140 differs: project name). The same ~135 lines are injected twice per session, doubling context cost for zero added information. Collapse project CLAUDE.md to project-specific deltas and reference the global, or vice versa.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": "/home/lucas/CLAUDE.md (full file, as always-on for kakago) + project CLAUDE.md:153 Rule Isolation",
          "dimension": "global-context-tax",
          "finalRecommendation": "DELETE",
          "rationale": "Self-contradiction: project CLAUDE.md:153 mandates ignoring all parent-directory rules, yet the global CLAUDE.md (~177 lines) is still always-on injected. If isolation works, the global file is pure wasted tokens for this project; if it does not, its 'AI responses: English' clashes with actual Korean operation. Either way the global has no reason to be always-on here. Removing it from this project's injection is the fix; conservative changeRisk because it affects global config touching other projects.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": "/home/lucas/CLAUDE.md Language Policy ('AI responses: English') + .claude/rules/autopus/language-policy.md",
          "dimension": "global-context-tax",
          "finalRecommendation": "SHRINK",
          "rationale": "Triple contradiction on ai_responses: global CLAUDE.md asserts English, language-policy.md example table shows ko, its Defaults section shows en. Actual operation is Korean (commits, memory). The agent cannot resolve which to follow. Collapse to a single authoritative statement matching real usage (Korean responses/commits, English code comments).",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/rules/autopus/spec-quality.md (197 lines)",
          "dimension": "global-context-tax",
          "finalRecommendation": "MOVE",
          "rationale": "197-line always-on checklist for SPEC pipeline (/auto plan) that is irrelevant to daily Next.js/Prisma coding, and it cites Go symbols (pkg/spec/types.go, pkg/orchestra/output_parser.go) as 'real code' — verified absent (no go.mod, 0 .go files). Load only when the SPEC pipeline is invoked.",
          "moveTarget": "on-invoke: load via .claude/skills/auto/SKILL.md when /auto plan or spec commands run",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/rules/autopus/context7-docs.md (148 lines)",
          "dimension": "global-context-tax",
          "finalRecommendation": "MOVE",
          "rationale": "148-line pipeline procedure for /auto go Phase 1.8 doc-fetch, with ADK-internal SPEC-CTX7-001 references. The context7 MCP server already injects its own usage instructions per session (confirmed in this session), so the 148 lines are redundant for everyday library work.",
          "moveTarget": "on-invoke: load via SKILL.md at /auto go Phase 1.8",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/rules/autopus/techstack-freshness.md (65 lines)",
          "dimension": "global-context-tax",
          "finalRecommendation": "MOVE",
          "rationale": "65-line always-on rule whose output targets are SPEC artifacts (research.md/prd.md) and which cites pkg/techstack.InferMode() as a source contract — absent in this repo. Brownfield daily coding gains nothing from per-session injection.",
          "moveTarget": "on-invoke: load via SKILL.md at /auto plan",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/rules/autopus/worktree-safety.md (75 lines)",
          "dimension": "product-overlap",
          "finalRecommendation": "MOVE",
          "rationale": "Worktree creation/cleanup/concurrency is owned by Claude Code native EnterWorktree/ExitWorktree and the auto pipeline runtime, not by an LLM prompt rule. Lock backoff, gc suppression, and 5-slot limits are runtime behaviors. This is a solo single repo (git worktree list shows 1 worktree), so 5-way parallel never occurs. Both the bundled and standalone findings agree on MOVE.",
          "moveTarget": "on-invoke (/auto go Phase 2) / autopus-adk runtime docs — remove from always-on project rules",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/rules/autopus/doc-storage.md (49 lines)",
          "dimension": "global-context-tax",
          "finalRecommendation": "MOVE",
          "rationale": "Storage matrix and sync-commit rules presume a meta-repo + submodule multi-module layout that does not exist here (no .gitmodules, single repo, Module Detection assumes Go pkg/cmd/internal paths). Only meaningful during /auto sync. Move to on-invoke rather than always-on; merges the standalone SHRINK suggestion into MOVE per the aggressive always-on→on-invoke principle.",
          "moveTarget": "on-invoke (/auto sync) — SKILL.md reference",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/rules/autopus/deferred-tools.md (70 lines)",
          "dimension": "product-overlap",
          "finalRecommendation": "KEEP",
          "rationale": "Resolves the one cross-dimension contradiction. This rule guards a real product limitation: calling a deferred tool without loading its schema throws InputValidationError. Deferred-tool usage occurs outside /auto flows — this very session received the deferred-tools reminder with no /auto invoked. The file is 70 focused lines with little to trim, so SHRINK gains little. KEEP.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/rules/autopus/lore-commit.md (50 lines) + .claude/skills/autopus/lore-commit.md (99 lines)",
          "dimension": "global-context-tax",
          "finalRecommendation": "SHRINK",
          "rationale": "The rule and the skill are near-complete duplicates (identical type table, identical Constraint/Confidence/Scope-risk trailers, identical 'auto check --lore' description for a CLI that is not present). Recent commits actually use Co-Authored-By trailers, contradicting the rule's 'NEVER Co-Authored-By'. Keep the rule as single source of truth, reduce the skill to a one-line reference, and reconcile the trailer policy with real practice.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/rules/autopus/objective-reasoning.md (81 lines)",
          "dimension": "global-context-tax",
          "finalRecommendation": "SHRINK",
          "rationale": "Evidence-based response tone is generically useful, but 81 always-on lines is heavy for a tone guideline. Compress to a short principle. Lower-risk than lore/branding; the always-on value is real but oversized.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/rules/autopus/branding.md (64 lines)",
          "dimension": "product-overlap",
          "finalRecommendation": "SHRINK",
          "rationale": "5-tier octopus banner/footer is a decorative output-burden rule, and its canonical source templates/shared/branding-formats.md.tmpl is a dead pointer (verified absent on the filesystem), making the rule non-executable as written. Both the bundled and standalone findings agree on SHRINK. Trim to the minimal banner contract or remove the broken tmpl reference.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": "/home/lucas/.www/kakago/AGENTS.md (155 lines) + GEMINI.md (39 lines)",
          "dimension": "global-context-tax",
          "finalRecommendation": "KEEP",
          "rationale": "Zero Claude always-on cost: neither file is in the Claude session's claudeMd injection block (only the two CLAUDE.md files + 13 rules are). These are Codex/Gemini platform entry docs — multi-platform maintenance cost, not per-session context tax. Out of scope for this dimension; keep, with the separate note that AGENTS.md language-policy fields are blank.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/performance.md (153 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "CONVERT",
          "rationale": "Content is 100% Go (go test -bench, go tool pprof, net/http/pprof; zero JS/Next.js/Prisma references) but triggers are broad (performance/성능/최적화/benchmark). A performance discussion in this Next.js project would misfire and inject Go benchmark code. Broad trigger + wrong-stack content = actively harmful. Rewrite for the Next.js stack or delete if no perf workflow exists.",
          "moveTarget": "Rewrite in place for Next.js (Lighthouse / Web Vitals / React Profiler / Prisma query analysis); do not auto-process — concept valid, body needs full replacement",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/migration.md (162 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "CONVERT",
          "rationale": "Upgrade concept is stack-agnostic but all examples are Go (go list -m -u all, go mod graph, go mod edit, go test -race). Broad triggers (upgrade/마이그레이션) would surface go mod guidance during Next.js dependency upgrades. Keep the impact-analysis→incremental→rollback skeleton, replace examples.",
          "moveTarget": "Rewrite in place with npm/pnpm + Next.js + Prisma migrate examples; retain migration-procedure skeleton",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/monitor-patterns.md (202 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "DELETE",
          "rationale": "Internal autopus-adk orchestra Round 2 plumbing, tied to idea.md Step 3.6 (a workflow this project does not use) and referencing .autopus/project/orchestra-patterns.yaml which is verified MISSING. Couple-removed with idea.md to avoid a dangling ref — delete together when idea.md is shrunk, not standalone auto-diet.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/idea.md (507 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "SHRINK",
          "rationale": "507 lines, over the 300-line limit. Multi-provider orchestra workflow whose output dir .autopus/brainstorms/ is empty (no BS-* ever produced here). SKILL.md router references it so it is wired, not dead. Keep the core call contract in SKILL.md, split orchestra strategy / Round 2 monitor detail to a reference file.",
          "moveTarget": "Split orchestra-strategy/Round-2 detail to reference.md; keep core call contract; do not auto-delete (router-referenced)",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/playwright-cli.md (206 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "DELETE",
          "rationale": "The playwright-cli binary it depends on is not in PATH (verified). Meanwhile the Playwright MCP server (mcp__plugin_playwright_playwright__*) is loaded this session and provides the same navigate/click/screenshot/snapshot capability. The skill guides an unrunnable CLI that conflicts with the working MCP path. Confirm no other skill references playwright-cli, then remove.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/hash-anchored-edit.md (78 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "DELETE",
          "rationale": "Parallel multi-agent worktree concept (file_ownership **/*.go example) irrelevant to single-session work; its core message (re-read on missing old_string) is built-in Edit-tool behavior. Broad Korean trigger '안전한 수정' misfires on ordinary edits. No agent injects it. Absorb into a worktree-isolation skill if parallel worktrees are actually used, else delete.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/skills/autopus/metrics.md (138 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "KEEP",
          "rationale": "Stack-agnostic product-strategy skill; content is sound. Real SPECs exist (SPEC-APP-001, SPEC-TR-001 verified), so the planning pipeline is in active use and this is not dead. Trigger breadth ('지표'/'KPI') is a minor watch item, not a removal cause.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/prd.md (198 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "KEEP",
          "rationale": "Stack-agnostic PRD authoring for the planning pipeline; real SPEC artifacts include prd.md (SPEC-APP-001 verified). Narrow triggers (prd/PRD/기획서) make misfire unlikely.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/planning.md (130 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "KEEP",
          "rationale": "Core of /auto plan pipeline with proven usage (SPEC-TR-001 has all four files). Stack-agnostic EARS analysis. Broad 'feature'/'plan' trigger is acceptable given pipeline-core status.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/product-discovery.md (141 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "KEEP",
          "rationale": "Stack-agnostic discovery workflow with appropriately narrow triggers, wired to competitive-analysis. Active planning context (real SPECs). Weak duplication/misfire signals.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/korean-writing-refiner.md (139 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "KEEP",
          "rationale": "Exemplary skill. Explicit 'do not auto-apply' section blocks misfire (excludes review/critique/code work), triggers match real Korean output work (commits/notices/UI copy), stack-agnostic, appropriate length.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/tdd.md (105 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "CONVERT",
          "rationale": "All examples Go (func Test(t *testing.T), t.Parallel(), go test -race, 85% coverage) but injected by executor/tester/debugger/deep-worker agents. Project is Next.js/Prisma with 0 Go files; should use Vitest/Jest/Playwright. Four agents receive irrelevant Go patterns during TS work. Keep RED-GREEN-REFACTOR skeleton, replace examples.",
          "moveTarget": "Replace examples with Vitest/Jest + Playwright (TS); retain RED-GREEN-REFACTOR methodology",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/verification.md (101 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "CONVERT",
          "rationale": "Two-stage gate is all Go (go build, go test -race, golangci-lint, go vet, go tool cover) — unrunnable in Next.js. Overlaps built-in /verify. Replace gate commands with npm/pnpm stack (npm run build, vitest run, eslint, tsc --noEmit); EARS acceptance is pipeline-specific.",
          "moveTarget": "Replace gate commands with npm run build / vitest run / eslint / tsc --noEmit",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/review.md (117 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "SHRINK",
          "rationale": "Multi-stack table includes TS, but the @AX tag system (ANCHOR/WARN/fan_in>=3, [AUTO] prefix) is autopus-adk-internal convention unused here, and body is Go-first (go test -race, golangci-lint, go vet). Overlaps built-in /code-review, /review, /simplify. Drop the @AX section, keep TS/Next.js gates, shrink the Go-first matrix.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/security-audit.md (113 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "CONVERT",
          "rationale": "OWASP checklist skeleton is language-agnostic but all code/command examples are Go (govulncheck ./..., go.sum, go list -u). Next.js needs npm audit / Prisma parameter binding / next.config security headers. Overlaps built-in /security-review. Replace examples or delegate.",
          "moveTarget": "Replace examples with TS/Prisma (parameterized queries, npm audit, next.config security headers) or delegate to built-in /security-review",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/testing-strategy.md (146 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "SHRINK",
          "rationale": "Two issues: (1) all code examples Go (TestMain, t.Parallel(), go:build, go tool cover); (2) lines 75-86 'QAMESH Source Guidance' describes auto qa init/plan/run/release CLI and .autopus/qa/journeys/** — pure autopus-adk release-QA machinery unused here, consuming tokens. Remove the QAMESH block and replace Go examples with Playwright/Vitest integration tests.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/refactoring.md (117 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "DELETE",
          "rationale": "Orphan skill — no agent injects it (agents reference the separate ast-refactoring skill). All examples Go (gopls rename, go vet, grep --include=*.go), final line uses unused @AX:ANCHOR convention. Orphan status makes cleanup safe.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/skills/autopus/using-autopus.md (123 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "DELETE",
          "rationale": "Harness install/update meta-guide (auto init/doctor/update/clean), not product development. Orphan — zero external references. Broad 'autopus'/'harness' trigger risks surfacing on unrelated questions. Per project-identity, .autopus/ is dev tooling, not product. Relocate to autopus-adk docs if needed.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/skills/autopus/writing-skills.md (154 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "DELETE",
          "rationale": "Harness-authoring meta-skill (CC frontmatter fields, SKILL.md structure). Orphan — zero external references. Directly duplicates built-in skill-creator and superpowers:writing-skills. Go README examples. Very broad 'documentation'/'문서 작성' trigger. Use the built-in skill-creator instead.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/skills/autopus/subagent-dev.md (131 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "SHRINK",
          "rationale": "CC agent-authoring meta-guide, unrelated to product feature work; overlaps subagent-delegation rule and writing-skills agent section. Only architect injects it, limiting impact. Keep the single-responsibility / parallel-branch core architect actually uses, shrink the frontmatter-field catalog.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/worktree-isolation.md (216 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "SHRINK",
          "rationale": "Entirely autopus pipeline-internal machinery (SPEC-WORKTREE-001, Phase 2/2.1, isolation:worktree) that heavily duplicates the worktree-safety rule (GC suppression / lock retry / 5 slots), with Go example paths (pkg/auth/*.go). 216 lines, and SKILL.md @-embeds it alongside worktree-safety.md (double maintenance). Consolidate Safety Rules into the worktree-safety rule, reference only; generalize Go paths.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/skills/autopus/spec-review.md (85 lines)",
          "dimension": "skill-quality",
          "finalRecommendation": "KEEP",
          "rationale": "Only Q-Z skill backed by a real running CLI (auto spec review), @-embedded in SKILL.md and dispatched via the review_gate branch. Short body, narrow description ('Multi-provider SPEC review gate') so misfire risk is low. Legitimate pipeline skill; usage depends on whether the SPEC pipeline is run.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/rules/autopus/subagent-delegation.md (30 lines) + duplicate blocks in CLAUDE.md/GEMINI.md/AGENTS.md",
          "dimension": "product-overlap",
          "finalRecommendation": "SHRINK",
          "rationale": "Claude Code runtime decides subagent dispatch contextually (superpowers:dispatching-parallel-agents / subagent-driven-development are loaded this session). Hardcoding quantitative '3 files/200 lines' thresholds as an always-on rule pushes delegation on trivial changes, pre-empting what the product does situationally. Same text is duplicated across 4 files. Reduce to a brief principle and de-duplicate.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": "/home/lucas/.www/kakago/CLAUDE.md #7 'Plan + Checklist + Context Notes' + #4 Goal-Driven",
          "dimension": "product-overlap",
          "finalRecommendation": "SHRINK",
          "rationale": "Partly overlaps native TodoWrite/Task tracking (this session was prompted toward TaskCreate). Not pure duplication — checklist.md/context-notes.md are actually produced (docs/push-notification, docs/auth-redesign) and give cross-session persistence TodoWrite lacks. So narrow 'always create files for any non-trivial task' to genuinely multi-session work where persistent docs add value, reducing friction with built-in tracking.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".codex/ + GEMINI.md + .gemini/ + .opencode/ + .autopus/{codex,gemini-cli,opencode}-manifest.json",
          "dimension": "product-overlap",
          "finalRecommendation": "KEEP",
          "rationale": "The active platform here is Claude Code (current session, .claude/ active hooks). Codex/Gemini/OpenCode replicas exist but their actual use cannot be verified from this location (config.toml model='gpt-5.5' is an install default, not usage evidence). 'auto sync' maintains all four, so if unused they cost 4x maintenance — but a definitive DELETE is inappropriate without confirming usage. Keep pending user confirmation of active platforms.",
          "moveTarget": "After confirming actual platforms with the user, disable install for unused ones (shrink the autopus platform list); preserve until confirmed",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/settings.local.json:31,64 (Bash(node -e ' *) prefix wildcard)",
          "dimension": "safety-permission",
          "finalRecommendation": "SHRINK",
          "rationale": "Bash(node -e ' *) auto-approves any JavaScript beginning with node -e ' — effectively permanent allow of arbitrary code execution (file writes, network, process control). Originated as one-off Prisma query verification but is frozen as a prefix wildcard. Replace the wildcard with the specific commands actually needed; do not delete the legitimate single-purpose entries.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/settings.local.json:14-15,63 (sudo cp/systemctl/journalctl wildcards)",
          "dimension": "safety-permission",
          "finalRecommendation": "SHRINK",
          "rationale": "Bash(sudo cp *) / Bash(sudo systemctl *) / Bash(sudo journalctl *) auto-run root commands with no argument validation. sudo cp * can overwrite arbitrary files as root (system binaries/config) — effectively automated privilege escalation. Narrow to specific deploy/restart/log paths instead of unbounded wildcards. Conservative not DELETE because deploy workflow genuinely needs some sudo.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/settings.json:53-57 (Bash(npm *), Bash(npx *), Bash(node *) tracked allow)",
          "dimension": "safety-permission",
          "finalRecommendation": "SHRINK",
          "rationale": "node */npx */npm * are arbitrary-code-execution classes; npx fetches and immediately runs arbitrary registry packages (supply-chain risk). This file is git-tracked so it applies to every clone/session, wider blast radius than settings.local. Narrow npx in particular; keep scoped npm run scripts. Conservative not DELETE — daily Next.js dev needs npm/build.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/settings.local.json:6 (Read(//etc/**))",
          "dimension": "safety-permission",
          "finalRecommendation": "SHRINK",
          "rationale": "Read(//etc/**) auto-approves reading all of /etc (service configs, secrets) when the narrower /etc/nginx/** and /etc/caddy/** on lines 4-5 already cover the deploy-inspection need. Line 6 over-expands and makes 4-5 redundant. Drop the broad entry, keep the specific ones.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/settings.local.json:43-45 (psql plaintext credentials)",
          "dimension": "safety-permission",
          "finalRecommendation": "SHRINK",
          "rationale": "DB user/password (transit:transit) is inlined in plaintext in the allow list — a working credential (the psql allow exists because it ran successfully). settings.local.json is git-ignored (verified), so external leak risk is reduced to medium, but it persists in the local file, backups, and session context. Replace inline connection string with an env-var reference or remove the embedded password.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".mcp.json:9,18 + .codex/config.toml:29 (npx -y @latest MCP servers)",
          "dimension": "safety-permission",
          "finalRecommendation": "SHRINK",
          "rationale": "npx -y @upstash/context7-mcp@latest and @modelcontextprotocol/server-sequential-thinking fetch and run the newest package each session with install confirmation skipped (-y) and no version pin — a supply-chain exposure if upstream is compromised. .codex/config.toml duplicates the pattern. Pin versions; remove @latest.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/settings.local.json:21-22,26,29,32,37,40-41,52,54,61 (kill -9 <pid>, pkill, kill -HUP frozen)",
          "dimension": "safety-permission",
          "finalRecommendation": "DELETE",
          "rationale": "Specific PIDs (kill -9 1469095, kill -HUP 1473939 1473940, etc.) are session-scoped one-offs frozen as permanent allows. Risk is low (dead PIDs are inert) and removal is fail-closed safe, but the accumulation bloats the allow list and hurts auditability. Remove the stale PID entries; pkill -f patterns are slightly broader but also removable.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": true
        },
        {
          "path": ".claude/settings.json:3-26 + .codex/hooks.json (PreToolUse/PostToolUse: auto check --arch / auto react check)",
          "dimension": "safety-permission",
          "finalRecommendation": "SHRINK",
          "rationale": "matcher 'Bash' runs the external /usr/local/bin/auto CLI before/after every Bash command (timeout 30/60s), imposing latency on all shell calls. --arch checks target Go architecture rules (pre-commit-arch.sh filters .go$), so in this Next.js repo the gate produces almost nothing — cost on every Bash with thin output. Narrow the matcher or disable the arch gate for this stack.",
          "moveTarget": "",
          "changeRisk": "medium",
          "harnessDietSafe": false
        },
        {
          "path": ".claude/hooks/autopus/react-review.sh:27-36 / react-ci-failure.sh:22-31",
          "dimension": "safety-permission",
          "finalRecommendation": "KEEP",
          "rationale": "Event-triggered hooks (PR change-request / CI failure), not per-session. They write fixed-name JSON state files (.auto-review-request.json, .auto-ci-failure.json) at repo root — low-risk workspace clutter and unvalidated interpolation of REVIEWER/PR_BRANCH (JSON could break on special chars) but no destructive/network side effects. Keep; the interpolation hardening is a minor follow-up, not a removal cause.",
          "moveTarget": "",
          "changeRisk": "low",
          "harnessDietSafe": false
        }
      ]
    },
    "adversarial": {
      "challenges": [
        {
          "path": ".claude/rules/autopus/lore-commit.md (50 lines) + .claude/skills/autopus/lore-commit.md (99 lines)",
          "plannedRecommendation": "SHRINK",
          "objection": "두 핵심 전제가 직접 검증으로 거짓이다. (1) Planner는 '최근 커밋이 Co-Authored-By를 쓴다'고 했으나 git log --all 전체 히스토리에서 Co-Authored-By는 0건이고, 최근 15개 커밋 전부 Lore 형식 + 🐙 Autopus 사인오프를 정확히 따른다. (2) Planner는 'auto check --lore CLI가 존재하지 않는다'고 했으나 /usr/local/bin/auto는 실제 22MB 바이너리이며 .claude/hooks/autopus/pre-commit-lore.sh가 매 커밋 conventional-commits 첫 줄을 능동 게이트한다. 즉 이 규칙은 100% 준수율 + 능동 훅으로 검증된 load-bearing 규칙이다. 훅은 사인오프/트레일러까지 강제하지 못하므로, 모든 커밋에 일관되게 나타나는 🐙 사인오프와 Constraint/Confidence 트레일러 규율은 오직 이 프롬프트 규칙이 막아주는 실제 산출물이다. 줄이면 그 규율이 사라진다.",
          "revisedRecommendation": "KEEP",
          "reason": "SHRINK 근거 2개가 모두 사실과 반대. 규칙은 능동 훅 + 100% 커밋 준수로 입증된 load-bearing. rule/skill 중복 자체는 실재하나, 그건 별도의 깨끗한 dedup 정당화가 필요하고 Planner가 든 '트레일러 정책을 실제와 재조정' 근거는 거짓(이미 완벽 준수)이라 SHRINK 동력으로 쓸 수 없다. 보수적으로 KEEP."
        },
        {
          "path": ".claude/skills/autopus/monitor-patterns.md (202 lines)",
          "plannedRecommendation": "DELETE",
          "objection": "idea.md:277이 '명령 템플릿과 line-buffered grep 규칙은 .claude/skills/autopus/monitor-patterns.md를 따릅니다'로 이 파일을 직접 참조한다. idea.md는 SKILL.md 라우터에 연결된 살아있는 스킬이다. monitor-patterns.md를 단독 삭제하면 라우터-연결된 스킬에 dangling reference가 생긴다. Planner 자신도 harnessDietSafe:false로 표시하고 'idea.md와 함께 삭제, 단독 auto-diet 아님'이라 적었으므로, 이 항목은 자동 처리 안전(confirmedSafe)으로 분류해서는 안 된다.",
          "revisedRecommendation": "SPLIT",
          "reason": "내용은 autopus-adk orchestra 내부 배관이고 orchestra-patterns.yaml(검증상 부재)에 묶여 이 프로젝트에서 무용한 것은 맞다. 그러나 idea.md:277 라이브 참조 때문에 단독 DELETE는 dangling ref를 만든다. idea.md 축소 작업과 묶어서만(coupled) 처리해야 하며, 그 전에는 자동 삭제 금지. 따라서 KEEP/DELETE 단순 이분이 아니라 idea.md와 함께 다루는 coupled 작업으로 분리(SPLIT)한다."
        }
      ],
      "confirmedSafe": [
        ".claude/rules/autopus/spec-quality.md (197 lines)",
        ".claude/rules/autopus/context7-docs.md (148 lines)",
        ".claude/rules/autopus/techstack-freshness.md (65 lines)",
        ".claude/rules/autopus/worktree-safety.md (75 lines)",
        ".claude/rules/autopus/doc-storage.md (49 lines)",
        ".claude/rules/autopus/objective-reasoning.md (81 lines)",
        ".claude/rules/autopus/branding.md (64 lines)",
        ".claude/skills/autopus/performance.md (153 lines)",
        ".claude/skills/autopus/migration.md (162 lines)",
        ".claude/skills/autopus/tdd.md (105 lines)",
        ".claude/skills/autopus/verification.md (101 lines)",
        ".claude/skills/autopus/security-audit.md (113 lines)",
        ".claude/skills/autopus/testing-strategy.md (146 lines)",
        ".claude/skills/autopus/review.md (117 lines)",
        ".claude/skills/autopus/refactoring.md (117 lines)",
        ".claude/skills/autopus/playwright-cli.md (206 lines)",
        ".claude/skills/autopus/using-autopus.md (123 lines)",
        ".claude/skills/autopus/writing-skills.md (154 lines)",
        ".claude/skills/autopus/hash-anchored-edit.md (78 lines)",
        ".claude/skills/autopus/subagent-dev.md (131 lines)",
        ".claude/skills/autopus/worktree-isolation.md (216 lines)",
        ".claude/skills/autopus/idea.md (507 lines)",
        ".claude/skills/autopus/spec-review.md (85 lines)",
        ".claude/skills/autopus/metrics.md (138 lines)",
        ".claude/skills/autopus/prd.md (198 lines)",
        ".claude/skills/autopus/planning.md (130 lines)",
        ".claude/skills/autopus/product-discovery.md (141 lines)",
        ".claude/skills/autopus/korean-writing-refiner.md (139 lines)",
        ".claude/rules/autopus/deferred-tools.md (70 lines)",
        ".claude/rules/autopus/subagent-delegation.md (30 lines) + duplicate blocks in CLAUDE.md/GEMINI.md/AGENTS.md",
        "/home/lucas/.www/kakago/AGENTS.md (155 lines) + GEMINI.md (39 lines)",
        ".codex/ + GEMINI.md + .gemini/ + .opencode/ + .autopus/{codex,gemini-cli,opencode}-manifest.json",
        ".claude/settings.local.json:31,64 (Bash(node -e ' *) prefix wildcard)",
        ".claude/settings.local.json:14-15,63 (sudo cp/systemctl/journalctl wildcards)",
        ".claude/settings.json:53-57 (Bash(npm *), Bash(npx *), Bash(node *) tracked allow)",
        ".claude/settings.local.json:6 (Read(//etc/**))",
        ".claude/settings.local.json:43-45 (psql plaintext credentials)",
        ".mcp.json:9,18 + .codex/config.toml:29 (npx -y @latest MCP servers)",
        ".claude/settings.local.json:21-22,26,29,32,37,40-41,52,54,61 (kill -9 <pid>, pkill, kill -HUP frozen)",
        ".claude/settings.json:3-26 + .codex/hooks.json (PreToolUse/PostToolUse: auto check --arch / auto react check)",
        ".claude/hooks/autopus/react-review.sh:27-36 / react-ci-failure.sh:22-31",
        "/home/lucas/.www/kakago/CLAUDE.md #7 'Plan + Checklist + Context Notes' + #4 Goal-Driven",
        "/home/lucas/CLAUDE.md (full file, as always-on for kakago) + project CLAUDE.md:153 Rule Isolation",
        "/home/lucas/CLAUDE.md Language Policy ('AI responses: English') + .claude/rules/autopus/language-policy.md",
        "/home/lucas/CLAUDE.md vs /home/lucas/.www/kakago/CLAUDE.md (guidelines 1-10, ~135 lines)"
      ]
    }
  }
}