@tienne/gestalt 0.88.0 → 0.90.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/CLAUDE.md +7 -2
  2. package/README.ko.md +2 -1
  3. package/README.md +3 -1
  4. package/dist/package.json +7 -4
  5. package/dist/plugin/skills/_shared/proactive-routing.md +29 -12
  6. package/dist/plugin/skills/architecture/SKILL.md +944 -0
  7. package/dist/plugin/skills/brief/SKILL.md +2 -1
  8. package/dist/plugin/skills/dispatch/SKILL.md +2 -0
  9. package/dist/plugin/skills/explain/SKILL.md +4 -2
  10. package/dist/plugin/skills/jira-create/SKILL.md +2 -0
  11. package/dist/plugin/skills/pr/SKILL.md +2 -0
  12. package/dist/plugin/skills/presentation/SKILL.md +2 -0
  13. package/dist/plugin/skills/review/SKILL.md +1 -0
  14. package/dist/plugin/skills/review-loop/SKILL.md +3 -1
  15. package/dist/plugin/skills/review-reply/SKILL.md +2 -0
  16. package/dist/plugin/skills/ship/SKILL.md +2 -2
  17. package/dist/plugin/skills/slack-send/SKILL.md +2 -0
  18. package/dist/schemas/architecture-ir.schema.json +596 -0
  19. package/dist/src/architecture/canvas-geometry.d.ts +40 -0
  20. package/dist/src/architecture/canvas-geometry.d.ts.map +1 -0
  21. package/dist/src/architecture/canvas-geometry.js +212 -0
  22. package/dist/src/architecture/canvas-geometry.js.map +1 -0
  23. package/dist/src/architecture/codeowners.d.ts +16 -0
  24. package/dist/src/architecture/codeowners.d.ts.map +1 -0
  25. package/dist/src/architecture/codeowners.js +58 -0
  26. package/dist/src/architecture/codeowners.js.map +1 -0
  27. package/dist/src/architecture/compare-layout.d.ts +27 -0
  28. package/dist/src/architecture/compare-layout.d.ts.map +1 -0
  29. package/dist/src/architecture/compare-layout.js +72 -0
  30. package/dist/src/architecture/compare-layout.js.map +1 -0
  31. package/dist/src/architecture/dataflow-layout.d.ts +29 -0
  32. package/dist/src/architecture/dataflow-layout.d.ts.map +1 -0
  33. package/dist/src/architecture/dataflow-layout.js +229 -0
  34. package/dist/src/architecture/dataflow-layout.js.map +1 -0
  35. package/dist/src/architecture/doc-fresh.d.ts +31 -0
  36. package/dist/src/architecture/doc-fresh.d.ts.map +1 -0
  37. package/dist/src/architecture/doc-fresh.js +84 -0
  38. package/dist/src/architecture/doc-fresh.js.map +1 -0
  39. package/dist/src/architecture/doc-link.d.ts +84 -0
  40. package/dist/src/architecture/doc-link.d.ts.map +1 -0
  41. package/dist/src/architecture/doc-link.js +396 -0
  42. package/dist/src/architecture/doc-link.js.map +1 -0
  43. package/dist/src/architecture/doc-routes.d.ts +39 -0
  44. package/dist/src/architecture/doc-routes.d.ts.map +1 -0
  45. package/dist/src/architecture/doc-routes.js +123 -0
  46. package/dist/src/architecture/doc-routes.js.map +1 -0
  47. package/dist/src/architecture/doc-scan.d.ts +107 -0
  48. package/dist/src/architecture/doc-scan.d.ts.map +1 -0
  49. package/dist/src/architecture/doc-scan.js +617 -0
  50. package/dist/src/architecture/doc-scan.js.map +1 -0
  51. package/dist/src/architecture/doc-stale.d.ts +32 -0
  52. package/dist/src/architecture/doc-stale.d.ts.map +1 -0
  53. package/dist/src/architecture/doc-stale.js +60 -0
  54. package/dist/src/architecture/doc-stale.js.map +1 -0
  55. package/dist/src/architecture/drilldown.d.ts +51 -0
  56. package/dist/src/architecture/drilldown.d.ts.map +1 -0
  57. package/dist/src/architecture/drilldown.js +1160 -0
  58. package/dist/src/architecture/drilldown.js.map +1 -0
  59. package/dist/src/architecture/endpoint-match.d.ts +43 -0
  60. package/dist/src/architecture/endpoint-match.d.ts.map +1 -0
  61. package/dist/src/architecture/endpoint-match.js +133 -0
  62. package/dist/src/architecture/endpoint-match.js.map +1 -0
  63. package/dist/src/architecture/flow-layout.d.ts +79 -0
  64. package/dist/src/architecture/flow-layout.d.ts.map +1 -0
  65. package/dist/src/architecture/flow-layout.js +519 -0
  66. package/dist/src/architecture/flow-layout.js.map +1 -0
  67. package/dist/src/architecture/focus.d.ts +14 -0
  68. package/dist/src/architecture/focus.d.ts.map +1 -0
  69. package/dist/src/architecture/focus.js +107 -0
  70. package/dist/src/architecture/focus.js.map +1 -0
  71. package/dist/src/architecture/global-context.d.ts +23 -0
  72. package/dist/src/architecture/global-context.d.ts.map +1 -0
  73. package/dist/src/architecture/global-context.js +67 -0
  74. package/dist/src/architecture/global-context.js.map +1 -0
  75. package/dist/src/architecture/html-client.d.ts +35 -0
  76. package/dist/src/architecture/html-client.d.ts.map +1 -0
  77. package/dist/src/architecture/html-client.js +1852 -0
  78. package/dist/src/architecture/html-client.js.map +1 -0
  79. package/dist/src/architecture/html-renderer.d.ts +22 -0
  80. package/dist/src/architecture/html-renderer.d.ts.map +1 -0
  81. package/dist/src/architecture/html-renderer.js +1290 -0
  82. package/dist/src/architecture/html-renderer.js.map +1 -0
  83. package/dist/src/architecture/html-theme.d.ts +25 -0
  84. package/dist/src/architecture/html-theme.d.ts.map +1 -0
  85. package/dist/src/architecture/html-theme.js +681 -0
  86. package/dist/src/architecture/html-theme.js.map +1 -0
  87. package/dist/src/architecture/index.d.ts +9 -0
  88. package/dist/src/architecture/index.d.ts.map +1 -0
  89. package/dist/src/architecture/index.js +9 -0
  90. package/dist/src/architecture/index.js.map +1 -0
  91. package/dist/src/architecture/ir-schema.d.ts +1832 -0
  92. package/dist/src/architecture/ir-schema.d.ts.map +1 -0
  93. package/dist/src/architecture/ir-schema.js +343 -0
  94. package/dist/src/architecture/ir-schema.js.map +1 -0
  95. package/dist/src/architecture/kind-text.d.ts +21 -0
  96. package/dist/src/architecture/kind-text.d.ts.map +1 -0
  97. package/dist/src/architecture/kind-text.js +42 -0
  98. package/dist/src/architecture/kind-text.js.map +1 -0
  99. package/dist/src/architecture/layout.d.ts +227 -0
  100. package/dist/src/architecture/layout.d.ts.map +1 -0
  101. package/dist/src/architecture/layout.js +627 -0
  102. package/dist/src/architecture/layout.js.map +1 -0
  103. package/dist/src/architecture/mcp-tool-match.d.ts +49 -0
  104. package/dist/src/architecture/mcp-tool-match.d.ts.map +1 -0
  105. package/dist/src/architecture/mcp-tool-match.js +53 -0
  106. package/dist/src/architecture/mcp-tool-match.js.map +1 -0
  107. package/dist/src/architecture/merge.d.ts +54 -0
  108. package/dist/src/architecture/merge.d.ts.map +1 -0
  109. package/dist/src/architecture/merge.js +681 -0
  110. package/dist/src/architecture/merge.js.map +1 -0
  111. package/dist/src/architecture/micro-app.d.ts +20 -0
  112. package/dist/src/architecture/micro-app.d.ts.map +1 -0
  113. package/dist/src/architecture/micro-app.js +41 -0
  114. package/dist/src/architecture/micro-app.js.map +1 -0
  115. package/dist/src/architecture/name-ref-match.d.ts +43 -0
  116. package/dist/src/architecture/name-ref-match.d.ts.map +1 -0
  117. package/dist/src/architecture/name-ref-match.js +127 -0
  118. package/dist/src/architecture/name-ref-match.js.map +1 -0
  119. package/dist/src/architecture/packs/data.d.ts +109 -0
  120. package/dist/src/architecture/packs/data.d.ts.map +1 -0
  121. package/dist/src/architecture/packs/data.js +64 -0
  122. package/dist/src/architecture/packs/data.js.map +1 -0
  123. package/dist/src/architecture/packs/generic.d.ts +47 -0
  124. package/dist/src/architecture/packs/generic.d.ts.map +1 -0
  125. package/dist/src/architecture/packs/generic.js +35 -0
  126. package/dist/src/architecture/packs/generic.js.map +1 -0
  127. package/dist/src/architecture/packs/harness.d.ts +96 -0
  128. package/dist/src/architecture/packs/harness.d.ts.map +1 -0
  129. package/dist/src/architecture/packs/harness.js +66 -0
  130. package/dist/src/architecture/packs/harness.js.map +1 -0
  131. package/dist/src/architecture/packs/index.d.ts +840 -0
  132. package/dist/src/architecture/packs/index.d.ts.map +1 -0
  133. package/dist/src/architecture/packs/index.js +87 -0
  134. package/dist/src/architecture/packs/index.js.map +1 -0
  135. package/dist/src/architecture/packs/infra.d.ts +91 -0
  136. package/dist/src/architecture/packs/infra.d.ts.map +1 -0
  137. package/dist/src/architecture/packs/infra.js +57 -0
  138. package/dist/src/architecture/packs/infra.js.map +1 -0
  139. package/dist/src/architecture/packs/knowledge.d.ts +72 -0
  140. package/dist/src/architecture/packs/knowledge.d.ts.map +1 -0
  141. package/dist/src/architecture/packs/knowledge.js +58 -0
  142. package/dist/src/architecture/packs/knowledge.js.map +1 -0
  143. package/dist/src/architecture/packs/process.d.ts +87 -0
  144. package/dist/src/architecture/packs/process.d.ts.map +1 -0
  145. package/dist/src/architecture/packs/process.js +52 -0
  146. package/dist/src/architecture/packs/process.js.map +1 -0
  147. package/dist/src/architecture/packs/render-classes.d.ts +11 -0
  148. package/dist/src/architecture/packs/render-classes.d.ts.map +1 -0
  149. package/dist/src/architecture/packs/render-classes.js +92 -0
  150. package/dist/src/architecture/packs/render-classes.js.map +1 -0
  151. package/dist/src/architecture/packs/types.d.ts +66 -0
  152. package/dist/src/architecture/packs/types.d.ts.map +1 -0
  153. package/dist/src/architecture/packs/types.js +18 -0
  154. package/dist/src/architecture/packs/types.js.map +1 -0
  155. package/dist/src/architecture/packs/web-product.d.ts +348 -0
  156. package/dist/src/architecture/packs/web-product.d.ts.map +1 -0
  157. package/dist/src/architecture/packs/web-product.js +226 -0
  158. package/dist/src/architecture/packs/web-product.js.map +1 -0
  159. package/dist/src/architecture/sequence-layout.d.ts +50 -0
  160. package/dist/src/architecture/sequence-layout.d.ts.map +1 -0
  161. package/dist/src/architecture/sequence-layout.js +140 -0
  162. package/dist/src/architecture/sequence-layout.js.map +1 -0
  163. package/dist/src/architecture/service-facts.d.ts +30 -0
  164. package/dist/src/architecture/service-facts.d.ts.map +1 -0
  165. package/dist/src/architecture/service-facts.js +88 -0
  166. package/dist/src/architecture/service-facts.js.map +1 -0
  167. package/dist/src/architecture/store.d.ts +50 -0
  168. package/dist/src/architecture/store.d.ts.map +1 -0
  169. package/dist/src/architecture/store.js +320 -0
  170. package/dist/src/architecture/store.js.map +1 -0
  171. package/dist/src/architecture/types.d.ts +400 -0
  172. package/dist/src/architecture/types.d.ts.map +1 -0
  173. package/dist/src/architecture/types.js +75 -0
  174. package/dist/src/architecture/types.js.map +1 -0
  175. package/dist/src/architecture/validator.d.ts +65 -0
  176. package/dist/src/architecture/validator.d.ts.map +1 -0
  177. package/dist/src/architecture/validator.js +1249 -0
  178. package/dist/src/architecture/validator.js.map +1 -0
  179. package/dist/src/core/errors.d.ts +4 -0
  180. package/dist/src/core/errors.d.ts.map +1 -1
  181. package/dist/src/core/errors.js +8 -0
  182. package/dist/src/core/errors.js.map +1 -1
  183. package/dist/src/core/types.d.ts +4 -0
  184. package/dist/src/core/types.d.ts.map +1 -1
  185. package/dist/src/mcp/schemas.d.ts +317 -0
  186. package/dist/src/mcp/schemas.d.ts.map +1 -1
  187. package/dist/src/mcp/schemas.js +151 -0
  188. package/dist/src/mcp/schemas.js.map +1 -1
  189. package/dist/src/mcp/server.d.ts.map +1 -1
  190. package/dist/src/mcp/server.js +7 -1
  191. package/dist/src/mcp/server.js.map +1 -1
  192. package/dist/src/mcp/tools/architecture-passthrough.d.ts +9 -0
  193. package/dist/src/mcp/tools/architecture-passthrough.d.ts.map +1 -0
  194. package/dist/src/mcp/tools/architecture-passthrough.js +587 -0
  195. package/dist/src/mcp/tools/architecture-passthrough.js.map +1 -0
  196. package/dist/src/skills/parser.d.ts.map +1 -1
  197. package/dist/src/skills/parser.js +1 -0
  198. package/dist/src/skills/parser.js.map +1 -1
  199. package/dist/src/skills/types.d.ts +4 -0
  200. package/dist/src/skills/types.d.ts.map +1 -1
  201. package/dist/src/utils/claude-projects.d.ts +19 -0
  202. package/dist/src/utils/claude-projects.d.ts.map +1 -0
  203. package/dist/src/utils/claude-projects.js +157 -0
  204. package/dist/src/utils/claude-projects.js.map +1 -0
  205. package/dist/src/utils/read-only-tools.d.ts +19 -0
  206. package/dist/src/utils/read-only-tools.d.ts.map +1 -0
  207. package/dist/src/utils/read-only-tools.js +132 -0
  208. package/dist/src/utils/read-only-tools.js.map +1 -0
  209. package/package.json +7 -4
  210. package/plugin/.codex-plugin/plugin.json +1 -1
  211. package/plugin/.mcp.json +1 -1
  212. package/plugin/mcp.json +1 -1
  213. package/plugin/skills/_shared/proactive-routing.md +29 -12
  214. package/plugin/skills/architecture/SKILL.md +944 -0
  215. package/plugin/skills/brief/SKILL.md +2 -1
  216. package/plugin/skills/dispatch/SKILL.md +2 -0
  217. package/plugin/skills/explain/SKILL.md +4 -2
  218. package/plugin/skills/jira-create/SKILL.md +2 -0
  219. package/plugin/skills/pr/SKILL.md +2 -0
  220. package/plugin/skills/presentation/SKILL.md +2 -0
  221. package/plugin/skills/review/SKILL.md +1 -0
  222. package/plugin/skills/review-loop/SKILL.md +3 -1
  223. package/plugin/skills/review-reply/SKILL.md +2 -0
  224. package/plugin/skills/ship/SKILL.md +2 -2
  225. package/plugin/skills/slack-send/SKILL.md +2 -0
  226. package/schemas/architecture-ir.schema.json +596 -0
package/CLAUDE.md CHANGED
@@ -17,6 +17,7 @@
17
17
  - **Memory**: 이전 스펙·실행 이력을 `.gestalt/memory.json`에 축적, 신규 인터뷰에 자동 주입
18
18
  - **Multi-Provider LLM**: frugal/standard/frontier 티어별로 Anthropic/OpenAI 호환 프로바이더 자유 조합
19
19
  - **Local PR**: 에이전트끼리 레포 안에서 PR을 만들고 리뷰하고 머지하는 자리 — 원격에 안 나간다. 워크트리 여럿이 `.gestalt/reviews.db` 하나를 공유한다
20
+ - **Architecture View**: 세션이 코드와 맥락 소스를 탐색해 근거 달린 IR을 쓰면 서버가 검증하고 elkjs 좌표로 단일 HTML을 그린다. 서비스 노드가 있으면 전체에서 서비스, 기능영역, 화면으로 들어가는 드릴다운이 된다. 노드 하나를 고르면 그와 위아래로 이어진 카드만 남기는 포커스도 된다. 서비스 아래에는 손님, 직원, 시스템을 가로줄로 나눠 정상 흐름과 취소나 노쇼 같은 옆 흐름을 함께 그리는 도메인 흐름 레벨을 둘 수 있다. 흐름 그림은 상태 값으로, 기술 그림은 세션이 정한 구간으로 왼쪽에서 오른쪽을 나눈다. 단계 카드에서 기술 그림의 화면과 API로 건너간다. 근거 없는 실선은 거부하고 근거 없는 연결은 미해결 질문으로 돌린다. 따로 돌린 분석 둘을 git remote 기준으로 합쳐 제품끼리 같이 쓰는 게이트웨이와 서버, 저장소를 한 그림에 모을 수도 있다. 합친 그림은 맨 위에 같이 쓰는 카드를, 그 아래로 제품마다 전용 카드를 띠로 나눠 그리고 같이 쓰는 카드 위에 제품 브릭을 꽂는다. 전체보기는 prod 기준이다. 저장은 `.gestalt/architecture/`
20
21
  - **Event Store**: better-sqlite3 WAL 모드 이벤트 소싱
21
22
 
22
23
  ## Tech Stack
@@ -36,6 +37,7 @@ pnpm tsx bin/gestalt.ts init # gestalt.json + code graph + post-commit hook
36
37
  pnpm verify:rules # 룰북과 에이전트 문서의 룰 ID·심각도 정합 검사
37
38
  pnpm verify:output-style # 룰 ID 정합과 HOIST 조각 검사 (postbuild에도 걸려 있다)
38
39
  pnpm build:output-style # 룰북 → ~/.claude/output-styles/tienne-voice.md 생성
40
+ pnpm build:routing # SKILL.md triggers → proactive-routing.md 스킬 표 생성 (verify:routing이 gate에서 검사)
39
41
  pnpm tsx bin/gestalt.ts humanize-scan --file a.md --register chat # 걸린 룰만 추린다
40
42
  pnpm tsx bin/gestalt.ts humanize-check --before a.md --after b.md --register report
41
43
  pnpm tsx bin/gestalt.ts explain-check --source err.log --explain out.md --audience nontech
@@ -56,11 +58,13 @@ pnpm tsx bin/gestalt.ts explain-eval --a plugin/role-agents/explainer/AGENT.md
56
58
  - `ges_search`: query, k?, kbPath?, types?
57
59
  - `ges_sync`: sourcePath?, targetPath
58
60
  - `ges_pr`: action=[create|list|get|diff|comment|resolve|review|update|edit|merge|close|checkout|checkout_remove]
61
+ - `ges_architecture`: action=[start|filter_tools|match_endpoints|validate|render|status|merge|scan_docs|link_docs|stale_docs]
59
62
 
60
63
  상세 플로우 → [`docs/mcp-reference.md`](./docs/mcp-reference.md)
61
64
  설정 레퍼런스 → [`docs/configuration.md`](./docs/configuration.md)
62
65
  코드 그래프 → [`docs/code-graph.md`](./docs/code-graph.md)
63
66
  로컬 PR → [`docs/local-pr.md`](./docs/local-pr.md)
67
+ 아키텍처 그림 → [`docs/architecture-view.md`](./docs/architecture-view.md)
64
68
 
65
69
  ## Role Agent 자동 라우팅
66
70
 
@@ -76,6 +80,7 @@ src/execute/ — ExecuteEngine, DAG Validator
76
80
  src/resilience/ — Stagnation Detector, Lateral Thinking Personas
77
81
  src/code-graph/ — CodeGraphEngine, BlastRadius, git 이력 co-change, 언어 플러그인 8개
78
82
  src/graph-viz/ — 코드 그래프 D3 시각화 (ges_graph_visualize 백엔드)
83
+ src/architecture/ — 아키텍처 IR 스키마, 근거 검증, 이전 실행 병합, 분석 합치기, elkjs 레이아웃, HTML 렌더 (ges_architecture 백엔드)
79
84
  src/local-pr/ — 로컬 PR 도메인 (이벤트 소싱, git 연산, gestalt pr·ges_pr 백엔드)
80
85
  src/local-pr-web/ — 로컬 PR 읽기 전용 웹 UI (gestalt pr serve 백엔드)
81
86
  src/knowledge-base/— KB 생성·시맨틱 검색·동기화 (ges_generate_kb/ges_search/ges_sync 백엔드)
@@ -90,12 +95,12 @@ src/skills/ — Skill System 엔진 (SKILL.md 파서·실행기, 최상
90
95
  src/registry/ — 레지스트리 공통 베이스 클래스
91
96
  src/humanize/ — 룰북 읽기 + AI-tell 탐지기 + 윤문 코드 검사 (`gestalt humanize-check` 백엔드)
92
97
  src/explain/ — 대상별 설명 품질 검사 (`gestalt explain-check` 백엔드). 판정 구조만 humanize에서 빌려 쓴다
93
- src/utils/ — 알림 등 공용 유틸
98
+ src/utils/ — 알림, 읽기 전용 도구 이름 걸러내기(read-only-tools), git remote로 ~/.claude/projects 메모리 묶기(claude-projects) 등 공용 유틸
94
99
  src/cli/ — commander 기반 CLI
95
100
  plugin/ — 배포 자산 전부. Claude Code와 Codex 플러그인이 이 디렉토리 하나를 공유한다
96
101
  plugin/role-agents/ — 내장 Role Agent 9개 (architect, frontend-developer, backend-developer, devops-engineer, qa-engineer, designer, product-planner, researcher, technical-writer) + 스킬 지원용 에이전트(jira-writer, slack-messenger, presentation-writer, code-review-writer, code-review-responder, suggestion-verifier, explainer 등) 총 23개 + `_shared/references/` 공유 룰북(author-voice, ai-tell-quick-rules, style-guide, comment-rules, truncation-rules)과 리뷰 절차 문서(rule-path-walk) — 에이전트 아님, 레지스트리가 건너뜀
97
102
  plugin/review-agents/ — 내장 Review Agent 7개 (security-reviewer, performance-reviewer, quality-reviewer, frontend-reviewer, comment-reviewer, writing-reviewer, harness-reviewer)
98
- plugin/skills/ — SKILL.md 21개 (interview, spec, execute, dispatch, agent, review, review-reply, review-loop, pr, local-pr, ship, build-graph, blast-radius, diff-radius, jira-create, slack-send, brief, presentation, explain, solve, setup) + `_shared/` 공유 규칙(스킬 아님, 레지스트리가 건너뜀)
103
+ plugin/skills/ — SKILL.md 22개 (interview, spec, execute, dispatch, agent, review, review-reply, review-loop, pr, local-pr, ship, build-graph, blast-radius, diff-radius, architecture, jira-create, slack-send, brief, presentation, explain, solve, setup) + `_shared/` 공유 규칙(스킬 아님, 레지스트리가 건너뜀)
99
104
  plugin/agents/ — 파이프라인 에이전트 5개
100
105
  plugin/personas/ — Lateral Thinking 페르소나
101
106
  ```
package/README.ko.md CHANGED
@@ -151,7 +151,7 @@ claude plugin install gestalt@gestalt
151
151
 
152
152
  | 항목 | 내용 |
153
153
  |------|------|
154
- | **MCP 도구** | `ges_interview`, `ges_generate_spec`, `ges_execute`, `ges_create_agent`, `ges_agent`, `ges_status`, `ges_code_graph`, `ges_graph_visualize`, `ges_benchmark`, `ges_generate_kb`, `ges_search`, `ges_sync`, `ges_pr` — [MCP 레퍼런스](./docs/mcp-reference.md) 참고 |
154
+ | **MCP 도구** | `ges_interview`, `ges_generate_spec`, `ges_execute`, `ges_create_agent`, `ges_agent`, `ges_status`, `ges_code_graph`, `ges_graph_visualize`, `ges_benchmark`, `ges_generate_kb`, `ges_search`, `ges_sync`, `ges_pr`, `ges_architecture` — [MCP 레퍼런스](./docs/mcp-reference.md) 참고 |
155
155
  | **슬래시 커맨드** | 워크플로 스킬 — `/interview`, `/spec`, `/execute`, `/review`, `/pr`, `/brief`, `/jira-create`, `/slack-send` 등. 전체 목록은 [스킬](#스킬) |
156
156
  | **에이전트** | 파이프라인 에이전트, [Role 에이전트와 Review 에이전트](#6단계--code-review-코드-리뷰) |
157
157
  | **CLAUDE.md** | 프로젝트 컨텍스트 및 MCP 사용 가이드 자동 추가 |
@@ -606,6 +606,7 @@ Claude Code에서는 스킬마다 슬래시 커맨드로 불러요. Codex에서
606
606
  | `/build-graph` | 코드 지식 그래프만 빌드하거나 다시 빌드해요 |
607
607
  | `/blast-radius` | 코드를 고치기 전에 영향받을 파일을 찾아 그 파일만 컨텍스트에 올려요 |
608
608
  | `/diff-radius` | 커밋 안 한 변경과 스테이징한 변경이 어디까지 영향을 주는지 봐요 |
609
+ | `/architecture` | 화면에서 DB까지, 또는 배포 경로를 그림으로 그려요. 실선은 전부 코드나 API 명세 근거가 있고 확인 못 한 연결은 점선이나 미해결 질문으로 남아요 |
609
610
  | `/review` | PR이나 브랜치, 커밋을 [Review 에이전트](#6단계--code-review-코드-리뷰)로 검토해요. 대상이 PR이면 인라인 코멘트까지 남겨요 |
610
611
  | `/review-loop` | 남의 GitHub PR을 리뷰어로 끝까지 따라가요. 리뷰하고 판정을 남긴 뒤 작성자 대응을 기다렸다가 approve가 날 때까지 재리뷰해요 |
611
612
  | `/review-reply` | 내 PR에 달린 리뷰 코멘트를 처리해요. 고치고 커밋한 뒤 `code-review-responder`가 쓴 답글을 남겨요 |
package/README.md CHANGED
@@ -126,7 +126,7 @@ What you get:
126
126
 
127
127
  | Item | Details |
128
128
  |------|---------|
129
- | **MCP Tools** | `ges_interview`, `ges_generate_spec`, `ges_execute`, `ges_create_agent`, `ges_agent`, `ges_status`, `ges_code_graph`, `ges_graph_visualize`, `ges_benchmark`, `ges_generate_kb`, `ges_search`, `ges_sync`, `ges_pr` — see the [MCP reference](./docs/mcp-reference.md) |
129
+ | **MCP Tools** | `ges_interview`, `ges_generate_spec`, `ges_execute`, `ges_create_agent`, `ges_agent`, `ges_status`, `ges_code_graph`, `ges_graph_visualize`, `ges_benchmark`, `ges_generate_kb`, `ges_search`, `ges_sync`, `ges_pr`, `ges_architecture` — see the [MCP reference](./docs/mcp-reference.md) |
130
130
  | **Slash Commands** | Workflow skills — `/interview`, `/spec`, `/execute`, `/review`, `/pr`, `/brief`, `/jira-create`, `/slack-send`, and more. Full list in [Skills](#skills) |
131
131
  | **Agents** | Pipeline agents, [role agents](#role-agents), and [review agents](#review-agents) |
132
132
  | **CLAUDE.md** | Project context and MCP usage guide auto-injected |
@@ -642,6 +642,7 @@ Each skill is a slash command in Claude Code. In Codex the same skill is `gestal
642
642
  | `/build-graph` | Build or rebuild the code knowledge graph only |
643
643
  | `/blast-radius` | Before changing code, find the files a change would reach and load only those |
644
644
  | `/diff-radius` | See how far uncommitted and staged changes reach |
645
+ | `/architecture` | Draw a screen-to-DB or deploy-path architecture view where every solid line cites code or an API spec. Unproven links stay dashed or become open questions |
645
646
  | `/review` | Review a PR, branch, or commit with the [review agents](#review-agents), and post inline comments when the target is a PR |
646
647
  | `/review-loop` | Follow someone else's GitHub PR as reviewer — review, post a verdict, wait for the author, and re-review until approve |
647
648
  | `/review-reply` | Work through review comments on your own PR: fix, commit, and post replies written by `code-review-responder` |
@@ -968,6 +969,7 @@ Claude Code (you)
968
969
  - [Configuration Reference](./docs/configuration.md) — full config options
969
970
  - [Code Knowledge Graph](./docs/code-graph.md) — static analysis and blast-radius
970
971
  - [Local PR](./docs/local-pr.md) — in-repo pull requests for agent-to-agent review
972
+ - [Architecture View](./docs/architecture-view.md) — evidence-backed architecture diagrams
971
973
 
972
974
  ---
973
975
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tienne/gestalt",
3
- "version": "0.88.0",
3
+ "version": "0.90.0",
4
4
  "description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,7 +29,7 @@
29
29
  "scripts": {
30
30
  "dev": "tsx bin/gestalt.ts",
31
31
  "build": "tsc -p tsconfig.build.json",
32
- "postbuild": "rm -rf dist/plugin && mkdir -p dist/plugin && cp -r plugin/agents plugin/role-agents plugin/review-agents plugin/personas plugin/skills dist/plugin/ && cp -r schemas dist/ && cp package.json dist/ && chmod +x dist/bin/gestalt.js dist/bin/gestalt-hook.js && pnpm run verify:plugin && pnpm run verify:rules && pnpm run verify:rule-overlap && pnpm run verify:output-style",
32
+ "postbuild": "rm -rf dist/plugin && mkdir -p dist/plugin && cp -r plugin/agents plugin/role-agents plugin/review-agents plugin/personas plugin/skills dist/plugin/ && cp -r schemas dist/ && cp package.json dist/ && chmod +x dist/bin/gestalt.js dist/bin/gestalt-hook.js && pnpm run verify:plugin && pnpm run verify:rules && pnpm run verify:rule-overlap && pnpm run verify:output-style && pnpm run verify:routing",
33
33
  "verify:plugin": "tsx scripts/verify-plugin-assets.ts",
34
34
  "prepublishOnly": "pnpm build",
35
35
  "test": "vitest run",
@@ -45,10 +45,12 @@
45
45
  "postversion": "pnpm run version:sync && pnpm run build:output-style",
46
46
  "verify:rules": "tsx scripts/verify-rule-refs.ts",
47
47
  "verify:rule-overlap": "tsx scripts/verify-rule-overlap.ts",
48
- "gate": "pnpm typecheck && pnpm verify:rules && pnpm verify:rule-overlap && pnpm lint && pnpm format:check && pnpm build && pnpm test",
48
+ "gate": "pnpm typecheck && pnpm verify:rules && pnpm verify:rule-overlap && pnpm verify:routing && pnpm lint && pnpm format:check && pnpm build && pnpm test",
49
49
  "humanize:baseline": "tsx scripts/humanize-baseline.ts",
50
50
  "build:output-style": "tsx scripts/build-output-style.ts",
51
- "verify:output-style": "tsx scripts/build-output-style.ts --dry-run"
51
+ "verify:output-style": "tsx scripts/build-output-style.ts --dry-run",
52
+ "build:routing": "tsx scripts/build-skill-routing.ts",
53
+ "verify:routing": "tsx scripts/build-skill-routing.ts --check"
52
54
  },
53
55
  "dependencies": {
54
56
  "@anthropic-ai/sdk": "^0.39.0",
@@ -58,6 +60,7 @@
58
60
  "chokidar": "^4.0.3",
59
61
  "commander": "^13.1.0",
60
62
  "dotenv": "^17.3.1",
63
+ "elkjs": "^0.12.0",
61
64
  "gray-matter": "^4.0.3",
62
65
  "node-notifier": "^10.0.1",
63
66
  "node-pty": "^1.1.0",
@@ -47,19 +47,15 @@
47
47
  | README, API 문서, 가이드, 개발자 문서 작성 | `technical-writer` |
48
48
  | 발표 슬라이드 콘텐츠·문구·데이터 요약·발표 노트 작성 | `presentation-writer` |
49
49
  | 슬라이드 Reveal.js 구조·템플릿·비주얼 디자인 자문 | `presentation-designer` |
50
- | 발표자료·슬라이드·프레젠테이션 제작 요청 ("발표자료 만들어줘", "슬라이드 만들어줘", "피치덱") | `presentation` 스킬 사용 (presentation-writer 콘텐츠 → 승인 단계 → presentation-designer 디자인 → Reveal.js HTML) |
51
50
  | 시스템 설계, 아키텍처 리뷰, 설계 패턴 | `architect` |
52
51
  | 보안 취약점, 인증/인가, 시크릿 노출 검토 | `security-reviewer` |
53
52
  | 성능 병목, N+1, 메모리 누수 분석 | `performance-reviewer` |
54
53
  | 코드 가독성, SOLID, 에러 처리 리뷰 | `quality-reviewer` |
55
54
  | 테스트 케이스, 엣지 케이스, QA | `qa-engineer` |
56
55
  | UX 문구 작성·교정, 버튼 텍스트, 에러 메시지, 토스트, 온보딩 카피 | `ux-writer` |
57
- | 대상 지정해서 설명 요청 ("기획팀한테 설명해줘", "쉽게 풀어줘", "ELI5", "이 에러 뭐야") | `explain` 스킬 사용 (소스 확보 → 대상 확정 → explainer 위임 → explain-check → 재시도) |
58
56
  | 설명 문장만 빠르게 필요할 때 | `explainer` 에이전트 |
59
57
  | 슬랙·메신저 메시지 작성 또는 딱딱한/AI스러운 초안을 본인 말투로 다듬기 | `slack-messenger` |
60
- | 슬랙 메시지 전송·예약 발송 요청 ("~라고 보내줘", "공지해줘", "예약 발송해줘") | `slack-send` 스킬 사용 (내부적으로 slack-messenger 다듬기 → 승인 단계 → 전송) |
61
58
  | 지라 티켓 본문 작성·구조화 (제목, 설명, 완료 조건, 이슈타입 추천) | `jira-writer` |
62
- | 지라 티켓 생성 요청 ("티켓 만들어줘", "이슈 생성해줘", "지라에 올려줘") | `jira-create` 스킬 사용 (내부적으로 jira-writer 구조화 → 프로젝트·필드 확정 → 승인 단계 → createJiraIssue) |
63
59
  | UI, React, 접근성, 컴포넌트 설계 | `frontend-developer` — 단 레포가 이 범위를 `delegate`로 선언했으면 그쪽이 이긴다 (위 절) |
64
60
  | UI·React 코드 리뷰, 접근성·번들 최적화 검토 | `frontend-reviewer` — 단 레포가 이 범위를 `delegate`로 선언했으면 그쪽이 이긴다 (위 절) |
65
61
  | 주석 검토 ("주석 좀 봐줘", 불필요한 주석·죽은 코드·티켓 없는 TODO 확인) | `comment-reviewer` |
@@ -69,21 +65,42 @@
69
65
  | 요구사항 정리, 로드맵, 유저 스토리 | `product-planner` |
70
66
  | 성과 분석·KPI 해석·분기 성과 보고·회고 리포트 | `impact-writer` |
71
67
  | 제안서, RFC, 의사결정 메모 등 설득·합의용 기획 산문 | `impact-writer` |
72
- | 성과 보고서·제안서·RFC·회고 작성 요청 ("성과 보고서 써줘", "제안서 작성", "RFC 써줘") | `brief` 스킬 사용 |
73
68
  | 기술 분석, 벤치마크, 사례 조사 | `researcher` |
74
69
  | 내 PR에 달린 리뷰 코멘트 답변 본문 작성 (반영·대안·보류·질문) | `code-review-responder` |
75
- | PR·브랜치·커밋 코드 리뷰 요청 | `/review` 스킬 사용 |
76
- | 받은 리뷰 반영·답글 게시 요청 ("리뷰 반영해줘", "리뷰 코멘트에 답해줘", "받은 리뷰 처리해줘") | `review-reply` 스킬 사용 (스레드 수집 → 유형 분류 승인 → 수정·커밋 → 답글 승인 → 게시) |
77
- | 리뷰가 수렴할 때까지 돌려 GitHub까지 내보내는 요청 ("출하해줘", "리뷰 통과할 때까지", "코파일럿 리뷰까지 받아줘") | `ship` 스킬 사용 (로컬 PR → 리뷰 수렴 루프 → 승인 → draft PR → Copilot 수렴 루프 → ready). 리뷰 한 번만이면 `review` |
78
- | 남의 PR을 리뷰하고 대응까지 따라가는 요청 ("리뷰하고 대응 확인해줘", "대응했으면 재리뷰", "approve 날 때까지") | `review-loop` 스킬 사용 (리뷰 → 인라인 코멘트 → 판정 게시 → 대응 확인 → 재리뷰). **한 번 부르면 한 번 본다** — 이어 보려면 사람이 다시 부른다. 리뷰 한 번만이면 `review`, 내 PR을 밀어 올리는 쪽은 `ship` |
79
- | PR 작성·생성 요청 ("PR 만들어줘", "PR 작성해줘", "PR 올려줘") | `gestalt:pr` 스킬 사용 |
80
- | 실행 태스크를 외부 런타임 워커로 뿌리는 요청 ("orca로 실행", "codex로 실행", "워커 띄워서 실행") | `dispatch` 스킬 사용 (런타임 감지 → 같은 워크트리에 터미널 → worker_done 대기 → ready 재계산). 런타임 없으면 execute의 기본 병렬 경로 |
70
+
71
+ ## 스킬 트리거
72
+
73
+ 요청 문구가 아래 표에 걸리면 그 스킬을 쓴다. 에이전트 표와 둘 다 걸리면 스킬이 먼저다 — 스킬은 에이전트를 부르기 전에 승인 단계나 게시 같은 절차를 붙인다.
74
+
75
+ <!-- skill-routing:start -->
76
+ <!-- 생성물이다. 각 SKILL.md의 triggers와 routing.note를 고치고 pnpm build:routing 으로 다시 뽑는다 -->
77
+
78
+ | 요청 문구 | 스킬 | 비고 |
79
+ |-----------|------|------|
80
+ | "architecture", "아키텍처 그려줘", "아키텍처 뷰", "화면에서 DB까지", "이 화면이 어떤 API를 부르는지 그려줘", "배포 경로 그려줘", "CI/CD 경로 그려줘", "서빙 인프라 그려줘", "하네스 구조 그려줘", "스킬이랑 MCP 도구 관계 그려줘", "시퀀스 그려줘", "호출 순서 그려줘", "데이터 흐름 그려줘", "데이터 리니지 그려줘", "업무 흐름 그려줘", "결재 절차 그려줘", "둘 구조 비교해서 그려줘", "네트워크 구성도 그려줘", "인프라 구성도 그려줘", "조직도 그려줘", "업무 시스템 관계 그려줘", "문서 지도 그려줘", "KB 레포 그려줘", "문서 구멍 찾아줘", "오래된 문서 찾아줘", "이 PR로 손봐야 할 문서 찾아줘", "코드 바뀐 걸로 낡은 문서 골라줘", "아키텍처 그림 합쳐줘" | `architecture` 스킬 사용 | 맥락 소스 찾기 → 읽기 전용 걸러내기 → 탐색 → IR validate → 미해결 질문 → render. 문서 레포는 scan_docs → link_docs → render. 설계 리뷰나 자문이면 `architect` |
81
+ | "성과 보고서", "성과 분석", "분기 리포트", "분기 보고", "KPI 리포트", "제안서 작성", "제안서 써줘", "RFC 써줘", "RFC 작성", "의사결정 메모", "회고 정리", "회고 써줘", "경영진 보고 자료", "성과 문서", "이 문서 다시 써줘", "보고서 보완" | `brief` 스킬 사용 | |
82
+ | "orca로 실행", "orca로 병렬", "워커로 뿌려", "터미널로 뿌려", "병렬 디스패치", "다른 에이전트로 실행", "codex로 실행", "워커 띄워서 실행" | `dispatch` 스킬 사용 | 런타임 감지 → 같은 워크트리에 터미널 → worker_done 대기 → ready 재계산. 런타임 없으면 execute의 기본 병렬 경로 |
83
+ | "설명해줘", "쉽게 풀어줘", "풀어서 설명", "이해하기 쉽게", "쉽게 말하면", "이거 뭐야", "이 에러 뭐야", "무슨 뜻이야", "ELI5", "한테 설명해줘", "에게 설명해줘", "기획팀한테", "비개발자한테", "경영진 보고용으로 설명" | `explain` 스킬 사용 | 소스 확보 → 대상 확정 → explainer 위임 → explain-check → 재시도. 설명 문장만 빠르게 필요하면 `explainer` 에이전트 |
84
+ | "지라 티켓", "지라 이슈", "티켓 만들어", "티켓 생성", "이슈 만들어", "이슈 생성", "지라에 올려", "지라에 등록", "백로그에 추가", "jira 티켓", "jira 이슈", "create jira" | `jira-create` 스킬 사용 | 내부적으로 jira-writer 구조화 → 프로젝트·필드 확정 → 승인 단계 → createJiraIssue |
85
+ | "PR 작성", "PR 만들어", "PR 써줘", "PR 올려", "풀리퀘", "풀 리퀘스트", "pull request", "create PR" | `pr` 스킬 사용 | 다른 레포의 PR 스킬과 이름이 겹치면 `gestalt:pr`로 부른다 |
86
+ | "발표자료 만들", "발표 자료 만들", "슬라이드 만들", "프레젠테이션 만들", "프레젠테이션 제작", "덱 만들", "피치덱", "피치 덱", "발표 슬라이드", "슬라이드 제작", "reveal 슬라이드" | `presentation` 스킬 사용 | presentation-writer 콘텐츠 → 승인 단계 → presentation-designer 디자인 → Reveal.js HTML |
87
+ | "PR 리뷰", "브랜치 리뷰", "코드 리뷰", "diff 리뷰", "review PR", "review branch", "이 브랜치 리뷰", "변경사항 리뷰", "PR에 코멘트 남겨줘", "리뷰 코멘트 달아줘", "PR에 인라인 코멘트", "리뷰 결과 PR에 게시", "주니어한테 설명하듯 리뷰", "신입이 읽을 리뷰" | `review` 스킬 사용 | |
88
+ | "리뷰 루프", "review loop", "리뷰하고 지켜봐줘", "리뷰 대응 모니터링", "대응하면 재리뷰", "리젝하고 지켜봐줘", "변경 요청 남겨줘", "approve 날 때까지", "리뷰어로 끝까지", "재리뷰 반복", "PR 계속 지켜봐줘" | `review-loop` 스킬 사용 | 리뷰 → 인라인 코멘트 → 판정 게시 → 대응 확인 → 재리뷰. **한 번 부르면 한 번 본다** — 이어 보려면 사람이 다시 부른다. 리뷰 한 번만이면 `review`, 내 PR을 밀어 올리는 쪽은 `ship` |
89
+ | "리뷰 반영", "리뷰 코멘트 답", "리뷰 답변", "리뷰 답글", "받은 리뷰 처리", "리뷰 피드백 반영", "PR 코멘트 처리", "리뷰 코멘트 처리", "코멘트에 답해줘", "reply to review", "리뷰어 의견 반영" | `review-reply` 스킬 사용 | 스레드 수집 → 유형 분류 승인 → 수정·커밋 → 답글 승인 → 게시 |
90
+ | "출하", "ship", "PR 올릴 때까지", "리뷰 통과할 때까지", "코파일럿 리뷰까지", "copilot 리뷰 받아줘", "draft PR 올리고 리뷰" | `ship` 스킬 사용 | 로컬 PR → 리뷰 수렴 루프 → 승인 → draft PR → Copilot 수렴 루프 → ready. 리뷰 한 번만이면 `review` |
91
+ | "슬랙 보내", "슬랙으로 보내", "메시지 보내", "메세지 보내", "전달해줘", "공지해줘", "공지 올려줘", "슬랙에 올려줘", "슬랙 메시지 전송", "예약 발송", "예약메세지", "예약 메시지", "이따 보내", "내일 아침에 보내", "9시에 보내" | `slack-send` 스킬 사용 | 내부적으로 slack-messenger 다듬기 → 승인 단계 → 전송 |
92
+
93
+ <!-- skill-routing:end -->
81
94
 
82
95
  ## 표를 늘릴 때
83
96
 
84
- 여기 한 줄 추가하면 끝이다. `CLAUDE.md`와 `agent/SKILL.md`를 따라가서 고칠 필요가 없다 — 둘 다
97
+ 에이전트 줄은 여기 한 줄 추가하면 끝이다. `CLAUDE.md`와 `agent/SKILL.md`를 따라가서 고칠 필요가 없다 — 둘 다
85
98
  이 파일을 가리키기만 하기 때문이다.
86
99
 
100
+ 스킬 줄은 여기서 고치지 않는다. 그 스킬 SKILL.md의 `triggers`를 고친다. 표에 처음 올리는 스킬이면
101
+ frontmatter에 `routing`도 둔다 (비고가 없으면 `routing: {}`). 그다음 `pnpm build:routing`으로 다시
102
+ 뽑는다. 손으로 고치면 `pnpm gate`의 `verify:routing`에서 걸린다.
103
+
87
104
  **특정 레포에서만 다른 데로 보내고 싶은 거라면 표를 고치지 않는다.** 그 레포 `gestalt.json`에
88
105
  `delegate` 소스를 선언한다. 이 표는 게슈탈트가 설치된 모든 레포가 보는 자리라, 한 조직에서만
89
106
  쓰는 스킬 이름이 들어가면 나머지 레포는 없는 데로 가라는 지시를 읽게 된다.