zioinfo-mail/app/.claude/skills/doc-generator/SKILL.md
DESKTOP-TKLFCPR\ython 11c670f2a0 refactor: 101.79.17.164 → zioinfo.co.kr 전체 도메인 변환 + Manager UI 배포
- 37개 파일 IP → zioinfo.co.kr 치환 (소스/매뉴얼/설정/하네스)
- Manager DrConsole/NetworkConsole/CsapConsole 빌드 + /var/www/manager/ 배포
- 테스트: Manager HTTP 200, ITSM 신규 API 7개 전체 200

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 10:09:17 +09:00

84 lines
2.9 KiB
Markdown

---
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, 계정)