product-playbook 1.0.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 (291) hide show
  1. package/LICENSE +21 -0
  2. package/README.es.md +518 -0
  3. package/README.ja.md +519 -0
  4. package/README.ko.md +518 -0
  5. package/README.md +520 -0
  6. package/README.zh-CN.md +518 -0
  7. package/README.zh-TW.md +518 -0
  8. package/SKILL.md +244 -0
  9. package/commands/product-build.md +13 -0
  10. package/commands/product-dev.md +21 -0
  11. package/commands/product-full.md +13 -0
  12. package/commands/product-prd.md +14 -0
  13. package/commands/product-quick.md +13 -0
  14. package/commands/product-report.md +12 -0
  15. package/commands/product-revision.md +13 -0
  16. package/i18n/en/SKILL.md +245 -0
  17. package/i18n/en/commands/product-build.md +13 -0
  18. package/i18n/en/commands/product-dev.md +21 -0
  19. package/i18n/en/commands/product-full.md +13 -0
  20. package/i18n/en/commands/product-prd.md +14 -0
  21. package/i18n/en/commands/product-quick.md +13 -0
  22. package/i18n/en/commands/product-report.md +12 -0
  23. package/i18n/en/commands/product-revision.md +13 -0
  24. package/i18n/en/references/00-opportunity-check.md +44 -0
  25. package/i18n/en/references/01-strategy.md +90 -0
  26. package/i18n/en/references/02a-persona.md +57 -0
  27. package/i18n/en/references/02b-jtbd.md +125 -0
  28. package/i18n/en/references/02c-ost-journey.md +65 -0
  29. package/i18n/en/references/03-define.md +118 -0
  30. package/i18n/en/references/04a-prfaq.md +112 -0
  31. package/i18n/en/references/04b-solutions.md +269 -0
  32. package/i18n/en/references/04c-mvp.md +21 -0
  33. package/i18n/en/references/05a-northstar-aha.md +93 -0
  34. package/i18n/en/references/05b-pmf-gtm.md +102 -0
  35. package/i18n/en/references/05c-validation-spec.md +117 -0
  36. package/i18n/en/references/06-html-report.md +128 -0
  37. package/i18n/en/references/07a-handoff-core.md +152 -0
  38. package/i18n/en/references/07b-tasks-tickets.md +215 -0
  39. package/i18n/en/references/07c-architecture-setup.md +197 -0
  40. package/i18n/en/references/08-security-checklist.md +221 -0
  41. package/i18n/en/references/rules-build.md +152 -0
  42. package/i18n/en/references/rules-change-propagation.md +74 -0
  43. package/i18n/en/references/rules-commands.md +98 -0
  44. package/i18n/en/references/rules-context.md +291 -0
  45. package/i18n/en/references/rules-custom.md +63 -0
  46. package/i18n/en/references/rules-document-tools.md +126 -0
  47. package/i18n/en/references/rules-end-of-flow.md +150 -0
  48. package/i18n/en/references/rules-export-document.md +346 -0
  49. package/i18n/en/references/rules-file-integration.md +65 -0
  50. package/i18n/en/references/rules-full.md +66 -0
  51. package/i18n/en/references/rules-import-document.md +261 -0
  52. package/i18n/en/references/rules-product-type.md +14 -0
  53. package/i18n/en/references/rules-progress.md +60 -0
  54. package/i18n/en/references/rules-quick.md +29 -0
  55. package/i18n/en/references/rules-revision.md +64 -0
  56. package/i18n/es/SKILL.md +245 -0
  57. package/i18n/es/commands/product-build.md +13 -0
  58. package/i18n/es/commands/product-dev.md +21 -0
  59. package/i18n/es/commands/product-full.md +13 -0
  60. package/i18n/es/commands/product-prd.md +14 -0
  61. package/i18n/es/commands/product-quick.md +13 -0
  62. package/i18n/es/commands/product-report.md +12 -0
  63. package/i18n/es/commands/product-revision.md +13 -0
  64. package/i18n/es/references/00-opportunity-check.md +44 -0
  65. package/i18n/es/references/01-strategy.md +90 -0
  66. package/i18n/es/references/02a-persona.md +57 -0
  67. package/i18n/es/references/02b-jtbd.md +125 -0
  68. package/i18n/es/references/02c-ost-journey.md +65 -0
  69. package/i18n/es/references/03-define.md +118 -0
  70. package/i18n/es/references/04a-prfaq.md +114 -0
  71. package/i18n/es/references/04b-solutions.md +269 -0
  72. package/i18n/es/references/04c-mvp.md +21 -0
  73. package/i18n/es/references/05a-northstar-aha.md +93 -0
  74. package/i18n/es/references/05b-pmf-gtm.md +102 -0
  75. package/i18n/es/references/05c-validation-spec.md +117 -0
  76. package/i18n/es/references/06-html-report.md +138 -0
  77. package/i18n/es/references/07a-handoff-core.md +152 -0
  78. package/i18n/es/references/07b-tasks-tickets.md +215 -0
  79. package/i18n/es/references/07c-architecture-setup.md +197 -0
  80. package/i18n/es/references/08-security-checklist.md +221 -0
  81. package/i18n/es/references/rules-build.md +152 -0
  82. package/i18n/es/references/rules-change-propagation.md +74 -0
  83. package/i18n/es/references/rules-commands.md +98 -0
  84. package/i18n/es/references/rules-context.md +291 -0
  85. package/i18n/es/references/rules-custom.md +63 -0
  86. package/i18n/es/references/rules-document-tools.md +126 -0
  87. package/i18n/es/references/rules-end-of-flow.md +150 -0
  88. package/i18n/es/references/rules-export-document.md +346 -0
  89. package/i18n/es/references/rules-file-integration.md +65 -0
  90. package/i18n/es/references/rules-full.md +66 -0
  91. package/i18n/es/references/rules-import-document.md +261 -0
  92. package/i18n/es/references/rules-product-type.md +14 -0
  93. package/i18n/es/references/rules-progress.md +60 -0
  94. package/i18n/es/references/rules-quick.md +29 -0
  95. package/i18n/es/references/rules-revision.md +64 -0
  96. package/i18n/ja/SKILL.md +245 -0
  97. package/i18n/ja/commands/product-build.md +13 -0
  98. package/i18n/ja/commands/product-dev.md +21 -0
  99. package/i18n/ja/commands/product-full.md +13 -0
  100. package/i18n/ja/commands/product-prd.md +14 -0
  101. package/i18n/ja/commands/product-quick.md +13 -0
  102. package/i18n/ja/commands/product-report.md +12 -0
  103. package/i18n/ja/commands/product-revision.md +13 -0
  104. package/i18n/ja/references/00-opportunity-check.md +44 -0
  105. package/i18n/ja/references/01-strategy.md +90 -0
  106. package/i18n/ja/references/02a-persona.md +57 -0
  107. package/i18n/ja/references/02b-jtbd.md +125 -0
  108. package/i18n/ja/references/02c-ost-journey.md +65 -0
  109. package/i18n/ja/references/03-define.md +118 -0
  110. package/i18n/ja/references/04a-prfaq.md +111 -0
  111. package/i18n/ja/references/04b-solutions.md +269 -0
  112. package/i18n/ja/references/04c-mvp.md +21 -0
  113. package/i18n/ja/references/05a-northstar-aha.md +93 -0
  114. package/i18n/ja/references/05b-pmf-gtm.md +102 -0
  115. package/i18n/ja/references/05c-validation-spec.md +117 -0
  116. package/i18n/ja/references/06-html-report.md +126 -0
  117. package/i18n/ja/references/07a-handoff-core.md +152 -0
  118. package/i18n/ja/references/07b-tasks-tickets.md +215 -0
  119. package/i18n/ja/references/07c-architecture-setup.md +197 -0
  120. package/i18n/ja/references/08-security-checklist.md +221 -0
  121. package/i18n/ja/references/rules-build.md +152 -0
  122. package/i18n/ja/references/rules-change-propagation.md +74 -0
  123. package/i18n/ja/references/rules-commands.md +98 -0
  124. package/i18n/ja/references/rules-context.md +291 -0
  125. package/i18n/ja/references/rules-custom.md +63 -0
  126. package/i18n/ja/references/rules-document-tools.md +126 -0
  127. package/i18n/ja/references/rules-end-of-flow.md +150 -0
  128. package/i18n/ja/references/rules-export-document.md +346 -0
  129. package/i18n/ja/references/rules-file-integration.md +65 -0
  130. package/i18n/ja/references/rules-full.md +66 -0
  131. package/i18n/ja/references/rules-import-document.md +261 -0
  132. package/i18n/ja/references/rules-product-type.md +14 -0
  133. package/i18n/ja/references/rules-progress.md +60 -0
  134. package/i18n/ja/references/rules-quick.md +29 -0
  135. package/i18n/ja/references/rules-revision.md +64 -0
  136. package/i18n/ko/SKILL.md +245 -0
  137. package/i18n/ko/commands/product-build.md +13 -0
  138. package/i18n/ko/commands/product-dev.md +21 -0
  139. package/i18n/ko/commands/product-full.md +13 -0
  140. package/i18n/ko/commands/product-prd.md +14 -0
  141. package/i18n/ko/commands/product-quick.md +13 -0
  142. package/i18n/ko/commands/product-report.md +12 -0
  143. package/i18n/ko/commands/product-revision.md +13 -0
  144. package/i18n/ko/references/00-opportunity-check.md +44 -0
  145. package/i18n/ko/references/01-strategy.md +90 -0
  146. package/i18n/ko/references/02a-persona.md +57 -0
  147. package/i18n/ko/references/02b-jtbd.md +125 -0
  148. package/i18n/ko/references/02c-ost-journey.md +65 -0
  149. package/i18n/ko/references/03-define.md +118 -0
  150. package/i18n/ko/references/04a-prfaq.md +112 -0
  151. package/i18n/ko/references/04b-solutions.md +269 -0
  152. package/i18n/ko/references/04c-mvp.md +21 -0
  153. package/i18n/ko/references/05a-northstar-aha.md +93 -0
  154. package/i18n/ko/references/05b-pmf-gtm.md +102 -0
  155. package/i18n/ko/references/05c-validation-spec.md +117 -0
  156. package/i18n/ko/references/06-html-report.md +126 -0
  157. package/i18n/ko/references/07a-handoff-core.md +152 -0
  158. package/i18n/ko/references/07b-tasks-tickets.md +215 -0
  159. package/i18n/ko/references/07c-architecture-setup.md +197 -0
  160. package/i18n/ko/references/08-security-checklist.md +221 -0
  161. package/i18n/ko/references/rules-build.md +152 -0
  162. package/i18n/ko/references/rules-change-propagation.md +74 -0
  163. package/i18n/ko/references/rules-commands.md +98 -0
  164. package/i18n/ko/references/rules-context.md +291 -0
  165. package/i18n/ko/references/rules-custom.md +63 -0
  166. package/i18n/ko/references/rules-document-tools.md +126 -0
  167. package/i18n/ko/references/rules-end-of-flow.md +150 -0
  168. package/i18n/ko/references/rules-export-document.md +346 -0
  169. package/i18n/ko/references/rules-file-integration.md +65 -0
  170. package/i18n/ko/references/rules-full.md +66 -0
  171. package/i18n/ko/references/rules-import-document.md +261 -0
  172. package/i18n/ko/references/rules-product-type.md +14 -0
  173. package/i18n/ko/references/rules-progress.md +60 -0
  174. package/i18n/ko/references/rules-quick.md +29 -0
  175. package/i18n/ko/references/rules-revision.md +64 -0
  176. package/i18n/zh-CN/SKILL.md +245 -0
  177. package/i18n/zh-CN/commands/product-build.md +13 -0
  178. package/i18n/zh-CN/commands/product-dev.md +21 -0
  179. package/i18n/zh-CN/commands/product-full.md +13 -0
  180. package/i18n/zh-CN/commands/product-prd.md +14 -0
  181. package/i18n/zh-CN/commands/product-quick.md +13 -0
  182. package/i18n/zh-CN/commands/product-report.md +12 -0
  183. package/i18n/zh-CN/commands/product-revision.md +13 -0
  184. package/i18n/zh-CN/references/00-opportunity-check.md +44 -0
  185. package/i18n/zh-CN/references/01-strategy.md +90 -0
  186. package/i18n/zh-CN/references/02a-persona.md +57 -0
  187. package/i18n/zh-CN/references/02b-jtbd.md +125 -0
  188. package/i18n/zh-CN/references/02c-ost-journey.md +65 -0
  189. package/i18n/zh-CN/references/03-define.md +118 -0
  190. package/i18n/zh-CN/references/04a-prfaq.md +106 -0
  191. package/i18n/zh-CN/references/04b-solutions.md +269 -0
  192. package/i18n/zh-CN/references/04c-mvp.md +21 -0
  193. package/i18n/zh-CN/references/05a-northstar-aha.md +93 -0
  194. package/i18n/zh-CN/references/05b-pmf-gtm.md +102 -0
  195. package/i18n/zh-CN/references/05c-validation-spec.md +117 -0
  196. package/i18n/zh-CN/references/06-html-report.md +123 -0
  197. package/i18n/zh-CN/references/07a-handoff-core.md +152 -0
  198. package/i18n/zh-CN/references/07b-tasks-tickets.md +215 -0
  199. package/i18n/zh-CN/references/07c-architecture-setup.md +197 -0
  200. package/i18n/zh-CN/references/08-security-checklist.md +221 -0
  201. package/i18n/zh-CN/references/rules-build.md +152 -0
  202. package/i18n/zh-CN/references/rules-change-propagation.md +74 -0
  203. package/i18n/zh-CN/references/rules-commands.md +98 -0
  204. package/i18n/zh-CN/references/rules-context.md +291 -0
  205. package/i18n/zh-CN/references/rules-custom.md +63 -0
  206. package/i18n/zh-CN/references/rules-document-tools.md +126 -0
  207. package/i18n/zh-CN/references/rules-end-of-flow.md +150 -0
  208. package/i18n/zh-CN/references/rules-export-document.md +346 -0
  209. package/i18n/zh-CN/references/rules-file-integration.md +65 -0
  210. package/i18n/zh-CN/references/rules-full.md +66 -0
  211. package/i18n/zh-CN/references/rules-import-document.md +261 -0
  212. package/i18n/zh-CN/references/rules-product-type.md +14 -0
  213. package/i18n/zh-CN/references/rules-progress.md +60 -0
  214. package/i18n/zh-CN/references/rules-quick.md +29 -0
  215. package/i18n/zh-CN/references/rules-revision.md +64 -0
  216. package/i18n/zh-TW/SKILL.md +244 -0
  217. package/i18n/zh-TW/commands/product-build.md +13 -0
  218. package/i18n/zh-TW/commands/product-dev.md +21 -0
  219. package/i18n/zh-TW/commands/product-full.md +13 -0
  220. package/i18n/zh-TW/commands/product-prd.md +14 -0
  221. package/i18n/zh-TW/commands/product-quick.md +13 -0
  222. package/i18n/zh-TW/commands/product-report.md +12 -0
  223. package/i18n/zh-TW/commands/product-revision.md +13 -0
  224. package/i18n/zh-TW/references/00-opportunity-check.md +44 -0
  225. package/i18n/zh-TW/references/01-strategy.md +90 -0
  226. package/i18n/zh-TW/references/02a-persona.md +57 -0
  227. package/i18n/zh-TW/references/02b-jtbd.md +125 -0
  228. package/i18n/zh-TW/references/02c-ost-journey.md +65 -0
  229. package/i18n/zh-TW/references/03-define.md +118 -0
  230. package/i18n/zh-TW/references/04a-prfaq.md +106 -0
  231. package/i18n/zh-TW/references/04b-solutions.md +269 -0
  232. package/i18n/zh-TW/references/04c-mvp.md +21 -0
  233. package/i18n/zh-TW/references/05a-northstar-aha.md +93 -0
  234. package/i18n/zh-TW/references/05b-pmf-gtm.md +102 -0
  235. package/i18n/zh-TW/references/05c-validation-spec.md +117 -0
  236. package/i18n/zh-TW/references/06-html-report.md +123 -0
  237. package/i18n/zh-TW/references/07a-handoff-core.md +152 -0
  238. package/i18n/zh-TW/references/07b-tasks-tickets.md +215 -0
  239. package/i18n/zh-TW/references/07c-architecture-setup.md +197 -0
  240. package/i18n/zh-TW/references/08-security-checklist.md +221 -0
  241. package/i18n/zh-TW/references/rules-build.md +152 -0
  242. package/i18n/zh-TW/references/rules-change-propagation.md +74 -0
  243. package/i18n/zh-TW/references/rules-commands.md +98 -0
  244. package/i18n/zh-TW/references/rules-context.md +291 -0
  245. package/i18n/zh-TW/references/rules-custom.md +63 -0
  246. package/i18n/zh-TW/references/rules-document-tools.md +126 -0
  247. package/i18n/zh-TW/references/rules-end-of-flow.md +150 -0
  248. package/i18n/zh-TW/references/rules-export-document.md +346 -0
  249. package/i18n/zh-TW/references/rules-file-integration.md +65 -0
  250. package/i18n/zh-TW/references/rules-full.md +66 -0
  251. package/i18n/zh-TW/references/rules-import-document.md +261 -0
  252. package/i18n/zh-TW/references/rules-product-type.md +14 -0
  253. package/i18n/zh-TW/references/rules-progress.md +60 -0
  254. package/i18n/zh-TW/references/rules-quick.md +29 -0
  255. package/i18n/zh-TW/references/rules-revision.md +64 -0
  256. package/install.sh +418 -0
  257. package/package.json +41 -0
  258. package/references/00-opportunity-check.md +44 -0
  259. package/references/01-strategy.md +90 -0
  260. package/references/02a-persona.md +57 -0
  261. package/references/02b-jtbd.md +125 -0
  262. package/references/02c-ost-journey.md +65 -0
  263. package/references/03-define.md +118 -0
  264. package/references/04a-prfaq.md +106 -0
  265. package/references/04b-solutions.md +269 -0
  266. package/references/04c-mvp.md +21 -0
  267. package/references/05a-northstar-aha.md +93 -0
  268. package/references/05b-pmf-gtm.md +102 -0
  269. package/references/05c-validation-spec.md +117 -0
  270. package/references/06-html-report.md +123 -0
  271. package/references/07a-handoff-core.md +152 -0
  272. package/references/07b-tasks-tickets.md +215 -0
  273. package/references/07c-architecture-setup.md +197 -0
  274. package/references/08-security-checklist.md +221 -0
  275. package/references/rules-build.md +152 -0
  276. package/references/rules-change-propagation.md +74 -0
  277. package/references/rules-commands.md +98 -0
  278. package/references/rules-context.md +291 -0
  279. package/references/rules-custom.md +63 -0
  280. package/references/rules-document-tools.md +126 -0
  281. package/references/rules-end-of-flow.md +150 -0
  282. package/references/rules-export-document.md +346 -0
  283. package/references/rules-file-integration.md +65 -0
  284. package/references/rules-full.md +66 -0
  285. package/references/rules-import-document.md +261 -0
  286. package/references/rules-product-type.md +14 -0
  287. package/references/rules-progress.md +60 -0
  288. package/references/rules-quick.md +29 -0
  289. package/references/rules-revision.md +64 -0
  290. package/references/templates/prd-style.css +464 -0
  291. package/references/templates/report-style.css +114 -0
@@ -0,0 +1,346 @@
1
+ # 다중 형식 문서 내보내기 규칙
2
+
3
+ > 사용자가 `/export [형식]`을 트리거하거나 플로우 종료 후 내보내기 형식을 선택할 때 로드됩니다.
4
+ > 최초 사용 시, 먼저 `rules-document-tools.md`를 로드하여 도구 설치 여부를 확인합니다.
5
+
6
+ ## 지원 내보내기 형식
7
+
8
+ | 형식 | 명령 | 변환 경로 | 도구 |
9
+ |------|------|----------|------|
10
+ | PDF | `/export pdf` | HTML+CSS → Playwright → pikepdf 북마크 | Playwright MCP + pikepdf |
11
+ | DOCX | `/export docx` | MD → Pandoc | pandoc + reference.docx |
12
+ | PPTX | `/export pptx` | MD → Pandoc | pandoc |
13
+ | HTML | `/export html` | 기존 `06-html-report.md` 규칙 | 내장 |
14
+ | Markdown | `/export md` | 직접 출력 | 내장 |
15
+
16
+ ---
17
+
18
+ ## PDF 내보내기 (핵심 플로우)
19
+
20
+ ### 경로 선택
21
+
22
+ PDF 내보내기에는 두 가지 경로가 있으며, 소스 콘텐츠에 따라 자동으로 선택됩니다:
23
+
24
+ | 소스 | 경로 | 이유 |
25
+ |------|------|------|
26
+ | 기획 산출물 직접 내보내기 (PRD / 증분 업데이트 / 스펙) | **경로 A: setContent** | 외부 JS 의존성 없음, 모든 리소스 인라인 가능 |
27
+ | HTML 기획 보고서 → PDF (Mermaid 다이어그램 / CDN 폰트 포함) | **경로 B: HTTP Server** | 외부 JS (mermaid.js) 및 CDN 폰트 로드 필요 |
28
+
29
+ ### 경로 A: 독립 문서 → PDF (setContent)
30
+
31
+ 적용 대상: PRD, 기능 확장 증분 업데이트, 스펙, 외부 JS가 없는 모든 콘텐츠.
32
+
33
+ **1단계: HTML 콘텐츠 생성**
34
+
35
+ Claude가 `references/templates/prd-style.css`를 읽고 완전한 HTML 문서를 생성합니다:
36
+
37
+ ```html
38
+ <!DOCTYPE html>
39
+ <html lang="zh-TW">
40
+ <head>
41
+ <meta charset="UTF-8">
42
+ <style>
43
+ /* prd-style.css의 전체 내용을 읽어 여기에 인라인 */
44
+ </style>
45
+ </head>
46
+ <body>
47
+
48
+ <!-- 표지 -->
49
+ <div class="cover-page">
50
+ <h1>[문서 제목]</h1>
51
+ <div class="subtitle">[부제목 또는 한 줄 설명]</div>
52
+ <div class="version-badge">[버전 번호]</div>
53
+ <div class="meta-info">
54
+ <strong>PM</strong> [PM 이름]<br>
55
+ <strong>Date</strong> [ISO 날짜]<br>
56
+ <strong>Status</strong> [상태]
57
+ </div>
58
+ </div>
59
+
60
+ <!-- 범례 (증분 업데이트 문서에만 해당) -->
61
+ <div class="diff-legend">
62
+ <div class="diff-legend-item"><div class="diff-legend-swatch swatch-new"></div> 이번 버전에서 신규</div>
63
+ <div class="diff-legend-item"><div class="diff-legend-swatch swatch-upd"></div> 이번 버전에서 수정</div>
64
+ <div class="diff-legend-item"><div class="diff-legend-swatch swatch-unchanged"></div> 변경 없음</div>
65
+ </div>
66
+
67
+ <!-- 목차 페이지 -->
68
+ <div class="toc-page">
69
+ <h2>목차</h2>
70
+ <ul class="toc">
71
+ <!-- Claude가 h2 제목을 기반으로 목차 항목 자동 생성 -->
72
+ <li>
73
+ <span class="toc-title">[섹션명]</span>
74
+ <span class="toc-dots"></span>
75
+ <span class="toc-page-num">[페이지 번호]</span>
76
+ </li>
77
+ </ul>
78
+ </div>
79
+
80
+ <!-- 본문 내용 -->
81
+ [본문 HTML]
82
+
83
+ <!-- 푸터 -->
84
+ <div class="doc-footer">
85
+ [문서 코드] [버전] | [날짜] | Generated by Product Playbook
86
+ </div>
87
+
88
+ </body>
89
+ </html>
90
+ ```
91
+
92
+ **중요 사항**:
93
+ - CSS는 완전히 인라인되어야 함 (외부 링크 없음)
94
+ - 폰트는 시스템 폰트 사용: `"PingFang TC", "Noto Sans TC", system-ui` (Playwright가 PDF에 자동 임베드)
95
+ - `<script>` 태그나 외부 리소스 참조 없음
96
+ - 목차 페이지 번호는 추정값 (PDF 생성 후 미세 조정 필요할 수 있음)
97
+
98
+ **2단계: Playwright PDF 렌더링**
99
+
100
+ HTML 콘텐츠를 `/tmp/export-{timestamp}.html`에 저장한 후 Playwright MCP 호출:
101
+
102
+ ```javascript
103
+ // mcp__plugin_playwright_playwright__browser_run_code
104
+ async (page) => {
105
+ const fs = require('fs');
106
+ const html = fs.readFileSync('/tmp/export-{timestamp}.html', 'utf8');
107
+ await page.setContent(html, { waitUntil: 'networkidle' });
108
+ await page.pdf({
109
+ path: '{output_path}',
110
+ format: 'A4',
111
+ margin: { top: '1.8cm', bottom: '1.8cm', left: '2cm', right: '2cm' },
112
+ printBackground: true,
113
+ displayHeaderFooter: true,
114
+ headerTemplate: '<div></div>',
115
+ footerTemplate: '<div style="font-size:8pt;color:#999;text-align:center;width:100%;">p.<span class="pageNumber"></span> / <span class="totalPages"></span></div>'
116
+ });
117
+ return 'PDF generated';
118
+ }
119
+ ```
120
+
121
+ > 참고: HTML 콘텐츠가 너무 크면 (>500KB), setContent가 타임아웃될 수 있습니다. 이 경우 경로 B (HTTP Server)로 전환합니다.
122
+
123
+ **3단계: pikepdf 북마크 삽입**
124
+
125
+ ```python
126
+ import pikepdf, re
127
+
128
+ pdf = pikepdf.open('{output_path}')
129
+
130
+ # HTML에서 h2 제목을 추출하여 북마크로 사용
131
+ # Claude는 HTML 생성 시 각 h2의 예상 페이지 번호를 기록해야 함
132
+ bookmarks = [
133
+ # (제목, 페이지 인덱스 0-based)
134
+ ("변경 이력", 2),
135
+ ("사용자 스토리", 4),
136
+ ("개발 아키텍처", 6),
137
+ # ... 실제 내용에 따라 생성
138
+ ]
139
+
140
+ with pdf.open_outline() as outline:
141
+ for title, page_idx in bookmarks:
142
+ page_idx = min(page_idx, len(pdf.pages) - 1)
143
+ outline.root.append(
144
+ pikepdf.OutlineItem(title, page_idx)
145
+ )
146
+
147
+ # PDF 메타데이터 설정
148
+ with pdf.open_metadata() as meta:
149
+ meta['dc:title'] = '[문서 제목]'
150
+ meta['dc:creator'] = ['[PM 이름]']
151
+ meta['pdf:Producer'] = 'Product Playbook + Playwright'
152
+
153
+ pdf.save('{output_path}')
154
+ ```
155
+
156
+ **4단계: 사용자 알림**
157
+
158
+ ```
159
+ ✅ PDF 내보내기 완료: {output_path}
160
+ 📄 {page_count} 페이지 | {file_size}
161
+ 📑 북마크 내비게이션 포함 ({bookmark_count}개 섹션)
162
+ ```
163
+
164
+ ### 경로 B: HTML 보고서 → PDF (HTTP Server)
165
+
166
+ 적용 대상: Mermaid 다이어그램, CDN 폰트, 인터랙티브 요소가 포함된 HTML 보고서.
167
+
168
+ **1단계: HTML 보고서 이미 생성됨**
169
+
170
+ HTML 보고서는 `06-html-report.md` 규칙에 의해 생성되어 `/tmp/report-{timestamp}.html`로 저장됩니다.
171
+
172
+ **2단계: HTTP 서버 시작**
173
+
174
+ ```bash
175
+ cd /tmp && python3 -m http.server 18899 &
176
+ echo $! # PID 기록
177
+ ```
178
+
179
+ **3단계: Playwright 렌더링**
180
+
181
+ ```javascript
182
+ // mcp__plugin_playwright_playwright__browser_run_code
183
+ async (page) => {
184
+ await page.goto('http://localhost:18899/report-{timestamp}.html', {
185
+ waitUntil: 'networkidle',
186
+ timeout: 30000
187
+ });
188
+ // Mermaid 차트 렌더링 완료 대기
189
+ await page.waitForTimeout(3000);
190
+ // 모든 아코디언 (<details>) 요소 펼치기
191
+ await page.evaluate(() => {
192
+ document.querySelectorAll('details').forEach(d => d.open = true);
193
+ });
194
+ await page.pdf({
195
+ path: '{output_path}',
196
+ format: 'A4',
197
+ margin: { top: '1.8cm', bottom: '1.8cm', left: '2cm', right: '2cm' },
198
+ printBackground: true,
199
+ displayHeaderFooter: true,
200
+ headerTemplate: '<div></div>',
201
+ footerTemplate: '<div style="font-size:8pt;color:#999;text-align:center;width:100%;">p.<span class="pageNumber"></span> / <span class="totalPages"></span></div>'
202
+ });
203
+ return 'PDF generated';
204
+ }
205
+ ```
206
+
207
+ **4단계: HTTP 서버 종료 + pikepdf 북마크**
208
+
209
+ ```bash
210
+ kill {SERVER_PID}
211
+ ```
212
+
213
+ 이후 경로 A와 동일한 pikepdf 북마크 삽입 단계를 수행합니다.
214
+
215
+ ### Playwright MCP 사용 불가 시 폴백
216
+
217
+ Playwright MCP가 연결되지 않은 경우, Node.js를 직접 사용:
218
+
219
+ ```bash
220
+ node -e "
221
+ const { chromium } = require('playwright');
222
+ const fs = require('fs');
223
+ (async () => {
224
+ const browser = await chromium.launch({ headless: true });
225
+ const page = await browser.newPage();
226
+ const html = fs.readFileSync('/tmp/export-{timestamp}.html', 'utf8');
227
+ await page.setContent(html, { waitUntil: 'networkidle' });
228
+ await page.pdf({
229
+ path: '${OUTPUT_PATH}',
230
+ format: 'A4',
231
+ printBackground: true,
232
+ margin: { top: '1.8cm', bottom: '1.8cm', left: '2cm', right: '2cm' }
233
+ });
234
+ await browser.close();
235
+ console.log('PDF generated');
236
+ })();
237
+ "
238
+ ```
239
+
240
+ ---
241
+
242
+ ## DOCX 내보내기
243
+
244
+ ### 1단계: Markdown 생성
245
+
246
+ Claude가 기획 산출물을 깔끔한 Markdown 형식으로 정리하여 `/tmp/export-{timestamp}.md`에 저장합니다.
247
+
248
+ ### 2단계: Pandoc 변환
249
+
250
+ ```bash
251
+ pandoc /tmp/export-{timestamp}.md \
252
+ -o "{output_path}" \
253
+ --from markdown \
254
+ --to docx \
255
+ --reference-doc="~/.claude/skills/product-playbook/references/templates/reference.docx" \
256
+ --toc \
257
+ --toc-depth=2
258
+ ```
259
+
260
+ reference.docx 템플릿이 없는 경우, `--reference-doc` 매개변수를 생략합니다 (Pandoc 기본 스타일 사용).
261
+
262
+ ### 3단계: 사용자 알림
263
+
264
+ ```
265
+ ✅ Word 문서 내보내기 완료: {output_path}
266
+ 📄 목차 포함 | {file_size}
267
+ ```
268
+
269
+ ---
270
+
271
+ ## PPTX 내보내기
272
+
273
+ ```bash
274
+ pandoc /tmp/export-{timestamp}.md \
275
+ -o "{output_path}" \
276
+ --from markdown \
277
+ --to pptx \
278
+ --slide-level=2
279
+ ```
280
+
281
+ > 팁: Pandoc PPTX 품질은 제한적입니다. PPTX를 아웃라인으로 사용하고, PowerPoint/Keynote에서 다듬는 것을 권장합니다.
282
+
283
+ ---
284
+
285
+ ## 증분 업데이트 문서 특수 처리
286
+
287
+ 기능 확장 또는 리비전 모드의 증분 업데이트 문서를 내보낼 때:
288
+
289
+ ### 차이 시각 표시 규칙
290
+
291
+ 1. **`[NEW]`로 표시된 단락**:
292
+ - `<span class="new">NEW</span>` 마커 사용
293
+ - 테이블 행에 `class="new-row"` 적용
294
+ - 단락에 `class="diff-added"` 적용
295
+
296
+ 2. **`[UPDATED]`로 표시된 단락**:
297
+ - `<span class="upd">UPDATED</span>` 마커 사용
298
+ - 테이블 행에 `class="upd-row"` 적용
299
+ - 원본 콘텐츠가 있는 경우, 원본에 `class="diff-removed"`, 새 콘텐츠에 `class="diff-added"` 적용
300
+
301
+ 3. **변경 없는 단락**: 정상 표시, 특별한 마커 없음
302
+
303
+ 4. **문서 시작 부분 범례**:
304
+ ```html
305
+ <div class="diff-legend">
306
+ <div class="diff-legend-item">
307
+ <div class="diff-legend-swatch swatch-new"></div> 이번 버전에서 신규
308
+ </div>
309
+ <div class="diff-legend-item">
310
+ <div class="diff-legend-swatch swatch-upd"></div> 이번 버전에서 수정
311
+ </div>
312
+ <div class="diff-legend-item">
313
+ <div class="diff-legend-swatch swatch-unchanged"></div> 마커 없음 = 변경 없음
314
+ </div>
315
+ </div>
316
+ ```
317
+
318
+ ---
319
+
320
+ ## 출력 경로 규칙
321
+
322
+ 기본적으로 `~/Downloads/`에 출력하며, 파일명 형식:
323
+
324
+ ```
325
+ [문서 코드] [문서 제목] [버전].{ext}
326
+
327
+ 예시:
328
+ [D-221] Virtual Account v1.0.14 Full Merged Version.pdf
329
+ Product Planning Report - UPASS Virtual Account.docx
330
+ ```
331
+
332
+ 사용자가 경로를 지정하면, 사용자가 지정한 경로를 사용합니다.
333
+
334
+ ---
335
+
336
+ ## 품질 체크리스트
337
+
338
+ 내보내기 전에 Claude가 자체 점검:
339
+
340
+ - [ ] HTML에 잔여 Markdown 구문 없음 (`**`, `##`, `|---|`)
341
+ - [ ] 모든 테이블의 행/열 수가 원본 콘텐츠와 일치
342
+ - [ ] `[NEW]` / `[UPDATED]` 마커가 해당 CSS 클래스에 올바르게 매핑
343
+ - [ ] 표지 정보 (제목, 버전, PM, 날짜)가 정확
344
+ - [ ] 목차 항목이 본문 h2 제목과 일치
345
+ - [ ] CSS가 완전히 인라인됨 (경로 A) 또는 CDN 접근 가능 (경로 B)
346
+ - [ ] 북마크 수가 h2 제목 수와 일치
@@ -0,0 +1,65 @@
1
+ # 📎 파일 통합 가이드
2
+
3
+ > 사용자가 보충 자료를 업로드할 때 로드됩니다.
4
+
5
+ ## 직접 지원 파일 유형
6
+
7
+ | 파일 유형 | 일반적인 시나리오 | 통합 방법 |
8
+ |----------|----------------|----------|
9
+ | **이미지** | 경쟁사 스크린샷, 화이트보드 사진, 손그림 여정 맵, 앱 인터페이스 스크린샷, 데이터 보고서 스크린샷 | 내용을 인식하고 해당 단계에 통합 |
10
+ | **PDF** | 시장 보고서, 내부 문서, 사용자 리서치 보고서, 기존 PRD | `rules-import-document.md`를 로드하여 3계층 파싱 수행 (pymupdf 직접 추출 → Claude Vision 시맨틱 파싱 → Tesseract 폴백). 최초 사용 시 `rules-document-tools.md`를 로드하여 도구 확인. |
11
+ | **CSV / Excel** | 사용자 행동 데이터, 리텐션 데이터, NPS 조사 결과, 매출 데이터 | 데이터를 분석하여 정량적 평가에 활용 |
12
+ | **텍스트 파일** | 인터뷰 녹취록, 기존 요구사항 문서, 회의 노트 | Persona 단서, 페인포인트, JTBD 근거 추출 |
13
+ | **DOCX** | 기존 PRD, 제품 스펙 문서, 사용자 리서치 보고서 | `rules-import-document.md`를 로드, Pandoc으로 Markdown 변환 후 통합. 최초 사용 시 `rules-document-tools.md`를 로드하여 도구 확인. |
14
+ | **PPTX** | 기존 프레젠테이션, 제품 소개 슬라이드 | `rules-import-document.md`를 로드, Pandoc으로 Markdown 변환 후 통합. |
15
+
16
+ ## 직접 지원되지 않지만 가이드 가능
17
+
18
+ | 파일 유형 | 가이드 |
19
+ |----------|-------|
20
+ | **비디오** | 사용자에게 핵심 장면을 설명하거나, 녹취/자막 파일을 제공하도록 요청 |
21
+ | **Figma / Sketch** | 사용자에게 스크린샷을 찍어 업로드하도록 요청 |
22
+ | **Protobuf / Swagger** | 사용자에게 JSON 또는 텍스트 형식으로 내보내도록 요청 |
23
+
24
+ ## 파일 → 단계 자동 매핑 테이블
25
+
26
+ | 업로드 내용 | 자동 매핑 단계 | 통합 작업 |
27
+ |------------|-------------|----------|
28
+ | 경쟁사 앱 / 웹사이트 스크린샷 | 포지셔닝 | "경쟁 대안"으로 식별, 차별화 분석 |
29
+ | 화이트보드 손그림 플로우차트 | Journey Map / OST | 플로우를 인식하고 구조화된 테이블로 변환 |
30
+ | 사용자 인터뷰 녹취록 | Persona + JTBD | 페인포인트, 현재 우회 방법, 감정적 반응, Job 선언문 추출 |
31
+ | 사용자 행동 데이터 (CSV) | 기회 평가 + North Star + PMF | 가정 기반 점수를 실제 데이터로 대체 |
32
+ | NPS / 만족도 조사 | PMF + Sean Ellis Score | Score를 직접 계산; PMF 수준 판단 |
33
+ | 기존 PRD / 요구사항 문서 | 리비전 모드 S1 + MVP | 기존 기능 목록과 의사결정 이력 추출 |
34
+ | 시장 보고서 PDF | 기회 평가 + 전략 | 시장 규모, 트렌드, 경쟁 구도 추출 |
35
+ | 매출 데이터 | 비즈니스 모델 + GTM | 매출 구조, 고객 분포, 채널 효과 분석 |
36
+ | 앱 인터페이스 스크린샷 | Aha Moment + Journey | 현재 경험 경로 분석 |
37
+
38
+ ## 통합 규칙
39
+
40
+ 1. **능동적 식별**: 먼저 "당신이 [파일 유형]을 업로드하신 것을 확인했습니다. [핵심 정보]를 [단계명]에 통합하겠습니다."라고 설명
41
+ 2. **기존 산출물을 덮어쓰지 않음**: 업로드된 내용을 "보충 자료"로 표시하고, 산출물을 업데이트하며, 변경 전파 규칙을 트리거
42
+ 3. **출처 표시**: 산출물에 업로드된 파일에서 나온 내용을 주석 (예: "✦ 업로드된 사용자 리서치 보고서에서")
43
+ 4. **데이터 우선**: 실제 데이터가 이전 가정과 충돌할 때, 실제 데이터를 우선
44
+ 5. **단계 간 영향**: 단일 파일이 여러 단계에 영향을 미칠 수 있음 — 영향받는 모든 단계를 한 번에 나열
45
+
46
+ ## 📎 원본 문서 식별 및 증분 업데이트
47
+
48
+ 사용자가 **기능 확장** 또는 **리비전 모드**에서 파일을 업로드할 때, 해당 파일이 "원본 문서"(새로운 기획 산출물을 기반으로 증분 업데이트해야 할 문서)인지 판단합니다:
49
+
50
+ ### 식별 기준
51
+ - 파일 유형: PRD, 제품 스펙, 아키텍처 문서, 요구사항 문서, 설계 문서
52
+ - 사용자가 명시적으로 언급: "이것이 현재 PRD입니다", "이 문서를 업데이트해 주세요", "이 스펙을 기반으로 확장해 주세요" 등
53
+ - 기능 확장 또는 리비전 모드의 S1(컨텍스트 수집) 단계에서 업로드
54
+
55
+ ### 원본 문서가 식별된 경우
56
+ 1. 표시: "📎 원본 문서 감지됨 — 최종 산출물은 이 파일을 기반으로 한 증분 업데이트가 됩니다"
57
+ 2. 문서 구조 분석 (섹션 제목, 서식 규칙, 네이밍 패턴)
58
+ 3. 일관된 산출물을 위해 문서의 서식과 스타일 기록
59
+ 4. S1 단계에서, 문서를 사용하여 기존 시스템 컨텍스트 사전 입력 (기술 스택, 모듈, 기능)
60
+
61
+ ### 증분 산출물 규칙 (최종 산출물 단계에서 적용)
62
+ - 새로운 콘텐츠는 해당 섹션에 삽입하고 `[NEW]`로 표시
63
+ - 수정된 콘텐츠는 `[UPDATED]`로 표시하고, 원본 콘텐츠는 주석으로 보존
64
+ - 새 기능과 관련 없는 섹션은 그대로 유지
65
+ - 산출물 문서는 원본 파일의 서식, 스타일 및 네이밍 규칙을 유지
@@ -0,0 +1,66 @@
1
+ # 📦 풀 모드 단계 시퀀스 (20단계 + 최종 산출물)
2
+
3
+ > 이 파일은 풀 모드의 권위 있는 단계 정의입니다. SKILL.md 코어 디스패처에 의해 로드됩니다.
4
+
5
+ ## 단계 시퀀스
6
+
7
+ ```
8
+ Phase 0: 사전 요건
9
+ S1. 기회 평가 + DHM → references/00-opportunity-check.md 읽기
10
+ S2. Strategy Blocks + Rumelt 전략 핵심 → references/01-strategy.md 읽기
11
+
12
+ Phase 1: 디스커버리
13
+ S3. Persona 테이블 → references/02a-persona.md 읽기
14
+ S4. Persona 카드 → references/02a-persona.md 읽기
15
+ S5. JTBD 분석 → references/02b-jtbd.md 읽기
16
+ S6. Opportunity Solution Tree (OST) → references/02c-ost-journey.md 읽기
17
+ S7. User Journey Map → references/02c-ost-journey.md 읽기
18
+
19
+ Phase 2: Define
20
+ S8. 페인포인트 요약 테이블 → references/03-define.md 읽기
21
+ S9. April Dunford 포지셔닝 → references/03-define.md 읽기
22
+ S10. HMW 재구성 → references/03-define.md 읽기
23
+ S11. 기회 평가 테이블 → references/03-define.md 읽기
24
+
25
+ Phase 3: Develop
26
+ S12. PR-FAQ → references/04a-prfaq.md 읽기
27
+ S13. 병렬 프로토타입 → references/04b-solutions.md 읽기
28
+ S14. Pre-mortem → references/04b-solutions.md 읽기
29
+ S15. GEM + RICE 우선순위 → references/04b-solutions.md 읽기
30
+ S16. User Story → references/04b-solutions.md 읽기
31
+ S17. MVP + Not Doing List → references/04c-mvp.md 읽기
32
+
33
+ Phase 4: Deliver
34
+ S18. North Star + 3계층 시그널 + Aha Moment → references/05a-northstar-aha.md 읽기
35
+ S19. PMF 수준 평가 + GTM 전략 + 비즈니스 모델 → references/05b-pmf-gtm.md 읽기
36
+ S20. 가설 검증 계획 → references/05c-validation-spec.md 읽기
37
+ ────
38
+ 최종 산출물 → 제품 스펙 요약 (references/05c-validation-spec.md → 4.6) + 최적 진입점 분석
39
+ ```
40
+
41
+ > 풀 모드에서, 대상 독자가 경영진 또는 크로스펑셔널 팀인 경우 S18 앞에 섹션 4.1 Empowered Teams가 추가됩니다; 그 외에는 건너뛰기.
42
+
43
+ ## 레퍼런스 로딩 지침
44
+
45
+ 각 단계에 진입할 때만 해당 레퍼런스 파일을 읽으세요 (모든 파일을 사전 로드하지 마세요):
46
+
47
+ | 단계 | 레퍼런스 파일 |
48
+ |------|-------------|
49
+ | S1 | `references/00-opportunity-check.md` |
50
+ | S2 | `references/01-strategy.md` |
51
+ | S3-S4 | `references/02a-persona.md` |
52
+ | S5 | `references/02b-jtbd.md` |
53
+ | S6-S7 | `references/02c-ost-journey.md` |
54
+ | S8-S11 | `references/03-define.md` |
55
+ | S12 | `references/04a-prfaq.md` |
56
+ | S13-S16 | `references/04b-solutions.md` |
57
+ | S17 | `references/04c-mvp.md` |
58
+ | S18 | `references/05a-northstar-aha.md` |
59
+ | S19 | `references/05b-pmf-gtm.md` |
60
+ | S20 + 최종 산출물 | `references/05c-validation-spec.md` |
61
+
62
+ ## 최종 산출물 형식
63
+
64
+ **최적 진입점 분석** (전체 로직 체인) + **제품 스펙 요약**
65
+
66
+ 완료 후, `references/rules-end-of-flow.md`에 따라 플로우 종료 규칙을 실행하세요.