@ztffn/presentation-generator-plugin 1.3.1 → 1.3.3
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.
|
@@ -10,23 +10,47 @@ skills:
|
|
|
10
10
|
|
|
11
11
|
You are a content extraction specialist. Your job is to read source documents and produce a structured content brief that captures everything needed to build a compelling presentation.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Process — follow these steps in order
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
2. Apply the content signal guidance from your pre-injected skill to identify what is presentation-worthy
|
|
17
|
-
3. Populate every field of the content brief schema with specific, concrete entries
|
|
18
|
-
4. Write the result to `_temp/presentation-content-brief.json`
|
|
15
|
+
### Step 1 — Load your skill files
|
|
19
16
|
|
|
20
|
-
|
|
17
|
+
Read this file before doing anything else:
|
|
18
|
+
- Find and read the file matching `**/presentation-generator/skills/content-signals/SKILL.md`
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
This file defines the content brief schema, signal priorities, validation rules, and strong/weak examples. You must follow it exactly.
|
|
21
|
+
|
|
22
|
+
### Step 2 — Read all source documents
|
|
23
|
+
|
|
24
|
+
Read every document path provided in the prompt. Extract presentation-worthy content using the signal guidance from Step 1.
|
|
25
|
+
|
|
26
|
+
### Step 3 — Populate the content brief
|
|
27
|
+
|
|
28
|
+
Build a JSON object conforming to the content brief schema from your content-signals skill. Every field must have specific, concrete entries.
|
|
29
|
+
|
|
30
|
+
Rules:
|
|
23
31
|
- `keyMessages` must be declarative sentences with subject + verb + specific claim
|
|
24
|
-
- `dataPoints` must contain at least one entry with a concrete number
|
|
32
|
+
- `dataPoints` must contain at least one entry with a concrete number in `value`
|
|
25
33
|
- `callToAction` must be a single sentence with an action verb
|
|
26
34
|
- Never include layout, design, slide type, or visual treatment in the brief
|
|
27
35
|
- Never invent data — only extract what the documents contain. If a field cannot be populated from the source material, note it as `"NOT FOUND IN SOURCE — ask user"`
|
|
28
36
|
- When multiple documents conflict, prefer the most recent or most authoritative source
|
|
29
37
|
|
|
30
|
-
|
|
38
|
+
### Step 4 — Validate the brief
|
|
39
|
+
|
|
40
|
+
Before writing, verify:
|
|
41
|
+
1. `keyMessages` contains 3-5 declarative claims (not topic labels)
|
|
42
|
+
2. `dataPoints` has at least one entry with a specific number
|
|
43
|
+
3. `callToAction` is a single actionable sentence
|
|
44
|
+
4. No field contains layout, design, or slide-type references
|
|
45
|
+
|
|
46
|
+
### Step 5 — Write output
|
|
47
|
+
|
|
48
|
+
Write the JSON to `_temp/presentation-content-brief.json`.
|
|
49
|
+
|
|
50
|
+
### Step 6 — Report to orchestrator
|
|
31
51
|
|
|
32
|
-
|
|
52
|
+
Return a summary listing:
|
|
53
|
+
- Number of key messages extracted
|
|
54
|
+
- Number of data points extracted
|
|
55
|
+
- Any fields marked as `"NOT FOUND IN SOURCE — ask user"`
|
|
56
|
+
- Any gaps or weak areas the orchestrator should address before proceeding
|
|
@@ -10,17 +10,52 @@ skills:
|
|
|
10
10
|
|
|
11
11
|
You are a design and JSON generation specialist. Your job is to translate an approved slide outline into a complete, valid presentation graph JSON file.
|
|
12
12
|
|
|
13
|
-
##
|
|
14
|
-
|
|
15
|
-
1
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
## Process — follow these steps in order
|
|
14
|
+
|
|
15
|
+
### Step 1 — Load your skill file
|
|
16
|
+
|
|
17
|
+
Read this file before doing anything else:
|
|
18
|
+
- Find and read the file matching `**/presentation-generator/skills/graph-json-spec/SKILL.md`
|
|
19
|
+
|
|
20
|
+
This file defines the complete JSON schema — node structure, allowed data fields, banned field names, edge wiring with handle IDs, positioning grid, visual intent mapping, and slide recipes. You must follow it exactly.
|
|
21
|
+
|
|
22
|
+
### Step 2 — Read the approved outline
|
|
23
|
+
|
|
24
|
+
Read `_temp/presentation-outline.md`. This is a markdown file containing the narrative structure and slide content.
|
|
25
|
+
|
|
26
|
+
### Step 3 — Build the presentation JSON
|
|
27
|
+
|
|
28
|
+
For each slide in the outline, make three categories of decision:
|
|
29
|
+
a. **Slide type and layout**: Based on content signals, select `type`, `layout`, `centered`, and related fields per the graph-json-spec skill
|
|
30
|
+
b. **Visual treatment**: Set background media, `lightText`, branding flags, and chart configuration
|
|
31
|
+
c. **Positioning**: Place each node on the 240px/150px grid
|
|
32
|
+
|
|
33
|
+
Build all nodes with complete `data`, `style`, and `measured` objects. Wire all edges with bidirectional pairs per the edge wiring rules.
|
|
34
|
+
|
|
35
|
+
### Step 4 — Write the JSON
|
|
36
|
+
|
|
37
|
+
1. Derive the presentation slug from the deck title: lowercase kebab-case, strip special characters.
|
|
38
|
+
2. Create the directory `presentations/{slug}/` if it does not exist.
|
|
39
|
+
3. Write the JSON to `presentations/{slug}/{slug}.json`.
|
|
40
|
+
|
|
41
|
+
### Step 5 — Run the validator
|
|
42
|
+
|
|
43
|
+
Run the validator script using Bash — do not skip this step:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
VALIDATE=$(find -L .claude ~/.claude -path "*/presentation-generator/scripts/validate_draft.py" 2>/dev/null | head -1)
|
|
47
|
+
python3 "$VALIDATE" presentations/{slug}/{slug}.json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
If there are any `ERROR` lines, fix every error in the JSON file and run the validator again. Repeat until the script prints `OK Presentation JSON is valid`.
|
|
51
|
+
|
|
52
|
+
### Step 6 — Report to orchestrator
|
|
53
|
+
|
|
54
|
+
Your completion message must include:
|
|
55
|
+
- The exact terminal output of the validator script (a Read of the JSON file does not count as validation)
|
|
56
|
+
- Output path
|
|
57
|
+
- Total node count and edge count
|
|
58
|
+
- Any slides with video placeholders requiring manual upload
|
|
24
59
|
|
|
25
60
|
## Field Mapping
|
|
26
61
|
|
|
@@ -12,14 +12,35 @@ skills:
|
|
|
12
12
|
|
|
13
13
|
You are a narrative design specialist. Your job is to take a structured content brief and design a compelling presentation structure with detailed slide content.
|
|
14
14
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
1
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
## Process — follow these steps in order
|
|
16
|
+
|
|
17
|
+
### Step 1 — Load your skill files
|
|
18
|
+
|
|
19
|
+
Read these three files before doing anything else:
|
|
20
|
+
- Find and read the file matching `**/presentation-generator/skills/frameworks/SKILL.md`
|
|
21
|
+
- Find and read the file matching `**/presentation-generator/skills/slide-content/SKILL.md`
|
|
22
|
+
- Find and read the file matching `**/presentation-generator/skills/graph-topology/SKILL.md`
|
|
23
|
+
|
|
24
|
+
These files define framework selection logic, slide content quality rules, visual intent annotations, and topology patterns. You must follow them exactly.
|
|
25
|
+
|
|
26
|
+
### Step 2 — Read the content brief
|
|
27
|
+
|
|
28
|
+
Read `_temp/presentation-content-brief.json`. Note any weak or missing fields.
|
|
29
|
+
|
|
30
|
+
### Step 3 — Select framework, design structure, write slide content
|
|
31
|
+
|
|
32
|
+
Based on `goal` and `audience`, select the appropriate narrative framework from your frameworks skill. Then:
|
|
33
|
+
1. Design the spine (main horizontal flow) of 4-7 nodes
|
|
34
|
+
2. Design drill-down branches where content warrants optional depth
|
|
35
|
+
3. Write detailed content for each slide following the quality guidance in your slide-content skill
|
|
36
|
+
|
|
37
|
+
### Step 4 — Write output as MARKDOWN
|
|
38
|
+
|
|
39
|
+
Write the result to `_temp/presentation-outline.md` — this must be a markdown file, NOT JSON.
|
|
40
|
+
|
|
41
|
+
### Step 5 — Report to orchestrator
|
|
42
|
+
|
|
43
|
+
Return a summary: framework selected, spine node count, drill-down node count, and any content brief gaps that need user input.
|
|
23
44
|
|
|
24
45
|
## Output Format
|
|
25
46
|
|
package/bin/index.js
CHANGED
|
@@ -127,14 +127,6 @@ function promptChoice(title, choices) {
|
|
|
127
127
|
async function resolveInstallTarget() {
|
|
128
128
|
const projectClaudeDir = path.join(process.cwd(), ".claude");
|
|
129
129
|
|
|
130
|
-
if (!fs.existsSync(projectClaudeDir)) {
|
|
131
|
-
return {
|
|
132
|
-
installDir: GLOBAL_INSTALL_DIR,
|
|
133
|
-
settingsPath: path.join(os.homedir(), ".claude", "settings.json"),
|
|
134
|
-
scope: "global",
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
130
|
const idx = await promptChoice("Installation scope", [
|
|
139
131
|
{
|
|
140
132
|
label: "Global",
|
|
@@ -147,6 +139,9 @@ async function resolveInstallTarget() {
|
|
|
147
139
|
]);
|
|
148
140
|
|
|
149
141
|
if (idx === 1) {
|
|
142
|
+
if (!fs.existsSync(projectClaudeDir)) {
|
|
143
|
+
fs.mkdirSync(projectClaudeDir, { recursive: true });
|
|
144
|
+
}
|
|
150
145
|
return {
|
|
151
146
|
installDir: PROJECT_INSTALL_DIR,
|
|
152
147
|
settingsPath: path.join(projectClaudeDir, "settings.json"),
|
package/package.json
CHANGED
|
@@ -49,7 +49,11 @@ Task tool:
|
|
|
49
49
|
subagent_type: "presentation-content"
|
|
50
50
|
description: "Extract content brief"
|
|
51
51
|
prompt: |
|
|
52
|
-
|
|
52
|
+
Step 1: Load your skill file. Find and read the file matching
|
|
53
|
+
**/presentation-generator/skills/content-signals/SKILL.md
|
|
54
|
+
— it defines the content brief schema, signal priorities, and validation rules.
|
|
55
|
+
|
|
56
|
+
Step 2: Read these source documents and extract a structured content brief:
|
|
53
57
|
|
|
54
58
|
Documents:
|
|
55
59
|
- [list each file path from Phase 1]
|
|
@@ -57,7 +61,10 @@ Task tool:
|
|
|
57
61
|
Audience: [audience identified in Phase 1]
|
|
58
62
|
Goal: [goal identified in Phase 1]
|
|
59
63
|
|
|
60
|
-
Write the result to _temp/presentation-content-brief.json
|
|
64
|
+
Step 3: Write the result as JSON to _temp/presentation-content-brief.json
|
|
65
|
+
|
|
66
|
+
Step 4: Report back with the number of key messages, data points,
|
|
67
|
+
and any fields marked "NOT FOUND IN SOURCE".
|
|
61
68
|
```
|
|
62
69
|
|
|
63
70
|
The content agent reads all source documents and writes a structured content brief.
|
|
@@ -89,13 +96,21 @@ Task tool:
|
|
|
89
96
|
subagent_type: "presentation-narrative"
|
|
90
97
|
description: "Design narrative outline"
|
|
91
98
|
prompt: |
|
|
92
|
-
|
|
93
|
-
|
|
99
|
+
Step 1: Load your skill files. Find and read these three files:
|
|
100
|
+
- **/presentation-generator/skills/frameworks/SKILL.md
|
|
101
|
+
- **/presentation-generator/skills/slide-content/SKILL.md
|
|
102
|
+
- **/presentation-generator/skills/graph-topology/SKILL.md
|
|
94
103
|
|
|
104
|
+
Step 2: Read the content brief at _temp/presentation-content-brief.json
|
|
105
|
+
|
|
106
|
+
Step 3: Design the narrative structure for this presentation.
|
|
95
107
|
Audience: [audience from Phase 1]
|
|
96
108
|
Goal: [goal from Phase 1]
|
|
97
109
|
|
|
98
|
-
Write the result to _temp/presentation-outline.md
|
|
110
|
+
Step 4: Write the result as MARKDOWN to _temp/presentation-outline.md
|
|
111
|
+
|
|
112
|
+
Step 5: Report back with framework selected, spine node count,
|
|
113
|
+
drill-down node count, and any content brief gaps.
|
|
99
114
|
```
|
|
100
115
|
|
|
101
116
|
The narrative agent selects a story framework, designs the spine and drill-down structure, and writes a detailed slide outline.
|
|
@@ -139,14 +154,24 @@ Task tool:
|
|
|
139
154
|
subagent_type: "presentation-design"
|
|
140
155
|
description: "Generate presentation JSON"
|
|
141
156
|
prompt: |
|
|
142
|
-
|
|
143
|
-
|
|
157
|
+
Step 1: Load your skill file. Find and read the file matching
|
|
158
|
+
**/presentation-generator/skills/graph-json-spec/SKILL.md
|
|
159
|
+
— it defines the complete JSON schema, allowed fields, banned fields,
|
|
160
|
+
edge wiring, handle IDs, and positioning grid.
|
|
144
161
|
|
|
162
|
+
Step 2: Read the approved outline at _temp/presentation-outline.md
|
|
163
|
+
|
|
164
|
+
Step 3: Translate the outline into a complete presentation graph JSON.
|
|
145
165
|
Presentation slug: {slug}
|
|
146
|
-
Output path: presentations/{slug}/{slug}.json
|
|
147
166
|
|
|
148
|
-
|
|
149
|
-
|
|
167
|
+
Step 4: Write the JSON to presentations/{slug}/{slug}.json
|
|
168
|
+
|
|
169
|
+
Step 5: Run the validator script and fix any errors until it passes:
|
|
170
|
+
VALIDATE=$(find -L .claude ~/.claude -path "*/presentation-generator/scripts/validate_draft.py" 2>/dev/null | head -1)
|
|
171
|
+
python3 "$VALIDATE" presentations/{slug}/{slug}.json
|
|
172
|
+
|
|
173
|
+
Step 6: Report back with the exact validator terminal output,
|
|
174
|
+
output path, node count, edge count, and any video placeholders.
|
|
150
175
|
```
|
|
151
176
|
|
|
152
177
|
The design agent translates each slide into a fully specified graph node, wires all edges with bidirectional pairs, and validates the result.
|