---
name: doc-generator
description: >
  GUARDiA Messenger 개발/배포 가이드 마크다운 작성 + PDF(reportlab) + PPTX(python-pptx) 자동 생성.
  manual/ 폴더에 저장. 트리거: 가이드 작성, PDF 생성, PPTX 생성, 문서화, 발표자료,
  개발 가이드, 배포 가이드, 스토어 가이드 관련 요청 시 반드시 사용.
---

# GUARDiA Messenger 문서 생성 스킬

## 출력 파일 목록

| 파일 | 경로 | 내용 |
|------|------|------|
| 마크다운 가이드 | `C:\GUARDiA\manual\34_GUARDiA_Messenger_개발가이드.md` | 전체 개발·빌드·배포 가이드 |
| PDF | `C:\GUARDiA\manual\35_GUARDiA_Messenger_개발가이드.pdf` | 8페이지 PDF |
| PPTX | `C:\GUARDiA\manual\36_GUARDiA_Messenger_발표자료.pptx` | 8슬라이드 16:9 |

## PDF 생성 패턴 (reportlab)

```python
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Table, TableStyle
from reportlab.lib.styles import ParagraphStyle
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os

BRAND = colors.HexColor("#1a3a6b")
ACCENT = colors.HexColor("#4f6ef7")

# 한글 폰트 등록
for fn, alias in [("malgun.ttf","Malgun"),("NanumGothic.ttf","NanumGothic")]:
    for d in ["C:/Windows/Fonts", "/usr/share/fonts/truetype/noto"]:
        fp = os.path.join(d, fn)
        if os.path.exists(fp):
            pdfmetrics.registerFont(TTFont(alias, fp))
            font = alias; break
    if font != "Helvetica": break
```

## PPTX 생성 패턴 (python-pptx)

```python
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN

W, H = Inches(13.33), Inches(7.5)  # 16:9
prs = Presentation()
prs.slide_width = W; prs.slide_height = H
BRAND = RGBColor(0x1a, 0x3a, 0x6b)

def blank():
    return prs.slides.add_slide(prs.slide_layouts[6])

def rect(sl, x, y, w, h, fill=None):
    s = sl.shapes.add_shape(1, x, y, w, h)
    if fill: s.fill.solid(); s.fill.fore_color.rgb = fill
    else: s.fill.background()
    s.line.fill.background()
    return s

def text(sl, t, x, y, w, h, sz=14, bold=False, color=RGBColor(0x1e,0x29,0x3b), align=PP_ALIGN.LEFT):
    tb = sl.shapes.add_textbox(x, y, w, h)
    tf = tb.text_frame; tf.word_wrap = True
    p = tf.paragraphs[0]; p.alignment = align
    r = p.add_run(); r.text = t
    r.font.size = Pt(sz); r.font.bold = bold; r.font.color.rgb = color
```

## 문서에 반드시 포함할 내용

1. **앱 개요** (목적, 기술 스택, 서버 연결)
2. **개발 환경 설정** (Node.js, Expo CLI, EAS CLI)
3. **화면 구조** (6개 화면 설명)
4. **EAS 빌드 가이드** (명령어 + 성공/실패 체크리스트)
5. **빌드 이슈 이력** (4개 이슈 + 해결책) ← 가장 중요
6. **스토어 등록 절차** (Play Store + App Store)
7. **테스트 방법** (APK 직접 설치)
8. **접속 정보** (서버 URL, 계정)
