@bendyline/gilde 0.1.13 → 0.1.14

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.
@@ -0,0 +1,200 @@
1
+ {
2
+ "id": "powerpoint-deck",
3
+ "name": "PowerPoint from Content",
4
+ "description": "Turn an inline brief or named source file into a real, editable PowerPoint without hand-building HTML, JavaScript, XML, or binary bytes. The reviewed Markdown deck is the source of truth: a planner locks the narrative, a copywriter authors deck.md, and a reviewer repairs that Markdown until its facts and slide story pass. Only then does a designer use DocBlocks once per approved revision to export, preview, retain an artifact copy, and deliver the exact requested PPTX. Visual failures route back to the Markdown source before another export.",
5
+ "entryStepId": "outline",
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
+ "paramSchema": {
15
+ "type": "object",
16
+ "properties": {
17
+ "outputPath": {
18
+ "type": "string",
19
+ "title": "Workspace output path",
20
+ "description": "Project-workspace-relative path for the finished PowerPoint.",
21
+ "default": "deck.pptx"
22
+ },
23
+ "sourcePath": {
24
+ "type": "string",
25
+ "title": "Source content path",
26
+ "description": "Optional project-workspace-relative Markdown or text file to turn into slides.",
27
+ "default": ""
28
+ },
29
+ "topic": {
30
+ "type": "string",
31
+ "title": "Presentation topic",
32
+ "description": "Optional topic when the request starts from a brief rather than an existing file.",
33
+ "default": ""
34
+ },
35
+ "content": {
36
+ "type": "string",
37
+ "title": "Inline source brief",
38
+ "description": "Optional inline source material or factual brief for the deck.",
39
+ "default": ""
40
+ }
41
+ }
42
+ },
43
+ "toolsets": [
44
+ {
45
+ "toolsetId": "docblocks",
46
+ "sourceId": "bundled",
47
+ "autoAllow": true,
48
+ "reason": "export the reviewed deck.md to PPTX, preview every slide, and save the finished file without a prompt per call"
49
+ }
50
+ ],
51
+ "steps": [
52
+ {
53
+ "id": "outline",
54
+ "name": "Outline the deck",
55
+ "description": "Lock the source, audience, purpose, takeaway, and one message per slide before writing.",
56
+ "prompt": "Plan the deck from the authoritative invocation inputs before authoring slides. Source path: {{sourcePath}}. Topic: {{topic}}. Inline source brief: {{content}}. Use this precedence: (1) when sourcePath is non-empty, read that exact workspace file; (2) otherwise use non-empty content as inline source material; (3) otherwise use the topic plus any source explicitly named in the user or task description. Never select an unrelated workspace file merely because it is the only Markdown file, and never let recalled context override these inputs. If none of the three inputs identifies usable content, ask the user for the source instead of guessing. Then: 1. State the audience, occasion, and ONE takeaway. 2. Draft an 8-15 slide outline unless the user requested another length; each slide gets a working title and one idea. 3. Mark where a compact table, comparison, image, or quote genuinely helps. 4. Write acceptance criteria: every outline slide appears in order, one idea per slide, no wall-of-text slides, claims stay grounded in the source, the deck opens with context and closes with the ask or next step, deck.md passes Markdown review before export, visual preview passes, an artifact copy is retained, and the exact workspace file {{outputPath}} is delivered. Write the result to notes/outline.md and call write_task_note with the source used, slide count, takeaway, and requested output path. Do not write slide content or call DocBlocks.",
57
+ "suggestedRole": "planner",
58
+ "advanceWhen": {
59
+ "file": "notes/outline.md",
60
+ "minBytes": 1,
61
+ "sniff": "nonempty"
62
+ },
63
+ "gate": {
64
+ "at": "completion",
65
+ "checks": [
66
+ {
67
+ "kind": "minBytes",
68
+ "file": "notes/outline.md",
69
+ "bytes": 220
70
+ },
71
+ {
72
+ "kind": "sniff",
73
+ "file": "notes/outline.md",
74
+ "sniff": "nonempty"
75
+ }
76
+ ],
77
+ "onReject": "outline",
78
+ "maxAttempts": 3
79
+ },
80
+ "next": "write"
81
+ },
82
+ {
83
+ "id": "write",
84
+ "name": "Write the Markdown deck",
85
+ "description": "Author and repair deck.md as the canonical deck source; do not export yet.",
86
+ "prompt": "Write deck.md to the locked outline and authoritative source. deck.md is the canonical deliverable until content review passes; do not call DocBlocks or create PPTX bytes in this step. 1. Use exactly one # level-one heading per slide; each H1 is a deliberate slide boundary. Do not add --- separators unless a visible horizontal rule is intended. 2. The first H1 is the title slide and the final H1 is the ask or next-steps slide. 3. Under each H1, land one idea with 3-6 short bullet phrases, a compact Markdown table, or a short quote; never use paragraph walls. 4. Bold the load-bearing figure or claim. 5. Keep every claim traceable to the source and include only the slides in notes/outline.md, in order. 6. On a loop-back, repair only the gaps named in notes/deck-review.md or task notes; preserve slides that passed. Call write_task_note with the deck.md path, H1 slide count, and repaired slide titles.",
87
+ "suggestedRole": "copywriter",
88
+ "advanceWhen": {
89
+ "file": "deck.md",
90
+ "minBytes": 1,
91
+ "sniff": "nonempty"
92
+ },
93
+ "gate": {
94
+ "at": "completion",
95
+ "checks": [
96
+ {
97
+ "kind": "minBytes",
98
+ "file": "deck.md",
99
+ "bytes": 700
100
+ },
101
+ {
102
+ "kind": "contains",
103
+ "file": "deck.md",
104
+ "pattern": "(?:^|\\n)#\\s+\\S",
105
+ "label": "at least one H1 slide heading"
106
+ }
107
+ ],
108
+ "onReject": "write",
109
+ "maxAttempts": 4
110
+ },
111
+ "next": "review"
112
+ },
113
+ {
114
+ "id": "review",
115
+ "name": "Review the Markdown deck",
116
+ "description": "Resolve narrative, grounding, and slide-density problems in deck.md before any export.",
117
+ "prompt": "Review the Markdown source before any PowerPoint conversion. Read notes/outline.md, deck.md, and the authoritative source identified there. Do not call DocBlocks, create a PPTX, or judge visual rendering in this step. Write notes/deck-review.md with PASS or FAIL for every criterion: the exact source is used; every source claim and number is preserved without invention; every outlined slide appears once and in order; each H1 lands one message; bullets are concise; tables are genuinely tabular; the opening supplies context; the final slide gives the ask or next step; and the slide count matches the outline. Name the slide and exact repair for every failure. Then route: every criterion PASSES -> call advance_task_step with next \"publish\"; any criterion FAILS -> write the exact gaps to task notes and call advance_task_step with next \"write\". Never export while a Markdown criterion is failing.",
118
+ "suggestedRole": "reviewer",
119
+ "gate": {
120
+ "at": "completion",
121
+ "checks": [
122
+ {
123
+ "kind": "minBytes",
124
+ "file": "notes/deck-review.md",
125
+ "bytes": 240
126
+ },
127
+ {
128
+ "kind": "contains",
129
+ "file": "notes/deck-review.md",
130
+ "pattern": "(?:^|\\n).*\\b(?:PASS|FAIL)\\b",
131
+ "label": "per-criterion PASS or FAIL evidence"
132
+ }
133
+ ],
134
+ "onReject": "review",
135
+ "maxAttempts": 4
136
+ },
137
+ "next": "write"
138
+ },
139
+ {
140
+ "id": "publish",
141
+ "name": "Publish the PowerPoint",
142
+ "description": "Export the approved deck.md once, preview it, and deliver {{outputPath}}.",
143
+ "prompt": "Project the approved deck.md into a real editable PowerPoint with the pre-authorized DocBlocks tools. The Markdown passed notes/deck-review.md and remains the source of truth; do not rewrite its narrative during conversion. 1. Call list_roots first 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. Optionally call get_authoring_context with targetFormat \"pptx\", goal \"visual-polish\", and the deck.md file source only when target guidance or template examples would help; ordinary Markdown needs no mandatory preflight. 3. Call convert_document ONCE for this approved revision with source { \"kind\": \"file\", \"rootId\": <workspace root id>, \"path\": \"deck.md\" }, target [{ \"format\": \"pptx\", \"fidelity\": \"editable-native\", \"slideBreak\": \"h1\", \"title\": <deck title> }], an audience-appropriate theme when useful, and autoTemplates: true. 4. Call preview_document on the PPTX artifact URI and inspect every slide (paginate after 20): expected slide count, no overflow or tiny text, tables legible, and visual hierarchy consistent. If preview fails, do not save a known-bad PPTX or patch content ad hoc here; record the exact slide/layout gap in task notes and advance back to \"write\" so deck.md is repaired and reviewed before another export. 5. When preview passes, call save_artifact with destination { \"rootId\": <artifacts root id>, \"path\": \"{{outputPath}}\", \"ifExists\": \"error\" }; on a later approved revision, replace only with the current expectedSha256. 6. 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. 7. Call write_task_note with the approved deck.md revision, artifact path, workspace path, slide count, theme, and preview result. Do not hand-build HTML, JavaScript, OOXML, or presentation bytes.",
144
+ "suggestedRole": "designer",
145
+ "advanceWhen": {
146
+ "file": "{{outputPath}}",
147
+ "minBytes": 1
148
+ },
149
+ "gate": {
150
+ "at": "completion",
151
+ "checks": [
152
+ {
153
+ "kind": "minBytes",
154
+ "file": "{{outputPath}}",
155
+ "bytes": 1000
156
+ }
157
+ ],
158
+ "onReject": "publish",
159
+ "maxAttempts": 4
160
+ },
161
+ "next": "evaluate"
162
+ },
163
+ {
164
+ "id": "evaluate",
165
+ "name": "Evaluate the finished PowerPoint",
166
+ "description": "Verify the saved PPTX is a faithful, usable projection of the approved Markdown.",
167
+ "prompt": "Review artifacts/{{outputPath}} against deck.md, notes/outline.md, and notes/deck-review.md. Use list_roots to identify the artifacts root and preview_document with source { \"kind\": \"file\", \"rootId\": <artifacts root id>, \"path\": \"{{outputPath}}\" }; inspect every slide. Write notes/pptx-review.md with PASS or FAIL for: real editable PPTX; workspace/{{outputPath}} exists; exact approved slide count and order; no missing or duplicated content; no overflow or tiny text; legible tables; consistent theme and hierarchy; closing ask present; artifact and workspace copies represent the same approved revision. Then route: Every criterion PASSES -> call advance_task_step with next \"finish\". Any criterion FAILS -> write the exact gaps to task notes, then route a content, density, or slide-structure failure to \"write\" so deck.md is repaired and reviewed before re-export; route a conversion, theme, save, or copy failure with deck.md still approved to \"publish\". Never route to finish while any criterion is unmet.",
168
+ "suggestedRole": "reviewer",
169
+ "gate": {
170
+ "at": "completion",
171
+ "checks": [
172
+ {
173
+ "kind": "minBytes",
174
+ "file": "notes/pptx-review.md",
175
+ "bytes": 220
176
+ },
177
+ {
178
+ "kind": "contains",
179
+ "file": "notes/pptx-review.md",
180
+ "pattern": "(?:^|\\n).*\\b(?:PASS|FAIL)\\b",
181
+ "label": "final per-criterion PASS or FAIL evidence"
182
+ }
183
+ ],
184
+ "onReject": "evaluate",
185
+ "maxAttempts": 4
186
+ },
187
+ "next": "publish"
188
+ },
189
+ {
190
+ "id": "finish",
191
+ "name": "Finish",
192
+ "description": "The reviewed Markdown and its final PowerPoint projection passed every check.",
193
+ "prompt": "Every Markdown and PowerPoint acceptance criterion passed. Call write_task_note with a short DONE summary naming deck.md as the canonical source, notes/deck-review.md as the pre-export approval, artifacts/{{outputPath}} as the retained production copy, and workspace/{{outputPath}} as the requested finished deliverable, plus the slide count and confirmation that visual preview passed. Then report DONE.",
194
+ "suggestedRole": "designer",
195
+ "terminal": true
196
+ }
197
+ ],
198
+ "version": "1.4.0",
199
+ "releasedAt": "2026-08-06T00:00:00Z"
200
+ }
@@ -0,0 +1,175 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "PowerPoint Markdown-first DocBlocks eval",
4
+ "objective": "Verify the PowerPoint craftbook grounds and reviews deck.md before using DocBlocks for the final editable PPTX export at the exact requested workspace path.",
5
+ "tags": [
6
+ "external",
7
+ "documents"
8
+ ],
9
+ "prompt": "Read source/brief.md and create a concise operations-lead PowerPoint at deliverables/d-day.pptx. Preserve the supplied facts, use one H1 per slide in deck.md, complete the Markdown review before export, and use DocBlocks only for final production and visual QA.",
10
+ "setup": {
11
+ "projectName": "PowerPoint DocBlocks Eval",
12
+ "about": "The reviewed deck.md is the source of truth and the exact requested PPTX is its final DocBlocks projection.",
13
+ "missionObjectives": "Run the PowerPoint craftbook end to end, approve the Markdown narrative before export, and deliver workspace/deliverables/d-day.pptx without HTML or a developer fallback.",
14
+ "files": [
15
+ {
16
+ "path": "source/brief.md",
17
+ "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."
18
+ }
19
+ ],
20
+ "worker": {
21
+ "name": "Jules",
22
+ "role": "Copywriter"
23
+ }
24
+ },
25
+ "mocks": [
26
+ {
27
+ "kind": "mcp",
28
+ "id": "docblocks",
29
+ "toolsetId": "docblocks",
30
+ "description": "Deterministic fake DocBlocks MCP for final presentation conversion, preview, and saving.",
31
+ "tools": [
32
+ {
33
+ "name": "list_roots",
34
+ "description": "List the workspace read root and artifacts write root.",
35
+ "resultTemplate": {
36
+ "roots": [
37
+ {
38
+ "id": "workspace",
39
+ "name": "workspace",
40
+ "capabilities": [
41
+ "read"
42
+ ]
43
+ },
44
+ {
45
+ "id": "artifacts",
46
+ "name": "artifacts",
47
+ "capabilities": [
48
+ "read",
49
+ "write"
50
+ ]
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "name": "get_authoring_context",
57
+ "description": "Return optional PPTX authoring guidance.",
58
+ "resultTemplate": {
59
+ "targetFormat": "pptx",
60
+ "guidance": "Use one H1 per slide and editable-native fidelity."
61
+ }
62
+ },
63
+ {
64
+ "name": "convert_document",
65
+ "description": "Convert approved Markdown to a deterministic PPTX artifact URI.",
66
+ "resultTemplate": {
67
+ "artifacts": [
68
+ {
69
+ "format": "pptx",
70
+ "uri": "mock://docblocks/deck.pptx",
71
+ "sha256": "1111111111111111111111111111111111111111111111111111111111111111"
72
+ }
73
+ ],
74
+ "diagnostics": []
75
+ }
76
+ },
77
+ {
78
+ "name": "preview_document",
79
+ "description": "Return deterministic slide-preview evidence.",
80
+ "resultTemplate": {
81
+ "slides": 7,
82
+ "overflow": false,
83
+ "tinyText": false,
84
+ "previewed": true
85
+ }
86
+ },
87
+ {
88
+ "name": "save_artifact",
89
+ "description": "Save the converted PPTX into the project artifacts drawer.",
90
+ "resultTemplate": {
91
+ "ok": true,
92
+ "bytes": 2400,
93
+ "sha256": "2222222222222222222222222222222222222222222222222222222222222222"
94
+ },
95
+ "writeFixture": {
96
+ "surface": "artifact",
97
+ "pathArgument": "destination.path",
98
+ "fixture": "minimal-pptx"
99
+ }
100
+ }
101
+ ]
102
+ }
103
+ ],
104
+ "success": {
105
+ "summary": "The craftbook reviewed its Markdown source before calling the required DocBlocks tools and copied a deterministic PPTX to the exact requested workspace path.",
106
+ "deliverables": [
107
+ {
108
+ "path": "deck.md",
109
+ "kind": "markdown-doc",
110
+ "minBytes": 700
111
+ },
112
+ {
113
+ "path": "notes/deck-review.md",
114
+ "kind": "markdown-notes",
115
+ "minBytes": 240
116
+ },
117
+ {
118
+ "path": "deliverables/d-day.pptx",
119
+ "kind": "slide-deck",
120
+ "minBytes": 1000
121
+ }
122
+ ],
123
+ "mocks": [
124
+ {
125
+ "service": "docblocks",
126
+ "requiredTools": [
127
+ "list_roots",
128
+ "convert_document",
129
+ "preview_document",
130
+ "save_artifact"
131
+ ]
132
+ }
133
+ ]
134
+ },
135
+ "rubric": {
136
+ "artifact": {
137
+ "path": "deck.md",
138
+ "kind": "markdown"
139
+ },
140
+ "axes": [
141
+ {
142
+ "name": "narrative",
143
+ "description": "The approved Markdown forms a coherent briefing with one message per slide and a clear closing action."
144
+ },
145
+ {
146
+ "name": "grounding",
147
+ "description": "Every metric and action comes from the seeded brief."
148
+ },
149
+ {
150
+ "name": "markdown-first",
151
+ "description": "The workflow records a per-criterion Markdown review before any final PowerPoint production."
152
+ },
153
+ {
154
+ "name": "production",
155
+ "description": "The workflow uses conversion, preview, save, and exact-path delivery rather than a substitute format."
156
+ }
157
+ ]
158
+ },
159
+ "qualityFocus": [
160
+ "authoritative source routing",
161
+ "Markdown-first review loop",
162
+ "single final DocBlocks projection per approved revision",
163
+ "exact requested PPTX path"
164
+ ],
165
+ "extensions": {
166
+ "legacySimulators": [
167
+ {
168
+ "id": "docblocks-mcp",
169
+ "kind": "mcp",
170
+ "status": "implemented",
171
+ "description": "Project-scoped fake DocBlocks tools with deterministic PPTX materialization and call-log assertions."
172
+ }
173
+ ]
174
+ }
175
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/gilde",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "The gilde catalog: model manifests, toolsets, craftbooks, roles, and project types for gezel.",
5
5
  "license": "MIT",
6
6
  "private": false,