Installs into .claude/skills of the current project.
Are you the author of Consult Expert?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/kohj1018-consult-expert-agentic-dev-harness)
---
name: consult-expert
description: 도메인 전문가 자문 — 법률(legal) / 사업전략(strategy) / 제품표면 마케팅(marketing) / 데이터 계측·해석(data) / 설계층 보안(security). 1차 출처 조회 기반 판정과 노트 작성 전용. 코드·기획 문서 수정 X.
argument-hint: "<legal|strategy|marketing|data|security> <질문 — 도메인별 필수 입력 포함>"
disable-model-invocation: true
allowed-tools: Read Glob Grep WebSearch WebFetch Write Agent
---
이 skill 은 **도메인 자문 + 노트 작성 전용**이다. 코드·workitem·charter·ARCHITECTURE·DESIGN 을 수정하지 않는다(노트 파일 1개만 Write).
**구조 (ADR-062 D1)**: 본 skill 1개가 *워크플로·출력 계약·경계 규약*을 소유하고, 도메인별 **agent** 가 *조사·판정*을 소유한다. 도메인마다 skill 을 만들지 않는다 — 조사 출력은 장황하고(컨텍스트 격리 필요), 도구 제한으로 코드 수정을 막아야 하며, 메인에는 요약만 돌아오면 되기 때문이다.
> 메인 세션에서 실행한다(`/research-pack` 패턴). 무거운 조사·판정은 도메인 agent 에 `Agent` 위임해 메인 컨텍스트 오염을 막는다. agent 는 report-only 이고 노트 Write 는 본 skill 이 한다.
**Codex**: 서브에이전트 위임이 매핑되지 않았으므로 메인 세션이 해당 agent 본문을 **인라인 수행**한다(designer degrade 와 동형). **파일명은 도메인 인자와 다르다** — 아래 `## 도메인 매핑` 표의 `agent` 열을 보고 `.claude/agents/<agent>.md` 를 연다(예: `legal` → `counsel.md`).
정책 SSOT: [ADR-062](../../../docs/90-decisions/boilerplate/ADR-062-domain-advisory-capability.md).
## 도메인 매핑
| 인자 | agent | 담당 | 필수 입력 (없으면 되묻고 종료 — 추측 금지) |
|---|---|---|---|
| `legal` | `counsel` | 관할별 규제, 처리방침·약관 요건, 라이선스 호환성 | **관할(국가/지역)**. 여러 관할이면 관할별로 나눠 답한다 |
| `strategy` | `strategist` | 수익 구조·가격·유닛 이코노믹스·시장 규모·경쟁 포지셔닝 | **과금 대상**(누가 돈을 내나) + 대상 시장 |
| `marketing` | `marketer` | 포지셔닝, 랜딩·가격 카피, SEO 구조, 제품 발송 이메일 | **어느 화면/표면**인지 |
| `data` | `analyst` | 계측 설계, 수집 데이터 해석 | **측정 대상**(어떤 행동·결과를 알고 싶은가) |
| `security` | `security` | 설계층 위협 모델, 보호 등급, 인증·인가 경계 | **대상 자산**(무엇을 지키나) |
## 수행
1. **도메인 인자 확인.** 없으면 위 표를 제시하고 종료한다.
2. **도메인별 필수 입력 확인.** 없으면 되묻고 종료한다 — **추측해서 진행하지 않는다.**
3. **기존 조사 재사용 확인**: `docs/10-charter/insights/` 를 **파일명으로만** 훑는다(통째 읽기 금지 — ADR-019 index-first). 같은 도메인·같은 주제 노트가 있으면 그것을 먼저 읽고, `확인일` 을 판정해 유효하면 재조사하지 않고 인용한다. 법령·가격·보안 advisory 는 확인일 1개월 초과 시 그 항목만 재확인한다. **기존 노트만으로 질문이 완결되면 4를 건너뛰고 5로 간다**(그 경우 새 노트를 만들지 않고 기존 노트를 인용한다 — 7 참조).
4. **해당 agent 에 `Agent` 위임.** 2개 이상 필요하면 — **종속 관계가 있으면 순차**(입력을 만드는 쪽을 먼저), **서로 독립이면 병렬 가능**하다(ADR-062 D5). 어느 경우도 결론은 정본 문서·원장을 경유해 전달하고(D4), 한 라운드에 사용자에게 제시하는 결정은 **3~5개 상한**을 지킨다.
5. **반환 결론을 아래 `## 출력 계약` 대로 사용자에게 제시**한다.
6. **사용자 답변을 받아 평이한 문장으로 재진술해 확인**한다(선택 / 추가 설명 / 재조사 / 연기 중 택1 — `skip` 불허. 재제시 규칙은 아래 `## 동작`).
7. **확인된 결론을 노트 1개로 Write**: `docs/10-charter/insights/<YYYY-MM-DD>-<도메인>-<slug>.md`. 노트 형식은 해당 agent 본문이 소유한다(정본 문서 스키마에서 역산된 형식이므로 임의로 바꾸지 않는다). **노트는 6의 답변 확인 뒤에 쓴다** — 확정되지 않은 선택지를 기록하면 나중에 어느 안이 채택됐는지 알 수 없다(ADR-060 D3 *"답변을 재진술해 확인한 뒤 정본에 기록"* 정합). 3에서 기존 노트를 재사용했고 새 사실이 없으면 새 노트를 만들지 않는다.
8. **원장·정본 반영은 제안만** 한다. 직접 쓰지 않는다.
## 출력 계약 (ADR-062 D7)
- **첫 줄은 결론 1문장** (두괄식). 근거는 그 뒤.
- 형식은 [ADR-060](../../../docs/90-decisions/boilerplate/ADR-060-decision-closure-and-milestone-seal.md) D3 **Decision Brief 6블록**: 배경(왜 지금) → **용어(그 도메인을 처음 보는 사람이 배경만 읽고 이해되게)** → 선택지 2~3안(각 한 줄 요약·이 프로젝트에서의 체감·장점·감수할 것) → 되돌리기 비용 → 추천+근거 → 답변 방법. [ADR-046](../../../docs/90-decisions/boilerplate/ADR-046-signal-first-output.md)#amend-1 압축 예외 적용 — **짧게 줄이지 않는다.**
- 전문 용어를 쓸 때마다 평이한 설명을 함께 둔다.
- 등급별 요약 1줄: 도메인의 등급 체계별 건수.
- **원장 등재 제안**: 사용자가 정하거나 승인해야 할 항목 + `authority` 제안(ADR-060 D2 기준).
- 차단 등급 항목이 있으면: 필요한 전문가 유형 + 물어볼 질문 목록.
- **작성한 노트에도 같은 규율을 적용한다 — 단 6블록 *구조*가 아니라 평이한 언어·용어 설명 규율이다**(구조는 각 agent 의 `## 노트 형식` 이 소유 — ADR-062 D7·D8). 노트가 전문가끼리 쓰는 문서가 되면 6개월 뒤 작성자 자신이 읽지 못한다.
## 동작 (ADR-062 D9 — 1.5회전 기본, 상한 2회전)
위 `## 수행` 3~8 의 회전 규칙이다. 조사(3·4) → **제시(5)** → **답변(6)** → **기록(7)** → 반영 제안(8).
**6 의 답변이 재조사 요청이거나 선택지가 모두 맞지 않으면 그 축만 재조사하고 5 를 다시 한다**(전체 재조사 금지). 재제시는 **최대 1회**. 그래도 수렴하지 않으면 `이 결정은 정보가 부족합니다 — 필요한 것: <목록>` 으로 종료하고(노트는 쓰지 않는다) 원장 `open` 등재를 제안한다.
## 단일 소유자 (ADR-062 D3 — 겹치는 사실은 소유자 1명)
| 겹치는 사실 | 소유자 | 다른 도메인의 역할 |
|---|---|---|
| 가격 숫자·티어 구조 | `strategist` | `marketer` 는 표현만 |
| 가격 페이지 카피 | `marketer` | `strategist` 관여 X |
| 수집할 데이터 항목 | `analyst` | `counsel`=법적 고지 / `security`=보호 등급 |
| 그 항목의 법적 근거·고지 | `counsel` | `analyst` 관여 X |
| 그 항목의 암호화·접근통제 | `security` | `analyst` 관여 X |
| 브랜드 voice 규칙 | **DESIGN.md `## 10`** | `marketer` 는 준수만 — 변경은 `/bootstrap-design --update` |
| 페르소나·pain·JTBD | **DISCOVERY** | `strategist`·`marketer` 는 읽기만 — 재발굴 금지 |
| 기술 구조 결정 | **ARCHITECTURE** | `security` 는 위협만 지적 |
## 결론 전달 규약 (ADR-062 D4 — agent 간 직접 통신 금지)
도메인 A 의 결론을 도메인 B 가 쓸 때, **A 가 B 에게 직접 전달하지 않는다.** A 의 결론이 **정본 문서 또는 결정 원장에 기록된 뒤** B 가 그것을 읽는다.
선행 입력이 없으면 B 를 부르지 않고 안내한다 — 예: `수집 항목 미확인 (FEATURE ## 8-1 계측 필드 부재) — /consult-expert data 선행 필요`.
## 재자문 반환 (ADR-062 D5 — 순환 차단)
agent 가 `재자문 필요: <도메인> — <무엇을 왜>` 를 반환하면 **자동으로 그 도메인을 부르지 않는다.** 사용자에게 제시하고 결정을 받는다(이것이 순환을 끊는 지점이며, 병렬 허용과는 무관하다 — 재자문은 *종속* 신호다).
## 입력 문서 부재 처리 (전 도메인 공통)
각 agent 의 `반드시 읽는다` 목록에는 **부재할 수 있는 문서**가 섞여 있다 — `DISCOVERY.md` 는 선택 산출물(`/discover-product` 미실행 시 없음)이고, ARCH `## 7-1`~`## 7-5` 와 `DESIGN.md` 는 스택에 따라 삭제되며, `F-*.md` 는 첫 마일스톤 전에는 없다.
- 부재를 발견하면 **그 사실을 출력에 1줄 명시**하고, **대체 가능한 문서로 좁혀 판단**한다(예: DISCOVERY 페르소나 부재 → charter `## 2.1`/`## 3.1`).
- 대체가 불가능해 판단의 전제가 비면 판정하지 않고 `기반 컨텍스트 부재: <무엇> — <선행 skill> 권장` 으로 반환한다.
- **부재를 침묵하고 추측으로 채우지 않는다** — 이것이 D2 의 조회 규율이 막으려는 실패와 같은 종류다.
## 가드
- 코드·workitem·charter·ARCHITECTURE·DESIGN 일체 수정 금지 (`insights/` 노트 1개만 Write).
- 출처 없는 사실 주장 금지. 등급 미달 항목을 등급을 올려 적지 않는다.
- 원장에 직접 쓰지 않는다 — 등재 제안만(원장 writer 는 ADR-060 이 정한 집합).
- 도구 설치·API 키 취급 금지 — MCP 등재는 [ADR-043](../../../docs/90-decisions/boilerplate/ADR-043-optional-mcp-connectors.md) 절차로 사용자가 수행.
## Context 정책 (ADR-019)
본 skill 은 도메인 agent 본문을 사전 로드하지 않는다 — 인자로 지정된 도메인 1개만 `Agent` 위임 시 로드된다. 추가 자료는 발화 시 인용.