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.
- package/LICENSE +21 -0
- package/README.es.md +518 -0
- package/README.ja.md +519 -0
- package/README.ko.md +518 -0
- package/README.md +520 -0
- package/README.zh-CN.md +518 -0
- package/README.zh-TW.md +518 -0
- package/SKILL.md +244 -0
- package/commands/product-build.md +13 -0
- package/commands/product-dev.md +21 -0
- package/commands/product-full.md +13 -0
- package/commands/product-prd.md +14 -0
- package/commands/product-quick.md +13 -0
- package/commands/product-report.md +12 -0
- package/commands/product-revision.md +13 -0
- package/i18n/en/SKILL.md +245 -0
- package/i18n/en/commands/product-build.md +13 -0
- package/i18n/en/commands/product-dev.md +21 -0
- package/i18n/en/commands/product-full.md +13 -0
- package/i18n/en/commands/product-prd.md +14 -0
- package/i18n/en/commands/product-quick.md +13 -0
- package/i18n/en/commands/product-report.md +12 -0
- package/i18n/en/commands/product-revision.md +13 -0
- package/i18n/en/references/00-opportunity-check.md +44 -0
- package/i18n/en/references/01-strategy.md +90 -0
- package/i18n/en/references/02a-persona.md +57 -0
- package/i18n/en/references/02b-jtbd.md +125 -0
- package/i18n/en/references/02c-ost-journey.md +65 -0
- package/i18n/en/references/03-define.md +118 -0
- package/i18n/en/references/04a-prfaq.md +112 -0
- package/i18n/en/references/04b-solutions.md +269 -0
- package/i18n/en/references/04c-mvp.md +21 -0
- package/i18n/en/references/05a-northstar-aha.md +93 -0
- package/i18n/en/references/05b-pmf-gtm.md +102 -0
- package/i18n/en/references/05c-validation-spec.md +117 -0
- package/i18n/en/references/06-html-report.md +128 -0
- package/i18n/en/references/07a-handoff-core.md +152 -0
- package/i18n/en/references/07b-tasks-tickets.md +215 -0
- package/i18n/en/references/07c-architecture-setup.md +197 -0
- package/i18n/en/references/08-security-checklist.md +221 -0
- package/i18n/en/references/rules-build.md +152 -0
- package/i18n/en/references/rules-change-propagation.md +74 -0
- package/i18n/en/references/rules-commands.md +98 -0
- package/i18n/en/references/rules-context.md +291 -0
- package/i18n/en/references/rules-custom.md +63 -0
- package/i18n/en/references/rules-document-tools.md +126 -0
- package/i18n/en/references/rules-end-of-flow.md +150 -0
- package/i18n/en/references/rules-export-document.md +346 -0
- package/i18n/en/references/rules-file-integration.md +65 -0
- package/i18n/en/references/rules-full.md +66 -0
- package/i18n/en/references/rules-import-document.md +261 -0
- package/i18n/en/references/rules-product-type.md +14 -0
- package/i18n/en/references/rules-progress.md +60 -0
- package/i18n/en/references/rules-quick.md +29 -0
- package/i18n/en/references/rules-revision.md +64 -0
- package/i18n/es/SKILL.md +245 -0
- package/i18n/es/commands/product-build.md +13 -0
- package/i18n/es/commands/product-dev.md +21 -0
- package/i18n/es/commands/product-full.md +13 -0
- package/i18n/es/commands/product-prd.md +14 -0
- package/i18n/es/commands/product-quick.md +13 -0
- package/i18n/es/commands/product-report.md +12 -0
- package/i18n/es/commands/product-revision.md +13 -0
- package/i18n/es/references/00-opportunity-check.md +44 -0
- package/i18n/es/references/01-strategy.md +90 -0
- package/i18n/es/references/02a-persona.md +57 -0
- package/i18n/es/references/02b-jtbd.md +125 -0
- package/i18n/es/references/02c-ost-journey.md +65 -0
- package/i18n/es/references/03-define.md +118 -0
- package/i18n/es/references/04a-prfaq.md +114 -0
- package/i18n/es/references/04b-solutions.md +269 -0
- package/i18n/es/references/04c-mvp.md +21 -0
- package/i18n/es/references/05a-northstar-aha.md +93 -0
- package/i18n/es/references/05b-pmf-gtm.md +102 -0
- package/i18n/es/references/05c-validation-spec.md +117 -0
- package/i18n/es/references/06-html-report.md +138 -0
- package/i18n/es/references/07a-handoff-core.md +152 -0
- package/i18n/es/references/07b-tasks-tickets.md +215 -0
- package/i18n/es/references/07c-architecture-setup.md +197 -0
- package/i18n/es/references/08-security-checklist.md +221 -0
- package/i18n/es/references/rules-build.md +152 -0
- package/i18n/es/references/rules-change-propagation.md +74 -0
- package/i18n/es/references/rules-commands.md +98 -0
- package/i18n/es/references/rules-context.md +291 -0
- package/i18n/es/references/rules-custom.md +63 -0
- package/i18n/es/references/rules-document-tools.md +126 -0
- package/i18n/es/references/rules-end-of-flow.md +150 -0
- package/i18n/es/references/rules-export-document.md +346 -0
- package/i18n/es/references/rules-file-integration.md +65 -0
- package/i18n/es/references/rules-full.md +66 -0
- package/i18n/es/references/rules-import-document.md +261 -0
- package/i18n/es/references/rules-product-type.md +14 -0
- package/i18n/es/references/rules-progress.md +60 -0
- package/i18n/es/references/rules-quick.md +29 -0
- package/i18n/es/references/rules-revision.md +64 -0
- package/i18n/ja/SKILL.md +245 -0
- package/i18n/ja/commands/product-build.md +13 -0
- package/i18n/ja/commands/product-dev.md +21 -0
- package/i18n/ja/commands/product-full.md +13 -0
- package/i18n/ja/commands/product-prd.md +14 -0
- package/i18n/ja/commands/product-quick.md +13 -0
- package/i18n/ja/commands/product-report.md +12 -0
- package/i18n/ja/commands/product-revision.md +13 -0
- package/i18n/ja/references/00-opportunity-check.md +44 -0
- package/i18n/ja/references/01-strategy.md +90 -0
- package/i18n/ja/references/02a-persona.md +57 -0
- package/i18n/ja/references/02b-jtbd.md +125 -0
- package/i18n/ja/references/02c-ost-journey.md +65 -0
- package/i18n/ja/references/03-define.md +118 -0
- package/i18n/ja/references/04a-prfaq.md +111 -0
- package/i18n/ja/references/04b-solutions.md +269 -0
- package/i18n/ja/references/04c-mvp.md +21 -0
- package/i18n/ja/references/05a-northstar-aha.md +93 -0
- package/i18n/ja/references/05b-pmf-gtm.md +102 -0
- package/i18n/ja/references/05c-validation-spec.md +117 -0
- package/i18n/ja/references/06-html-report.md +126 -0
- package/i18n/ja/references/07a-handoff-core.md +152 -0
- package/i18n/ja/references/07b-tasks-tickets.md +215 -0
- package/i18n/ja/references/07c-architecture-setup.md +197 -0
- package/i18n/ja/references/08-security-checklist.md +221 -0
- package/i18n/ja/references/rules-build.md +152 -0
- package/i18n/ja/references/rules-change-propagation.md +74 -0
- package/i18n/ja/references/rules-commands.md +98 -0
- package/i18n/ja/references/rules-context.md +291 -0
- package/i18n/ja/references/rules-custom.md +63 -0
- package/i18n/ja/references/rules-document-tools.md +126 -0
- package/i18n/ja/references/rules-end-of-flow.md +150 -0
- package/i18n/ja/references/rules-export-document.md +346 -0
- package/i18n/ja/references/rules-file-integration.md +65 -0
- package/i18n/ja/references/rules-full.md +66 -0
- package/i18n/ja/references/rules-import-document.md +261 -0
- package/i18n/ja/references/rules-product-type.md +14 -0
- package/i18n/ja/references/rules-progress.md +60 -0
- package/i18n/ja/references/rules-quick.md +29 -0
- package/i18n/ja/references/rules-revision.md +64 -0
- package/i18n/ko/SKILL.md +245 -0
- package/i18n/ko/commands/product-build.md +13 -0
- package/i18n/ko/commands/product-dev.md +21 -0
- package/i18n/ko/commands/product-full.md +13 -0
- package/i18n/ko/commands/product-prd.md +14 -0
- package/i18n/ko/commands/product-quick.md +13 -0
- package/i18n/ko/commands/product-report.md +12 -0
- package/i18n/ko/commands/product-revision.md +13 -0
- package/i18n/ko/references/00-opportunity-check.md +44 -0
- package/i18n/ko/references/01-strategy.md +90 -0
- package/i18n/ko/references/02a-persona.md +57 -0
- package/i18n/ko/references/02b-jtbd.md +125 -0
- package/i18n/ko/references/02c-ost-journey.md +65 -0
- package/i18n/ko/references/03-define.md +118 -0
- package/i18n/ko/references/04a-prfaq.md +112 -0
- package/i18n/ko/references/04b-solutions.md +269 -0
- package/i18n/ko/references/04c-mvp.md +21 -0
- package/i18n/ko/references/05a-northstar-aha.md +93 -0
- package/i18n/ko/references/05b-pmf-gtm.md +102 -0
- package/i18n/ko/references/05c-validation-spec.md +117 -0
- package/i18n/ko/references/06-html-report.md +126 -0
- package/i18n/ko/references/07a-handoff-core.md +152 -0
- package/i18n/ko/references/07b-tasks-tickets.md +215 -0
- package/i18n/ko/references/07c-architecture-setup.md +197 -0
- package/i18n/ko/references/08-security-checklist.md +221 -0
- package/i18n/ko/references/rules-build.md +152 -0
- package/i18n/ko/references/rules-change-propagation.md +74 -0
- package/i18n/ko/references/rules-commands.md +98 -0
- package/i18n/ko/references/rules-context.md +291 -0
- package/i18n/ko/references/rules-custom.md +63 -0
- package/i18n/ko/references/rules-document-tools.md +126 -0
- package/i18n/ko/references/rules-end-of-flow.md +150 -0
- package/i18n/ko/references/rules-export-document.md +346 -0
- package/i18n/ko/references/rules-file-integration.md +65 -0
- package/i18n/ko/references/rules-full.md +66 -0
- package/i18n/ko/references/rules-import-document.md +261 -0
- package/i18n/ko/references/rules-product-type.md +14 -0
- package/i18n/ko/references/rules-progress.md +60 -0
- package/i18n/ko/references/rules-quick.md +29 -0
- package/i18n/ko/references/rules-revision.md +64 -0
- package/i18n/zh-CN/SKILL.md +245 -0
- package/i18n/zh-CN/commands/product-build.md +13 -0
- package/i18n/zh-CN/commands/product-dev.md +21 -0
- package/i18n/zh-CN/commands/product-full.md +13 -0
- package/i18n/zh-CN/commands/product-prd.md +14 -0
- package/i18n/zh-CN/commands/product-quick.md +13 -0
- package/i18n/zh-CN/commands/product-report.md +12 -0
- package/i18n/zh-CN/commands/product-revision.md +13 -0
- package/i18n/zh-CN/references/00-opportunity-check.md +44 -0
- package/i18n/zh-CN/references/01-strategy.md +90 -0
- package/i18n/zh-CN/references/02a-persona.md +57 -0
- package/i18n/zh-CN/references/02b-jtbd.md +125 -0
- package/i18n/zh-CN/references/02c-ost-journey.md +65 -0
- package/i18n/zh-CN/references/03-define.md +118 -0
- package/i18n/zh-CN/references/04a-prfaq.md +106 -0
- package/i18n/zh-CN/references/04b-solutions.md +269 -0
- package/i18n/zh-CN/references/04c-mvp.md +21 -0
- package/i18n/zh-CN/references/05a-northstar-aha.md +93 -0
- package/i18n/zh-CN/references/05b-pmf-gtm.md +102 -0
- package/i18n/zh-CN/references/05c-validation-spec.md +117 -0
- package/i18n/zh-CN/references/06-html-report.md +123 -0
- package/i18n/zh-CN/references/07a-handoff-core.md +152 -0
- package/i18n/zh-CN/references/07b-tasks-tickets.md +215 -0
- package/i18n/zh-CN/references/07c-architecture-setup.md +197 -0
- package/i18n/zh-CN/references/08-security-checklist.md +221 -0
- package/i18n/zh-CN/references/rules-build.md +152 -0
- package/i18n/zh-CN/references/rules-change-propagation.md +74 -0
- package/i18n/zh-CN/references/rules-commands.md +98 -0
- package/i18n/zh-CN/references/rules-context.md +291 -0
- package/i18n/zh-CN/references/rules-custom.md +63 -0
- package/i18n/zh-CN/references/rules-document-tools.md +126 -0
- package/i18n/zh-CN/references/rules-end-of-flow.md +150 -0
- package/i18n/zh-CN/references/rules-export-document.md +346 -0
- package/i18n/zh-CN/references/rules-file-integration.md +65 -0
- package/i18n/zh-CN/references/rules-full.md +66 -0
- package/i18n/zh-CN/references/rules-import-document.md +261 -0
- package/i18n/zh-CN/references/rules-product-type.md +14 -0
- package/i18n/zh-CN/references/rules-progress.md +60 -0
- package/i18n/zh-CN/references/rules-quick.md +29 -0
- package/i18n/zh-CN/references/rules-revision.md +64 -0
- package/i18n/zh-TW/SKILL.md +244 -0
- package/i18n/zh-TW/commands/product-build.md +13 -0
- package/i18n/zh-TW/commands/product-dev.md +21 -0
- package/i18n/zh-TW/commands/product-full.md +13 -0
- package/i18n/zh-TW/commands/product-prd.md +14 -0
- package/i18n/zh-TW/commands/product-quick.md +13 -0
- package/i18n/zh-TW/commands/product-report.md +12 -0
- package/i18n/zh-TW/commands/product-revision.md +13 -0
- package/i18n/zh-TW/references/00-opportunity-check.md +44 -0
- package/i18n/zh-TW/references/01-strategy.md +90 -0
- package/i18n/zh-TW/references/02a-persona.md +57 -0
- package/i18n/zh-TW/references/02b-jtbd.md +125 -0
- package/i18n/zh-TW/references/02c-ost-journey.md +65 -0
- package/i18n/zh-TW/references/03-define.md +118 -0
- package/i18n/zh-TW/references/04a-prfaq.md +106 -0
- package/i18n/zh-TW/references/04b-solutions.md +269 -0
- package/i18n/zh-TW/references/04c-mvp.md +21 -0
- package/i18n/zh-TW/references/05a-northstar-aha.md +93 -0
- package/i18n/zh-TW/references/05b-pmf-gtm.md +102 -0
- package/i18n/zh-TW/references/05c-validation-spec.md +117 -0
- package/i18n/zh-TW/references/06-html-report.md +123 -0
- package/i18n/zh-TW/references/07a-handoff-core.md +152 -0
- package/i18n/zh-TW/references/07b-tasks-tickets.md +215 -0
- package/i18n/zh-TW/references/07c-architecture-setup.md +197 -0
- package/i18n/zh-TW/references/08-security-checklist.md +221 -0
- package/i18n/zh-TW/references/rules-build.md +152 -0
- package/i18n/zh-TW/references/rules-change-propagation.md +74 -0
- package/i18n/zh-TW/references/rules-commands.md +98 -0
- package/i18n/zh-TW/references/rules-context.md +291 -0
- package/i18n/zh-TW/references/rules-custom.md +63 -0
- package/i18n/zh-TW/references/rules-document-tools.md +126 -0
- package/i18n/zh-TW/references/rules-end-of-flow.md +150 -0
- package/i18n/zh-TW/references/rules-export-document.md +346 -0
- package/i18n/zh-TW/references/rules-file-integration.md +65 -0
- package/i18n/zh-TW/references/rules-full.md +66 -0
- package/i18n/zh-TW/references/rules-import-document.md +261 -0
- package/i18n/zh-TW/references/rules-product-type.md +14 -0
- package/i18n/zh-TW/references/rules-progress.md +60 -0
- package/i18n/zh-TW/references/rules-quick.md +29 -0
- package/i18n/zh-TW/references/rules-revision.md +64 -0
- package/install.sh +418 -0
- package/package.json +41 -0
- package/references/00-opportunity-check.md +44 -0
- package/references/01-strategy.md +90 -0
- package/references/02a-persona.md +57 -0
- package/references/02b-jtbd.md +125 -0
- package/references/02c-ost-journey.md +65 -0
- package/references/03-define.md +118 -0
- package/references/04a-prfaq.md +106 -0
- package/references/04b-solutions.md +269 -0
- package/references/04c-mvp.md +21 -0
- package/references/05a-northstar-aha.md +93 -0
- package/references/05b-pmf-gtm.md +102 -0
- package/references/05c-validation-spec.md +117 -0
- package/references/06-html-report.md +123 -0
- package/references/07a-handoff-core.md +152 -0
- package/references/07b-tasks-tickets.md +215 -0
- package/references/07c-architecture-setup.md +197 -0
- package/references/08-security-checklist.md +221 -0
- package/references/rules-build.md +152 -0
- package/references/rules-change-propagation.md +74 -0
- package/references/rules-commands.md +98 -0
- package/references/rules-context.md +291 -0
- package/references/rules-custom.md +63 -0
- package/references/rules-document-tools.md +126 -0
- package/references/rules-end-of-flow.md +150 -0
- package/references/rules-export-document.md +346 -0
- package/references/rules-file-integration.md +65 -0
- package/references/rules-full.md +66 -0
- package/references/rules-import-document.md +261 -0
- package/references/rules-product-type.md +14 -0
- package/references/rules-progress.md +60 -0
- package/references/rules-quick.md +29 -0
- package/references/rules-revision.md +64 -0
- package/references/templates/prd-style.css +464 -0
- package/references/templates/report-style.css +114 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# 문서 가져오기 및 파싱 규칙
|
|
2
|
+
|
|
3
|
+
> 사용자가 PDF / DOCX / PPTX 파일을 업로드하거나 `/parse [파일]`을 트리거할 때 로드됩니다.
|
|
4
|
+
> 최초 사용 시, 먼저 `rules-document-tools.md`를 로드하여 도구 설치 여부를 확인합니다.
|
|
5
|
+
> 이 규칙은 `rules-file-integration.md`와 함께 작동합니다 — 해당 파일은 "언제 트리거할지"를 정의하고, 이 파일은 "어떻게 파싱할지"를 정의합니다.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 파싱 목표
|
|
10
|
+
|
|
11
|
+
모든 형식의 입력 문서를 **구조화된 Markdown**으로 변환하여 후속 플로우에 활용:
|
|
12
|
+
- 기능 확장 / 리비전 모드 S1 컨텍스트 수집
|
|
13
|
+
- 증분 업데이트 원본 문서 베이스라인
|
|
14
|
+
- 일반 문서 내용 추출
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## PDF 파싱: 3계층 전략 + 페이지별 감지
|
|
19
|
+
|
|
20
|
+
### 개요
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
입력 PDF
|
|
24
|
+
│
|
|
25
|
+
▼
|
|
26
|
+
pymupdf 페이지별 텍스트 추출 (비용 없음)
|
|
27
|
+
│
|
|
28
|
+
├── 페이지 텍스트 > 30자 → ✅ Markdown으로 직접 변환 (계층 1)
|
|
29
|
+
│
|
|
30
|
+
└── 페이지 텍스트 ≤ 30자 (빈 페이지 / 벡터 경로 / 스캔본)
|
|
31
|
+
│
|
|
32
|
+
├── 기본값 → Claude Vision 시맨틱 파싱 (계층 2)
|
|
33
|
+
│
|
|
34
|
+
└── Vision 사용 불가 / 토큰 예산 부족 → Tesseract OCR (계층 3)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 1단계: 페이지별 유형 감지
|
|
38
|
+
|
|
39
|
+
**핵심 원칙**: 전체 문서가 아닌 "페이지" 단위로 감지합니다. 하나의 PDF에 디지털 텍스트 페이지와 스캔 이미지 페이지가 혼합될 수 있습니다.
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
import fitz # pymupdf
|
|
43
|
+
|
|
44
|
+
doc = fitz.open(pdf_path)
|
|
45
|
+
total_pages = len(doc)
|
|
46
|
+
page_results = {}
|
|
47
|
+
|
|
48
|
+
for i in range(total_pages):
|
|
49
|
+
page = doc[i]
|
|
50
|
+
text = page.get_text("text").strip()
|
|
51
|
+
|
|
52
|
+
if len(text) > 30:
|
|
53
|
+
# 계층 1: 디지털 텍스트, 직접 추출
|
|
54
|
+
page_results[i] = {"type": "digital", "text": text}
|
|
55
|
+
else:
|
|
56
|
+
# Vision 또는 OCR 필요
|
|
57
|
+
page_results[i] = {"type": "needs_vision", "text": None}
|
|
58
|
+
|
|
59
|
+
digital_count = sum(1 for p in page_results.values() if p["type"] == "digital")
|
|
60
|
+
vision_count = total_pages - digital_count
|
|
61
|
+
|
|
62
|
+
print(f"PDF 분석: {total_pages} 페이지, {digital_count} 직접 추출 가능, {vision_count} 시각적 파싱 필요")
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 2단계: 대용량 파일 처리 전략
|
|
66
|
+
|
|
67
|
+
| 조건 | 전략 |
|
|
68
|
+
|------|------|
|
|
69
|
+
| 모든 페이지가 디지털 (vision_count = 0) | 모든 페이지 직접 추출, 비용 없음 |
|
|
70
|
+
| vision_count ≤ 20 | 시각적 파싱이 필요한 모든 페이지를 한 번에 Claude Vision으로 읽기 |
|
|
71
|
+
| vision_count > 20 | 배치로 처리 (배치당 ≤ 20페이지), 결과 병합 |
|
|
72
|
+
| 총 페이지 > 50 그리고 vision_count > 20 | 전체 문서 파싱 또는 페이지 범위 지정 여부를 사용자에게 확인 |
|
|
73
|
+
|
|
74
|
+
**대용량 파일 (>50페이지) 사용자 확인 프롬프트**:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
📄 이 PDF는 {total_pages} 페이지입니다:
|
|
78
|
+
• {digital_count} 페이지는 직접 추출 가능 (무료)
|
|
79
|
+
• {vision_count} 페이지는 시각적 파싱 필요 (Vision 토큰 소모)
|
|
80
|
+
|
|
81
|
+
선택해 주세요:
|
|
82
|
+
1️⃣ 전체 문서 파싱 (완전하지만 토큰 소모 증가)
|
|
83
|
+
2️⃣ 특정 페이지만 파싱 (페이지 범위 입력, 예: 1-10,15,20-25)
|
|
84
|
+
3️⃣ 직접 추출 가능한 페이지만 추출 (스캔/벡터 페이지 건너뛰기)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 3단계: 계층 1 — pymupdf 직접 추출
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
def extract_digital_pages(doc, page_results):
|
|
91
|
+
"""모든 디지털 텍스트 페이지 추출"""
|
|
92
|
+
markdown_parts = []
|
|
93
|
+
for i, result in sorted(page_results.items()):
|
|
94
|
+
if result["type"] == "digital":
|
|
95
|
+
markdown_parts.append(f"<!-- Page {i+1} -->\n{result['text']}")
|
|
96
|
+
return "\n\n".join(markdown_parts)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 4단계: 계층 2 — Claude Vision 시맨틱 파싱
|
|
100
|
+
|
|
101
|
+
`needs_vision` 유형 페이지의 경우, 먼저 pymupdf로 PNG로 렌더링한 후 Claude의 Read 도구로 읽습니다.
|
|
102
|
+
|
|
103
|
+
**이미지 렌더링**:
|
|
104
|
+
```python
|
|
105
|
+
def render_pages_to_png(doc, page_indices, dpi=300):
|
|
106
|
+
"""지정된 페이지를 PNG로 렌더링"""
|
|
107
|
+
output_files = []
|
|
108
|
+
for i in page_indices:
|
|
109
|
+
page = doc[i]
|
|
110
|
+
pix = page.get_pixmap(dpi=dpi)
|
|
111
|
+
output_path = f"/tmp/pdf-page-{i+1:04d}.png"
|
|
112
|
+
pix.save(output_path)
|
|
113
|
+
output_files.append((i, output_path))
|
|
114
|
+
return output_files
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Claude Vision 파싱 프롬프트**:
|
|
118
|
+
|
|
119
|
+
시각적 파싱이 필요한 각 페이지(또는 배치)에 대해, Read 도구로 PNG를 읽은 후 다음 프롬프트로 변환:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
You are reading page {page_num}/{total_pages} of a PDF document.
|
|
123
|
+
Please convert the content of this page precisely into Markdown format.
|
|
124
|
+
|
|
125
|
+
Strict rules:
|
|
126
|
+
1. Tables → Markdown table (preserve all columns, rows, and alignment)
|
|
127
|
+
2. Headings → # / ## / ### corresponding to original level
|
|
128
|
+
3. Numbered lists → 1. 2. 3. (preserve original numbering)
|
|
129
|
+
4. Bullet points → - or •
|
|
130
|
+
5. Bold/Italic → **bold** / *italic*
|
|
131
|
+
6. Charts/Images → > [Chart: brief description]
|
|
132
|
+
7. Headers, footers, page numbers → Ignore
|
|
133
|
+
8. Numbers, dates, names, account numbers → Must be 100% accurate, do not guess
|
|
134
|
+
9. Do not add content not present in the original
|
|
135
|
+
10. Do not translate — preserve the original language
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
> **OCR보다 나은 이유**: Claude는 테이블의 "시맨틱 구조"(어떤 행이 헤더인지, 어떤 열이 정렬되어 있는지)를 이해하지만, Tesseract는 문자를 하나씩 인식한 후 규칙으로 테이블을 재구성하려 시도하며, 이는 자주 실패합니다.
|
|
139
|
+
|
|
140
|
+
### 5단계: 계층 3 — Tesseract OCR 폴백
|
|
141
|
+
|
|
142
|
+
다음 상황에서만 사용:
|
|
143
|
+
- 사용자가 토큰 절약을 명시적으로 요청
|
|
144
|
+
- Claude Vision 사용 불가 (API 제한 등)
|
|
145
|
+
- 오프라인 환경
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
import subprocess
|
|
149
|
+
from PIL import Image
|
|
150
|
+
|
|
151
|
+
def ocr_page(png_path, lang="chi_tra+eng"):
|
|
152
|
+
"""Tesseract OCR 단일 페이지"""
|
|
153
|
+
# macOS tesseract는 PNG를 직접 읽지 못할 수 있으므로, TIFF로 변환하거나 stdin 사용
|
|
154
|
+
tiff_path = png_path.replace('.png', '.tiff')
|
|
155
|
+
Image.open(png_path).save(tiff_path)
|
|
156
|
+
|
|
157
|
+
result = subprocess.run(
|
|
158
|
+
['tesseract', 'stdin', 'stdout', '-l', lang],
|
|
159
|
+
stdin=open(tiff_path, 'rb'),
|
|
160
|
+
capture_output=True, text=True, timeout=120
|
|
161
|
+
)
|
|
162
|
+
return result.stdout
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Tesseract 참고 사항 (실무 경험 기반)**:
|
|
166
|
+
- macOS에서 tesseract는 PNG 파일을 직접 읽지 못할 수 있음 — `stdin` 파이프 사용 또는 TIFF로 변환 권장
|
|
167
|
+
- 권장 해상도: 300dpi
|
|
168
|
+
- `chi_tra+eng` 언어 팩으로 중국어 번체와 영어 동시 인식
|
|
169
|
+
- OCR 결과는 후처리 필요: 끊어진 줄 병합, 테이블 구조 복구
|
|
170
|
+
|
|
171
|
+
### 6단계: 전체 페이지 병합
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
def merge_all_pages(digital_md, vision_md_list):
|
|
175
|
+
"""모든 페이지의 Markdown을 페이지 순서대로 병합"""
|
|
176
|
+
all_pages = {}
|
|
177
|
+
# 디지털 페이지
|
|
178
|
+
for page_num, md in digital_md.items():
|
|
179
|
+
all_pages[page_num] = md
|
|
180
|
+
# vision/ocr 페이지
|
|
181
|
+
for page_num, md in vision_md_list.items():
|
|
182
|
+
all_pages[page_num] = md
|
|
183
|
+
|
|
184
|
+
# 페이지 번호순으로 정렬 후 병합
|
|
185
|
+
final_md = []
|
|
186
|
+
for i in sorted(all_pages.keys()):
|
|
187
|
+
final_md.append(all_pages[i])
|
|
188
|
+
|
|
189
|
+
return "\n\n---\n\n".join(final_md)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### 7단계: 출력 및 사용자 알림
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
📄 PDF 파싱 완료:
|
|
196
|
+
• 총 페이지: {total_pages}
|
|
197
|
+
• 직접 추출: {digital_count} 페이지 (pymupdf)
|
|
198
|
+
• 시각적 파싱: {vision_count} 페이지 (Claude Vision)
|
|
199
|
+
• 출력: {output_path} (Markdown, {word_count} 단어)
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## DOCX 파싱
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
pandoc "{input_path}" -t markdown -o "/tmp/parsed-{timestamp}.md" --wrap=none
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**후처리**:
|
|
211
|
+
- Pandoc이 생성한 과도한 빈 줄 제거
|
|
212
|
+
- 테이블 서식이 올바른지 확인
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## PPTX 파싱
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
pandoc "{input_path}" -t markdown -o "/tmp/parsed-{timestamp}.md" --wrap=none
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
> Pandoc은 각 슬라이드를 `##` 제목 섹션으로 변환합니다.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## HTML 파싱
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
pandoc "{input_path}" -f html -t markdown -o "/tmp/parsed-{timestamp}.md" --wrap=none
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 이미지 파싱
|
|
235
|
+
|
|
236
|
+
Claude Read 도구를 직접 사용하여 이미지를 읽은 후, Vision 파싱 프롬프트로 Markdown으로 변환합니다.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## rules-file-integration.md와의 연동
|
|
241
|
+
|
|
242
|
+
`rules-file-integration.md`가 다음 시나리오를 감지하면, 이 규칙이 로드됩니다:
|
|
243
|
+
|
|
244
|
+
| 시나리오 | 작업 |
|
|
245
|
+
|---------|------|
|
|
246
|
+
| 사용자가 기능 확장 S1에서 PDF 업로드 | 이 규칙 로드 → PDF 파싱 → 기존 시스템 컨텍스트 추출 |
|
|
247
|
+
| 사용자가 리비전 S1에서 기존 PRD 업로드 | 이 규칙 로드 → PDF 파싱 → 리비전 베이스라인으로 활용 |
|
|
248
|
+
| 사용자가 `/parse` 명령 사용 | 이 규칙 로드 → 지정된 파일 파싱 → Markdown 출력 |
|
|
249
|
+
| 사용자가 시장 보고서 PDF 업로드 | 이 규칙 로드 → 핵심 정보 추출 → 해당 단계에 통합 |
|
|
250
|
+
|
|
251
|
+
### 원본 문서 식별
|
|
252
|
+
|
|
253
|
+
파싱 완료 후, 파일이 "원본 문서" (PRD, 스펙 등)로 식별되면 자동으로 표시:
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
📎 원본 문서 감지됨 — 최종 산출물은 이 파일을 기반으로 한 증분 업데이트가 됩니다.
|
|
257
|
+
문서 구조: {section_count}개 섹션, {table_count}개 테이블
|
|
258
|
+
서식 규칙: [식별된 서식 특성]
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
문서 구조는 `rules-export-document.md`에서 최종 출력 시 사용하기 위해 기록됩니다.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 🏢 B2B / B2C 차별화 조정
|
|
2
|
+
|
|
3
|
+
> 제품 유형이 확인된 후 로드됩니다. Claude는 각 프레임워크 내에서 다음 조정을 자동으로 적용합니다.
|
|
4
|
+
|
|
5
|
+
| 프레임워크 | B2C 조정 | B2B 조정 |
|
|
6
|
+
|-----------|---------|---------|
|
|
7
|
+
| **Persona** | 개인 동기/습관으로 세분화 | "구매 의사결정자"와 "실제 최종 사용자"를 두 가지 Persona 유형으로 구분; "조직 규모"와 "구매 프로세스" 필드 추가 |
|
|
8
|
+
| **JTBD** | 개인의 감정적, 사회적 Job에 집중 | "조직 수준 Job" 추가: 이것이 회사의 어떤 목표 달성을 돕는가? 개인이 조직 내에서 어떤 과업을 완수하는가? |
|
|
9
|
+
| **PMF 평가** | 주로 DAU/MAU, 리텐션율, Sean Ellis Score 기반 | 주로 "유료 고객 + 확장율 + NPS" 기반; Level 1 = 유료 고객 3-5명 |
|
|
10
|
+
| **Aha Moment** | 첫 사용 시 핵심 가치 경험 | 온보딩/트라이얼 기간까지 나타나지 않을 수 있음; "Time-to-Value" 지표 설계 |
|
|
11
|
+
| **MVP** | 완전한 경량 제품일 수 있음 | 파일럿(특정 고객을 위한 맞춤 배포)이 필요할 수 있음 |
|
|
12
|
+
| **GTM** | 주로 Product-Led Growth(PLG) 또는 커뮤니티 기반 | 주로 영업 기반 또는 파트너 채널 기반 |
|
|
13
|
+
| **프라이싱** | Freemium / 구독 / 사용량 기반 | 연간 계약 / 사용자당 과금 / 사용량 기반 / 맞춤 견적 |
|
|
14
|
+
| **North Star** | 사용자 활동 또는 핵심 행동 완료 수 | ARR, Net Revenue Retention, 활성 계정 |
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# 🔁 진행 저장 & 중단 복구
|
|
2
|
+
|
|
3
|
+
> 사용자가 "일시 정지", "저장"이라고 말하거나 시작 시 진행 상황을 점검할 때 로드됩니다.
|
|
4
|
+
|
|
5
|
+
## 진행 파일 형식
|
|
6
|
+
|
|
7
|
+
각 단계가 완료된 후, 프로젝트 디렉토리에 `.product-playbook-progress.md`를 생성하거나 업데이트하세요:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
# Product Playbook 진행 저장
|
|
11
|
+
|
|
12
|
+
- 모드: [퀵 모드 / 풀 모드 / ...]
|
|
13
|
+
- 제품 유형: [B2C / B2B / ...]
|
|
14
|
+
- 제품 설명: [사용자의 제품 설명]
|
|
15
|
+
- 현재 진행: S[X] / S[Y]
|
|
16
|
+
- 마지막 업데이트: [타임스탬프]
|
|
17
|
+
|
|
18
|
+
## 완료된 단계
|
|
19
|
+
|
|
20
|
+
### S1: [단계명] ✅
|
|
21
|
+
[이 단계의 핵심 산출물 — 복구 시 재작업이 필요 없을 만큼 충분한 세부사항 유지]
|
|
22
|
+
|
|
23
|
+
### S2: [단계명] ✅
|
|
24
|
+
[위와 동일]
|
|
25
|
+
|
|
26
|
+
## 대기 중인 단계
|
|
27
|
+
- S3: [단계명]
|
|
28
|
+
- S4: [단계명]
|
|
29
|
+
- ...
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 기능 확장 모드 예시
|
|
33
|
+
```markdown
|
|
34
|
+
모드: 기능 확장
|
|
35
|
+
단계: S2/S4
|
|
36
|
+
S1: 문제 + 기존 시스템 컨텍스트 ✅
|
|
37
|
+
S2: 3가지 병렬 솔루션 + AI 추천 ▶️
|
|
38
|
+
S3: 리스크 평가 ⬜
|
|
39
|
+
S4: 실행 범위 ⬜
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 트리거 규칙
|
|
43
|
+
|
|
44
|
+
1. **자동 저장**: 각 단계가 완료되고 사용자가 확인한 후, 즉시 진행 파일을 업데이트
|
|
45
|
+
2. **시작 시 점검**: 스킬이 트리거되면, 먼저 `.product-playbook-progress.md`가 존재하는지 확인. 존재하면 표시:
|
|
46
|
+
```
|
|
47
|
+
미완료된 제품 기획 진행이 감지되었습니다 ([모드명], S[X]/S[Y]):
|
|
48
|
+
1️⃣ 계속 — S[X]에서 재개
|
|
49
|
+
2️⃣ 처음부터 — 이전 진행 삭제하고 새로 시작
|
|
50
|
+
(1 또는 2를 입력하세요)
|
|
51
|
+
```
|
|
52
|
+
3. **일시 정지 명령**: 사용자가 "일시 정지", "다른 것 먼저", "저장"이라고 말하면, 진행 파일이 업데이트되었음을 확인하고 답변: "진행이 .product-playbook-progress.md에 저장되었습니다 (S[X]/S[Y]). 이 프로젝트에서 다음에 스킬을 시작할 때 자동으로 감지됩니다."
|
|
53
|
+
4. **완료 시 정리**: 전체 플로우가 완료되고 최종 문서가 작성된 후, 사용자에게 진행 파일을 삭제할지 질문
|
|
54
|
+
6. **버전 관리 알림**: `.product-playbook-progress.md`가 처음 생성될 때, 사용자에게 알림: "⚠️ `.product-playbook-progress.md`를 `.gitignore`에 추가하는 것을 권장합니다 — 이 파일에 민감한 제품 전략 정보가 포함될 수 있습니다."
|
|
55
|
+
5. **중단 저장**: 플로우 중 관련 없는 프롬프트가 감지되면 (SKILL.md 플로우 중단 처리 규칙 참조), 현재 단계가 아직 완료되지 않았더라도 진행을 저장합니다. 저장 형식에서 현재 단계에 ✅ 대신 🔶 (진행 중)을 사용하고, 부분적으로 작성된 내용을 보존:
|
|
56
|
+
```
|
|
57
|
+
### S[X]: [단계명] 🔶 (진행 중, 부분 완료)
|
|
58
|
+
[부분적으로 작성된 내용]
|
|
59
|
+
⚠️ 이 단계는 아직 완료되지 않았습니다 — 복구 시 여기서 재개하세요
|
|
60
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# 🚀 퀵 모드 단계 시퀀스 (3단계 + 최종 산출물)
|
|
2
|
+
|
|
3
|
+
> 이 파일은 퀵 모드의 권위 있는 단계 정의입니다. SKILL.md 코어 디스패처에 의해 로드됩니다.
|
|
4
|
+
|
|
5
|
+
## 단계 시퀀스
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
S1. JTBD 선언문 → references/02b-jtbd.md 읽기
|
|
9
|
+
S2. PR-FAQ → references/04a-prfaq.md 읽기
|
|
10
|
+
S3. North Star Metric + Aha Moment → references/05a-northstar-aha.md 읽기
|
|
11
|
+
────
|
|
12
|
+
최종 산출물 → 1페이지 방향 요약
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 레퍼런스 로딩 지침
|
|
16
|
+
|
|
17
|
+
각 단계에 진입할 때 해당 레퍼런스 파일을 읽으세요:
|
|
18
|
+
|
|
19
|
+
| 단계 | 레퍼런스 파일 |
|
|
20
|
+
|------|-------------|
|
|
21
|
+
| S1 | `references/02b-jtbd.md` |
|
|
22
|
+
| S2 | `references/04a-prfaq.md` |
|
|
23
|
+
| S3 | `references/05a-northstar-aha.md` |
|
|
24
|
+
|
|
25
|
+
## 최종 산출물 형식
|
|
26
|
+
|
|
27
|
+
**1페이지 방향 요약**: 문제 → 솔루션 → 성공 정의, 빠른 브리핑이나 팀 싱크에 적합한 3파트 구조.
|
|
28
|
+
|
|
29
|
+
완료 후, `references/rules-end-of-flow.md`에 따라 플로우 종료 규칙을 실행하세요. 퀵 모드에서는 프레젠테이션이 필요한지만 질문 — PRD나 개발 핸드오프 패키지는 제안하지 않습니다 (내용이 충분히 포괄적이지 않으므로).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# 🔄 리비전 모드 단계 시퀀스 (12단계 + 최종 산출물)
|
|
2
|
+
|
|
3
|
+
> 이 파일은 리비전 모드의 권위 있는 단계 정의입니다. SKILL.md 코어 디스패처에 의해 로드됩니다.
|
|
4
|
+
|
|
5
|
+
## 단계 시퀀스
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Phase 0: 현상 분석
|
|
9
|
+
S1. 기존 제품 리뷰 (사용자 데이터 개요 + 핵심 지표 + 알려진 이슈 + 보안 상태)
|
|
10
|
+
S2. 기존 사용자 JTBD 재검토 (어떤 Job이 잘 되고 있는가? 어떤 것이 안 되는가?)
|
|
11
|
+
|
|
12
|
+
Phase 1: 문제 수렴
|
|
13
|
+
S3. 사용자 페인포인트 수집 (리텐션/이탈 분석 + 사용자 피드백 종합 + 행동 데이터)
|
|
14
|
+
S4. 페인포인트 요약 테이블 → references/03-define.md → 2.1 로드
|
|
15
|
+
S5. 포지셔닝 재평가 → references/03-define.md → 2.2 로드 (초점: 포지셔닝 조정이 필요한가?)
|
|
16
|
+
S6. HMW 질문 재구성 → references/03-define.md → 2.3 로드
|
|
17
|
+
S7. 기회 평가 테이블 → references/03-define.md → 2.4 로드
|
|
18
|
+
|
|
19
|
+
Phase 2: 솔루션 설계
|
|
20
|
+
S8. PR-FAQ → references/04a-prfaq.md 로드 (리비전 후 경험 묘사)
|
|
21
|
+
S9. Pre-mortem → references/04b-solutions.md → 3.3 로드
|
|
22
|
+
S10. MVP 범위 + Not Doing List → references/04c-mvp.md 로드 (초점: 변경할 것 / 변경하지 않을 것)
|
|
23
|
+
|
|
24
|
+
Phase 3: 검증
|
|
25
|
+
S11. North Star + Aha Moment → references/05a-northstar-aha.md 로드 (리비전 전후 지표 비교)
|
|
26
|
+
S12. 가설 검증 계획 → references/05c-validation-spec.md 로드
|
|
27
|
+
────
|
|
28
|
+
최종 산출물 → 제품 스펙 요약 (리비전 에디션)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### S1 사전 단계: 제품 컨텍스트 로딩
|
|
32
|
+
|
|
33
|
+
S1에 진입하기 전, `references/rules-context.md`를 로드하고 `.product-context.md`를 확인하세요:
|
|
34
|
+
|
|
35
|
+
- **완전한 컨텍스트 사용 가능 (시나리오 1)**: PMF 수준, North Star, 알려진 페인포인트, 보안 상태, 가장 최근 3개 Decision History 항목을 자동 입력. S1 안내를 **델타 모드**로 전환: "지난 평가에서 PMF 수준은 [X], North Star 지표는 [Y]였습니다. 변경된 것이 있나요? 최신 DAU/MAU와 리텐션 수치는?" — 이전에 수집된 의사결정 이력과 알려진 페인포인트는 재수집 불필요.
|
|
36
|
+
- **컨텍스트 사용 불가 (시나리오 2)**: Context Bootstrap 트리거 (`rules-context.md` 섹션 4, 라운드 1 + 3), 그 다음 아래 표준 S1 데이터 수집 진행.
|
|
37
|
+
- **부분 컨텍스트 (시나리오 3)**: Decision History에서 기능 변경 이력 가져오기 (어떤 모듈이 변경되었고 어떤 리스크가 식별되었는지 파악), 하지만 전체 제품 전략과 지표는 질문 (이전 작업은 기능 확장만 다뤘고 전체적 관점이 부족함).
|
|
38
|
+
|
|
39
|
+
### S1 표준 안내
|
|
40
|
+
|
|
41
|
+
> 리비전 모드의 S1은 사용자에게 기존 제품 데이터를 제공하도록 능동적으로 질문합니다: DAU/MAU, 리텐션율, 주요 사용자 피드백, 이전 버전 결정 등. 컨텍스트가 일부 답변을 이미 입력한 경우 재수집이 아닌 확인.
|
|
42
|
+
> S1은 또한 현재 보안 상태를 수집합니다: 기존 인증/인가 메커니즘, 알려진 보안 취약점 또는 기술 부채, 최근 보안 인시던트. 이 정보는 리비전의 리스크 평가와 Pre-mortem에 영향을 미칩니다.
|
|
43
|
+
|
|
44
|
+
### 빠른 경로
|
|
45
|
+
|
|
46
|
+
사용자가 S1에서 충분한 데이터를 제공할 때 (사용자 피드백, 지표, 페인포인트 포함), S4-S7 (페인포인트 → 포지셔닝 → HMW → 기회 평가)을 단일 대화 턴에서 작성할 수 있으며, 4번이 아닌 1번의 확인만 필요합니다. 트리거 조건: S3에서 수집된 페인포인트 목록이 이미 명확한 우선순위와 데이터 지원을 가지고 있는 경우. 하드 게이트 규칙은 변경되지 않음 — 각 단계의 산출물은 여전히 완전히 제시되어야 하며; 확인 리듬만 가속됩니다.
|
|
47
|
+
|
|
48
|
+
## 레퍼런스 로딩 지침
|
|
49
|
+
|
|
50
|
+
| 단계 | 레퍼런스 파일 |
|
|
51
|
+
|------|-------------|
|
|
52
|
+
| S1-S3 | 외부 레퍼런스 필요 없음 (사용자에게 직접 데이터 제공 안내) |
|
|
53
|
+
| S4-S7 | `references/03-define.md` |
|
|
54
|
+
| S8 | `references/04a-prfaq.md` |
|
|
55
|
+
| S9 | `references/04b-solutions.md` |
|
|
56
|
+
| S10 | `references/04c-mvp.md` |
|
|
57
|
+
| S11 | `references/05a-northstar-aha.md` |
|
|
58
|
+
| S12 + 최종 산출물 | `references/05c-validation-spec.md` |
|
|
59
|
+
|
|
60
|
+
## 최종 산출물 형식
|
|
61
|
+
|
|
62
|
+
**리비전 제품 스펙 요약**: 전후 비교 + 변경할 것 / 변경하지 않을 것 + 성공 지표
|
|
63
|
+
|
|
64
|
+
완료 시, `references/rules-end-of-flow.md`에 따라 플로우 종료 규칙을 실행하세요.
|