@bendyline/gilde 0.1.92 → 0.1.94

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.
Files changed (137) hide show
  1. package/README.md +6 -4
  2. package/authoring/chat-models/underdog-saluki-27b-iq2-mix.json +159 -0
  3. package/data/chat-models/index.json +1 -1
  4. package/data/chat-models/raw-index.json +1 -1
  5. package/data/chat-models/un/underdog-saluki-27b-iq2-mix/manifest.json +164 -0
  6. package/data/chat-models/un/underdog-saluki-27b-iq2-mix/versions/1.0.0/manifest.json +14 -0
  7. package/data/craftbook-templates/br/branding-website/manifest.json +2 -1
  8. package/data/craftbook-templates/br/branding-website/versions/1.1.4/craftbook.json +346 -0
  9. package/data/craftbook-templates/br/branding-website/versions/1.1.4/test.json +164 -0
  10. package/data/craftbook-templates/fr/freeze-scope/versions/1.4.0/craftbook.json +94 -0
  11. package/data/craftbook-templates/fr/freeze-scope/versions/1.4.0/test.json +131 -0
  12. package/data/craftbook-templates/index.json +1 -1
  13. package/data/craftbook-templates/na/narrated-slideshow/manifest.json +2 -1
  14. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.7/craftbook.json +315 -0
  15. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.7/test.json +89 -0
  16. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.8/craftbook.json +323 -0
  17. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.8/test.json +217 -0
  18. package/data/craftbook-templates/ph/photo-library-nightly/manifest.json +22 -0
  19. package/data/craftbook-templates/ph/photo-library-nightly/versions/1.0.0/craftbook.json +186 -0
  20. package/data/craftbook-templates/ph/photo-library-nightly/versions/1.0.0/test.json +69 -0
  21. package/data/craftbook-templates/po/powerpoint-deck/manifest.json +2 -1
  22. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.17/craftbook.json +486 -0
  23. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.17/test.json +265 -0
  24. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.18/craftbook.json +501 -0
  25. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.18/test.json +266 -0
  26. package/data/craftbook-templates/raw-index.json +1 -1
  27. package/data/craftbook-templates/re/report-pdf/manifest.json +2 -1
  28. package/data/craftbook-templates/re/report-pdf/versions/1.1.7/craftbook.json +316 -0
  29. package/data/craftbook-templates/re/report-pdf/versions/1.1.7/test.json +101 -0
  30. package/data/craftbook-templates/re/report-pdf/versions/1.1.8/craftbook.json +324 -0
  31. package/data/craftbook-templates/re/report-pdf/versions/1.1.8/test.json +258 -0
  32. package/data/craftbook-templates/re/research-report/manifest.json +2 -1
  33. package/data/craftbook-templates/re/research-report/versions/1.0.4/craftbook.json +286 -0
  34. package/data/craftbook-templates/re/research-report/versions/1.0.4/test.json +183 -0
  35. package/data/craftbook-templates/re/research-to-document/manifest.json +2 -1
  36. package/data/craftbook-templates/re/research-to-document/versions/1.2.7/craftbook.json +387 -0
  37. package/data/craftbook-templates/re/research-to-document/versions/1.2.7/test.json +242 -0
  38. package/data/craftbook-templates/re/research-to-document/versions/1.2.8/craftbook.json +395 -0
  39. package/data/craftbook-templates/re/research-to-document/versions/1.2.8/test.json +254 -0
  40. package/data/gezel-templates/cu/curator/manifest.json +20 -0
  41. package/data/gezel-templates/cu/curator/versions/1.0.0/about.md +22 -0
  42. package/data/gezel-templates/cu/curator/versions/1.0.0/manifest.json +23 -0
  43. package/data/gezel-templates/index.json +1 -1
  44. package/data/gezel-templates/pu/puzzelaar/manifest.json +19 -0
  45. package/data/gezel-templates/pu/puzzelaar/versions/1.0.0/about.md +18 -0
  46. package/data/gezel-templates/pu/puzzelaar/versions/1.0.0/manifest.json +16 -0
  47. package/data/gezel-templates/raw-index.json +1 -1
  48. package/data/gezel-templates/wo/woordsmid/manifest.json +19 -0
  49. package/data/gezel-templates/wo/woordsmid/versions/1.0.0/about.md +18 -0
  50. package/data/gezel-templates/wo/woordsmid/versions/1.0.0/manifest.json +16 -0
  51. package/data/image-models/index.json +1 -1
  52. package/data/image-models/mi/ming-image-0.1-design-bf16/manifest.json +39 -0
  53. package/data/image-models/mi/ming-image-0.1-design-bf16/versions/1.0.0/manifest.json +31 -0
  54. package/data/image-models/raw-index.json +1 -1
  55. package/data/knowledge-catalogs/be/bendyline-how-to-books/manifest.json +26 -0
  56. package/data/knowledge-catalogs/be/bendyline-how-to-books/versions/2026.10.8/manifest.json +8950 -0
  57. package/data/knowledge-catalogs/index.json +1 -1
  58. package/data/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/manifest.json +22 -0
  59. package/data/knowledge-catalogs/mi/microsoftdocs-aspnet-core-en/versions/2026.10.16/manifest.json +18270 -0
  60. package/data/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/manifest.json +23 -0
  61. package/data/knowledge-catalogs/mi/microsoftdocs-azure-ai-platform-en/versions/2026.10.16/manifest.json +1098 -0
  62. package/data/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/manifest.json +23 -0
  63. package/data/knowledge-catalogs/mi/microsoftdocs-azure-apps-compute-en/versions/2026.10.16/manifest.json +722 -0
  64. package/data/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/manifest.json +23 -0
  65. package/data/knowledge-catalogs/mi/microsoftdocs-azure-data-aiot-en/versions/2026.10.16/manifest.json +530 -0
  66. package/data/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/manifest.json +23 -0
  67. package/data/knowledge-catalogs/mi/microsoftdocs-azure-management-hybrid-en/versions/2026.10.16/manifest.json +602 -0
  68. package/data/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/manifest.json +23 -0
  69. package/data/knowledge-catalogs/mi/microsoftdocs-azure-network-security-en/versions/2026.10.16/manifest.json +250 -0
  70. package/data/knowledge-catalogs/mi/microsoftdocs-dotnet-en/manifest.json +22 -0
  71. package/data/knowledge-catalogs/mi/microsoftdocs-dotnet-en/versions/2026.10.16/manifest.json +16794 -0
  72. package/data/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/manifest.json +22 -0
  73. package/data/knowledge-catalogs/mi/microsoftdocs-entity-framework-en/versions/2026.10.16/manifest.json +1106 -0
  74. package/data/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/manifest.json +22 -0
  75. package/data/knowledge-catalogs/mi/microsoftdocs-microsoft-365-en/versions/2026.10.16/manifest.json +234 -0
  76. package/data/knowledge-catalogs/mi/microsoftdocs-powershell-en/manifest.json +22 -0
  77. package/data/knowledge-catalogs/mi/microsoftdocs-powershell-en/versions/2026.10.16/manifest.json +522 -0
  78. package/data/knowledge-catalogs/mi/microsoftdocs-sql-server-en/manifest.json +22 -0
  79. package/data/knowledge-catalogs/mi/microsoftdocs-sql-server-en/versions/2026.10.16/manifest.json +1850 -0
  80. package/data/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/manifest.json +22 -0
  81. package/data/knowledge-catalogs/mi/microsoftdocs-windows-apps-en/versions/2026.10.16/manifest.json +1734 -0
  82. package/data/knowledge-catalogs/mi/microsoftdocs-windows-server-en/manifest.json +22 -0
  83. package/data/knowledge-catalogs/mi/microsoftdocs-windows-server-en/versions/2026.10.16/manifest.json +774 -0
  84. package/data/knowledge-catalogs/raw-index.json +1 -1
  85. package/data/project-types/ch/checkers/versions/1.2.3/about.md +9 -0
  86. package/data/project-types/ch/checkers/versions/1.2.3/game.json +77 -0
  87. package/data/project-types/ch/checkers/versions/1.2.3/manifest.json +182 -0
  88. package/data/project-types/ch/checkers/versions/1.2.3/mission.md +9 -0
  89. package/data/project-types/ch/checkers/versions/1.2.3/pages/board/index.html +1158 -0
  90. package/data/project-types/ch/chess/versions/1.0.6/about.md +9 -0
  91. package/data/project-types/ch/chess/versions/1.0.6/game.json +127 -0
  92. package/data/project-types/ch/chess/versions/1.0.6/manifest.json +196 -0
  93. package/data/project-types/ch/chess/versions/1.0.6/mission.md +8 -0
  94. package/data/project-types/ch/chess/versions/1.0.6/pages/board/index.html +851 -0
  95. package/data/project-types/fi/fitness-coach/versions/1.1.0/about.md +8 -0
  96. package/data/project-types/fi/fitness-coach/versions/1.1.0/craftbooks/training-recap.json +34 -0
  97. package/data/project-types/fi/fitness-coach/versions/1.1.0/manifest.json +229 -0
  98. package/data/project-types/fi/fitness-coach/versions/1.1.0/mission.md +7 -0
  99. package/data/project-types/fi/fitness-coach/versions/1.1.0/pages/dashboard/index.html +383 -0
  100. package/data/project-types/fi/fitness-coach/versions/1.1.0/training.json +6 -0
  101. package/data/project-types/fl/flashcards/versions/1.1.2/about.md +8 -0
  102. package/data/project-types/fl/flashcards/versions/1.1.2/deck.json +7 -0
  103. package/data/project-types/fl/flashcards/versions/1.1.2/manifest.json +169 -0
  104. package/data/project-types/fl/flashcards/versions/1.1.2/mission.md +6 -0
  105. package/data/project-types/fl/flashcards/versions/1.1.2/pages/review/index.html +477 -0
  106. package/data/project-types/fl/flashcards/versions/1.2.0/about.md +8 -0
  107. package/data/project-types/fl/flashcards/versions/1.2.0/deck.json +7 -0
  108. package/data/project-types/fl/flashcards/versions/1.2.0/manifest.json +207 -0
  109. package/data/project-types/fl/flashcards/versions/1.2.0/mission.md +6 -0
  110. package/data/project-types/fl/flashcards/versions/1.2.0/pages/review/index.html +549 -0
  111. package/data/project-types/go/go/versions/1.0.4/about.md +9 -0
  112. package/data/project-types/go/go/versions/1.0.4/game.json +103 -0
  113. package/data/project-types/go/go/versions/1.0.4/manifest.json +182 -0
  114. package/data/project-types/go/go/versions/1.0.4/mission.md +8 -0
  115. package/data/project-types/go/go/versions/1.0.4/pages/board/index.html +855 -0
  116. package/data/project-types/index.json +1 -1
  117. package/data/project-types/la/language-trainer/versions/1.1.0/about.md +8 -0
  118. package/data/project-types/la/language-trainer/versions/1.1.0/manifest.json +245 -0
  119. package/data/project-types/la/language-trainer/versions/1.1.0/mission.md +4 -0
  120. package/data/project-types/la/language-trainer/versions/1.1.0/pages/dashboard/index.html +468 -0
  121. package/data/project-types/la/language-trainer/versions/1.1.0/progress.json +10 -0
  122. package/data/project-types/la/language-trainer/versions/1.1.0/reviews.json +3 -0
  123. package/data/project-types/la/language-trainer/versions/1.1.0/scenarios.json +84 -0
  124. package/data/project-types/raw-index.json +1 -1
  125. package/data/project-types/wo/word-clues/manifest.json +20 -0
  126. package/data/project-types/wo/word-clues/versions/1.0.0/about.md +7 -0
  127. package/data/project-types/wo/word-clues/versions/1.0.0/game.json +14 -0
  128. package/data/project-types/wo/word-clues/versions/1.0.0/manifest.json +205 -0
  129. package/data/project-types/wo/word-clues/versions/1.0.0/mission.md +3 -0
  130. package/data/project-types/wo/word-clues/versions/1.0.0/pages/board/index.html +399 -0
  131. package/data/project-types/wo/word-clues/versions/1.0.0/words.json +216 -0
  132. package/package.json +5 -3
  133. package/schemas/craftbook-doc.schema.json +14 -0
  134. package/schemas/craftbook-template-version.schema.json +14 -0
  135. package/schemas/craftbook-test.schema.json +4 -1
  136. package/schemas/image-model-version.schema.json +2 -1
  137. package/schemas/project-type-version.schema.json +131 -0
@@ -0,0 +1,323 @@
1
+ {
2
+ "id": "narrated-slideshow",
3
+ "name": "Animated Content Slideshow",
4
+ "description": "Turn source content into a real MP4 slideshow video and animated GIF without recruiting a Developer to build an HTML player. A planner locks the story and one message per scene. A copywriter writes {{sourceOutputPath}} as ordinary Markdown with one H1 per scene. A video specialist uses the pre-authorized DocBlocks toolset to perform one atomic MP4+GIF conversion, preview representative frames, repair the Markdown when needed, and save {{workPath}}/slideshow.mp4 and {{workPath}}/slideshow.gif in the artifacts drawer.\n\nThe source of truth is Markdown. DocBlocks selects compatible templates automatically; get_authoring_context is optional when exact animation, theme, or target guidance is useful. The rendered targets require the DocBlocks media runtime (Chromium and FFmpeg); if unavailable, report that blocker instead of substituting HTML.\n\nWorking files under {{workPath}}/, reviews/, and reports/ live in the project artifacts drawer and must be read and written with the artifact tools. User-facing source files remain in the workspace.\n\nPreview review checks content and available rendered evidence. Reconstructed Office/PDF views do not prove native layout; a media thumbnail does not prove full playback. The final handoff states these review limits.",
5
+ "entryStepId": "outline",
6
+ "triggers": [
7
+ "animated slideshow",
8
+ "turn this content into a video",
9
+ "make an animated gif from this content",
10
+ "content to mp4",
11
+ "markdown to video",
12
+ "explainer slideshow",
13
+ "make a video from slides"
14
+ ],
15
+ "toolsets": [
16
+ {
17
+ "toolsetId": "docblocks",
18
+ "sourceId": "bundled",
19
+ "autoAllow": true,
20
+ "reason": "convert {{sourceOutputPath}} to MP4 and animated GIF, preview frames, and save both rendered files without a prompt per call"
21
+ }
22
+ ],
23
+ "paramSchema": {
24
+ "type": "object",
25
+ "properties": {
26
+ "workPath": {
27
+ "type": "string",
28
+ "title": "Working folder",
29
+ "description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
30
+ "default": "{{task.dir}}",
31
+ "askUser": false
32
+ },
33
+ "sourceOutputPath": {
34
+ "type": "string",
35
+ "title": "Editable source path",
36
+ "description": "Workspace-relative Markdown source path. The default keeps each task separate; choose an existing path only when intentionally revising it.",
37
+ "default": "slideshows/task-{{task.num}}/slideshow.md",
38
+ "askUser": false
39
+ },
40
+ "topic": {
41
+ "type": "string",
42
+ "title": "Topic",
43
+ "description": "The subject, audience, and any details you want the crew to include.",
44
+ "fromMessage": true
45
+ }
46
+ }
47
+ },
48
+ "steps": [
49
+ {
50
+ "id": "outline",
51
+ "name": "Outline the scenes",
52
+ "description": "Lock the audience, story arc, one message per scene, and media acceptance criteria.",
53
+ "prompt": "Plan the animated slideshow before authoring it. 1. Identify the audience, viewing context, aspect/orientation, and one takeaway. 2. Draft 6-12 scenes unless the user requests another length: each scene needs a title, one message, 2-4 short on-screen points, and an optional caption line. 3. Mark where an existing image or small table genuinely helps; do not invent or download unapproved assets. 4. Choose landscape or portrait and a restrained motion style. 5. Write acceptance criteria: every outlined scene appears once and in order, text stays readable at video size, source facts remain grounded, frames show a consistent theme, the MP4 plays, the GIF loops, and both real files are saved in artifacts. Write {{workPath}}/outline.md and call write_task_note with scene count, orientation, and takeaway. Do not build HTML or media bytes.\n\nStore `{{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.\n\nRead an exact workspace DOCX, PPTX, PDF, or XLSX source with `read_doc_as_markdown`; use `read_file` for text or Markdown. Keep the original file path in citations. Never interpret binary bytes as text or substitute a similarly named file.",
54
+ "suggestedRole": "planner",
55
+ "toolPolicy": {
56
+ "disallowToolsets": [
57
+ "docblocks"
58
+ ],
59
+ "disallowBuiltinToolsets": [
60
+ "ai-apps",
61
+ "archives",
62
+ "audio",
63
+ "browser-automation",
64
+ "code-execution",
65
+ "craftbooks",
66
+ "data-tables",
67
+ "entity-intel",
68
+ "git",
69
+ "image-intel",
70
+ "images",
71
+ "role-delegation",
72
+ "role-delegation-escalation",
73
+ "security-intel",
74
+ "team-management",
75
+ "videos",
76
+ "web",
77
+ "workspace-fs-write"
78
+ ],
79
+ "outputMedium": "artifact",
80
+ "additionalOutputMedia": [
81
+ "task-note"
82
+ ]
83
+ },
84
+ "advanceWhen": {
85
+ "file": "{{workPath}}/outline.md",
86
+ "minBytes": 1,
87
+ "sniff": "nonempty",
88
+ "artifact": true
89
+ },
90
+ "gate": {
91
+ "at": "completion",
92
+ "checks": [
93
+ {
94
+ "kind": "minBytes",
95
+ "file": "{{workPath}}/outline.md",
96
+ "bytes": 180,
97
+ "artifact": true
98
+ },
99
+ {
100
+ "kind": "sniff",
101
+ "file": "{{workPath}}/outline.md",
102
+ "sniff": "nonempty",
103
+ "artifact": true
104
+ }
105
+ ],
106
+ "onReject": "outline",
107
+ "maxAttempts": 3
108
+ },
109
+ "next": "write"
110
+ },
111
+ {
112
+ "id": "write",
113
+ "name": "Write the Markdown slideshow",
114
+ "description": "Write {{sourceOutputPath}} with one H1 heading per scene.",
115
+ "prompt": "Write {{sourceOutputPath}} following {{workPath}}/outline.md. 1. Use exactly one `#` level-one heading per scene; each H1 is a deliberate scene boundary. Do not add `---` separators unless a visible horizontal rule is intended. 2. Under each H1, use 2-4 short bullet phrases, a compact table, or a brief caption—not paragraphs. 3. Bold the load-bearing fact or phrase. 4. Use only source-grounded facts and existing workspace assets with meaningful alt text. 5. Keep the first scene a title/setup and the final scene the takeaway or next action. 6. On loop-back, repair only the frames the reviewer names. Call write_task_note with the path and H1 scene count. Do not create HTML, JavaScript, MP4, GIF, or base64.\n\nOpen `{{workPath}}/outline.md` from the artifacts drawer with `read_artifact` before working. Use the explicit content layout on every scene that has body content: `# Scene title {[content]}`. This keeps lists and tables visible in the native video export; an unannotated metrics-table scene can become a title-only card even when its Markdown preview contains the table. Prefer short before/after bullets for small screens; use a compact table only when it remains readable. Do not remove source facts to make a layout fit.",
116
+ "suggestedRole": "copywriter",
117
+ "toolPolicy": {
118
+ "disallowToolsets": [
119
+ "docblocks"
120
+ ],
121
+ "disallowBuiltinToolsets": [
122
+ "ai-apps",
123
+ "archives",
124
+ "audio",
125
+ "browser-automation",
126
+ "code-execution",
127
+ "craftbooks",
128
+ "data-tables",
129
+ "entity-intel",
130
+ "git",
131
+ "image-intel",
132
+ "images",
133
+ "role-delegation",
134
+ "role-delegation-escalation",
135
+ "security-intel",
136
+ "team-management",
137
+ "videos",
138
+ "web"
139
+ ],
140
+ "outputMedium": "workspace",
141
+ "additionalOutputMedia": [
142
+ "task-note"
143
+ ]
144
+ },
145
+ "consumes": [
146
+ {
147
+ "file": "{{workPath}}/outline.md",
148
+ "artifact": true
149
+ }
150
+ ],
151
+ "advanceWhen": {
152
+ "file": "{{sourceOutputPath}}",
153
+ "minBytes": 1,
154
+ "sniff": "nonempty"
155
+ },
156
+ "gate": {
157
+ "at": "completion",
158
+ "checks": [
159
+ {
160
+ "kind": "minBytes",
161
+ "file": "{{sourceOutputPath}}",
162
+ "bytes": 650
163
+ },
164
+ {
165
+ "kind": "contains",
166
+ "file": "{{sourceOutputPath}}",
167
+ "pattern": "(?:^|\\n)#\\s+\\S",
168
+ "label": "at least one H1 scene heading"
169
+ }
170
+ ],
171
+ "onReject": "write",
172
+ "maxAttempts": 4
173
+ },
174
+ "next": "publish",
175
+ "authoring": "squisq-slideshow"
176
+ },
177
+ {
178
+ "id": "publish",
179
+ "name": "Publish the video and GIF",
180
+ "description": "Convert the approved source, inspect and preview it, and save the real binary deliverables with review evidence.",
181
+ "prompt": "Publish the approved Markdown as real GIF and MP4 files. First call `list_roots` and read the approved `{{sourceOutputPath}}` with `read_file`; read `{{workPath}}/outline.md` with `read_artifact`. Use the read-enabled workspace root for the source and write-enabled artifacts root for outputs. Inspect the Markdown source with `inspect_document` and preview its scenes in batches of at most four.\n\nRender the two formats in SEPARATE `convert_document` calls so each has its own operation budget. Use source { \"kind\": \"file\", \"rootId\": <workspace root id>, \"path\": \"{{sourceOutputPath}}\" } and autoTemplates: true. For a landscape slideshow, start with targets: [{ \"format\": \"gif\", \"width\": 640, \"height\": 360, \"fps\": 6, \"animationsEnabled\": true, \"loop\": 0 }] and then targets: [{ \"format\": \"mp4\", \"width\": 960, \"height\": 540, \"fps\": 8, \"animationsEnabled\": true }]. For portrait, swap width and height. These are useful delivery defaults for animated text slides; honor an explicit user resolution/fps request within the tool's stated limits. On a runtime timeout retry the affected format once at lower dimensions/fps, then record the exact blocker. Use only fields listed in the tool schema; orientation is not an aspectRatio string and captions are controlled by captionStyle when requested.\n\nFor EACH successful conversion, call `get_conversion_report` with its returned artifactUri, then `preview_document` with source { \"kind\": \"artifact\", \"uri\": <returned URI> } and maxItems: 1. MP4/GIF support native first-frame previews, not document-text import: do not call `inspect_document` on video or GIF bytes. Review scene content/order from the Markdown previews and report first-frame/native metadata separately. A first frame cannot prove full-video timing, motion, looping, or the final scene.\n\nSave the GIF to `{{workPath}}/slideshow.gif` and MP4 to `{{workPath}}/slideshow.mp4` with `save_artifact` in the artifacts root, initially using ifExists: \"error\". If replacing a previously saved output, use its previously returned saved hash as expectedSha256; if the hash is unavailable, record the blocker instead of guessing. Save each successful artifact before another step/process takes over. Use only current-session artifact URIs; reopen saved media with file sources for later preview. If source content fails, leave precise task notes and route to write; do not rewrite Markdown during publishing. Once BOTH files are saved, note the paths, hashes, diagnostics and playback-review limits, then advance to evaluate. Never substitute HTML, renamed Markdown or fabricated binary files. Before converting, confirm body-bearing scenes use the explicit `{[content]}` heading layout. If a table/list scene lacks it, route that precise authoring repair to write. Source previews and native exports can choose different default layouts, so a source-preview PASS alone does not establish native content survival.",
182
+ "suggestedRole": "designer",
183
+ "toolPolicy": {
184
+ "disallowBuiltinToolsets": [
185
+ "ai-apps",
186
+ "archives",
187
+ "audio",
188
+ "browser-automation",
189
+ "craftbooks",
190
+ "data-tables",
191
+ "entity-intel",
192
+ "git",
193
+ "image-intel",
194
+ "images",
195
+ "role-delegation",
196
+ "role-delegation-escalation",
197
+ "security-intel",
198
+ "team-management",
199
+ "videos",
200
+ "web",
201
+ "workspace-fs-write"
202
+ ],
203
+ "outputMedium": "artifact",
204
+ "additionalOutputMedia": [
205
+ "task-note"
206
+ ]
207
+ },
208
+ "consumes": [
209
+ {
210
+ "file": "{{workPath}}/outline.md",
211
+ "artifact": true
212
+ },
213
+ {
214
+ "file": "{{sourceOutputPath}}"
215
+ }
216
+ ],
217
+ "advanceWhen": {
218
+ "file": "{{workPath}}/slideshow.mp4",
219
+ "minBytes": 1,
220
+ "artifact": true
221
+ },
222
+ "gate": {
223
+ "at": "completion",
224
+ "checks": [
225
+ {
226
+ "kind": "minBytes",
227
+ "file": "{{workPath}}/slideshow.mp4",
228
+ "bytes": 1000,
229
+ "artifact": true
230
+ },
231
+ {
232
+ "kind": "minBytes",
233
+ "file": "{{workPath}}/slideshow.gif",
234
+ "bytes": 1000,
235
+ "artifact": true
236
+ }
237
+ ],
238
+ "onReject": "publish",
239
+ "maxAttempts": 4
240
+ },
241
+ "next": "evaluate"
242
+ },
243
+ {
244
+ "id": "evaluate",
245
+ "name": "Evaluate",
246
+ "description": "Review saved-file integrity and content fidelity; document the limits of reconstructed or first-frame previews.",
247
+ "prompt": "Read `{{workPath}}/outline.md` with `read_artifact`, read `{{sourceOutputPath}}` with `read_file`, and read publishing notes with `read_task_notes`. Confirm the outlined scene count and order, supplied facts, short on-screen copy, and final next actions. Use `list_roots` and `inspect_document` on the Markdown source, with source previews when helpful. Reopen the saved `{{workPath}}/slideshow.mp4` and `{{workPath}}/slideshow.gif` using file sources from the artifacts root and `preview_document`; do not import media bytes through `inspect_document`. These native-extracted images show the first frame only. Check the recorded conversion options and save hashes, and distinguish source scene coverage from actual full playback. First-frame-only verification is a disclosed limitation, not by itself a content failure. Use `write_task_note` for the review, with explicit PASS/FAIL criteria, evidence, and any unverified playback properties. Route content defects to write and missing/corrupt outputs to publish. Advance only when the requested files exist and the supported checks pass; do not claim full animation or loop playback was visually reviewed. On PASS, call `advance_task_step` with next: \"finish\". Use next: \"write\" only for an identified source-content failure, or next: \"publish\" for an identified conversion/save failure.",
248
+ "suggestedRole": "reviewer",
249
+ "toolPolicy": {
250
+ "disallowBuiltinToolsets": [
251
+ "ai-apps",
252
+ "archives",
253
+ "audio",
254
+ "browser-automation",
255
+ "code-execution",
256
+ "craftbooks",
257
+ "data-tables",
258
+ "entity-intel",
259
+ "git",
260
+ "image-intel",
261
+ "images",
262
+ "role-delegation",
263
+ "role-delegation-escalation",
264
+ "security-intel",
265
+ "team-management",
266
+ "videos",
267
+ "web",
268
+ "workspace-fs-write"
269
+ ],
270
+ "outputMedium": "task-note"
271
+ },
272
+ "consumes": [
273
+ {
274
+ "file": "{{workPath}}/outline.md",
275
+ "artifact": true
276
+ }
277
+ ],
278
+ "next": "finish"
279
+ },
280
+ {
281
+ "id": "finish",
282
+ "name": "Finish",
283
+ "description": "Deliver the saved files with the recorded review evidence and limits.",
284
+ "prompt": "Read the review evidence with `read_task_notes`. Write a concise DONE summary naming the editable Markdown source `{{sourceOutputPath}}` and the saved deliverables `{{workPath}}/slideshow.gif`, `{{workPath}}/slideshow.mp4`. Include available native counts and the preview basis, and carry forward any native-layout or playback properties that remain unverified. Do not open binary files with `read_artifact` or claim an unavailable check passed.",
285
+ "suggestedRole": "designer",
286
+ "toolPolicy": {
287
+ "disallowToolsets": [
288
+ "docblocks"
289
+ ],
290
+ "disallowBuiltinToolsets": [
291
+ "ai-apps",
292
+ "archives",
293
+ "audio",
294
+ "browser-automation",
295
+ "code-execution",
296
+ "craftbooks",
297
+ "data-tables",
298
+ "entity-intel",
299
+ "git",
300
+ "image-intel",
301
+ "images",
302
+ "role-delegation",
303
+ "role-delegation-escalation",
304
+ "security-intel",
305
+ "team-management",
306
+ "videos",
307
+ "web",
308
+ "workspace-fs-write"
309
+ ],
310
+ "outputMedium": "task-note"
311
+ },
312
+ "consumes": [
313
+ {
314
+ "file": "{{sourceOutputPath}}"
315
+ }
316
+ ],
317
+ "terminal": true
318
+ }
319
+ ],
320
+ "version": "1.1.8",
321
+ "releasedAt": "2026-10-08T20:00:00.000Z",
322
+ "minGezelVersion": "1.26233"
323
+ }
@@ -0,0 +1,217 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Animated Content Slideshow workflow eval",
4
+ "objective": "Run the complete plan, verify source-grounded Markdown and terminal task completion, and exercise DocBlocks convert/preview/save with valid MP4/GIF fixture bytes.",
5
+ "tags": [
6
+ "media"
7
+ ],
8
+ "prompt": "Use the Animated Content Slideshow plan to make a seven-scene operations update about the Boreal Desk Returns Pilot from source/brief.md. Save the Markdown source at slideshows/eval/slideshow.md, and the finished MP4 and animated GIF in the artifacts drawer at tasks/eval/slideshow.mp4 and tasks/eval/slideshow.gif.",
9
+ "setup": {
10
+ "projectName": "Animated Content Slideshow Eval",
11
+ "about": "The slideshow source is Markdown and will be rendered to MP4 and GIF by DocBlocks.",
12
+ "missionObjectives": "Create concise, source-grounded slideshows/eval/slideshow.md with one H1 per scene, then preview and save the MP4 and animated GIF artifacts.",
13
+ "files": [
14
+ {
15
+ "path": "source/brief.md",
16
+ "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."
17
+ }
18
+ ],
19
+ "craftbookParams": {
20
+ "sourceOutputPath": "slideshows/eval/slideshow.md",
21
+ "topic": "Boreal Desk Returns Pilot for operations leaders; use source/brief.md.",
22
+ "workPath": "tasks/eval"
23
+ }
24
+ },
25
+ "mocks": [
26
+ {
27
+ "kind": "mcp",
28
+ "id": "docblocks",
29
+ "toolsetId": "docblocks",
30
+ "description": "Deterministic media converter: saves valid MP4 and GIF containers; visual fidelity belongs to a real-converter smoke test.",
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 MP4/GIF authoring guidance.",
58
+ "resultTemplate": {
59
+ "guidance": "One H1 per scene, short on-screen text, and a final next-actions scene."
60
+ }
61
+ },
62
+ {
63
+ "name": "convert_document",
64
+ "description": "Convert approved Markdown to a deterministic MP4/GIF artifact URI.",
65
+ "resultTemplate": {
66
+ "artifacts": [
67
+ {
68
+ "format": "mp4",
69
+ "uri": "mock://docblocks/slideshow.mp4"
70
+ },
71
+ {
72
+ "format": "gif",
73
+ "uri": "mock://docblocks/slideshow.gif"
74
+ }
75
+ ],
76
+ "diagnostics": []
77
+ }
78
+ },
79
+ {
80
+ "name": "preview_document",
81
+ "description": "Return deterministic page-preview evidence.",
82
+ "resultTemplate": {
83
+ "previewed": true,
84
+ "overflow": false
85
+ }
86
+ },
87
+ {
88
+ "name": "save_artifact",
89
+ "description": "Save one converted media artifact to the supplied destination path.",
90
+ "resultTemplate": {
91
+ "ok": true,
92
+ "bytes": 2100,
93
+ "sha256": "4444444444444444444444444444444444444444444444444444444444444444"
94
+ },
95
+ "writeFixture": {
96
+ "surface": "artifact",
97
+ "pathArgument": "destination.path",
98
+ "fixture": "minimal-media"
99
+ }
100
+ },
101
+ {
102
+ "name": "inspect_document",
103
+ "description": "Inspect a Markdown source document. Native media must use preview_document instead.",
104
+ "resultTemplate": {
105
+ "format": "markdown",
106
+ "headings": [],
107
+ "diagnostics": [],
108
+ "inspectionBasis": "Read the source file for content; this simulator provides structural orchestration only."
109
+ }
110
+ },
111
+ {
112
+ "name": "get_conversion_report",
113
+ "description": "Retrieve diagnostics and fidelity limitations for a conversion artifact URI.",
114
+ "resultTemplate": {
115
+ "diagnostics": [],
116
+ "fidelity": {
117
+ "basis": "deterministic fixture",
118
+ "limitations": [
119
+ "This eval does not measure rendering fidelity or full playback."
120
+ ]
121
+ }
122
+ }
123
+ }
124
+ ]
125
+ }
126
+ ],
127
+ "success": {
128
+ "summary": "The full workflow completes with grounded scene source and saved MP4 and GIF containers.",
129
+ "deliverables": [
130
+ {
131
+ "path": "slideshows/eval/slideshow.md",
132
+ "kind": "markdown-doc",
133
+ "minBytes": 650,
134
+ "checks": [
135
+ {
136
+ "kind": "contains",
137
+ "file": "slideshows/eval/slideshow.md",
138
+ "pattern": "(?:^|\\n)#\\s+.+",
139
+ "flags": "m"
140
+ },
141
+ {
142
+ "kind": "contains",
143
+ "file": "slideshows/eval/slideshow.md",
144
+ "pattern": "18\\s+SKUs|18\\s+hours|6\\s+hours|14\\.2%|8\\.9%",
145
+ "flags": "i"
146
+ },
147
+ {
148
+ "kind": "contains",
149
+ "file": "slideshows/eval/slideshow.md",
150
+ "pattern": "automated status emails|barcode-exception training|weekly Finance exception export",
151
+ "flags": "i"
152
+ },
153
+ {
154
+ "kind": "notContains",
155
+ "file": "slideshows/eval/slideshow.md",
156
+ "pattern": "<html|<script|<style|base64",
157
+ "flags": "i"
158
+ }
159
+ ]
160
+ }
161
+ ],
162
+ "taskGraph": {
163
+ "requireCraftbookTask": true,
164
+ "requireTerminalStep": true
165
+ },
166
+ "checks": [
167
+ {
168
+ "kind": "binaryDocument",
169
+ "file": "tasks/eval/slideshow.mp4",
170
+ "artifact": true,
171
+ "minBytes": 1000
172
+ },
173
+ {
174
+ "kind": "binaryDocument",
175
+ "file": "tasks/eval/slideshow.gif",
176
+ "artifact": true,
177
+ "minBytes": 1000
178
+ }
179
+ ],
180
+ "mocks": [
181
+ {
182
+ "service": "docblocks",
183
+ "requiredTools": [
184
+ "convert_document",
185
+ "preview_document",
186
+ "save_artifact"
187
+ ]
188
+ }
189
+ ]
190
+ },
191
+ "rubric": {
192
+ "artifact": {
193
+ "path": "slideshows/eval/slideshow.md",
194
+ "kind": "markdown"
195
+ },
196
+ "axes": [
197
+ {
198
+ "name": "story",
199
+ "description": "The scenes form a coherent update with one message per scene and a clear final action."
200
+ },
201
+ {
202
+ "name": "grounding",
203
+ "description": "Every metric and action comes from the seeded brief."
204
+ },
205
+ {
206
+ "name": "renderability",
207
+ "description": "One H1 per scene and concise blocks make the source suitable for rendered MP4/GIF output."
208
+ }
209
+ ]
210
+ },
211
+ "qualityFocus": [
212
+ "one H1 per scene",
213
+ "source grounding",
214
+ "no HTML intermediary"
215
+ ],
216
+ "mode": "workflow"
217
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "craftbook-template",
4
+ "id": "photo-library-nightly",
5
+ "role": "maintenance-review",
6
+ "category": "media",
7
+ "name": "Nightly Photo Albums",
8
+ "description": "The overnight pass over a photo folder. Finds the outings you photographed recently that have no album yet, picks the frames that tell each one, and leaves an album for every outing: a Squisq slideshow with captions and gentle motion that you can play, edit, and export to video. Reads the photo index (capture dates, cameras, captions) instead of opening files, and never moves, copies, renames or deletes a photo. No dated photos yet? It says so and makes nothing up.",
9
+ "tags": [
10
+ "photos",
11
+ "albums",
12
+ "slideshow",
13
+ "night-shift",
14
+ "family"
15
+ ],
16
+ "maintainer": {
17
+ "name": "Gezel"
18
+ },
19
+ "license": "MIT",
20
+ "yankedVersions": [],
21
+ "workflow": "build-loop"
22
+ }