opencode-sa-assistant 0.1.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.md +174 -0
- package/package.json +51 -0
- package/src/hooks/wadd-mode.ts +71 -0
- package/src/index.ts +9 -0
- package/src/prompts/gurus.ts +480 -0
- package/src/prompts/orchestrator.ts +316 -0
- package/src/prompts/specialists.ts +370 -0
- package/src/skills/docx/SKILL.md +307 -0
- package/src/skills/guru/SKILL.md +217 -0
- package/src/skills/mcp/SKILL.md +170 -0
- package/src/skills/pptx/SKILL.md +110 -0
- package/src/skills/pptx/references/sa_pptx_template.md +89 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pptx
|
|
3
|
+
description: "PowerPoint 프레젠테이션 생성, 편집, 분석. 새 프레젠테이션 생성, 기존 콘텐츠 수정, 레이아웃 작업, 코멘트/발표자 노트 추가 등 모든 .pptx 파일 작업에 사용"
|
|
4
|
+
license: Proprietary
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# PPTX creation, editing, and analysis
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
A user may ask you to create, edit, or analyze the contents of a .pptx file. A .pptx file is essentially a ZIP archive containing XML files and other resources that you can read or edit. You have different tools and workflows available for different tasks.
|
|
12
|
+
|
|
13
|
+
## Reading and analyzing content
|
|
14
|
+
|
|
15
|
+
### Text extraction
|
|
16
|
+
If you just need to read the text contents of a presentation, you should convert the document to markdown:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Convert document to markdown
|
|
20
|
+
python -m markitdown path-to-file.pptx
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Raw XML access
|
|
24
|
+
You need raw XML access for: comments, speaker notes, slide layouts, animations, design elements, and complex formatting. For any of these features, you'll need to unpack a presentation and read its raw XML contents.
|
|
25
|
+
|
|
26
|
+
#### Unpacking a file
|
|
27
|
+
`python ooxml/scripts/unpack.py <office_file> <output_dir>`
|
|
28
|
+
|
|
29
|
+
#### Key file structures
|
|
30
|
+
* `ppt/presentation.xml` - Main presentation metadata and slide references
|
|
31
|
+
* `ppt/slides/slide{N}.xml` - Individual slide contents (slide1.xml, slide2.xml, etc.)
|
|
32
|
+
* `ppt/notesSlides/notesSlide{N}.xml` - Speaker notes for each slide
|
|
33
|
+
* `ppt/comments/modernComment_*.xml` - Comments for specific slides
|
|
34
|
+
* `ppt/slideLayouts/` - Layout templates for slides
|
|
35
|
+
* `ppt/slideMasters/` - Master slide templates
|
|
36
|
+
* `ppt/theme/` - Theme and styling information
|
|
37
|
+
* `ppt/media/` - Images and other media files
|
|
38
|
+
|
|
39
|
+
## Creating a new PowerPoint presentation **without a template**
|
|
40
|
+
|
|
41
|
+
When creating a new PowerPoint presentation from scratch, use the **html2pptx** workflow to convert HTML slides to PowerPoint with accurate positioning.
|
|
42
|
+
|
|
43
|
+
### Design Principles
|
|
44
|
+
|
|
45
|
+
**CRITICAL**: Before creating any presentation, analyze the content and choose appropriate design elements:
|
|
46
|
+
1. **Consider the subject matter**: What is this presentation about? What tone, industry, or mood does it suggest?
|
|
47
|
+
2. **Check for branding**: If the user mentions a company/organization, consider their brand colors and identity
|
|
48
|
+
3. **Match palette to content**: Select colors that reflect the subject
|
|
49
|
+
4. **State your approach**: Explain your design choices before writing code
|
|
50
|
+
|
|
51
|
+
**Requirements**:
|
|
52
|
+
- ✅ State your content-informed design approach BEFORE writing code
|
|
53
|
+
- ✅ Use web-safe fonts only: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS, Impact
|
|
54
|
+
- ✅ Create clear visual hierarchy through size, weight, and color
|
|
55
|
+
- ✅ Ensure readability: strong contrast, appropriately sized text, clean alignment
|
|
56
|
+
- ✅ Be consistent: repeat patterns, spacing, and visual language across slides
|
|
57
|
+
|
|
58
|
+
### Workflow
|
|
59
|
+
1. **MANDATORY - READ RESOURCE FILE**: Read `references/html2pptx.md` completely for detailed syntax, critical formatting rules, and best practices
|
|
60
|
+
2. Create an HTML file for each slide with proper dimensions (e.g., 720pt × 405pt for 16:9)
|
|
61
|
+
- Use `<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>` for all text content
|
|
62
|
+
- Use `class="placeholder"` for areas where charts/tables will be added
|
|
63
|
+
- **CRITICAL**: Rasterize gradients and icons as PNG images FIRST using Sharp, then reference in HTML
|
|
64
|
+
3. Create and run a JavaScript file using the `html2pptx.js` library to convert HTML slides to PowerPoint
|
|
65
|
+
4. **Visual validation**: Generate thumbnails and inspect for layout issues
|
|
66
|
+
|
|
67
|
+
### AWS SA Presentation Style
|
|
68
|
+
AWS Solutions Architect 스타일의 프레젠테이션을 생성할 때는 `references/sa_pptx_template.md` 파일을 참조하세요.
|
|
69
|
+
AWS 브랜드 색상 팔레트, 표준 슬라이드 구성, HTML 템플릿 예제가 포함되어 있습니다.
|
|
70
|
+
|
|
71
|
+
## Editing an existing PowerPoint presentation
|
|
72
|
+
|
|
73
|
+
When editing slides in an existing PowerPoint presentation, you need to work with the raw Office Open XML (OOXML) format.
|
|
74
|
+
|
|
75
|
+
### Workflow
|
|
76
|
+
1. Unpack the presentation: `python ooxml/scripts/unpack.py <office_file> <output_dir>`
|
|
77
|
+
2. Edit the XML files (primarily `ppt/slides/slide{N}.xml` and related files)
|
|
78
|
+
3. **CRITICAL**: Validate immediately after each edit
|
|
79
|
+
4. Pack the final presentation: `python ooxml/scripts/pack.py <input_directory> <office_file>`
|
|
80
|
+
|
|
81
|
+
## Creating a new PowerPoint presentation **using a template**
|
|
82
|
+
|
|
83
|
+
When you need to create a presentation that follows an existing template's design:
|
|
84
|
+
|
|
85
|
+
### Workflow
|
|
86
|
+
1. **Extract template text AND create visual thumbnail grid**:
|
|
87
|
+
* Extract text: `python -m markitdown template.pptx > template-content.md`
|
|
88
|
+
* Create thumbnail grids: `python scripts/thumbnail.py template.pptx`
|
|
89
|
+
|
|
90
|
+
2. **Analyze template and save inventory to a file**
|
|
91
|
+
|
|
92
|
+
3. **Create presentation outline based on template inventory**
|
|
93
|
+
|
|
94
|
+
4. **Duplicate, reorder, and delete slides using `rearrange.py`**
|
|
95
|
+
|
|
96
|
+
5. **Extract ALL text using the `inventory.py` script**
|
|
97
|
+
|
|
98
|
+
6. **Generate replacement text and save the data to a JSON file**
|
|
99
|
+
|
|
100
|
+
7. **Apply replacements using the `replace.py` script**
|
|
101
|
+
|
|
102
|
+
## Dependencies
|
|
103
|
+
|
|
104
|
+
Required dependencies:
|
|
105
|
+
- **markitdown**: `pip install "markitdown[pptx]"` (for text extraction)
|
|
106
|
+
- **pptxgenjs**: `npm install -g pptxgenjs` (for creating presentations)
|
|
107
|
+
- **playwright**: `npm install -g playwright` (for HTML rendering)
|
|
108
|
+
- **sharp**: `npm install -g sharp` (for SVG rasterization)
|
|
109
|
+
- **LibreOffice**: For PDF conversion
|
|
110
|
+
- **Poppler**: For pdftoppm
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# SA PPTX Template - AWS Architecture Review Style
|
|
2
|
+
|
|
3
|
+
AWS Solutions Architect 아키텍처 리뷰 프레젠테이션 템플릿입니다.
|
|
4
|
+
|
|
5
|
+
## 색상 팔레트
|
|
6
|
+
|
|
7
|
+
```javascript
|
|
8
|
+
const SA_TEMPLATE_COLORS = {
|
|
9
|
+
// Primary
|
|
10
|
+
PRIMARY_DARK: "232F3E", // AWS Squid Ink - 헤더, 제목
|
|
11
|
+
PRIMARY_ORANGE: "FF9900", // AWS Orange - 강조, CTA
|
|
12
|
+
|
|
13
|
+
// Secondary
|
|
14
|
+
SECONDARY_GRAY: "545B64", // Anchor - 본문 텍스트
|
|
15
|
+
LIGHT_GRAY: "879596", // Harbor - 보조 텍스트
|
|
16
|
+
BG_GRAY: "F2F3F3", // Cloud - 배경
|
|
17
|
+
|
|
18
|
+
// Status Colors
|
|
19
|
+
SUCCESS_GREEN: "1B660F",
|
|
20
|
+
WARNING_YELLOW: "F2B705",
|
|
21
|
+
ERROR_RED: "D13212",
|
|
22
|
+
INFO_BLUE: "0073BB",
|
|
23
|
+
|
|
24
|
+
// Chart Colors
|
|
25
|
+
CHART: ["FF9900", "232F3E", "1B660F", "0073BB", "8C4FFF", "DD344C"]
|
|
26
|
+
};
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 슬라이드 템플릿
|
|
30
|
+
|
|
31
|
+
### 1. 타이틀 슬라이드
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<body style="background: #232F3E;">
|
|
35
|
+
<div class="container">
|
|
36
|
+
<p class="subtitle">AWS ARCHITECTURE REVIEW</p>
|
|
37
|
+
<h1 class="title">[고객사명] 아키텍처 리뷰</h1>
|
|
38
|
+
<p class="info">2025년 1월 | AWS SA Team</p>
|
|
39
|
+
</div>
|
|
40
|
+
</body>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. 아젠다 슬라이드
|
|
44
|
+
|
|
45
|
+
```html
|
|
46
|
+
<div class="header"><h1>Agenda</h1></div>
|
|
47
|
+
<div class="content">
|
|
48
|
+
<div class="agenda-item">
|
|
49
|
+
<div class="number"><p>1</p></div>
|
|
50
|
+
<p>프로젝트 개요</p>
|
|
51
|
+
</div>
|
|
52
|
+
<!-- ... -->
|
|
53
|
+
</div>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3. 섹션 구분 슬라이드
|
|
57
|
+
|
|
58
|
+
2단 레이아웃: 왼쪽 다크 패널 (섹션 번호 + 제목), 오른쪽 라이트 패널 (설명)
|
|
59
|
+
|
|
60
|
+
### 4. 콘텐츠 슬라이드 (텍스트 + 다이어그램)
|
|
61
|
+
|
|
62
|
+
헤더 + 2단 레이아웃: 왼쪽 35% (텍스트), 오른쪽 65% (다이어그램 placeholder)
|
|
63
|
+
|
|
64
|
+
### 5. 비교 슬라이드 (As-Is vs To-Be)
|
|
65
|
+
|
|
66
|
+
2단 레이아웃: 왼쪽 (빨간색 테두리, ✕ 아이콘), 오른쪽 (녹색 테두리, ✓ 아이콘)
|
|
67
|
+
|
|
68
|
+
### 6. 비용 분석 슬라이드
|
|
69
|
+
|
|
70
|
+
2단 레이아웃: 왼쪽 (비용 카드), 오른쪽 (서비스별 내역 + 차트 placeholder)
|
|
71
|
+
|
|
72
|
+
### 7. 타임라인 슬라이드
|
|
73
|
+
|
|
74
|
+
가로 타임라인: Phase 1 → Phase 2 → Phase 3 → Go-Live
|
|
75
|
+
|
|
76
|
+
### 8. 다음 단계 슬라이드
|
|
77
|
+
|
|
78
|
+
3단 카드 레이아웃: 각 카드에 번호, 제목, 설명, 담당자/기한
|
|
79
|
+
|
|
80
|
+
### 9. 감사 슬라이드
|
|
81
|
+
|
|
82
|
+
중앙 정렬: "Thank You" + 구분선 + "Questions & Discussion" + 연락처
|
|
83
|
+
|
|
84
|
+
## 사용 가이드
|
|
85
|
+
|
|
86
|
+
1. 위 템플릿 중 필요한 슬라이드 선택
|
|
87
|
+
2. 고객/프로젝트 정보로 내용 수정
|
|
88
|
+
3. html2pptx로 각 슬라이드 변환
|
|
89
|
+
4. PptxGenJS로 차트/다이어그램 추가
|