guardia-messenger/.claude/skills/doc-generator/SKILL.md
DESKTOP-TKLFCPRython f29f525c77 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

2.9 KiB

name description
doc-generator 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)

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)

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