---
name: proposal-skill
description: PDF 기획서 분석 및 PPT 기획서 생성을 위한 고급 스킬. 템플릿 추출, 구조 매핑, 자동 콘텐츠 생성 기능 제공.
---

# Proposal Skill - 기획서 생성 스킬

PDF 샘플을 분석하여 동일한 형태의 PPT 기획서를 자동 생성하는 전문 스킬입니다.

## 기능 개요

### 1. PDF 구조 분석 (PDF Structure Analysis)
PDF 기획서의 레이아웃과 콘텐츠 패턴을 자동으로 분석

### 2. 템플릿 추출 (Template Extraction)
분석 결과를 바탕으로 재사용 가능한 템플릿 생성

### 3. 콘텐츠 매핑 (Content Mapping)
사용자 요구사항을 기획서 구조에 자동 매핑

### 4. PPT 자동 생성 (Auto PPT Generation)
완성된 기획서를 PowerPoint 파일로 출력

## 핵심 워크플로우

### PDF → 템플릿 추출 워크플로우

```mermaid
graph TD
    A[PDF 샘플] --> B[페이지별 구조 분석]
    B --> C[섹션 패턴 인식]
    C --> D[레이아웃 템플릿 추출]
    D --> E[재사용 템플릿 저장]
```

### 기획서 생성 워크플로우

```mermaid
graph TD
    A[사용자 요구사항] --> B[템플릿 매칭]
    B --> C[콘텐츠 자동 매핑]
    C --> D[구조화된 문서 생성]
    D --> E[PPT 슬라이드 변환]
    E --> F[완성된 기획서]
```

## 스크립트 구조

### 1. pdf-analyzer.js
PDF 파일 구조 분석 및 템플릿 추출

```javascript
import { PDFAnalyzer } from './pdf-analyzer.js';

// PDF 구조 분석
const analyzer = new PDFAnalyzer();
const structure = await analyzer.analyze('pdf_sample/SAM_ERP_Storyboard.pdf');

// 템플릿 추출
const template = await analyzer.extractTemplate(structure);
await analyzer.saveTemplate(template, 'templates/erp_storyboard.json');
```

### 2. proposal-generator.js
기획서 자동 생성 엔진

```javascript
import { ProposalGenerator } from './proposal-generator.js';

const generator = new ProposalGenerator();

// 템플릿 기반 기획서 생성
const proposal = await generator.create({
  template: 'templates/erp_storyboard.json',
  project: {
    name: '모바일 앱 개발',
    type: 'mobile_app',
    requirements: requirements_data
  }
});

// 구조화된 문서 출력
await generator.export(proposal, 'output/mobile_app_proposal.md');
```

### 3. ppt-converter.js
Markdown 기획서를 PPT로 변환

```javascript
import { PPTConverter } from './ppt-converter.js';

const converter = new PPTConverter();

// 기획서를 PPT로 변환
await converter.convertProposal({
  input: 'output/mobile_app_proposal.md',
  template: 'templates/proposal_template.pptx',
  output: 'final/mobile_app_proposal.pptx'
});
```

## 템플릿 구조 정의

### template-schema.json
```json
{
  "template_info": {
    "name": "ERP Storyboard Template",
    "version": "1.0",
    "source": "SAM_ERP_Storyboard.pdf",
    "created": "2025-01-03"
  },
  "page_templates": [
    {
      "type": "cover",
      "layout": "center_aligned",
      "elements": {
        "title": { "position": "center_top", "style": "heading1" },
        "subtitle": { "position": "center_middle", "style": "heading2" },
        "date": { "position": "bottom_right", "style": "caption" },
        "logo": { "position": "bottom_left", "style": "image" }
      }
    },
    {
      "type": "document_history",
      "layout": "table_centered",
      "elements": {
        "table": {
          "columns": ["날짜", "버전", "주요 내용", "상세 내용", "비고"],
          "style": "bordered_table"
        }
      }
    },
    {
      "type": "system_structure",
      "layout": "diagram_centered",
      "elements": {
        "diagram": { "type": "hierarchical_tree", "style": "flowchart" },
        "description": { "position": "bottom", "style": "body_text" }
      }
    },
    {
      "type": "detail_screen",
      "layout": "two_column",
      "elements": {
        "wireframe": { "position": "left_column", "style": "image_frame" },
        "description": { "position": "right_column", "style": "numbered_list" },
        "header_info": { "position": "top_table", "style": "info_table" }
      }
    }
  ]
}
```

## 자동 콘텐츠 생성 규칙

### 1. 표지 생성
```javascript
function generateCover(projectInfo) {
  return {
    title: projectInfo.name,
    subtitle: `${projectInfo.type} 프로젝트 기획서`,
    date: new Date().toISOString().split('T')[0].replace(/-/g, '.'),
    version: "D1.0",
    company: projectInfo.company || "Company Name"
  };
}
```

### 2. 문서 히스토리 생성
```javascript
function generateHistory(projectInfo) {
  const today = new Date().toISOString().split('T')[0].replace(/-/g, '.');
  return [{
    date: today,
    version: "D1.0",
    main_content: "초안 작성",
    detailed_content: `${projectInfo.name} 프로젝트 초안 작성`,
    mark: ""
  }];
}
```

### 3. 시스템 구조 생성
```javascript
function generateSystemStructure(requirements) {
  // 요구사항에서 메뉴 구조 자동 추출
  const menuStructure = extractMenuFromRequirements(requirements);
  return {
    type: "hierarchical_diagram",
    nodes: menuStructure,
    connections: generateConnections(menuStructure)
  };
}
```

### 4. 상세 화면 생성
```javascript
function generateDetailScreens(screens) {
  return screens.map((screen, index) => ({
    page_number: index + 5, // 기본 페이지 이후 시작
    screen_info: {
      task_name: screen.module,
      version: "D1.0",
      route: screen.path,
      screen_name: screen.name,
      screen_id: screen.id
    },
    wireframe: generateWireframeDescription(screen),
    descriptions: generateFeatureDescriptions(screen.features)
  }));
}
```

## 사용법

### 1. PDF 템플릿 추출
```bash
node .claude/skills/proposal-skill/scripts/pdf-analyzer.js \
  --input pdf_sample/SAM_ERP_Storyboard.pdf \
  --output templates/extracted_template.json
```

### 2. 새 기획서 생성
```bash
node .claude/skills/proposal-skill/scripts/proposal-generator.js \
  --template templates/extracted_template.json \
  --project project_config.json \
  --output output/new_proposal.md
```

### 3. PPT 변환
```bash
node .claude/skills/proposal-skill/scripts/ppt-converter.js \
  --input output/new_proposal.md \
  --output final/proposal.pptx
```

### 4. 통합 실행
```bash
npm run create-proposal -- \
  --template pdf_sample/SAM_ERP_Storyboard.pdf \
  --project "모바일 앱 개발" \
  --requirements requirements.json \
  --output final/mobile_app_proposal.pptx
```

## 고급 기능

### 1. 템플릿 자동 매칭
사용자 프로젝트 타입에 따라 최적 템플릿 자동 선택

```javascript
const templateMatcher = {
  'mobile_app': 'templates/mobile_template.json',
  'web_service': 'templates/web_template.json',
  'erp_system': 'templates/erp_template.json',
  'ecommerce': 'templates/ecommerce_template.json'
};
```

### 2. 인터랙티브 콘텐츠 생성
사용자와의 대화를 통한 단계적 기획서 완성

### 3. 버전 관리 시스템
기획서 변경 이력 자동 추적 및 관리

### 4. 협업 기능
여러 작성자 간 동시 편집 지원

## 품질 보증

### 자동 검증 기능
- 필수 섹션 누락 검사
- 페이지 번호 연속성 확인
- 참조 무결성 검증
- 템플릿 준수성 검사

### 콘텐츠 품질 기준
- **완성도**: 모든 필수 정보 포함
- **일관성**: 용어 및 스타일 통일
- **정확성**: 요구사항과 결과물 일치
- **실용성**: 실제 개발 가능한 수준

## 확장성

### 새로운 템플릿 추가
1. PDF 샘플을 `pdf_sample/` 디렉토리에 추가
2. `pdf-analyzer.js`로 구조 분석 및 템플릿 추출
3. 추출된 템플릿을 `templates/` 디렉토리에 저장
4. `template-registry.json`에 새 템플릿 등록

### 커스텀 생성 규칙
프로젝트별 특수 요구사항에 맞는 생성 규칙 추가 가능

## 연동 가능한 도구

- **Research Agent**: 시장 조사 데이터 자동 반영
- **Organizer Agent**: 콘텐츠 구조화 및 PPT 변환
- **PPTX Skill**: PowerPoint 파일 최종 생성
- **Design Skill**: 브랜드 가이드라인 적용