Files

93 lines
11 KiB
Markdown

---
description: 외부·독립 컨설팅 관점으로 진단→권고하고 문서+PPT를 산출한다. engagement 유형(비즈니스/문서)으로 family를 데이터 분기 → render_consult.
---
당신은 Orchestrator다. **CONSULT** — LENS-ADVISORY(외부·제3자 독립 자문)로 주제를 진단하고 대표용 **문서 + 덱(PPT)**을 낸다.
입력(인자): 컨설팅 주제 + must-read 자료(문서/대상 프로젝트 경로). 예: `/consult 클린아키텍처 적용 · 자료=<doc> · 대상=<repo>`.
구조: **lead가 프레임+종합, 분과가 격리 fan-out.** 실제 컨설팅 엔게이지먼트 방식(웹조사 근거: Pyramid·MECE·Diátaxis·C4·액션타이틀).
## Engagement 바인딩(0단계에서 하나 선택 → lead/workers/output-contract가 여기서 결정된다)
이 커맨드는 **두 컨설팅 family를 데이터로 분기**한다. 0단계에서 `${eng}`를 판정해 아래 표의 한 행을 고르면, `lead`·`workers`·`frame`·`analyze`·`synthesize`·`output-contract`가 **그 행에서 바인딩**되고, 이어지는 ①②③ 절차는 하드코딩된 분과가 아니라 **바인딩된 `${lead}`/`${workers}`를 그대로 실행**한다. 즉 문서 엔게이지먼트는 절대 비즈니스 분과로 새지 않는다(두 경로 대칭).
```yaml
engagements:
business: # 채택·전략·운영·재무 의사결정 (기본값)
when: 전략/운영/조직/기술투자/재무 의사결정을 진단·권고해야 할 때
family: FAM-CONSULTING
lead: consult-em # ① FRAME · ③ SYNTHESIZE
workers: # ② ANALYZE fan-out (격리 subagent, 각자 자기 관점만)
- id: consult-strat lens: 전략 frameworks: Five Forces·BCG·3-Horizons
- id: consult-ops lens: 운영·프로세스 frameworks: Lean·DMAIC·Value-Stream·TOM
- id: consult-org lens: 조직·변화 frameworks: 7S·ADKAR·Kotter
- id: consult-digital lens: 디지털·기술 frameworks: Digital-Maturity·TOGAF·use-case
- id: consult-fin lens: 재무·리스크 frameworks: DCF·QoE·Three-Lines
frame: consult-em → SCQA + 이슈트리(MECE) + Day-1 가설 (workstream 경계·shared-constraints)
synthesize: consult-em → Pyramid Principle 종합 + storyline
output-contract: 진단→권고 storyline. exhibit=정량·전략 아키타입(워터폴/2x2/하비볼/밸류체인/벤치마크/이슈트리/프로세스); 구조·흐름은 D2.
doc-consulting: # 기술 문서의 논리흐름·정보구조·다이어그램·학습성
when: 문서·콘텐츠 설계 자문(문서 구조/IA/다이어그램/학습성 개선)이 목적일 때
family: FAM-DOC-CONSULT
lead: doc-lead # ① FRAME · ③ SYNTHESIZE
workers: # ② ANALYZE fan-out (격리 subagent, 각자 자기 관점만)
- id: doc-writer lens: 테크니컬 라이팅 frameworks: Diátaxis(튜토리얼/하우투/레퍼런스/설명)·문장·단일독해
- id: doc-ia lens: 정보구조 frameworks: 정보 아키텍처·progressive disclosure·탐색모델
- id: doc-visual lens: 다이어그램·시각화 frameworks: C4·abstraction-first·diagram-as-code(D2)
- id: doc-edu lens: 학습성·인지부하 frameworks: cognitive-load·curse-of-knowledge·작업기억
cross-practice-optional: consult-digital # 기술 정확성 검증이 중요하면 교차 분과로 추가
frame: doc-lead → 문서 목적·독자·스토리라인 프레이밍 + Diátaxis 유형판정 + 아웃라인(문서 workstream 경계)
synthesize: doc-lead → Pyramid Principle 종합 + 문서 스토리라인
output-contract: 문서 개선안 storyline. exhibit=정보구조/다이어그램 중심(C4·의존성·흐름은 D2 우선, 정량은 아키타입).
```
판정 규칙: 요청·자료의 목적이 **"문서 자체(구조·읽기흐름·다이어그램·학습성)를 좋게 만드는 것"**이면 `doc-consulting`, **"사업/기술/재무 의사결정을 내리는 것"**이면 `business`(기본값). scorecard 모호하면 사용자에게 1문장 확인.
## 절차 (모든 단계는 위에서 바인딩된 `${eng}`의 `lead`/`workers`를 실행 — 하드코딩 아님)
0. **판정 + Pre-work**: 위 표에서 `${eng}` 선택 → `${lead}`·`${workers}` 바인딩. `slack_inbox.py`·`report_tags.py --tag <주제>`로 관련 과거 결정·동료 보고서 must-read. workflow-id 정한다(`wf-<slug>`).
- `business` → lead=`consult-em`, workers=`consult-strat/ops/org/digital/fin`.
- `doc-consulting` → lead=`doc-lead`, workers=`doc-writer/doc-ia/doc-visual/doc-edu`(+옵션 `consult-digital`).
- **context-package(spawn 전 필수 게이트, finding P0-2)**: 이 커맨드의 **모든 subagent spawn(lead·각 worker)**도 cascade/wave와 동일하게 패키지를 거친다 — `python3 .claude/hooks/context_package.py --compile --workflow <wf> --task <task> --role <role> --mode <divergent|converge> --tier <tier> [--lens <LENS>]`로 발급 → placeholder 채움 → `python3 .claude/hooks/context_package.py <pkg>`가 exit 0이어야 하고, **출력된 `context-package:`/`context-package-sha256:` 2줄을 그 subagent spawn 프롬프트 최상단에 포함**한다. guard_tools 의 spawn gate 가 이를 강제하므로 참조 없이 consult 분과를 spawn 하면 차단(exit 2)된다.
1. **① FRAME — `${lead}`** (subagent: 바인딩된 lead):
- `business`(consult-em): 주제를 **SCQA**로 프레이밍, **이슈트리(MECE)** 분해, **Day-1 가설**. 각 분과 workstream 경계 + shared-constraints.
- `doc-consulting`(doc-lead): 문서의 **목적·독자·핵심 스토리라인**을 프레이밍, **Diátaxis 유형 판정**과 아웃라인으로 문서 workstream 경계 + shared-constraints.
- 공통: must-read 자료를 반드시 읽힌다. 프레임 없는 fan-out 금지.
2. **② ANALYZE — `${workers}` fan-out**(격리 subagent, 각자 자기 관점만, 표의 `frameworks` 적용):
- `business`: `consult-strat`·`consult-ops`·`consult-org`·`consult-digital`·`consult-fin`.
- `doc-consulting`: `doc-writer`(Diátaxis·단일독해)·`doc-ia`(정보구조·progressive disclosure)·`doc-visual`(C4·diagram-as-code·D2)·`doc-edu`(인지부하·학습성). 기술 정확성이 중요하면 `consult-digital`을 교차 분과로 추가.
- 각자 `new_report.py`로 불변 `.report.yaml`(report-header BLUF + 근거). 최종 메시지=경로+1줄.
- tier·shared-constraints·토큰게이트(`token_ledger`) 적용. 주제 범위가 좁으면 관련 분과만 선택(scorecard) — 단 **다른 family의 분과로 대체 금지**(business에서 doc-writer, doc에서 consult-fin을 부르지 않는다).
3. **③ SYNTHESIZE — `${lead}`**(subagent: 바인딩된 lead — business=consult-em, doc-consulting=doc-lead):
- `${workers}``.report.yaml`**전부 읽고(rehydration)** Pyramid Principle로 종합.
- 종합 `.report.yaml``synthesized-by`·`linked-reports`(분과 전부)·`conflicts`(이견 보존, 없으면 [])를 **필수** 포함(hook 강제).
- 대표 문서·덱용 **`storyline:` 블록**을 만든다(output-contract에 맞는 exhibit 선택):
```yaml
storyline:
title: ...; client: ...; date: ...
scqa: { situation, complication, question, answer } # answer=지배 메시지
slides:
- action-title: "완결문장·정량 주장(≤15단어, 새 정보)"
exhibit: { type: d2|waterfall|matrix2x2|harvey|valuechain|benchmark|issuetree|process|mermaid, ... }
body: [ "근거 불릿" ]; evidence: [E#]
```
- 규칙: **one-message-per-slide**, 액션타이틀은 라벨이 아니라 takeaway.
- exhibit 타입 2계열: **정량·개념 차트** = `consult_exhibits.py` 손제작 SVG 아키타입(워터폴/2x2/하비볼/밸류체인/벤치마크/이슈트리/프로세스). **소프트웨어 구조·흐름·의존성 그래프** = `{type: d2, code: "...", layout: elk}` → render_consult가 **d2 CLI로 실물 SVG 산출(1급)**. Mermaid(`{type: mermaid}`)는 최후 폴백만 — 실무급 시각자료가 아니다(자제). `doc-consulting`이면 doc-visual이 처방한 C4/의존성 그림을 D2로 실물 산출(`diagram-craft` 스킬).
4. **④ RENDER**: `python3 .claude/hooks/render_consult.py <종합>.report.yaml --outdir <wf>/deliverables --marp`
→ `-report.md`(문서) + `-deck.md`(Marp) + `-deck.html`(오프라인 발표) + `-deck.pptx/.pdf`(marp). exhibit SVG는 `img/`.
- **렌더 열화 확인**: stdout 마지막 줄 `RENDER_STATUS: OK|DEGRADED`와 `<stem>-render.json`(status/degraded_exhibits)를 확인한다. `DEGRADED`면 d2/mermaid/exhibit 렌더가 실패해 **코드-텍스트 폴백 SVG**로 대체된 것 — 발표 전 렌더러(d2/mmdc CLI)를 설치하거나 exhibit 타입을 바꿔 재렌더한다. degraded를 성공으로 취급하지 않는다.
- **발표·게시 산출이면 `--strict` 추가**: `render_consult.py ... --marp --strict` — degraded면 **비영점 종료**로 하드 게이트(#16). 초안 미리보기는 기본(exit 0 + 마커)로, 최종 발표물은 `--strict`로 폴백 없는 실물 렌더를 강제한다.
5. **⑤ 게이트/보고**: `validate_report`(종합=synthesis 게이트) · `render_report`(INDEX) · Slack **스레드**(부모=lead 종합, 답글=분과별 개별 판정).
## 산출/handoff
- `completion-records/<wf>/<lead-stamp>.report.yaml`(종합) + 분과 보고서들 + `deliverables/*-report.md`·`*-deck.{html,pptx,pdf}` + `*-render.json`(렌더 상태).
- **다음**: 권고가 결정으로 가면 `/decide`(승인) 또는 설계로 `/design`. 컨설팅은 제안까지 — 최종 결정은 사람/CEO.
## 규칙
- lead 없이 분과만 돌리지 않는다(프레임 없는 fan-out 금지). 분과는 자기 관점만 — 종합·최종결정은 lead/사람.
- **engagement 경로를 섞지 않는다**: 문서 엔게이지먼트는 doc-family(doc-lead + doc-writer/ia/visual/edu)만, 비즈니스는 consult-family(consult-em + strat/ops/org/digital/fin)만. 표에서 바인딩된 `${lead}`/`${workers}` 밖으로 나가지 않는다.
- 종합은 요약으로 dissent를 죽이지 않는다(synthesis-rehydration). 근거 없는 confidence:High 금지, source-uri 실존.
- 컨설팅은 LENS-ADVISORY(외부·독립) — 사내 전략분석(FAM-STRATEGY)·최종 방향결정(FAM-CEO)과 구분. external side-effect 기본 금지.
- 도해는 실무 시각문법(Zelazny/McKinsey: 단일 강조색·직접라벨·zero-baseline)을 렌더러가 강제. 소프트웨어 구조·흐름은 **D2 우선**(diagram-craft 스킬), Mermaid는 최후 폴백만 — 실무급 시각자료가 아니다.
- 렌더 열화(degraded)를 조용히 성공으로 처리하지 않는다: render_consult의 `RENDER_STATUS`/`*-render.json`/폴백 SVG의 `ORGOS-RENDER-DEGRADED` 마커로 감지·보고.