docs(agents): 스킬 선택 정책 감사와 검증을 기록한다

This commit is contained in:
Yu Sung
2026-10-19 16:01:47 +09:00
parent 6d2aae442c
commit 3f5a84044b
2 changed files with 345 additions and 0 deletions
@@ -0,0 +1,261 @@
# 스킬 라우팅 정책 감사
## 1. 리뷰 정보
| 항목 | 내용 |
|---|---|
| 리뷰 대상 | Phase 1 / 프로젝트 스킬 선택 정책 |
| 기준 commit 또는 working tree | 기준 `ffa6ff0d22f4df5ac0a6cbb84288a73dcd7cf4cd`, 정책 변경 작업 트리 |
| 리뷰 일자 | 2026-10-19 KST |
| 리뷰어 | 정책 작성자·상위 작업자, Oracle 단일 독립 리뷰 |
| 기준 문서 | `AGENTS.md`, `docs/agent-guides/agent-execution-policy.md`, `docs/agent-guides/documentation-policy.md`, `docs/sample/sample-plan-task.md`, `docs/sample/sample-review.md` |
| 리뷰 상태 | 수정 검증 완료, 독립 리뷰 차단할 발견 사항 없음 |
## 2. 목적과 범위
### 목적
- 프로젝트 지시가 Superpowers 중심의 하나의 생명주기와 좁은 전문 스킬 소유권을 설명하는지 점검한다.
- 두 호스트의 지침 검색 및 스킬 호출 제약, 설치 자료의 차이와 누락을 기록한다.
- 아래 아홉 사용자 문장을 정책에 따라 라우팅한다. 실제 앱 작업이나 모델 자동 선택 실행은 범위 밖이다.
### 포함 범위
- root 지침과 실행 가이드의 정책 정합성, 설치 스킬 inventory, 호스트 검색/권한 동작, 명시적 경계 및 시뮬레이션.
- 확인 자료: 프로젝트 문서, 설치된 skill 파일/메타데이터, 읽기 전용 플러그인 소스, 공개 공식 문서.
### 제외 범위
- 앱 코드, 설정 및 전역 파일 수정, 설치/메타데이터 변경, 실제 로그인/결제/보안 코드 실행, 모델의 아홉 가지 자동 호출을 실제로 검증하는 일.
## 3. 판정 기준
- 지시 권한과 도구 권한을 Markdown이 바꾸지 않는다.
- 매 활성 하위 단계의 주 소유자는 하나이며, 보완 스킬은 범위가 좁다.
- 유사 skill pair 간 우선순위 및 trigger/sequence가 명시된다.
- 실제 설치/호스트 근거와 미확인 항목을 구분하고, 미설치 참고를 완료로 오인하지 않는다.
- 시뮬레이션은 사용자 원문을 그대로 보존하고 자동 eligibility와 별도 명시 허용을 각각 밝힌다.
## 4. 검토 근거
### 프로젝트 파일 및 초기 상태
- 필수 읽기: `AGENTS.md` (172 lines), `docs/agent-guides/agent-execution-policy.md` (53 lines), `docs/agent-guides/documentation-policy.md` (64 lines), `docs/sample/sample-plan-task.md`, `docs/sample/sample-review.md`.
- 시작 상태는 clean, 기준 HEAD `ffa6ff0d22f4df5ac0a6cbb84288a73dcd7cf4cd`로 부모 작업자가 확인했다. root는 초기 9357 bytes였다.
- root의 기존 priority는 사용자 → AGENTS → 프로젝트 제약 → oh-my-openagent → Superpowers 순으로 두고, Superpowers를 선택적 사용이라고 적었다. 상세 가이드도 같은 hierarchy를 복제했다. 실행 모드는 brainstorming까지 확장 모드의 사용자 승인 대상으로 묶어 설계 생명주기와 충돌했다. 이 항목은 재정의했고 CORE EXECUTION PRINCIPLES의 영어 원문 및 그 외 기존 프로젝트 규칙은 보존 대상으로 삼았다.
- `documentation-policy.md:11` 및 `sample-plan-task.md:69-70`은 문서 작업의 PRD/TDD 형식 강제를 면제한다. 이에 최소 plan과 대체 문서 검증을 사용했다.
- 프로젝트 검색에서 추가 하위 AGENTS/override/CLAUDE 지침 및 프로젝트 OpenCode 설정은 발견되지 않았다는 부모 확인을 사용했다. 상위 경로/전역 지침 경로도 부모 확인으로만 기록하며 여기서 다시 실행하지 않았다.
### 로컬 지침/설정 파일 inventory
작업 디렉터리와 Git root는 `/Users/klaus/Develop/sodalive/iOS/SodaLive`다. 아래 inventory는 상위 작업자의 정적 filesystem 탐색 결과이며, 다른 프로세스 환경의 추가 context까지 증명하지 않는다.
| 위치/범위 | 발견/부재한 파일 및 판정 |
|---|---|
| 조상 경로 `/`, `/Users`, `/Users/klaus`, `/Users/klaus/Develop`, `/Users/klaus/Develop/sodalive`, `/Users/klaus/Develop/sodalive/iOS` | 각각 `AGENTS.md`, override/CLAUDE 및 관련 opencode 설정 없음으로 확인 |
| 저장소 root 및 descendant (hidden 포함, vendor/generated 제외한 project policy scope) | root `AGENTS.md` 존재. 추가 `AGENTS.md`, `AGENTS.override.md`, `CLAUDE.md` 없음 |
| Codex/OpenCode/Claude global instruction | `~/.codex/AGENTS.md`, `~/.codex/AGENTS.override.md`, `~/.config/opencode/AGENTS.md`, `~/.claude/CLAUDE.md` 모두 부재 |
| project OpenCode config | `opencode.json`, `opencode.jsonc`, `.opencode/opencode.json`, `.opencode/opencode.jsonc` 부재 |
| global Codex config | `~/.codex/config.toml` 존재. 승인 정책 `never`, sandbox `danger-full-access`, trusted project, multi-agent/plugin hooks enabled 관찰. Superpowers active block은 없음. cache에 존재한다는 사실만으로 inactive라고 단정하지 않음 |
| global OpenCode config | `~/.config/opencode/opencode.json` 존재. Superpowers Git plugin 및 ponytail/omo plugins 포함, `instructions`, `skills.paths`, permission 또는 agent override 없음 |
| skills provenance | `~/.agents/.skill-lock.json:104-206`가 Matt Pocock 5개와 Addy Osmani 6개 설치를 기록. provenance 기록이지 서명된 무결성 증명은 아님 |
| Codex OMO 잠재 instruction hooks | `~/.codex/plugins/cache/sisyphuslabs/omo/5.1.35/hooks/session-start-loading-project-rules.json`, `user-prompt-submit-loading-project-rules.json` 및 `components/rules/README.md`, `components/rules/dist/cli.js`, `components/rules/bundled-rules/hephaestus/gpt-6.md` 확인. 탐색 대상은 CONTEXT, `.omo/.claude/.cursor`, GitHub/Copilot이며 native AGENTS는 중복 방지를 위해 제외. 프로젝트 내 해당 추가 rule files 및 `~/.omo/rules`, `~/.opencode/rules`, `~/.claude/rules` 부재. hook source를 읽었을 뿐 실행/실제 session output은 확인하지 않음 |
| Codex role config / 기타 host skill | `~/.codex/agents/*.toml`은 해당 agent 선택 시에만 적용. Codex system skills `~/.codex/skills/.system/{imagegen,openai-docs,review-agent,skill-creator,skill-installer}` 및 `~/.config/opencode/skills/commit-with-validation/SKILL.md` 존재. 프로젝트 commit skill `.opencode/skills/commit-policy/SKILL.md`는 명시 경로로 확인 가능 |
공식 OpenCode 외부 skill scanner는 `~/.agents/skills`를 검색한다. Codex도 shared `~/.agents/skills` discovery를 지원하나, 특정 세션에서 그 skill이 호출되었다는 뜻은 아니다. 현재 OpenCode `skill` 도구 목록에서 접근 가능한 실제 skill과 Codex의 문서상 scanner/discovery, Codex session 호출 증거를 서로 구분한다. Skill은 현재 host에서 실제로 발견되고 접근 가능해야 사용 가능하며, `deny`/`ask` 및 agent/tool permission을 우선한다. 프로젝트 Markdown은 host permission이나 backend/hook을 덮어쓰거나 강제 차단하지 않는다. 이 감사는 기존 설정/전역 파일을 읽기만 했으며 변경하지 않았다.
### 호스트 발견/우선순위 구분
- 문서 검색 규칙과 실행 절차 우선순위는 서로 다르다. 지침 파일 탐색은 호스트 규칙에 따르고, 그 뒤 실행 절차는 root 프로젝트 정책이 정한다. 호스트가 Markdown을 읽는다는 사실은 skill 자동 선택이나 성공을 보증하지 않는다.
- Codex 공식 자료에 따르면 global guidance가 먼저 오고, project root부터 CWD까지 디렉터리마다 `AGENTS.override.md` > `AGENTS.md` > configured fallback 순서에서 첫 비어 있지 않은 파일을 최대 하나 선택한다. 각 하위 디렉터리에서 선택한 지침이 이전 내용을 뒤에 이어 추가/상위 precedence로 적용된다. 이 프로젝트에는 configured fallback이 없다. 기본 지침 크기 한도는 32 KiB다. 문서 순서는 공식 규칙이며, 현재 세션의 실제 병합 출력은 runtime 확인하지 않았다.
- OpenCode 공식 rules 자료는 현재/상위의 `AGENTS.md` 또는 `CLAUDE.md`와 전역 `~/.config/opencode/AGENTS.md` 또는 `~/.claude/CLAUDE.md`를 설명한다. `opencode.json`의 `instructions`는 추가 파일을 합친다. 공식 자료로 `AGENTS.override.md` 지원은 확인되지 않았다. 로컬/전역 설정 여부는 부모의 초기 조사 결과를 참조하며, 설정 dump를 하지 않았다.
- 두 호스트 모두 Markdown 링크를 자동으로 본문에 펼친다고 가정하지 않는다. 실행 시 참조 파일을 직접 읽어야 한다. 지침 로드 후 스킬 탐색은 별도 과정이다.
### 호스트/설치 스킬 inventory
- 실행 시점의 실제 `skill` 도구에는 아래 표의 대상 스킬들이 노출되어 있었다. 이것은 도구 목록 증거이지 아홉 prompt의 실제 라우팅 결과가 아니다.
- OpenCode Superpowers 설치 root: `/Users/klaus/.cache/opencode/packages/superpowers@git+https:/github.com/obra/superpowers.git/node_modules/superpowers/skills`.
- Codex Superpowers cache: `/Users/klaus/.codex/plugins/cache/openai-curated-remote/superpowers/6.4.2/skills`. manifest의 plugin은 skills path `./skills/`, version `6.4.2`로 선언한다. OpenCode package `package.json`은 version `7.0.0`이다. 두 host의 15 skill 본문은 존재하며, 12개는 동일하고 `brainstorming`, `requesting-code-review`, `systematic-debugging`은 내용이 다르다. Codex cache의 존재는 현재 세션 활성화를 입증하지 않는다. 현재 호스트가 해석한 본문을 우선 읽고 다른 호스트의 문장을 동일하다고 전제하지 않는다.
- 공통 Superpowers 15개: `using-superpowers`, `brainstorming`, `writing-plans`, `executing-plans`, `subagent-driven-development`, `dispatching-parallel-agents`, `using-git-worktrees`, `test-driven-development`, `systematic-debugging`, `requesting-code-review`, `receiving-code-review`, `verification-before-completion`, `finishing-a-development-branch`, `diagnosing-superpowers`, `writing-skills`.
- `~/.agents/skills`의 Matt Pocock 5개: `domain-modeling`, `codebase-design`, `grilling`, `improve-codebase-architecture`, `setup-matt-pocock-skills`. Addy Osmani 6개: `security-and-hardening`, `api-and-interface-design`, `ci-cd-and-automation`, `frontend-ui-engineering`, `observability-and-instrumentation`, `performance-optimization`. 설치 lock은 설치 출처 표기이지 서명/무결성 증명은 아니다.
- 관련 추가 설치: `agora`, `archify`, `find-skills`, `i-have-adhd`, `kotlin-coroutines-flows`, `swiftui-expert-skill`, `ui-ux-pro-max`. 기능 트리거가 없는 한 일반 라우팅에 강제하지 않는다. `commit-policy`는 프로젝트 `.opencode/skills/commit-policy/SKILL.md`에 있다. Codex의 자동 검색 경로로 간주하지 말고 이미 알려진 파일을 읽는다.
- Addy의 CI/CD, UI/accessibility, telemetry, measured performance skill은 해당 작업 시에만 쓴다. `security-and-hardening`은 필요한 보안 범위에만 쓴다.
### 핵심 skill 및 자료의 제약
- `deep-interview`는 모호한 목표·범위·제약·성공 기준의 요구사항 정리용 임시 owner다. 구체적 요청, 오타, 작은 설정 변경, 테스트 보강은 trigger가 아니다. 전체 점수 공식은 기존 작업: `1 - (goal*.30 + scope*.20 + constraints*.15 + success*.20 + context*.15)`, 신규: `1 - (goal*.35 + scope*.25 + constraints*.15 + success*.25)`이며 신규 점수에서 context는 제외된다. 이는 판단 보조이지 측정된 사실이 아니다. 종료는 전체 불확실성 `<=0.20`과 모든 중요 결정 해결을 함께 만족해야 한다. 중요한 차원 하나가 충분히 확정되지 않았으면 `<=0.50` 기준에 따라 계속한다. 질문은 한 번에 하나씩이며 요약에 남은 모호성, 차원 점수, 결정, 열린 질문을 담는다.
- `deep-interview`는 `/Users/klaus/.agents/skills/deep-interview/SKILL.md`의 이름이다. description은 목표/범위/제약/성공 기준이 불명확한 요청 trigger로 하고 구체 요청·오타·작은 config/test 작업을 제외한다. frontmatter argument hint는 `<rough request>`다. SKILL은 산출물/의존성을 정하지 않고 자동 `.scratch`나 별도 spec 작성을 요구하지 않는다. 해결 사항은 기존 PRD에 합친다. implicit restriction field, `agents/openai.yaml`, 추가 참조/의존성/다른 skill 파일은 없다. Codex 및 OpenCode 공식 discovery는 `~/.agents/skills` 검색을 지원하고, 이 세션의 OpenCode skill tool에 실제 노출됐다. Codex 설치 디렉터리 검색·implicit skill call은 현 세션에서 실행되지 않아 호출 증거가 없다.
- `brainstorming`은 새 기능/설계의 기본 설계 흐름이다. 현재 해석된 host 본문을 읽는다. Codex cached copy의 사용자 승인/범위 게이트를 OpenCode 본문과 동일하다고 가정하지 않는다. 상위 실행 권한 및 저장소 기본 단일 작업 원칙은 항상 적용된다.
- `grilling`은 아키텍처 전용이 아니다. 계획·결정·아이디어에 적용할 수 있고, 사용자 stress-test 요청 또는 구체적인 대안 비교 때 선택한다. 그릴의 다중 질문 회차와 deep-interview의 단일 질문 규칙을 동시에 소유시키지 않는다.
- `codebase-design`은 모듈 규모와 무관하게 깊이/seam/locality 및 exposed interfaces를 다룬다. `api-and-interface-design`은 REST/GraphQL뿐 아니라 내부 interface/type contracts도 다룬다. 구분은 internal/public 이분법이 아니라 depth/seam/locality 대 stable contract/errors/compatibility다.
- `improve-codebase-architecture`는 HTML report를 만들고 브라우저를 열어 사용자 선택 후 grilling을 잇는 workflow다. 설치 skill 및 `agents/openai.yaml`에 Codex explicit-only gate가 있다. `setup-matt-pocock-skills`도 같다. OpenCode autoinvoke metadata는 없어서 현재 OpenCode에서 광고될 수 있으며, backend 호출 제한으로 표현하면 안 된다. 프로젝트 Markdown은 두 skill의 implicit invocation을 금지하지만 서버/hook 차단을 보장하지 않는다. 이름을 명시한 skill 호출만 허용한다. 구조 개선 후보 조사나 일반 HTML 결과물 요청만으로 호출 권한을 얻지 않는다. HTML/브라우저/grilling 단계도 흉내 내지 않는다. setup은 별도 일회성 이름 지정 요청만 허용한다.
- Addy `security-and-hardening`의 `references/hardening-patterns.md`는 존재한다. 관련 Addy checklist인 `~/.agents/references/security-checklist.md`, `accessibility-checklist.md`, `observability-checklist.md`, `performance-checklist.md`는 없다. 선택적으로 언급된 `deprecation-and-migration`, `debugging-and-error-recovery`, `shipping-and-launch`도 설치되지 않았다. 누락 자료 없이 완전 수행했다고 주장하지 않는다.
### 공식 문서/외부 출처
- Codex instructions: https://learn.chatgpt.com/docs/agent-configuration/agents-md (동일 주제의 `.md` 문서도 확인)
- Codex skills: https://learn.chatgpt.com/docs/build-skills.md
- OpenCode rules: https://opencode.ai/docs/rules/
- OpenCode skills: https://opencode.ai/docs/skills/
- Superpowers 및 harness porting: https://github.com/obra/superpowers , https://github.com/obra/superpowers/blob/main/docs/porting-to-a-new-harness.md
- Matt Pocock skills / 제한된 architecture skill: https://github.com/mattpocock/skills , https://github.com/mattpocock/skills/blob/main/skills/engineering/improve-codebase-architecture/SKILL.md
- Addy Osmani skills: https://github.com/addyosmani/agent-skills
- 현재 설치본도 함께 읽었다. remote 저장소는 설치된 복사본의 cryptographic provenance를 증명하는 자료로 사용하지 않았다.
### 실행 환경 및 한계
- 부모가 확인한 버전: Codex CLI `0.163.0`, OpenCode `1.19.3`. 적용 환경은 macOS, 작업일 2026-10-19 KST.
- 부모가 열거한 일부 환경 변수는 현재 작업 시작 시 unset이었다. 다른 프로세스의 환경이나 향후 세션 상태는 증명하지 않는다.
- Codex OMO 플러그인의 읽기 전용 소스는 `CONTEXT.md`, `.omo/.claude/.cursor` 규칙, GitHub instruction/Copilot 경로를 조사하며 native AGENTS 재로딩은 중복 방지를 위해 제외한다. 해당 프로젝트 파일들은 발견되지 않았다는 부모 검색 결과가 있다. `hephaestus/gpt-6.md`는 persona와 컨텍스트 규칙이지 실제 hook 성공 로그가 아니다. hook은 실행하지 않았다.
- Codex plugin roles는 선택된 agent에만 적용되며 project rules file이 아니다. 플러그인 자체 AGENTS는 이 저장소의 상위 지침이 아니다. 권한 승인 정책과 sandbox mode는 관찰사항일 뿐 AGENTS로 낮출 수 없고 여기서 변경하지 않았다.
- 호스트별 새 세션/재시작은 실제 반영을 위해 권장되지만, 이 보고서에서 자동 선택 성공 또는 런타임 효과를 주장하지 않는다.
## 5. 충돌 처리 결과
다음 표는 상세 가이드의 여섯 조합을 요약한다. 각 경우 한 단계에 중복 owner를 두지 않는다.
| 충돌 | 공유 작업 | 고유 소유권 | 트리거·순서·우선 |
|---|---|---|---|
| brainstorming / deep-interview | 제품 요구사항 | brainstorming은 설계, interview는 중요 미결정 질문 | 미결정/충돌/요청 때만 interview 임시 선행, 요약을 기존 PRD에 합친 뒤 설계. 해결된 인터뷰는 반복하지 않는다. |
| brainstorming / grilling | 설계 대안 | brainstorming은 생성, grilling은 스트레스 테스트 | 사용자가 원하거나 concrete alternatives가 있을 때 설계 후 grilling 선택. 단일 질문 인터뷰와 다중 질문 grilling 동시 진행 금지. |
| brainstorming / codebase-design | 경계 설계 | 전체 설계 대 module 규모와 무관한 depth/seam/locality 및 exposed interface 판단 | 설계 중 구체적인 seam/depth 문제면 codebase-design 보완. 독립 전체 흐름 대체 불가. |
| codebase-design / api-and-interface-design | module/API contracts | depth/seam/locality 대 stable contracts/errors/compatibility; 둘 다 internal/external surfaces 가능 | 계약 문제는 API skill, seam/depth 문제는 codebase-design이 단계 owner. internal/public로 제한하지 않음. |
| requesting-code-review / security-and-hardening | 보안 리뷰 | 단일 review 절차 대 보안 기준 | 보안 기준이 실질 관련될 때만 review에 범위 한정 보완. 리뷰 절차 중복 금지. |
| systematic-debugging / 일반 조사 | 원인 파악 | 재현 버그 진단 대 정보 탐색 | 실패가 있으면 systematic-debugging부터. 버그가 아닌 조사에 debug 절차를 강제하지 않음. |
## 6. 사용자 요청 라우팅 시뮬레이션
아래 문장은 요청 그대로 옮겼다. 표의 “자동 조건”은 설치/호스트상 선택 가능성만 뜻하며 실제 모델 동작 증거가 아니다. 사용자 명시 호출 및 확장 실행 승인은 서로 다른 조건이다.
| # / 정확한 사용자 문장 | 분류 / 주 skill | 보완 skill | 실행 순서 | 제외할 중복 | 자동 eligibility / 호스트 조건 | 명시 호출·승인 |
|---|---|---|---|---|---|---|
| 1. 사용자 로그인 기능을 만들어줘. | 구현까지 명시한 신규 기능 요청. 주 lifecycle `brainstorming` | 실제 관련 시 `security-and-hardening`; 중요 auth 결정 미해결일 때만 임시 `deep-interview`; 구현 테스트 단계 `test-driven-development`; 적절한 계획 실행·검증 스킬 | 로그인 기능 설계 → 필요한 요구사항/contract 및 host approval gate 충족 → 계획 → 승인된 기능 범위 구현 → 테스트/검증 | 요청을 설계만으로 축소, 이미 승인된 기능 범위 재승인 요구, 추정 backend contract, 무조건 interview, multi-agent 중첩 | brainstorming 설치/접근 및 현재 host skill semantics 필요. 실제 자동 호출은 미검증. Codex/OpenCode 본문별 승인 gate를 지킴 | “만들어줘”가 기능 구현 범위 권한이다. 필요한 clarification은 실제 중요 미결정에 한정하며 별도 범위 확장만 추가 승인. 인증 계약/방식은 만들어내지 않음 |
| 2. 요구사항이 아직 모호한 신규 서비스를 설계해줘. | 중요 미결정 신규 요구. 임시 owner `deep-interview`, 이후 `brainstorming` | 실제 glossary/business domain 결정이면 `domain-modeling`; 구체적 내부 seam에는 `codebase-design` | 한 질문씩 인터뷰 → 종료 기준 만족/결정 요약 → 기존 PRD 통합 → 서비스 설계 → 필요 시 계획 | 반복 인터뷰, 자동 `.scratch`/별도 spec 생성, 자동 grilling | deep-interview는 설명상 trigger 적합, OpenCode 설치 노출 확인. Codex 호출/runtime은 미검증 | explicit skill 문구가 아니어도 요청이 실질 트리거. 확장 병렬 작업은 별도 승인 |
| 3. 결제 도메인의 용어와 상태를 정리해줘. | 도메인 용어/model 문서 변경. `domain-modeling` | 실제 신규 동작/제품 설계가 함께 요청되면 `brainstorming` | 기존 용어/도메인 문서 확인 → glossary/state 정리 → 필요한 범위의 문서 검증 | 단순 조회인데 domain skill 호출, 자동 ADR/이슈 생성 | 설치되어 있으나 실제 자동 선택 미검증 | 도메인 모델을 실제로 수정하라는 명시 요청. 커밋은 요청되지 않음 |
| 4. 이 모듈의 의존성 설계를 검토해줘. | architecture read-only review. `codebase-design` | concrete redesign alternatives가 있으면 `brainstorming`; 사용자 stress-test 목적이면 `grilling` | module/code evidence 확인 → dependency depth/seam/locality 판단 → findings 보고 | `improve-codebase-architecture` HTML/브라우저/grilling workflow 또는 다른 코드 변경 | `codebase-design` discovery/accessible 필요. improve는 Codex implicit false지만 OpenCode native auto suppression은 설정되지 않음. 프로젝트 정책상 두 host 모두 implicit 호출 금지 | 사용자가 skill 이름 `improve-codebase-architecture`를 직접 명시 호출해야 한다. 일반 HTML report 요청은 허가가 아니다. 그 경우도 요구 범위 밖 HTML workflow를 강제하지 않음 |
| 5. 새로운 REST API를 설계해줘. | API 설계. `brainstorming` 주 설계, API 계약의 좁은 owner `api-and-interface-design` | 인증/신뢰 경계가 실제이면 `security-and-hardening`; depth/seam/locality 판단에는 `codebase-design` | 요구/경계 설계 → REST 계약 결정 → 해당 보안 검토 → 문서화/계획 | 전체 보안 skill 강제, codebase-design으로 안정 계약/errors/compatibility 책임 대체, 구현 자동 착수 | brainstorming 및 API skill 설치/노출 조건. 실제 자동 선택 미검증 | API 설계 요청으로 충분. 다중 agent/구현 범위 확장은 별도 승인 필요 |
| 6. 인증 과정에 보안 취약점이 있는지 검토해줘. | read-only security review. `security-and-hardening` | 완료 산출물 리뷰가 필요하면 단일 `requesting-code-review`; 보안 검토만이면 추가 review skill 불필요 | 인증 흐름/적용 가능한 checklist 근거 확인 → 취약점 판정/한계 기록 → 보고 | 인증 수정, 테스트/구현 workflow, 일반 코드 변경, 없는 checklist를 읽었다는 주장 | 설치 skill은 노출 가능. 필수 참조 일부 없음, 해당 부분 제한 보고. 실제 prompt routing 미검증 | 보안 검토 요청은 명시. 수정은 요청되지 않았으므로 금지 |
| 7. 테스트에 실패하는 버그를 수정해줘. | 재현 가능한 버그. `systematic-debugging` | 회귀 테스트 단계 `test-driven-development`; 구현 후 필요 시 단일 `requesting-code-review`, 완료 전 `verification-before-completion` | 재현/가설 진단 → 회귀 실패 확인 → 최소 수정 → 관련 테스트 → 검증 | 별도 일반 조사 owner, 병렬 구현자 중첩, test 없이 symptom-only 변경 | 해당 Superpowers skill 설치/현재 host 내용 로드 필요. 자동 routing 실제 검증 아님 | 수정 요청 명확. 무관한 대규모 리팩터링이나 병렬 실행은 별도 허용 필요 |
| 8. 기존 코드베이스에서 구조 개선 후보를 찾아줘. | 읽기 전용 architecture exploration. 허용된 `codebase-design` 분석 | 질문 범위가 모호하면 한 번의 명확화; concrete candidate alternatives를 stress-test해 달라면 `grilling` | 범위/근거 확인 → module/dependency 관찰 → 후보와 근거 보고 | `improve-codebase-architecture` 자동 실행, HTML 작성/브라우저 열기, 사용자 선택 및 후속 grilling 흐름 흉내 | improve는 Codex implicit false지만 OpenCode metadata가 없어 광고될 수 있다. AGENTS는 backend/hook 차단을 강제하지 않는다. 프로젝트 정책은 implicit 호출을 금지한다. | 사용자가 이름으로 해당 skill 호출을 명시할 때만 허용. 일반 구조 개선 요청은 불충분하며 `codebase-design` read-only 대안만 수행한다. 명시 요청도 실제 범위/상위 권한을 넘지 않음 |
| 9. 기존 설계가 확정되었으니 구현을 계속해줘. | 기존 작업 continuation. 유효 plan 있으면 첫 미완료 단계의 owner, 없으면 `writing-plans` | 계획 실행 시 사용자 선택/도구에 따라 `executing-plans` 또는 `subagent-driven-development` 하나; 구현 테스트에는 `test-driven-development`; 완료 검증 `verification-before-completion` | 기존 PRD/plan 및 체크 상태 확인 → plan 유효 시 첫 incomplete task → 없으면 writing-plans로 빠진 계획 보강 → 실행/검증 | 설계 반복, 새 interview, 설계 확정만으로 계획 존재를 가정, 두 plan-execution 스킬 중첩 | 현재 host 스킬 노출/계획 문서 존재 조건. 실제 자동 선택 미검증 | 기존 설계 승인만으로 계획/병렬 방식 승인이 되지 않는다. 유효 plan과 이미 고른 실행 방식이 없으면 계획 작성, 작업 크기에 맞게 단일 경로 |
## 7. 발견 사항 요약 및 판정
| ID | 심각도 | 상태 | 제목 | 후속 |
|---|---|---|---|---|
| REV-P1-001 | Medium | 수정 완료 | 이전 root/guide hierarchy가 프로젝트 Superpowers 생명주기를 선택 사항으로 낮추고 플러그인과 단계 순서를 경쟁시킴 | root 기준 우선순위와 lifecycle로 교체, 상세 가이드에서 중복 hierarchy 제거 |
| REV-P1-002 | Medium | 보류 | 일부 Addy 선택 참고 파일과 optional skills가 설치되지 않음 | 범위 안에서 한계를 보고. 전역 설치/참고 파일 복원은 수행하지 않음 |
| REV-P1-003 | Low | 보류 | 문서 규칙은 런타임 자동 호출 성공을 증명하지 않음 | 호스트별 실제 아홉 prompt 실행은 요청 범위 밖이며 수행하지 않음 |
| REV-P1-004 | Medium | 수정 완료 | Codex/OpenCode implicit gate와 사용자 명시 범위의 일부 표현이 부정확하거나 과도하게 좁음 | `plan-task.md` P1-R1에 따라 직접 대조 후 수정 |
### REV-P1-001 — 기존 hierarchy 및 lifecycle 모순
- **심각도:** Medium
- **상태:** 수정 완료
- **관찰:** 초기 root와 상세 guide는 skill hierarchy를 plugin 아래에 두고 Superpowers를 선택적 사용으로 표시했다. 또한 브레인스토밍을 확장 모드 승인 대상으로 나열해 설계 단계와 사용자 승인 정책을 섞었다.
- **근거:** 위 문서 초기 내용, 이 보고서 §5, 변경 후 root `AGENTS.md`의 지시 우선순위/Skill Orchestration, 상세 guide의 root 참조.
- **영향:** 충돌하는 절차 중복, 상위 role/tool permission을 문서로 덮는 오해, 기본 설계 절차 불일치 가능성.
- **권장 조치:** root에서 단일 hierarchy를 권위로 유지하고, guide는 충돌 조합과 실행 제약만 상세화한다.
- **판정 기록:** 2026-10-19 — 두 Markdown 문서를 교체/정리했다. 별도 fresh reviewer는 상위 작업자 소유다.
### REV-P1-002 — 설치 참고 자료 누락
- **심각도:** Medium
- **상태:** 보류
- **관찰:** 네 Addy checklist와 세 선택 skill이 설치되지 않았다.
- **근거:** 부모의 설치 경로 확인 기록, 이 보고서 §4 inventory.
- **영향:** 해당 Addy skill을 선택하더라도 일부 checklist 기반 점검은 완전 수행할 수 없다.
- **권장 조치:** 실제 작업 시 한계를 구체적으로 밝히고 가능한 부분만 확인한다. 이번 정책 변경에서 전역 설치/자료 복구는 하지 않는다.
- **판정 기록:** 2026-10-19 — scope 밖 변경 없이 한계로 보류.
### REV-P1-003 — 모델 자동 라우팅 증거 부재
- **심각도:** Low
- **상태:** 오탐 아님, 관찰 한계
- **관찰:** 설치 목록과 metadata는 prompt별 자동 skill routing을 증명하지 않는다.
- **근거:** 이번 작업은 정적/논리 검증을 수행했으며 실제 prompt별 모델 실행은 하지 않았다.
- **영향:** 정책상 기대 경로와 모델의 실제 자동 호출은 달라질 수 있다.
- **권장 조치:** 사용 중인 host에서 새 세션으로 별도 검증하되, 프로젝트 정책은 명시 호출 및 권한 경계를 유지한다.
- **판정 기록:** 2026-10-19 — 자동 성공 주장 없이 한계로 기록.
### REV-P1-004 — 호스트 호출 gate 및 요청 범위 표현
- **심각도:** Medium
- **상태:** 수정 완료
- **관찰:** 초기 시나리오 8은 OpenCode에서 model invocation이 비활성이라고 잘못 적었으나 installed skill에는 OpenCode autoinvoke metadata가 없어 광고될 수 있다. 시나리오 4는 일반 HTML 요청을 explicit-only skill 허가와 혼동했다. 로그인 기능 만들기 요청을 설계 요청으로만 축소했고, module/API skill 구분을 내부/공개로 잘못 제한했다. Codex manifest 경로/버전과 조사 inventory도 부족했다.
- **근거:** 부모가 직접 확인한 Codex manifest `.codex-plugin/plugin.json:46-49`, OpenCode Superpowers `package.json:1-6`, 실제 installed skill metadata 및 부모가 재확인한 파일 목록/설정 경로. 이번 보정의 직접 대상은 `AGENTS.md`, 상세 guide, 이 감사, plan의 Task 1.3.
- **영향:** OpenCode의 auto-selection 억제 여부에 대한 잘못된 주장, 사용자 요청 권한 축소/일반 산출물 요구의 오승인, 스킬 경계의 오라우팅 가능성.
- **권장 조치:** Codex implicit suppression, OpenCode visibility, project policy, user authorization, backend enforcement를 분리하고 실제 설치본의 경로/버전을 고정 기록한다.
- **판정 기록:** 2026-10-19 — 부모의 직접 대조 결과를 네 문서에서 교정. 이 기록은 구현자의 자체 검증이며 독립 reviewer 결과가 아니다.
## 8. 리뷰 종료 판정
| 판정 항목 | 결과 | 근거 |
|---|---|---|
| 리뷰 범위 전체 확인 | 충족 | 요구된 정책 및 sample 파일 읽음, 설치/검색 증거 범위와 한계 기록 |
| 후보 항목 판정 완료 | 충족 | 기존 모순은 수정 대상, 미설치 자료 및 런타임 자동 선택은 한계로 분리 |
| 확정 항목 plan 반영 | 충족 | `plan-task.md` Task 1.1에 정책 갱신 기록 |
| 보류 항목 담당·재개 조건 기록 | 충족 | REV-P1-002/003에 제한 및 재개 조건 명시 |
| 실행 검증과 결과 기록 | 충족 | 상위 작업자 정적 assert/직접 대조 및 Oracle 독립 리뷰 완료. 실제 모델 라우팅과 앱 실행은 미검증 |
**최종 결론:** 프로젝트 정책 문서 수정 및 검증 완료. Oracle의 독립 리뷰에서 차단/권장 수정 발견 사항은 없었으며, 아홉 시나리오는 모두 논리상 적합하다. 설치 누락과 실제 런타임 확인 한계는 REV-P1-002/003에 남긴다.
**남은 항목:** 현재 프로젝트 문서 작업에는 없음. 전역 자료 복구나 실제 모델 라우팅 검증을 원하면 별도 요청으로 진행한다.
## 9. 수정 후 검증 기록
### 1차 문서 수정 — 2026-10-19
- 무엇을: root 정책, 실행 상세 guide, 계획 및 이 감사 문서를 작성했다.
- 왜: project lifecycle hierarchy를 하나로 만들고 host/skill 경계를 출처와 함께 남기기 위해서다.
- 어떻게:
- `read` — 필수 다섯 문서를 읽음.
- `glob docs/20261019_스킬_자동_선택_정책/**` — 기존 작업 폴더 없음 확인.
- `wc -c AGENTS.md` — 변경 전 9357 bytes.
- 최종 diff/바이트 검사 및 독립 리뷰 — 아직 실행하지 않음.
- 남은 항목: 상위 작업자 fresh verification 및 reviewer 결과를 이 기록과 `plan-task.md`에 누적.
### 직접 대조 correction — 2026-10-19
- 무엇을: P1-R1에서 확인된 OpenCode 광고 가능성, Codex `skills: ./skills/`/version `6.4.2`와 OpenCode package version `7.0.0`, Codex 지침 선택 순서, explicit-only 요청의 정확한 경계, 기능 구현 권한 및 module/API 계약 범위를 반영했다. inventory와 deep-interview discovery 근거를 보강했다.
- 왜: 이전 audit 표현 중 일부가 설치 metadata와 요청 의미를 부정확하게 나타냈다.
- 어떻게: 네 대상 Markdown만 `apply_patch`로 수정했다. 아래 검증은 실제 수행한 정적 파일/문구/diff checks이며 host별 prompt 실행이나 independent review는 아니다.
- 별도 정정: 1차 기록의 `최종 diff/바이트 검사 및 독립 리뷰 — 아직 실행하지 않음`은 당시 시점의 사실로 유지한다. 이후 1차 작성 작업에서 `wc -c`, `test`, `rg`, `GIT_MASTER=1 git diff --check`, `GIT_MASTER=1 git status --short`를 수행했다. 이번 보정 후 검증은 상위 작업자 수행 예정이다.
- 남은 항목: 부모의 최종 fresh verification 및 independent review 결과를 별도 누적한다.
### 상위 작업자 문구 정합성 보정 — 2026-10-19
- 무엇을: grilling의 회차별 답변 대기와 최종 공유 이해 확인을 구분했다. API 전문 기준은 brainstorming 설계 안에서 적용하도록 명시하고, gstack의 모든 단계 사용·설치를 금지했다. 상세 가이드의 기존 변경 전/중/후 및 커밋 운영 체크를 보존했다.
- 근거: `~/.agents/skills/grilling/SKILL.md:8-30`, 두 호스트 brainstorming의 설계 후 계획 인계, 사용자 gstack 금지 요청, 기준 commit의 상세 가이드 운영 체크.
- 어떻게: P1-R1에 확인 항목을 먼저 추가한 뒤 지정 네 Markdown 안에서만 수정했다. Codex 디렉터리별 지침 선택도 파일이 없을 수 있으므로 '최대 하나'로 정밀화했다.
- 남은 항목: 독립 리뷰와 최종 정적/논리 검증. 실제 prompt별 모델 실행은 수행하지 않는다.
### 최종 상위 작업자 검증 및 독립 리뷰 — 2026-10-19
- 독립 리뷰: Oracle 세션 `ses_ead5ae4d3ffe9PQKHtYkj9nogU`가 기준 `ffa6ff0d22f4df5ac0a6cbb84288a73dcd7cf4cd` 대비 `git diff HEAD`와 네 문서 전체를 검토했다. 차단/권장 수정 발견 사항 없음, 아홉 시나리오 모두 적합 판정이다. 작성자 자체 검토와 구분되는 단일 독립 리뷰다.
- 정적 검사: 일회성 Node assert에서 보호 대상 root 섹션 8개 원문 일치, 커밋 스킬 로딩을 호스트별로 바꾼 한 줄 외 개발 가이드 보존, 기존 issue-tracker/domain 문서 불변, 정확한 네 파일 변경 범위, 기준 HEAD 유지, 아홉 사용자 문장 행·여섯 충돌 쌍 및 참조 파일 존재를 확인했다. 결과는 PASS이며 root 크기는 15,975 bytes다. 이는 문서 내용/구조 검사이지 모델 자동 호출 실험이 아니다.
- 공백 검사: 상위 작업자의 `GIT_MASTER=1 git diff --check` 및 신규 기록 두 개의 `git diff --no-index --check /dev/null <대상 경로>`가 모두 통과했다. 독립 리뷰의 `GIT_MASTER=1 git diff --check HEAD`도 통과했다.
- 진단: 네 파일에 `lsp_diagnostics`를 요청했으나 모두 `No LSP server configured for extension: .md`를 반환했다. Markdown LSP가 깨끗하다고 주장하지 않으며 서버 설치/설정 변경 없이 직접 문서 대조로 대체했다.
- 제외: 앱 코드 수정, 빌드·앱 테스트, 실제 모델 세션/훅 실행, 전역 설정/설치 파일 수정, 커밋·푸시·히스토리 재작성은 하지 않았다. 설치본의 upstream 무결성 및 Codex 세션 활성화도 입증하지 않았다.
- index 관찰: 네 문서의 staged/unstaged 변경이 혼재했다. staged 상태의 소유권이 확정되지 않아 그대로 보존했고, 검토와 검증은 unstaged diff만이 아닌 기준 HEAD 대비 전체 작업 트리를 대상으로 했다.
- 추가 승인 범위: Codex에서 Superpowers의 실제 활성/발견 상태를 별도로 확인한 뒤 필요할 때 전역 활성화 변경을 검토할 수 있다. 빠진 Addy 참고 파일/선택 스킬 복구와 호스트 권한 정책 변경 역시 이 작업에 포함되지 않으며 별도 요청·승인이 필요하다.
### 사용자 요청 재검증 — 2026-10-19
- 범위: 사용자의 재검증 요청에 따라 현재 네 문서와 기준 commit을 새로 대조했다. 정책 본문은 수정하지 않았으며 이 감사 기록만 추가한다. 이전 리뷰 승인을 이번 판정의 증거로 재사용하지 않았다.
| 검증 항목 | 이번 확인 결과 | 판정 | 근거/산출물 |
|---|---|---|---|
| 기존 규칙 보존 | 보호 대상 AGENTS 섹션 8개 원문 일치, 의도된 커밋 로딩 문구 외 개발 가이드 보존, 기존 tracker/domain 문서 불변 | PASS | 기준 `ffa6ff0d22f4df5ac0a6cbb84288a73dcd7cf4cd` 대비 일회성 Node assert, `AGENTS.md` |
| 생명주기 및 중복 방지 | Superpowers 주 생명주기, 단일 하위 단계 소유권, 여섯 충돌 조합 및 인터뷰 종료/인계 조건 재대조 | PASS | `AGENTS.md:74-140`, 상세 가이드, 현재 설치된 deep-interview/grilling 본문과 두 Matt 스킬의 YAML/frontmatter |
| 아홉 시나리오 | 사용자 원문 9개와 각 행의 필수 7개 항목 확인, 부정 조건을 포함한 논리 대조 | PASS | 이 문서 §6, 새 정적 검사 및 아래 독립 리뷰 |
| 문서 구조·범위 | 참조 경로 존재, orchestration 섹션 중복 없음, root 15,975 bytes, 기존 네 파일만 변경된 상태 | PASS | 새 Node assert, `git status`, `GIT_MASTER=1 git diff HEAD --check` |
| 단일 독립 게이트 | 현재 작업 트리 전체를 새로 읽어 검토, 새로운 차단/수정 필요 발견 사항 없음 | APPROVE | Oracle 세션 `ses_ead3313d8ffeXV3nlpORxCVzeQ`, 정적/논리 정합성에 한정한 높은 신뢰도 |
**환경 상태의 후속 정정**
- 이번 확인에서는 `~/.agents/references/security-checklist.md`, `accessibility-checklist.md`, `observability-checklist.md`, `performance-checklist.md` 네 파일이 모두 존재하며 전체 내용을 읽을 수 있었다. 따라서 §4, REV-P1-002 및 이전 시나리오 6의 참고 파일 부재 표현은 이전 점검 시점의 기록이다. 네 체크리스트 부재로 인한 한계는 현재 해소된 것으로 정정한다. 이번 작업에서 해당 전역 파일을 생성하거나 수정하지는 않았다.
- `deprecation-and-migration`, `debugging-and-error-recovery`, `shipping-and-launch` 세 선택 스킬은 공유 설치 경로에서 여전히 발견되지 않았다. 이 사실을 네 체크리스트의 현재 존재 여부와 구분한다.
- Superpowers 15개에 대한 두 호스트 설치본, Matt 5개, Addy 6개와 deep-interview 파일의 존재를 다시 확인했다. 파일 존재는 실제 모델 자동 호출 성공을 뜻하지 않는다. 프로젝트/하위 지침 검색에서는 여전히 root `AGENTS.md`만 발견됐고, 확인한 전역/프로젝트 override 후보는 부재했다.
**재검증 결론:** 요청한 오케스트레이션 내용은 현재 정책에 반영되어 있고, 새로운 정책 수정 필요 사항은 발견되지 않았다. 실제 Codex/OpenCode 자동 선택·훅·앱 실행은 이번에도 수행하지 않았다. 네 Markdown에 대한 LSP 요청은 `.md` 서버 미설정으로 실행 불가였으며, 직접 대조·정적 검사·독립 리뷰로 대체했다. 정책/앱 소스/전역 설정/설치 파일/index/HEAD는 변경하지 않았고, 커밋·푸시도 수행하지 않았다.