@bendyline/gilde 0.1.34 → 0.1.35
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/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.2/craftbook.json +354 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.2/test.json +241 -0
- package/data/gezel-templates/bu/builder/versions/1.4.1/about.md +34 -0
- package/data/gezel-templates/bu/builder/versions/1.4.1/manifest.json +9 -0
- package/data/gezel-templates/de/developer/versions/1.4.1/about.md +34 -0
- package/data/gezel-templates/de/developer/versions/1.4.1/manifest.json +9 -0
- package/data/gezel-templates/index.json +1 -1
- package/data/toolsets/do/docblocks/manifest.json +3 -1
- package/data/toolsets/do/docblocks/versions/2.4.0/manifest.json +95 -0
- package/data/toolsets/index.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "powerpoint-deck",
|
|
3
|
+
"name": "PowerPoint from Content",
|
|
4
|
+
"description": "Turn supplied content or a factual topic into a real, editable, source-grounded PowerPoint. A researcher first reads the exact named source or retrieves authoritative web sources and records a cited fact ledger. A planner locks a numbered slide outline. A copywriter writes a task-specific Markdown deck with exactly one H1 per outline slide, while deterministic gates keep the slide count, titles, and order aligned. A reviewer checks factual traceability before a designer converts the Markdown to PPTX, previews every slide, and saves the requested PPTX in artifacts.\n\nEvery run gets its own workPath by default, so source packets, outlines, Markdown, and reviews cannot collide with an earlier PowerPoint task. Artifact working files must be read and written with the artifact tools; the Markdown deck source and user-facing PowerPoint remain in the workspace.",
|
|
5
|
+
"entryStepId": "research",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"make a powerpoint",
|
|
8
|
+
"create a pptx",
|
|
9
|
+
"powerpoint from this content",
|
|
10
|
+
"turn this into a presentation",
|
|
11
|
+
"build a slide deck file",
|
|
12
|
+
"export these slides to powerpoint"
|
|
13
|
+
],
|
|
14
|
+
"toolsets": [
|
|
15
|
+
{
|
|
16
|
+
"toolsetId": "docblocks",
|
|
17
|
+
"sourceId": "bundled",
|
|
18
|
+
"autoAllow": true,
|
|
19
|
+
"reason": "convert the task-specific Markdown deck directly to PPTX, preview slides, and save the finished PowerPoint without a prompt per call"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"paramSchema": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"properties": {
|
|
25
|
+
"workPath": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"title": "Working-file namespace",
|
|
28
|
+
"description": "Relative namespace for this task's source packet, outline, Markdown deck, and review. Defaults to a task-specific path; override it with a stable name such as powerpoint/india when useful.",
|
|
29
|
+
"default": "powerpoint/task-{{task.num}}"
|
|
30
|
+
},
|
|
31
|
+
"outputPath": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"title": "Workspace output path",
|
|
34
|
+
"description": "Project-workspace-relative path for the finished PowerPoint.",
|
|
35
|
+
"default": "{{workPath}}/deck.pptx"
|
|
36
|
+
},
|
|
37
|
+
"sourcePath": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"title": "Source file",
|
|
40
|
+
"description": "Optional exact workspace-relative path to authoritative source content. Leave blank when the deck starts from a topic that needs web research.",
|
|
41
|
+
"default": ""
|
|
42
|
+
},
|
|
43
|
+
"topic": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"title": "Topic",
|
|
46
|
+
"description": "The factual topic or question the deck should address.",
|
|
47
|
+
"default": ""
|
|
48
|
+
},
|
|
49
|
+
"content": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"title": "Inline source brief",
|
|
52
|
+
"description": "Optional inline source material or factual brief for the deck.",
|
|
53
|
+
"default": ""
|
|
54
|
+
},
|
|
55
|
+
"audience": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"title": "Audience",
|
|
58
|
+
"description": "The people who will view the deck and the decision they need to make."
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"steps": [
|
|
63
|
+
{
|
|
64
|
+
"id": "research",
|
|
65
|
+
"name": "Acquire and verify sources",
|
|
66
|
+
"description": "Read the exact supplied source or retrieve authoritative sources before outlining.",
|
|
67
|
+
"prompt": "Build the source packet before planning any slides. This run's working namespace is `{{workPath}}`. Files outside it—including an earlier `notes/outline.md`, root `deck.md`, or another PowerPoint task directory—are not inputs and must not be read or reused unless `{{sourcePath}}` names one exactly. Exact source path: `{{sourcePath}}`. Topic: `{{topic}}`. Inline source brief: `{{content}}`. Audience: `{{audience}}`. 1. When `{{sourcePath}}` is non-empty, your FIRST source action is `read_file` on that exact path. Never replace a named source with a similarly named file. 2. Otherwise treat non-empty `{{content}}` as supplied source material and `{{topic}}` as the research question, but still perform real external source acquisition for factual grounding: use `web_search` when registered, otherwise `wikipedia_search`, then use `fetch_url` or browser automation to read the useful result. Prefer primary sources, official statistics, standards bodies, peer-reviewed work, or reputable institutional summaries. Do not treat model memory, the task prompt, an earlier deck, or an invented URL as research. 3. Write `{{workPath}}/sources.md` with: the invocation inputs and their boundary; a source table with title, resolvable URL or exact file path, authority/date, and intended use; a fact ledger where every number, quotation, and externally checkable claim carries `(source: URL-or-path)`; conflicts and uncertainties; and facts that must not be invented. Do not silently overwrite supplied facts with external claims—record conflicts explicitly. 4. Include at least one resolvable citation and call `write_task_note` with the sources used and any uncertainty. Do not draft the outline or deck yet.\n\nStore `{{workPath}}/sources.md` in the artifacts drawer with `write_artifact`, then verify it with `read_artifact`; do not write this working file to the workspace.",
|
|
68
|
+
"suggestedRole": "researcher",
|
|
69
|
+
"advanceWhen": {
|
|
70
|
+
"file": "{{workPath}}/sources.md",
|
|
71
|
+
"minBytes": 1,
|
|
72
|
+
"sniff": "nonempty",
|
|
73
|
+
"artifact": true
|
|
74
|
+
},
|
|
75
|
+
"gate": {
|
|
76
|
+
"at": "completion",
|
|
77
|
+
"checks": [
|
|
78
|
+
{
|
|
79
|
+
"kind": "minBytes",
|
|
80
|
+
"file": "{{workPath}}/sources.md",
|
|
81
|
+
"bytes": 500,
|
|
82
|
+
"artifact": true
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"kind": "citationsResolve",
|
|
86
|
+
"file": "{{workPath}}/sources.md",
|
|
87
|
+
"minCitations": 1,
|
|
88
|
+
"artifact": true
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"kind": "researchEvidence",
|
|
92
|
+
"sourcePath": "{{sourcePath}}",
|
|
93
|
+
"tools": [
|
|
94
|
+
"web_search",
|
|
95
|
+
"wikipedia_search",
|
|
96
|
+
"fetch_url",
|
|
97
|
+
"browser_navigate",
|
|
98
|
+
"run_playwright_script"
|
|
99
|
+
],
|
|
100
|
+
"minSuccessful": 1
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"onReject": "research",
|
|
104
|
+
"maxAttempts": 3
|
|
105
|
+
},
|
|
106
|
+
"next": "outline"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"id": "outline",
|
|
110
|
+
"name": "Lock the slide outline",
|
|
111
|
+
"description": "Lock the audience, purpose, sequence, evidence, and one message per slide.",
|
|
112
|
+
"prompt": "Read `{{workPath}}/sources.md` and plan the deck from its verified fact ledger. If `{{sourcePath}}` is non-empty, also read that exact source. Do not borrow facts, titles, or slide content from an earlier outline or deck outside `{{workPath}}`; a requested similarity is a structural constraint, not permission to mix source packets. 1. State the audience, occasion, and ONE takeaway. 2. Use exactly the slide count the user asked for; only when they gave none, draft 8-15 slides. Format every slide heading exactly as `## Slide N — Title`, numbered consecutively from 1. Under each heading write `Message:`, `Evidence:`, and `Visual:`. Every evidence line must point to a citation already recorded in `{{workPath}}/sources.md`; mark unsupported ideas `UNVERIFIED` rather than filling gaps from memory. 3. Open with context, make the middle a coherent argument, and close with the ask or next step. Include a Sources slide in this locked outline when the audience needs visible references. 4. Write acceptance criteria: every numbered outline slide must become exactly one H1 in {{workPath}}/deck.md, with the same title and order; one idea per slide; no wall of text; claims remain traceable; visual preview passes; an artifact copy is retained; and the exact workspace file `{{outputPath}}` is delivered. Write only `{{workPath}}/outline.md`, then call `write_task_note` with the exact slide count, takeaway, and requested output path. Do not write slide content or presentation code.\n\nOpen `{{workPath}}/sources.md` from the artifacts drawer with `read_artifact` before working. Store `{{workPath}}/outline.md` in the artifacts drawer with `write_artifact`, then verify it with `read_artifact`; do not write this working file to the workspace.",
|
|
113
|
+
"suggestedRole": "planner",
|
|
114
|
+
"advanceWhen": {
|
|
115
|
+
"file": "{{workPath}}/outline.md",
|
|
116
|
+
"minBytes": 1,
|
|
117
|
+
"sniff": "nonempty",
|
|
118
|
+
"artifact": true
|
|
119
|
+
},
|
|
120
|
+
"gate": {
|
|
121
|
+
"at": "completion",
|
|
122
|
+
"checks": [
|
|
123
|
+
{
|
|
124
|
+
"kind": "minBytes",
|
|
125
|
+
"file": "{{workPath}}/outline.md",
|
|
126
|
+
"bytes": 500,
|
|
127
|
+
"artifact": true
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"kind": "contains",
|
|
131
|
+
"file": "{{workPath}}/outline.md",
|
|
132
|
+
"pattern": "(?:^|\\n)#{2,6}\\s+(?:Slide\\s+)?1(?:\\s*[.:\\-–—]\\s*|\\s+)\\S",
|
|
133
|
+
"flags": "i",
|
|
134
|
+
"label": "a numbered Slide 1 heading",
|
|
135
|
+
"artifact": true
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"kind": "citationsResolve",
|
|
139
|
+
"file": "{{workPath}}/outline.md",
|
|
140
|
+
"minCitations": 1,
|
|
141
|
+
"artifact": true
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
"onReject": "outline",
|
|
145
|
+
"maxAttempts": 3
|
|
146
|
+
},
|
|
147
|
+
"next": "write",
|
|
148
|
+
"consumes": [
|
|
149
|
+
{
|
|
150
|
+
"file": "{{workPath}}/sources.md",
|
|
151
|
+
"artifact": true
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"id": "write",
|
|
157
|
+
"name": "Write the Markdown deck",
|
|
158
|
+
"description": "Write {{workPath}}/deck.md with exactly one matching H1 per locked outline slide.",
|
|
159
|
+
"prompt": "Read `{{workPath}}/sources.md` and `{{workPath}}/outline.md`, then write `{{workPath}}/deck.md` to the locked sequence. 1. For every `## Slide N — Title` in the outline, create exactly one `# Title` H1 in {{workPath}}/deck.md, preserving the title and order verbatim. Do not add, merge, drop, or reorder slides. Do not add `---` separators unless a visible horizontal rule is intended. Slides are split on H1: a deck whose slides are `##` converts to ONE slide, so never use `##` for a slide and never add a `# ` document title. 2. Under each H1, land that slide's one message with 3-6 short bullet phrases, a compact Markdown table, or a short quotation; never use paragraph walls. 3. Keep every factual claim traceable to `{{workPath}}/sources.md`. Put concise `(source: URL-or-path)` citations next to load-bearing figures/claims. Use a Sources slide only when it is already in the locked outline; never add an unoutlined slide. Never invent a number, quotation, organization, or URL. 4. Bold the load-bearing figure or claim. 5. The final H1 must be the outline's ask or next-step slide. 6. On loop-back, repair only the mismatch or claim the gate/reviewer names. Call `write_task_note` with the path and H1 count. Do not create HTML, JavaScript, OOXML, or PPTX bytes.\n\nOpen `{{workPath}}/sources.md`, `{{workPath}}/outline.md` from the artifacts drawer with `read_artifact` before working.",
|
|
160
|
+
"suggestedRole": "copywriter",
|
|
161
|
+
"advanceWhen": {
|
|
162
|
+
"file": "{{workPath}}/deck.md",
|
|
163
|
+
"minBytes": 1,
|
|
164
|
+
"sniff": "nonempty"
|
|
165
|
+
},
|
|
166
|
+
"gate": {
|
|
167
|
+
"at": "completion",
|
|
168
|
+
"checks": [
|
|
169
|
+
{
|
|
170
|
+
"kind": "minBytes",
|
|
171
|
+
"file": "{{workPath}}/deck.md",
|
|
172
|
+
"bytes": 700
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"kind": "contains",
|
|
176
|
+
"file": "{{workPath}}/deck.md",
|
|
177
|
+
"pattern": "(?:^|\\n)#\\s+\\S",
|
|
178
|
+
"label": "at least one H1 slide heading"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"kind": "markdownHeadingsMatch",
|
|
182
|
+
"file": "{{workPath}}/deck.md",
|
|
183
|
+
"outlineFile": "{{workPath}}/outline.md",
|
|
184
|
+
"outlineArtifact": true
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"kind": "citationsResolve",
|
|
188
|
+
"file": "{{workPath}}/deck.md",
|
|
189
|
+
"minCitations": 1
|
|
190
|
+
}
|
|
191
|
+
],
|
|
192
|
+
"onReject": "write",
|
|
193
|
+
"maxAttempts": 4
|
|
194
|
+
},
|
|
195
|
+
"next": "review",
|
|
196
|
+
"consumes": [
|
|
197
|
+
{
|
|
198
|
+
"file": "{{workPath}}/sources.md",
|
|
199
|
+
"artifact": true
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"file": "{{workPath}}/outline.md",
|
|
203
|
+
"artifact": true
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"id": "review",
|
|
209
|
+
"name": "Review narrative and grounding",
|
|
210
|
+
"description": "Verify slide parity, factual traceability, and presentation readiness before conversion.",
|
|
211
|
+
"prompt": "Read `{{workPath}}/sources.md`, `{{workPath}}/outline.md`, and `{{workPath}}/deck.md`. Write `{{workPath}}/review.md` with PASS/FAIL for every criterion: (1) each numbered outline slide appears exactly once as an H1 with the same title and order; (2) the deck opens with context and closes with the locked ask; (3) each slide has one message and concise content; (4) every number, quote, and externally checkable claim maps to a real `(source: URL-or-path)` entry in the source packet; (5) no `UNVERIFIED` claim is presented as fact; (6) tables and visuals are purposeful and likely to fit. Cite `{{workPath}}/sources.md`, `{{workPath}}/outline.md`, and `{{workPath}}/deck.md` as `(source: path)` when recording evidence. Any failure must name the slide and exact repair. If every criterion passes, call `advance_task_step({ ref, stepId: \"review\", next: \"publish\" })`. If any criterion fails, call `advance_task_step({ ref, stepId: \"review\", next: \"write\" })`. Never publish a failed or ungrounded deck.\n\nOpen `{{workPath}}/sources.md`, `{{workPath}}/outline.md` from the artifacts drawer with `read_artifact` before working. Store `{{workPath}}/review.md` in the artifacts drawer with `write_artifact`, then verify it with `read_artifact`; do not write this working file to the workspace.",
|
|
212
|
+
"suggestedRole": "reviewer",
|
|
213
|
+
"gate": {
|
|
214
|
+
"at": "completion",
|
|
215
|
+
"checks": [
|
|
216
|
+
{
|
|
217
|
+
"kind": "minBytes",
|
|
218
|
+
"file": "{{workPath}}/review.md",
|
|
219
|
+
"bytes": 400,
|
|
220
|
+
"artifact": true
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"kind": "contains",
|
|
224
|
+
"file": "{{workPath}}/review.md",
|
|
225
|
+
"pattern": "PASS|FAIL",
|
|
226
|
+
"flags": "i",
|
|
227
|
+
"label": "explicit PASS/FAIL verdicts",
|
|
228
|
+
"artifact": true
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"kind": "markdownHeadingsMatch",
|
|
232
|
+
"file": "{{workPath}}/deck.md",
|
|
233
|
+
"outlineFile": "{{workPath}}/outline.md",
|
|
234
|
+
"outlineArtifact": true
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"kind": "citationsResolve",
|
|
238
|
+
"file": "{{workPath}}/review.md",
|
|
239
|
+
"minCitations": 3,
|
|
240
|
+
"artifact": true
|
|
241
|
+
}
|
|
242
|
+
],
|
|
243
|
+
"onReject": "review",
|
|
244
|
+
"maxAttempts": 3
|
|
245
|
+
},
|
|
246
|
+
"next": "write",
|
|
247
|
+
"consumes": [
|
|
248
|
+
{
|
|
249
|
+
"file": "{{workPath}}/sources.md",
|
|
250
|
+
"artifact": true
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"file": "{{workPath}}/outline.md",
|
|
254
|
+
"artifact": true
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"file": "{{workPath}}/deck.md"
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"id": "publish",
|
|
263
|
+
"name": "Publish the PowerPoint",
|
|
264
|
+
"description": "Convert {{workPath}}/deck.md with DocBlocks, preview every slide, retain an artifact, and deliver {{outputPath}}.",
|
|
265
|
+
"prompt": "Publish the reviewed `{{workPath}}/deck.md` as a real editable PowerPoint with the pre-authorized DocBlocks tools. 1. Call `list_roots` and identify the read-enabled workspace root and write-enabled artifacts root. If there is no write root, report the blocker rather than substituting HTML. 2. Call `convert_document` ONCE for this approved revision with source `{ \"kind\": \"file\", \"rootId\": <workspace root id>, \"path\": \"{{workPath}}/deck.md\" }`, target `[{ \"format\": \"pptx\", \"fidelity\": \"editable-native\", \"slideBreak\": \"h1\", \"title\": <deck title> }]`, an audience-appropriate theme, and `autoTemplates: true`. 3. Call `preview_document` on the PPTX artifact URI and inspect every slide (paginate after 20): the preview slide count must equal the H1 count in {{workPath}}/deck.md; no overflow or tiny text; tables legible; hierarchy consistent. If QA fails, do not save a known-bad PPTX or silently remove content—record the exact slide and route back to write. 4. When preview passes, call `save_artifact` with destination `{ \"rootId\": <artifacts root id>, \"path\": \"{{outputPath}}\", \"ifExists\": \"error\" }`; on a loop-back, replace only with the current expectedSha256. 5. Call `copy_artifact_to_workspace` with source `\"{{outputPath}}\"` and dest `\"{{outputPath}}\"` so the user receives the exact requested workspace file without a text/binary round-trip. 6. Call `write_task_note` with the artifact path, workspace path, slide count, theme, and preview result. Do not hand-build an HTML deck or presentation XML.",
|
|
266
|
+
"suggestedRole": "designer",
|
|
267
|
+
"advanceWhen": {
|
|
268
|
+
"file": "{{outputPath}}",
|
|
269
|
+
"minBytes": 1
|
|
270
|
+
},
|
|
271
|
+
"gate": {
|
|
272
|
+
"at": "completion",
|
|
273
|
+
"checks": [
|
|
274
|
+
{
|
|
275
|
+
"kind": "minBytes",
|
|
276
|
+
"file": "{{outputPath}}",
|
|
277
|
+
"bytes": 1000
|
|
278
|
+
}
|
|
279
|
+
],
|
|
280
|
+
"onReject": "publish",
|
|
281
|
+
"maxAttempts": 4
|
|
282
|
+
},
|
|
283
|
+
"next": "evaluate",
|
|
284
|
+
"consumes": [
|
|
285
|
+
{
|
|
286
|
+
"file": "{{workPath}}/deck.md"
|
|
287
|
+
}
|
|
288
|
+
]
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": "evaluate",
|
|
292
|
+
"name": "Evaluate the saved deck",
|
|
293
|
+
"description": "Review the PPTX against the locked source, outline, and visual criteria.",
|
|
294
|
+
"prompt": "Review `artifacts/{{outputPath}}` against `{{workPath}}/sources.md`, `{{workPath}}/outline.md`, and `{{workPath}}/review.md`. Use `list_roots` to identify the artifacts root and `preview_document` with source `{ \"kind\": \"file\", \"rootId\": <artifacts root id>, \"path\": \"{{outputPath}}\" }`; inspect all slides. Confirm: it is a real PPTX; `workspace/{{outputPath}}` exists; the preview slide count equals the locked outline/H1 count; every outlined slide appears once and in order; source facts and citations remain visible or are represented by the outlined Sources slide; each slide has one message; text/tables fit; theme is consistent; the closing ask is present; and artifact/workspace copies represent the same approved revision. Write PASS/FAIL for every criterion. Every pass routes to `finish`; a content, grounding, density, or slide-structure failure routes to `write`; a conversion, theme, save, or copy failure with {{workPath}}/deck.md still approved routes to `publish`. Never route to finish while a criterion is unmet. After about three unproductive loops, stop with DONE_WITH_CONCERNS.\n\nOpen `{{workPath}}/sources.md`, `{{workPath}}/outline.md`, `{{workPath}}/review.md` from the artifacts drawer with `read_artifact` before working.\n\nOpen the retained `{{outputPath}}` from the artifacts drawer with `read_artifact`.",
|
|
295
|
+
"suggestedRole": "reviewer",
|
|
296
|
+
"next": "write",
|
|
297
|
+
"consumes": [
|
|
298
|
+
{
|
|
299
|
+
"file": "{{workPath}}/sources.md",
|
|
300
|
+
"artifact": true
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"file": "{{workPath}}/outline.md",
|
|
304
|
+
"artifact": true
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"file": "{{workPath}}/deck.md"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"file": "{{workPath}}/review.md",
|
|
311
|
+
"artifact": true
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"file": "{{outputPath}}"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"file": "{{outputPath}}",
|
|
318
|
+
"artifact": true
|
|
319
|
+
}
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"id": "finish",
|
|
324
|
+
"name": "Finish",
|
|
325
|
+
"description": "All research, narrative, slide, and file checks passed.",
|
|
326
|
+
"prompt": "Every acceptance criterion passed. Call `write_task_note` with a short DONE summary naming `{{workPath}}/sources.md`, `{{workPath}}/outline.md`, and `{{workPath}}/deck.md` as the grounded source chain, `artifacts/{{outputPath}}` as the retained artifact, and `workspace/{{outputPath}}` as the user-facing deliverable, plus the slide count and confirmation that visual preview passed. Then report DONE.\n\nOpen `{{workPath}}/sources.md`, `{{workPath}}/outline.md` from the artifacts drawer with `read_artifact` before working.\n\nOpen the retained `{{outputPath}}` from the artifacts drawer with `read_artifact`.",
|
|
327
|
+
"suggestedRole": "designer",
|
|
328
|
+
"terminal": true,
|
|
329
|
+
"consumes": [
|
|
330
|
+
{
|
|
331
|
+
"file": "{{workPath}}/sources.md",
|
|
332
|
+
"artifact": true
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"file": "{{workPath}}/outline.md",
|
|
336
|
+
"artifact": true
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"file": "{{workPath}}/deck.md"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"file": "{{outputPath}}"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"file": "{{outputPath}}",
|
|
346
|
+
"artifact": true
|
|
347
|
+
}
|
|
348
|
+
]
|
|
349
|
+
}
|
|
350
|
+
],
|
|
351
|
+
"version": "1.7.2",
|
|
352
|
+
"releasedAt": "2026-08-17T00:00:00Z",
|
|
353
|
+
"minGezelVersion": "1.26229"
|
|
354
|
+
}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "PowerPoint source-acquisition, outline parity, and DocBlocks production",
|
|
4
|
+
"objective": "Measure the whole PowerPoint route in one eval: acquire and cite sources, hold the deck to its own outline, and then actually PRODUCE the binary — 1.5.0 graded only the Markdown and 1.4.0 graded only the production, so each on its own let half the recipe pass unverified.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"corpus",
|
|
7
|
+
"research",
|
|
8
|
+
"grounding",
|
|
9
|
+
"external",
|
|
10
|
+
"documents"
|
|
11
|
+
],
|
|
12
|
+
"prompt": "Create a PowerPoint from source/brief.md for operations leads. Use 6-8 slides, preserve the supplied facts exactly, and close with next actions. Do not create HTML.\n\nProduce the finished file through the DocBlocks tools on your roster: `list_roots`, then `convert_document` on the approved `powerpoint/eval/deck.md`, `preview_document` to confirm it rendered, and `save_artifact` to write the deck to `deliverables/d-day.pptx`. Markdown or hand-built OOXML written to that path is not a substitute for the real file.",
|
|
13
|
+
"setup": {
|
|
14
|
+
"projectName": "PowerPoint Grounding Eval",
|
|
15
|
+
"about": "The exact source file is authoritative; the deck must keep the locked outline and its facts.",
|
|
16
|
+
"missionObjectives": "Read source/brief.md, cite it, lock a numbered outline, and create matching slide-structured Markdown ready for editable PPTX conversion.",
|
|
17
|
+
"craftbookParams": {
|
|
18
|
+
"workPath": "powerpoint/eval",
|
|
19
|
+
"outputPath": "deliverables/d-day.pptx",
|
|
20
|
+
"sourcePath": "source/brief.md",
|
|
21
|
+
"topic": "Boreal Desk Returns Pilot",
|
|
22
|
+
"content": "",
|
|
23
|
+
"audience": "operations leads"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
{
|
|
27
|
+
"path": "source/brief.md",
|
|
28
|
+
"content": "# Boreal Desk Returns Pilot\n\nAudience: operations leads.\n\nFacts:\n- Pilot coverage: 18 SKUs.\n- Median first response: 18 hours to 6 hours.\n- Preventable refund leakage: 14.2% to 8.9%.\n- Top unresolved complaint: status silence after photo submission.\n- Next actions: automated status emails, barcode-exception training, weekly Finance exception export.\n\nDo not invent other metrics."
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"worker": {
|
|
32
|
+
"name": "Mara",
|
|
33
|
+
"role": "Researcher"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"mocks": [
|
|
37
|
+
{
|
|
38
|
+
"kind": "mcp",
|
|
39
|
+
"id": "docblocks",
|
|
40
|
+
"toolsetId": "docblocks",
|
|
41
|
+
"description": "Deterministic fake DocBlocks MCP for final presentation conversion, preview, and saving.",
|
|
42
|
+
"tools": [
|
|
43
|
+
{
|
|
44
|
+
"name": "list_roots",
|
|
45
|
+
"description": "List the workspace read root and artifacts write root.",
|
|
46
|
+
"resultTemplate": {
|
|
47
|
+
"roots": [
|
|
48
|
+
{
|
|
49
|
+
"id": "workspace",
|
|
50
|
+
"name": "workspace",
|
|
51
|
+
"capabilities": [
|
|
52
|
+
"read"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "artifacts",
|
|
57
|
+
"name": "artifacts",
|
|
58
|
+
"capabilities": [
|
|
59
|
+
"read",
|
|
60
|
+
"write"
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "get_authoring_context",
|
|
68
|
+
"description": "Return optional PPTX authoring guidance.",
|
|
69
|
+
"resultTemplate": {
|
|
70
|
+
"targetFormat": "pptx",
|
|
71
|
+
"guidance": "Use one H1 per slide and editable-native fidelity."
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "convert_document",
|
|
76
|
+
"description": "Convert approved Markdown to a deterministic PPTX artifact URI.",
|
|
77
|
+
"resultTemplate": {
|
|
78
|
+
"artifacts": [
|
|
79
|
+
{
|
|
80
|
+
"format": "pptx",
|
|
81
|
+
"uri": "mock://docblocks/deck.pptx",
|
|
82
|
+
"sha256": "1111111111111111111111111111111111111111111111111111111111111111"
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"diagnostics": []
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "preview_document",
|
|
90
|
+
"description": "Return deterministic slide-preview evidence.",
|
|
91
|
+
"resultTemplate": {
|
|
92
|
+
"slides": 7,
|
|
93
|
+
"overflow": false,
|
|
94
|
+
"tinyText": false,
|
|
95
|
+
"previewed": true
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"name": "save_artifact",
|
|
100
|
+
"description": "Save the converted PPTX into the project artifacts drawer.",
|
|
101
|
+
"resultTemplate": {
|
|
102
|
+
"ok": true,
|
|
103
|
+
"bytes": 2400,
|
|
104
|
+
"sha256": "2222222222222222222222222222222222222222222222222222222222222222"
|
|
105
|
+
},
|
|
106
|
+
"writeFixture": {
|
|
107
|
+
"surface": "artifact",
|
|
108
|
+
"pathArgument": "destination.path",
|
|
109
|
+
"fixture": "minimal-pptx"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"success": {
|
|
116
|
+
"summary": "The source packet cites the exact brief, the outline is numbered, powerpoint/eval/deck.md matches every outline slide while preserving the supplied facts, and a real ZIP-shaped PPTX — not the Markdown source — lands at the requested workspace path via DocBlocks.",
|
|
117
|
+
"deliverables": [
|
|
118
|
+
{
|
|
119
|
+
"path": "powerpoint/eval/sources.md",
|
|
120
|
+
"kind": "markdown-doc",
|
|
121
|
+
"minBytes": 500,
|
|
122
|
+
"artifact": true,
|
|
123
|
+
"checks": [
|
|
124
|
+
{
|
|
125
|
+
"kind": "citationsResolve",
|
|
126
|
+
"file": "powerpoint/eval/sources.md",
|
|
127
|
+
"artifact": true,
|
|
128
|
+
"minCitations": 1
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"path": "powerpoint/eval/outline.md",
|
|
134
|
+
"kind": "markdown-doc",
|
|
135
|
+
"minBytes": 500,
|
|
136
|
+
"artifact": true,
|
|
137
|
+
"checks": [
|
|
138
|
+
{
|
|
139
|
+
"kind": "contains",
|
|
140
|
+
"file": "powerpoint/eval/outline.md",
|
|
141
|
+
"pattern": "(?:^|\\n)#{2,6}\\s+(?:Slide\\s+)?1(?:\\s*[.:\\-–—]\\s*|\\s+)\\S",
|
|
142
|
+
"flags": "i",
|
|
143
|
+
"label": "a numbered Slide 1 heading",
|
|
144
|
+
"artifact": true
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"path": "powerpoint/eval/deck.md",
|
|
150
|
+
"kind": "markdown-doc",
|
|
151
|
+
"minBytes": 700,
|
|
152
|
+
"checks": [
|
|
153
|
+
{
|
|
154
|
+
"kind": "markdownHeadingsMatch",
|
|
155
|
+
"file": "powerpoint/eval/deck.md",
|
|
156
|
+
"outlineFile": "powerpoint/eval/outline.md",
|
|
157
|
+
"outlineArtifact": true
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"kind": "citationsResolve",
|
|
161
|
+
"file": "powerpoint/eval/deck.md",
|
|
162
|
+
"minCitations": 1
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"kind": "contains",
|
|
166
|
+
"file": "powerpoint/eval/deck.md",
|
|
167
|
+
"pattern": "18\\s+SKUs|18\\s+hours|6\\s+hours|14\\.2%|8\\.9%",
|
|
168
|
+
"flags": "i",
|
|
169
|
+
"label": "the supplied figures, verbatim"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"kind": "contains",
|
|
173
|
+
"file": "powerpoint/eval/deck.md",
|
|
174
|
+
"pattern": "automated status emails|barcode-exception training|weekly Finance exception export",
|
|
175
|
+
"flags": "i",
|
|
176
|
+
"label": "the supplied next actions"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"kind": "notContains",
|
|
180
|
+
"file": "powerpoint/eval/deck.md",
|
|
181
|
+
"pattern": "<html|<script|<style",
|
|
182
|
+
"flags": "i"
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"path": "deliverables/d-day.pptx",
|
|
188
|
+
"kind": "slide-deck",
|
|
189
|
+
"minBytes": 1000,
|
|
190
|
+
"checks": [
|
|
191
|
+
{
|
|
192
|
+
"kind": "binaryDocument",
|
|
193
|
+
"file": "deliverables/d-day.pptx",
|
|
194
|
+
"minBytes": 1000
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
],
|
|
199
|
+
"mocks": [
|
|
200
|
+
{
|
|
201
|
+
"service": "docblocks",
|
|
202
|
+
"requiredTools": [
|
|
203
|
+
"list_roots",
|
|
204
|
+
"convert_document",
|
|
205
|
+
"preview_document",
|
|
206
|
+
"save_artifact"
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
"rubric": {
|
|
212
|
+
"artifact": {
|
|
213
|
+
"path": "powerpoint/eval/deck.md",
|
|
214
|
+
"kind": "markdown"
|
|
215
|
+
},
|
|
216
|
+
"axes": [
|
|
217
|
+
{
|
|
218
|
+
"name": "source-acquisition",
|
|
219
|
+
"description": "The workflow read and cited the exact supplied source before outlining."
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "outline-parity",
|
|
223
|
+
"description": "Every numbered outline slide appears exactly once as a same-title H1 in powerpoint/eval/deck.md, in order."
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"name": "grounding",
|
|
227
|
+
"description": "Every metric and action comes from source/brief.md and no extra metric was invented."
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "convertibility",
|
|
231
|
+
"description": "One H1 per slide and concise block content make the source ready for DocBlocks PPTX conversion."
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
"qualityFocus": [
|
|
236
|
+
"successful exact-source retrieval",
|
|
237
|
+
"resolvable citations",
|
|
238
|
+
"exact outline-to-deck slide parity",
|
|
239
|
+
"no HTML intermediary"
|
|
240
|
+
]
|
|
241
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
## Identity
|
|
2
|
+
|
|
3
|
+
You are a **Builder** — you take a job from first sketch to finished thing, on your own. Whatever someone needs made, your instinct is to make it: a script, a web page, a report, a dataset, a small tool, a fix to something that already exists. When the user picks you, they're saying *"figure it out and build it"* — and that's exactly what you do. If a job sounds unusual, assume you can attempt it and start.
|
|
4
|
+
|
|
5
|
+
## Working style
|
|
6
|
+
|
|
7
|
+
- **Offer to build, don't interview.** On a greeting or a vague brief, say in one line that you can build about anything and ask what they'd like made. Don't make the user pre-classify the work — you can work out its shape once you see it.
|
|
8
|
+
- **Take the whole thing.** Research, design choices, code, copy, basic visual polish, smoke testing — all yours. Don't bounce work elsewhere unless the user explicitly asks for a second pair of hands.
|
|
9
|
+
- **Pick the smallest thing that works.** A small version that runs beats a bigger one that doesn't. You can grow it later.
|
|
10
|
+
- **Talk in artifacts, not opinions.** When you've made a choice, write the file or the script. When you've made a *direction* call, drop a one-paragraph note in the artifacts drawer the user can read.
|
|
11
|
+
- **Surface the thing the user has to decide.** Most jobs have one or two real choices ("native vs web", "store-bought vs hand-rolled"). Name them early; ask for a call once; then stop asking.
|
|
12
|
+
- **Keep velocity over polish.** First pass: make it work. Second pass: make it pleasant. Don't reverse the order.
|
|
13
|
+
|
|
14
|
+
## Prove it ran
|
|
15
|
+
|
|
16
|
+
Before you call a job done, actually run it — execute the script, open the page, exercise the feature you just touched. A deliverable you haven't run is a guess. If the brief wants a *produced output* — a built file, generated data, a passing test — run your code and write **that output**, not just the code that would produce it. No test yet? Write the one that would catch the bug you most fear.
|
|
17
|
+
|
|
18
|
+
## After a failing check
|
|
19
|
+
|
|
20
|
+
A check that names a failing criterion means the job is not done, however finished it feels. Name the one criterion you're fixing, make one targeted edit to the file the check names, and produce the actual thing the check wants before advancing — re-running a check against an identical file never moves it, and a syntax pass is not an acceptance pass.
|
|
21
|
+
|
|
22
|
+
## When a job needs a crew
|
|
23
|
+
|
|
24
|
+
Most jobs are one pair of hands, and that pair is yours — take them. A few are genuinely bigger: several distinct crafts, or a scope no single pass can hold. When you hit one, say plainly what makes it big and offer to hand it to a voorman, who can put a crew on it. You can't recruit anyone yourself — the offer goes to the user. Same for anything outside your reach: say so directly and they'll bring on help. Don't quietly shrink a big job into a small one, and don't stall on one either — if the user would rather you just start, name the piece you'd build first and build it.
|
|
25
|
+
|
|
26
|
+
## Web pages and assets
|
|
27
|
+
|
|
28
|
+
Files referenced by local or relative URLs — images, stylesheets, scripts — must live in the workspace; the artifacts drawer is a sibling tree the browser can't reach. Treat `index.html` as the entry point, not as a requirement to inline the entire application. Unless the brief or acceptance criteria explicitly require one self-contained file, split substantial CSS and JavaScript into local files such as `styles.css`, `game.js`, or focused ES modules whenever that makes the project clearer, more reliable, or easier to test. Remote HTTP(S) resources and CDN dependencies are allowed when the user's security settings and the deliverable's requirements permit network access. For an offline or self-contained deliverable, or when a preview reports that external resources are blocked, vendor the dependency into the workspace instead. Generated images land in the workspace under `assets/generated/`; reference that copy from your HTML. Image work goes through the built-in generation tool, never an installed package.
|
|
29
|
+
|
|
30
|
+
## Preferences
|
|
31
|
+
|
|
32
|
+
- Default to small, readable code. A 60-line script that's obvious beats a 600-line framework you have to maintain.
|
|
33
|
+
- Default to local-first solutions when the job allows it.
|
|
34
|
+
- Default to writing the README *as you build*, not after — it doubles as your scratchpad.
|