@bendyline/gilde 0.1.26 → 0.1.28

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 (571) hide show
  1. package/authoring/chat-models/README.md +5 -0
  2. package/authoring/chat-models/deepseek-v4-flash-284b-mxfp4.json +4 -0
  3. package/authoring/chat-models/deepseek-v4-flash-284b-q2.json +4 -0
  4. package/authoring/chat-models/deepseek-v4-flash-284b-q2q4.json +4 -0
  5. package/authoring/chat-models/glm-5.2-754b-q2.json +4 -0
  6. package/authoring/gstack/evals/investigate.json +1 -0
  7. package/authoring/gstack/evals/plan-ceo-review.json +1 -0
  8. package/authoring/gstack/wave.json +2 -2
  9. package/data/chat-models/de/deepseek-v4-flash-284b-mxfp4/manifest.json +4 -0
  10. package/data/chat-models/de/deepseek-v4-flash-284b-q2/manifest.json +4 -0
  11. package/data/chat-models/de/deepseek-v4-flash-284b-q2q4/manifest.json +4 -0
  12. package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +4 -0
  13. package/data/chat-models/index.json +1 -1
  14. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.1/craftbook.json +141 -0
  15. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.1/test.json +115 -0
  16. package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.1/craftbook.json +141 -0
  17. package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.1/test.json +186 -0
  18. package/data/craftbook-templates/ac/accessibility-retrofit/versions/1.0.1/craftbook.json +110 -0
  19. package/data/craftbook-templates/ac/accessibility-retrofit/versions/1.0.1/test.json +97 -0
  20. package/data/craftbook-templates/ad/ad-variations/versions/1.0.1/craftbook.json +105 -0
  21. package/data/craftbook-templates/ad/ad-variations/versions/1.0.1/test.json +108 -0
  22. package/data/craftbook-templates/al/album-curate/versions/1.0.1/craftbook.json +115 -0
  23. package/data/craftbook-templates/al/album-curate/versions/1.0.1/test.json +147 -0
  24. package/data/craftbook-templates/al/alert-rules/versions/1.0.1/craftbook.json +101 -0
  25. package/data/craftbook-templates/al/alert-rules/versions/1.0.1/test.json +145 -0
  26. package/data/craftbook-templates/al/alt-text-pass/versions/1.0.1/craftbook.json +142 -0
  27. package/data/craftbook-templates/al/alt-text-pass/versions/1.0.1/test.json +97 -0
  28. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.3/craftbook.json +226 -0
  29. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.3/test.json +157 -0
  30. package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.1/craftbook.json +146 -0
  31. package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.1/test.json +102 -0
  32. package/data/craftbook-templates/an/annual-document-review/versions/1.0.1/craftbook.json +140 -0
  33. package/data/craftbook-templates/an/annual-document-review/versions/1.0.1/test.json +110 -0
  34. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.1/craftbook.json +141 -0
  35. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.1/test.json +120 -0
  36. package/data/craftbook-templates/ap/api-contract-review/versions/1.1.1/craftbook.json +141 -0
  37. package/data/craftbook-templates/ap/api-contract-review/versions/1.1.1/test.json +115 -0
  38. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.1/craftbook.json +158 -0
  39. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.1/test.json +136 -0
  40. package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.1/craftbook.json +129 -0
  41. package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.1/test.json +103 -0
  42. package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.1/craftbook.json +123 -0
  43. package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.1/test.json +103 -0
  44. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.3/craftbook.json +210 -0
  45. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.3/test.json +221 -0
  46. package/data/craftbook-templates/au/auth-flow/versions/1.0.1/craftbook.json +148 -0
  47. package/data/craftbook-templates/au/auth-flow/versions/1.0.1/test.json +140 -0
  48. package/data/craftbook-templates/au/automation-recipe/versions/1.0.1/craftbook.json +164 -0
  49. package/data/craftbook-templates/au/automation-recipe/versions/1.0.1/test.json +296 -0
  50. package/data/craftbook-templates/ba/backup-routine/versions/1.0.1/craftbook.json +148 -0
  51. package/data/craftbook-templates/ba/backup-routine/versions/1.0.1/test.json +108 -0
  52. package/data/craftbook-templates/bl/blog-post/versions/1.0.1/craftbook.json +143 -0
  53. package/data/craftbook-templates/bl/blog-post/versions/1.0.1/test.json +118 -0
  54. package/data/craftbook-templates/bo/board-deck/versions/1.0.1/craftbook.json +141 -0
  55. package/data/craftbook-templates/bo/board-deck/versions/1.0.1/test.json +100 -0
  56. package/data/craftbook-templates/bo/board-game-web/versions/1.0.1/craftbook.json +150 -0
  57. package/data/craftbook-templates/bo/board-game-web/versions/1.0.1/test.json +99 -0
  58. package/data/craftbook-templates/bo/booking-automation/versions/1.0.1/craftbook.json +158 -0
  59. package/data/craftbook-templates/bo/booking-automation/versions/1.0.1/test.json +162 -0
  60. package/data/craftbook-templates/br/branding-website/versions/1.1.1/craftbook.json +211 -0
  61. package/data/craftbook-templates/br/branding-website/versions/1.1.1/test.json +164 -0
  62. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.1/craftbook.json +107 -0
  63. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.1/test.json +103 -0
  64. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.3/craftbook.json +417 -0
  65. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.3/test.json +376 -0
  66. package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.2/craftbook.json +164 -0
  67. package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.2/test.json +92 -0
  68. package/data/craftbook-templates/ca/calendar-brief/versions/1.0.1/craftbook.json +107 -0
  69. package/data/craftbook-templates/ca/calendar-brief/versions/1.0.1/test.json +102 -0
  70. package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.1/craftbook.json +110 -0
  71. package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.1/test.json +106 -0
  72. package/data/craftbook-templates/ca/case-study/versions/1.0.1/craftbook.json +143 -0
  73. package/data/craftbook-templates/ca/case-study/versions/1.0.1/test.json +112 -0
  74. package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.1/craftbook.json +151 -0
  75. package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.1/test.json +105 -0
  76. package/data/craftbook-templates/ch/changelog-cut/versions/1.0.1/craftbook.json +113 -0
  77. package/data/craftbook-templates/ch/changelog-cut/versions/1.0.1/test.json +106 -0
  78. package/data/craftbook-templates/ch/changelog-writeup/versions/1.0.1/craftbook.json +107 -0
  79. package/data/craftbook-templates/ch/changelog-writeup/versions/1.0.1/test.json +129 -0
  80. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.2/craftbook.json +123 -0
  81. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.2/test.json +155 -0
  82. package/data/craftbook-templates/ch/chapter-weave/versions/1.0.1/craftbook.json +74 -0
  83. package/data/craftbook-templates/ch/chapter-weave/versions/1.0.1/test.json +98 -0
  84. package/data/craftbook-templates/ch/character-sheet/versions/1.0.1/craftbook.json +82 -0
  85. package/data/craftbook-templates/ch/character-sheet/versions/1.0.1/test.json +143 -0
  86. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.1/craftbook.json +121 -0
  87. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.1/test.json +178 -0
  88. package/data/craftbook-templates/ch/chart-pack/versions/1.0.1/craftbook.json +148 -0
  89. package/data/craftbook-templates/ch/chart-pack/versions/1.0.1/test.json +104 -0
  90. package/data/craftbook-templates/ch/chrome-extension/versions/1.0.1/craftbook.json +148 -0
  91. package/data/craftbook-templates/ch/chrome-extension/versions/1.0.1/test.json +97 -0
  92. package/data/craftbook-templates/ci/ci-pipeline/versions/1.0.1/craftbook.json +132 -0
  93. package/data/craftbook-templates/ci/ci-pipeline/versions/1.0.1/test.json +162 -0
  94. package/data/craftbook-templates/ci/citation-audit/versions/1.0.1/craftbook.json +146 -0
  95. package/data/craftbook-templates/ci/citation-audit/versions/1.0.1/test.json +149 -0
  96. package/data/craftbook-templates/cl/cli-tool/versions/1.1.1/craftbook.json +147 -0
  97. package/data/craftbook-templates/cl/cli-tool/versions/1.1.1/test.json +128 -0
  98. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.1/craftbook.json +153 -0
  99. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.1/test.json +116 -0
  100. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.1/craftbook.json +153 -0
  101. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.1/test.json +119 -0
  102. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.1/craftbook.json +141 -0
  103. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.1/test.json +226 -0
  104. package/data/craftbook-templates/co/company-research-brief/versions/1.0.1/craftbook.json +139 -0
  105. package/data/craftbook-templates/co/company-research-brief/versions/1.0.1/test.json +97 -0
  106. package/data/craftbook-templates/co/comparison-matrix/versions/1.0.1/craftbook.json +153 -0
  107. package/data/craftbook-templates/co/comparison-matrix/versions/1.0.1/test.json +109 -0
  108. package/data/craftbook-templates/co/compat-check/versions/1.0.1/craftbook.json +146 -0
  109. package/data/craftbook-templates/co/compat-check/versions/1.0.1/test.json +145 -0
  110. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.1/craftbook.json +140 -0
  111. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.1/test.json +116 -0
  112. package/data/craftbook-templates/co/config-scaffold/versions/1.0.1/craftbook.json +105 -0
  113. package/data/craftbook-templates/co/config-scaffold/versions/1.0.1/test.json +120 -0
  114. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.1/craftbook.json +141 -0
  115. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.1/test.json +149 -0
  116. package/data/craftbook-templates/co/content-deck/versions/1.2.1/craftbook.json +206 -0
  117. package/data/craftbook-templates/co/content-deck/versions/1.2.1/test.json +169 -0
  118. package/data/craftbook-templates/co/contract-template/versions/1.0.1/craftbook.json +145 -0
  119. package/data/craftbook-templates/co/contract-template/versions/1.0.1/test.json +102 -0
  120. package/data/craftbook-templates/co/cookbook-layout/versions/1.0.1/craftbook.json +121 -0
  121. package/data/craftbook-templates/co/cookbook-layout/versions/1.0.1/test.json +159 -0
  122. package/data/craftbook-templates/co/copy-review/versions/1.0.1/craftbook.json +141 -0
  123. package/data/craftbook-templates/co/copy-review/versions/1.0.1/test.json +102 -0
  124. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.1/craftbook.json +210 -0
  125. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.1/test.json +187 -0
  126. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.1/craftbook.json +146 -0
  127. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.1/test.json +156 -0
  128. package/data/craftbook-templates/co/cover-letter/versions/1.0.1/craftbook.json +107 -0
  129. package/data/craftbook-templates/co/cover-letter/versions/1.0.1/test.json +100 -0
  130. package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.1/craftbook.json +101 -0
  131. package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.1/test.json +207 -0
  132. package/data/craftbook-templates/cr/cron-job/versions/1.0.1/craftbook.json +147 -0
  133. package/data/craftbook-templates/cr/cron-job/versions/1.0.1/test.json +104 -0
  134. package/data/craftbook-templates/cr/crossword-forge/versions/1.0.1/craftbook.json +164 -0
  135. package/data/craftbook-templates/cr/crossword-forge/versions/1.0.1/test.json +135 -0
  136. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.2/craftbook.json +101 -0
  137. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.2/test.json +102 -0
  138. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.1/craftbook.json +107 -0
  139. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.1/test.json +114 -0
  140. package/data/craftbook-templates/da/data-dictionary/versions/1.0.1/craftbook.json +107 -0
  141. package/data/craftbook-templates/da/data-dictionary/versions/1.0.1/test.json +101 -0
  142. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.1/craftbook.json +148 -0
  143. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.1/test.json +104 -0
  144. package/data/craftbook-templates/da/data-join-merge/versions/1.0.1/craftbook.json +101 -0
  145. package/data/craftbook-templates/da/data-join-merge/versions/1.0.1/test.json +104 -0
  146. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.2/craftbook.json +148 -0
  147. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.2/test.json +162 -0
  148. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.1/craftbook.json +141 -0
  149. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.1/test.json +326 -0
  150. package/data/craftbook-templates/da/data-to-report/versions/1.0.1/craftbook.json +140 -0
  151. package/data/craftbook-templates/da/data-to-report/versions/1.0.1/test.json +95 -0
  152. package/data/craftbook-templates/da/data-viz-page/versions/1.0.1/craftbook.json +143 -0
  153. package/data/craftbook-templates/da/data-viz-page/versions/1.0.1/test.json +117 -0
  154. package/data/craftbook-templates/da/dataset-clean/versions/1.2.2/craftbook.json +101 -0
  155. package/data/craftbook-templates/da/dataset-clean/versions/1.2.2/test.json +95 -0
  156. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.1/craftbook.json +148 -0
  157. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.1/test.json +104 -0
  158. package/data/craftbook-templates/de/deep-security-review/versions/1.1.1/craftbook.json +211 -0
  159. package/data/craftbook-templates/de/deep-security-review/versions/1.1.1/test.json +157 -0
  160. package/data/craftbook-templates/de/dependency-audit/versions/1.1.1/craftbook.json +141 -0
  161. package/data/craftbook-templates/de/dependency-audit/versions/1.1.1/test.json +108 -0
  162. package/data/craftbook-templates/de/deploy-checklist/versions/1.0.1/craftbook.json +159 -0
  163. package/data/craftbook-templates/de/deploy-checklist/versions/1.0.1/test.json +165 -0
  164. package/data/craftbook-templates/de/design-review/versions/1.0.1/craftbook.json +141 -0
  165. package/data/craftbook-templates/de/design-review/versions/1.0.1/test.json +118 -0
  166. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.3/craftbook.json +431 -0
  167. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.3/test.json +201 -0
  168. package/data/craftbook-templates/di/diagram-from-text/versions/1.0.1/craftbook.json +109 -0
  169. package/data/craftbook-templates/di/diagram-from-text/versions/1.0.1/test.json +97 -0
  170. package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.1/craftbook.json +146 -0
  171. package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.1/test.json +162 -0
  172. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.1/craftbook.json +148 -0
  173. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.1/test.json +104 -0
  174. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.1/craftbook.json +107 -0
  175. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.1/test.json +110 -0
  176. package/data/craftbook-templates/do/dockerize-app/versions/1.0.1/craftbook.json +148 -0
  177. package/data/craftbook-templates/do/dockerize-app/versions/1.0.1/test.json +92 -0
  178. package/data/craftbook-templates/do/docs-site/versions/1.0.1/craftbook.json +143 -0
  179. package/data/craftbook-templates/do/docs-site/versions/1.0.1/test.json +97 -0
  180. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.1/craftbook.json +153 -0
  181. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.1/test.json +132 -0
  182. package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.1/craftbook.json +140 -0
  183. package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.1/test.json +104 -0
  184. package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.1/craftbook.json +146 -0
  185. package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.1/test.json +110 -0
  186. package/data/craftbook-templates/eb/ebook-compile/versions/1.0.1/craftbook.json +143 -0
  187. package/data/craftbook-templates/eb/ebook-compile/versions/1.0.1/test.json +97 -0
  188. package/data/craftbook-templates/ed/edit-notes/versions/1.0.1/craftbook.json +176 -0
  189. package/data/craftbook-templates/ed/edit-notes/versions/1.0.1/test.json +146 -0
  190. package/data/craftbook-templates/em/email-sequence/versions/1.0.1/craftbook.json +142 -0
  191. package/data/craftbook-templates/em/email-sequence/versions/1.0.1/test.json +97 -0
  192. package/data/craftbook-templates/em/email-template/versions/1.0.1/craftbook.json +143 -0
  193. package/data/craftbook-templates/em/email-template/versions/1.0.1/test.json +97 -0
  194. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.3/craftbook.json +403 -0
  195. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.3/test.json +191 -0
  196. package/data/craftbook-templates/ep/episode-plan/versions/1.0.1/craftbook.json +140 -0
  197. package/data/craftbook-templates/ep/episode-plan/versions/1.0.1/test.json +97 -0
  198. package/data/craftbook-templates/es/escalation-playbook/versions/1.0.1/craftbook.json +107 -0
  199. package/data/craftbook-templates/es/escalation-playbook/versions/1.0.1/test.json +110 -0
  200. package/data/craftbook-templates/ev/evidence-brief/versions/1.0.1/craftbook.json +146 -0
  201. package/data/craftbook-templates/ev/evidence-brief/versions/1.0.1/test.json +110 -0
  202. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.3/craftbook.json +433 -0
  203. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.3/test.json +136 -0
  204. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.1/craftbook.json +140 -0
  205. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.1/test.json +104 -0
  206. package/data/craftbook-templates/fa/fact-check/versions/1.0.1/craftbook.json +146 -0
  207. package/data/craftbook-templates/fa/fact-check/versions/1.0.1/test.json +110 -0
  208. package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.1/craftbook.json +74 -0
  209. package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.1/test.json +108 -0
  210. package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.1/craftbook.json +107 -0
  211. package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.1/test.json +110 -0
  212. package/data/craftbook-templates/fa/favicon-set/versions/1.0.1/craftbook.json +146 -0
  213. package/data/craftbook-templates/fa/favicon-set/versions/1.0.1/test.json +103 -0
  214. package/data/craftbook-templates/fe/feature-flag-release/versions/1.0.1/craftbook.json +159 -0
  215. package/data/craftbook-templates/fe/feature-flag-release/versions/1.0.1/test.json +162 -0
  216. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.0.1/craftbook.json +148 -0
  217. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.0.1/test.json +162 -0
  218. package/data/craftbook-templates/fe/feedback-widget/versions/1.0.1/craftbook.json +143 -0
  219. package/data/craftbook-templates/fe/feedback-widget/versions/1.0.1/test.json +97 -0
  220. package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.1/craftbook.json +103 -0
  221. package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.1/test.json +103 -0
  222. package/data/craftbook-templates/fo/forecast-model/versions/1.0.1/craftbook.json +105 -0
  223. package/data/craftbook-templates/fo/forecast-model/versions/1.0.1/test.json +104 -0
  224. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.1/craftbook.json +148 -0
  225. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.1/test.json +162 -0
  226. package/data/craftbook-templates/fo/form-wizard/versions/1.0.1/craftbook.json +110 -0
  227. package/data/craftbook-templates/fo/form-wizard/versions/1.0.1/test.json +110 -0
  228. package/data/craftbook-templates/ga/game-with-screens/versions/1.0.1/craftbook.json +168 -0
  229. package/data/craftbook-templates/ga/game-with-screens/versions/1.0.1/test.json +99 -0
  230. package/data/craftbook-templates/gl/glossary-build/versions/1.0.1/craftbook.json +140 -0
  231. package/data/craftbook-templates/gl/glossary-build/versions/1.0.1/test.json +110 -0
  232. package/data/craftbook-templates/gr/graphql-api/versions/1.0.2/craftbook.json +146 -0
  233. package/data/craftbook-templates/gr/graphql-api/versions/1.0.2/test.json +92 -0
  234. package/data/craftbook-templates/gr/grpc-service/versions/1.0.1/craftbook.json +147 -0
  235. package/data/craftbook-templates/gr/grpc-service/versions/1.0.1/test.json +92 -0
  236. package/data/craftbook-templates/ha/handbook-section/versions/1.0.1/craftbook.json +145 -0
  237. package/data/craftbook-templates/ha/handbook-section/versions/1.0.1/test.json +110 -0
  238. package/data/craftbook-templates/he/hero-image/versions/1.0.1/craftbook.json +154 -0
  239. package/data/craftbook-templates/he/hero-image/versions/1.0.1/test.json +103 -0
  240. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.1/craftbook.json +202 -0
  241. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.1/test.json +128 -0
  242. package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.1/craftbook.json +182 -0
  243. package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.1/test.json +92 -0
  244. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.1/craftbook.json +218 -0
  245. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.1/test.json +176 -0
  246. package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.1/craftbook.json +150 -0
  247. package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.1/test.json +99 -0
  248. package/data/craftbook-templates/ic/icon-pack/versions/1.0.1/craftbook.json +146 -0
  249. package/data/craftbook-templates/ic/icon-pack/versions/1.0.1/test.json +103 -0
  250. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.3/craftbook.json +397 -0
  251. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.3/test.json +141 -0
  252. package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.1/craftbook.json +150 -0
  253. package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.1/test.json +99 -0
  254. package/data/craftbook-templates/im/image-batch-edit/versions/1.0.1/craftbook.json +141 -0
  255. package/data/craftbook-templates/im/image-batch-edit/versions/1.0.1/test.json +103 -0
  256. package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.1/craftbook.json +140 -0
  257. package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.1/test.json +103 -0
  258. package/data/craftbook-templates/im/image-palette-extract/versions/1.0.1/craftbook.json +109 -0
  259. package/data/craftbook-templates/im/image-palette-extract/versions/1.0.1/test.json +97 -0
  260. package/data/craftbook-templates/im/image-seo-rename/versions/1.0.1/craftbook.json +105 -0
  261. package/data/craftbook-templates/im/image-seo-rename/versions/1.0.1/test.json +103 -0
  262. package/data/craftbook-templates/im/image-set-index/versions/1.2.1/craftbook.json +179 -0
  263. package/data/craftbook-templates/im/image-set-index/versions/1.2.1/test.json +180 -0
  264. package/data/craftbook-templates/in/inbox-triage/versions/1.0.1/craftbook.json +140 -0
  265. package/data/craftbook-templates/in/inbox-triage/versions/1.0.1/test.json +104 -0
  266. package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.1/craftbook.json +107 -0
  267. package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.1/test.json +110 -0
  268. package/data/craftbook-templates/in/incident-postmortem/versions/1.0.1/craftbook.json +158 -0
  269. package/data/craftbook-templates/in/incident-postmortem/versions/1.0.1/test.json +109 -0
  270. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.1/craftbook.json +153 -0
  271. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.1/test.json +121 -0
  272. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.1/craftbook.json +143 -0
  273. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.1/test.json +99 -0
  274. package/data/craftbook-templates/in/investigate-root-cause/versions/1.0.1/craftbook.json +141 -0
  275. package/data/craftbook-templates/in/investigate-root-cause/versions/1.0.1/test.json +110 -0
  276. package/data/craftbook-templates/in/invitation-design/versions/1.0.1/craftbook.json +128 -0
  277. package/data/craftbook-templates/in/invitation-design/versions/1.0.1/test.json +121 -0
  278. package/data/craftbook-templates/in/invoice-generator/versions/1.0.1/craftbook.json +110 -0
  279. package/data/craftbook-templates/in/invoice-generator/versions/1.0.1/test.json +97 -0
  280. package/data/craftbook-templates/in/invoice-run/versions/1.1.1/craftbook.json +199 -0
  281. package/data/craftbook-templates/in/invoice-run/versions/1.1.1/test.json +140 -0
  282. package/data/craftbook-templates/index.json +1 -1
  283. package/data/craftbook-templates/it/item-intake/versions/1.0.1/craftbook.json +140 -0
  284. package/data/craftbook-templates/it/item-intake/versions/1.0.1/test.json +145 -0
  285. package/data/craftbook-templates/ju/juice-pass/versions/1.0.1/craftbook.json +116 -0
  286. package/data/craftbook-templates/ju/juice-pass/versions/1.0.1/test.json +116 -0
  287. package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.1/craftbook.json +143 -0
  288. package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.1/test.json +110 -0
  289. package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.1/craftbook.json +148 -0
  290. package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.1/test.json +97 -0
  291. package/data/craftbook-templates/la/landing-copy/versions/1.0.1/craftbook.json +143 -0
  292. package/data/craftbook-templates/la/landing-copy/versions/1.0.1/test.json +110 -0
  293. package/data/craftbook-templates/la/landing-page/versions/1.0.1/craftbook.json +184 -0
  294. package/data/craftbook-templates/la/landing-page/versions/1.0.1/test.json +97 -0
  295. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.1/craftbook.json +140 -0
  296. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.1/test.json +104 -0
  297. package/data/craftbook-templates/li/library-package/versions/1.0.1/craftbook.json +147 -0
  298. package/data/craftbook-templates/li/library-package/versions/1.0.1/test.json +92 -0
  299. package/data/craftbook-templates/li/literature-review/versions/1.0.1/craftbook.json +146 -0
  300. package/data/craftbook-templates/li/literature-review/versions/1.0.1/test.json +110 -0
  301. package/data/craftbook-templates/li/live-browser-qa/versions/1.0.1/craftbook.json +141 -0
  302. package/data/craftbook-templates/li/live-browser-qa/versions/1.0.1/test.json +162 -0
  303. package/data/craftbook-templates/lo/localize-content/versions/1.0.1/craftbook.json +143 -0
  304. package/data/craftbook-templates/lo/localize-content/versions/1.0.1/test.json +110 -0
  305. package/data/craftbook-templates/lo/logo-set/versions/1.0.1/craftbook.json +146 -0
  306. package/data/craftbook-templates/lo/logo-set/versions/1.0.1/test.json +103 -0
  307. package/data/craftbook-templates/ma/market-scan/versions/1.0.1/craftbook.json +146 -0
  308. package/data/craftbook-templates/ma/market-scan/versions/1.0.1/test.json +210 -0
  309. package/data/craftbook-templates/me/meeting-minutes/versions/1.0.1/craftbook.json +108 -0
  310. package/data/craftbook-templates/me/meeting-minutes/versions/1.0.1/test.json +110 -0
  311. package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.1/craftbook.json +107 -0
  312. package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.1/test.json +110 -0
  313. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.1/craftbook.json +107 -0
  314. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.1/test.json +184 -0
  315. package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.1/craftbook.json +109 -0
  316. package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.1/test.json +103 -0
  317. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.1/craftbook.json +115 -0
  318. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.1/test.json +112 -0
  319. package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.1/craftbook.json +147 -0
  320. package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.1/test.json +92 -0
  321. package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.1/craftbook.json +117 -0
  322. package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.1/test.json +99 -0
  323. package/data/craftbook-templates/mo/mock-interview/versions/1.0.1/craftbook.json +139 -0
  324. package/data/craftbook-templates/mo/mock-interview/versions/1.0.1/test.json +110 -0
  325. package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.1/craftbook.json +156 -0
  326. package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.1/test.json +133 -0
  327. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.1/craftbook.json +158 -0
  328. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.1/test.json +197 -0
  329. package/data/craftbook-templates/mo/month-close/versions/1.0.1/craftbook.json +140 -0
  330. package/data/craftbook-templates/mo/month-close/versions/1.0.1/test.json +97 -0
  331. package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.1/craftbook.json +140 -0
  332. package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.1/test.json +117 -0
  333. package/data/craftbook-templates/mo/moodboard/versions/1.0.1/craftbook.json +109 -0
  334. package/data/craftbook-templates/mo/moodboard/versions/1.0.1/test.json +103 -0
  335. package/data/craftbook-templates/mo/morning-brief/versions/1.0.1/craftbook.json +107 -0
  336. package/data/craftbook-templates/mo/morning-brief/versions/1.0.1/test.json +225 -0
  337. package/data/craftbook-templates/mo/morning-report/versions/1.0.1/craftbook.json +152 -0
  338. package/data/craftbook-templates/mo/morning-report/versions/1.0.1/test.json +250 -0
  339. package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.1/craftbook.json +101 -0
  340. package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.1/test.json +103 -0
  341. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.1/craftbook.json +181 -0
  342. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.1/test.json +86 -0
  343. package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.1/craftbook.json +143 -0
  344. package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.1/test.json +110 -0
  345. package/data/craftbook-templates/no/notification-router/versions/1.0.1/craftbook.json +158 -0
  346. package/data/craftbook-templates/no/notification-router/versions/1.0.1/test.json +162 -0
  347. package/data/craftbook-templates/oc/ocr-extract/versions/1.0.1/craftbook.json +137 -0
  348. package/data/craftbook-templates/oc/ocr-extract/versions/1.0.1/test.json +103 -0
  349. package/data/craftbook-templates/of/offer-compare/versions/1.0.1/craftbook.json +106 -0
  350. package/data/craftbook-templates/of/offer-compare/versions/1.0.1/test.json +110 -0
  351. package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.1/craftbook.json +107 -0
  352. package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.1/test.json +110 -0
  353. package/data/craftbook-templates/on/onboarding-flow/versions/1.0.1/craftbook.json +143 -0
  354. package/data/craftbook-templates/on/onboarding-flow/versions/1.0.1/test.json +97 -0
  355. package/data/craftbook-templates/on/oncall-handoff/versions/1.0.1/craftbook.json +107 -0
  356. package/data/craftbook-templates/on/oncall-handoff/versions/1.0.1/test.json +110 -0
  357. package/data/craftbook-templates/on/one-pager/versions/1.0.1/craftbook.json +143 -0
  358. package/data/craftbook-templates/on/one-pager/versions/1.0.1/test.json +110 -0
  359. package/data/craftbook-templates/op/ops-runbook/versions/1.0.1/craftbook.json +112 -0
  360. package/data/craftbook-templates/op/ops-runbook/versions/1.0.1/test.json +104 -0
  361. package/data/craftbook-templates/pa/page-spread/versions/1.0.1/craftbook.json +82 -0
  362. package/data/craftbook-templates/pa/page-spread/versions/1.0.1/test.json +132 -0
  363. package/data/craftbook-templates/pa/parser-grammar/versions/1.0.1/craftbook.json +147 -0
  364. package/data/craftbook-templates/pa/parser-grammar/versions/1.0.1/test.json +92 -0
  365. package/data/craftbook-templates/pe/perf-audit/versions/1.0.1/craftbook.json +141 -0
  366. package/data/craftbook-templates/pe/perf-audit/versions/1.0.1/test.json +162 -0
  367. package/data/craftbook-templates/pe/perf-optimization/versions/1.0.1/craftbook.json +148 -0
  368. package/data/craftbook-templates/pe/perf-optimization/versions/1.0.1/test.json +92 -0
  369. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.1/craftbook.json +140 -0
  370. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.1/test.json +122 -0
  371. package/data/craftbook-templates/ph/photo-cull/versions/1.0.1/craftbook.json +140 -0
  372. package/data/craftbook-templates/ph/photo-cull/versions/1.0.1/test.json +103 -0
  373. package/data/craftbook-templates/ph/physics-toy/versions/1.0.1/craftbook.json +110 -0
  374. package/data/craftbook-templates/ph/physics-toy/versions/1.0.1/test.json +99 -0
  375. package/data/craftbook-templates/pi/pitch-deck/versions/1.0.1/craftbook.json +141 -0
  376. package/data/craftbook-templates/pi/pitch-deck/versions/1.0.1/test.json +97 -0
  377. package/data/craftbook-templates/pl/playtest-report/versions/1.0.1/craftbook.json +140 -0
  378. package/data/craftbook-templates/pl/playtest-report/versions/1.0.1/test.json +111 -0
  379. package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.1/craftbook.json +140 -0
  380. package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.1/test.json +103 -0
  381. package/data/craftbook-templates/po/portfolio-site/versions/1.0.1/craftbook.json +151 -0
  382. package/data/craftbook-templates/po/portfolio-site/versions/1.0.1/test.json +97 -0
  383. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.0/craftbook.json +257 -0
  384. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.0/test.json +228 -0
  385. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.1/craftbook.json +347 -0
  386. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.1/test.json +228 -0
  387. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.1/craftbook.json +141 -0
  388. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.1/test.json +110 -0
  389. package/data/craftbook-templates/pr/practice-exam/versions/1.0.1/craftbook.json +159 -0
  390. package/data/craftbook-templates/pr/practice-exam/versions/1.0.1/test.json +117 -0
  391. package/data/craftbook-templates/pr/practice-session/versions/1.0.1/craftbook.json +115 -0
  392. package/data/craftbook-templates/pr/practice-session/versions/1.0.1/test.json +114 -0
  393. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.1/craftbook.json +140 -0
  394. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.1/test.json +97 -0
  395. package/data/craftbook-templates/pr/press-release/versions/1.0.1/craftbook.json +143 -0
  396. package/data/craftbook-templates/pr/press-release/versions/1.0.1/test.json +356 -0
  397. package/data/craftbook-templates/pr/price-tracker/versions/1.0.1/craftbook.json +109 -0
  398. package/data/craftbook-templates/pr/price-tracker/versions/1.0.1/test.json +150 -0
  399. package/data/craftbook-templates/pr/pricing-page/versions/1.0.1/craftbook.json +184 -0
  400. package/data/craftbook-templates/pr/pricing-page/versions/1.0.1/test.json +97 -0
  401. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.1/craftbook.json +105 -0
  402. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.1/test.json +110 -0
  403. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.1/craftbook.json +143 -0
  404. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.1/test.json +110 -0
  405. package/data/craftbook-templates/pu/pull-request-review/manifest.json +3 -1
  406. package/data/craftbook-templates/pu/pull-request-review/versions/1.4.1/craftbook.json +180 -0
  407. package/data/craftbook-templates/pu/pull-request-review/versions/1.4.1/test.json +123 -0
  408. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.1/craftbook.json +121 -0
  409. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.1/test.json +123 -0
  410. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.1/craftbook.json +155 -0
  411. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.1/test.json +97 -0
  412. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.1/craftbook.json +140 -0
  413. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.1/test.json +113 -0
  414. package/data/craftbook-templates/re/reading-list/versions/1.0.1/craftbook.json +107 -0
  415. package/data/craftbook-templates/re/reading-list/versions/1.0.1/test.json +110 -0
  416. package/data/craftbook-templates/re/receipt-intake/versions/1.0.1/craftbook.json +140 -0
  417. package/data/craftbook-templates/re/receipt-intake/versions/1.0.1/test.json +149 -0
  418. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.1/craftbook.json +140 -0
  419. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.1/test.json +104 -0
  420. package/data/craftbook-templates/re/recipe-capture/versions/1.0.1/craftbook.json +140 -0
  421. package/data/craftbook-templates/re/recipe-capture/versions/1.0.1/test.json +128 -0
  422. package/data/craftbook-templates/re/record-a-relative/versions/1.0.1/craftbook.json +115 -0
  423. package/data/craftbook-templates/re/record-a-relative/versions/1.0.1/test.json +110 -0
  424. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.1/craftbook.json +148 -0
  425. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.1/test.json +104 -0
  426. package/data/craftbook-templates/re/refactor-module/versions/1.0.2/craftbook.json +148 -0
  427. package/data/craftbook-templates/re/refactor-module/versions/1.0.2/test.json +92 -0
  428. package/data/craftbook-templates/re/regex-builder/versions/1.0.1/craftbook.json +147 -0
  429. package/data/craftbook-templates/re/regex-builder/versions/1.0.1/test.json +92 -0
  430. package/data/craftbook-templates/re/release-announcement/versions/1.0.1/craftbook.json +159 -0
  431. package/data/craftbook-templates/re/release-announcement/versions/1.0.1/test.json +202 -0
  432. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.1/craftbook.json +214 -0
  433. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.1/test.json +138 -0
  434. package/data/craftbook-templates/re/release-notes/versions/1.0.1/craftbook.json +159 -0
  435. package/data/craftbook-templates/re/release-notes/versions/1.0.1/test.json +111 -0
  436. package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.1/craftbook.json +147 -0
  437. package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.1/test.json +162 -0
  438. package/data/craftbook-templates/re/release-readiness-review/versions/1.0.1/craftbook.json +141 -0
  439. package/data/craftbook-templates/re/release-readiness-review/versions/1.0.1/test.json +110 -0
  440. package/data/craftbook-templates/re/reliability-review/versions/1.0.1/craftbook.json +153 -0
  441. package/data/craftbook-templates/re/reliability-review/versions/1.0.1/test.json +112 -0
  442. package/data/craftbook-templates/re/report-pdf/versions/1.1.1/craftbook.json +173 -0
  443. package/data/craftbook-templates/re/report-pdf/versions/1.1.1/test.json +98 -0
  444. package/data/craftbook-templates/re/research-report/versions/1.0.1/craftbook.json +146 -0
  445. package/data/craftbook-templates/re/research-report/versions/1.0.1/test.json +110 -0
  446. package/data/craftbook-templates/re/research-to-document/versions/1.2.1/craftbook.json +216 -0
  447. package/data/craftbook-templates/re/research-to-document/versions/1.2.1/test.json +240 -0
  448. package/data/craftbook-templates/re/rest-api/versions/1.0.2/craftbook.json +147 -0
  449. package/data/craftbook-templates/re/rest-api/versions/1.0.2/test.json +387 -0
  450. package/data/craftbook-templates/re/resume-cv/versions/1.0.1/craftbook.json +143 -0
  451. package/data/craftbook-templates/re/resume-cv/versions/1.0.1/test.json +97 -0
  452. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.1/craftbook.json +159 -0
  453. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.1/test.json +162 -0
  454. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.3/craftbook.json +413 -0
  455. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.3/test.json +154 -0
  456. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.2/craftbook.json +167 -0
  457. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.2/test.json +137 -0
  458. package/data/craftbook-templates/ru/runbook/versions/1.0.1/craftbook.json +145 -0
  459. package/data/craftbook-templates/ru/runbook/versions/1.0.1/test.json +118 -0
  460. package/data/craftbook-templates/sc/schema-migration/versions/1.0.1/craftbook.json +144 -0
  461. package/data/craftbook-templates/sc/schema-migration/versions/1.0.1/test.json +103 -0
  462. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.2/craftbook.json +140 -0
  463. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.2/test.json +162 -0
  464. package/data/craftbook-templates/sc/script-automation/versions/1.0.1/craftbook.json +148 -0
  465. package/data/craftbook-templates/sc/script-automation/versions/1.0.1/test.json +162 -0
  466. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.2/craftbook.json +147 -0
  467. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.2/test.json +90 -0
  468. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.1/craftbook.json +140 -0
  469. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.1/test.json +110 -0
  470. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.3/craftbook.json +440 -0
  471. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.3/test.json +154 -0
  472. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.1/craftbook.json +105 -0
  473. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.1/test.json +97 -0
  474. package/data/craftbook-templates/so/social-thread/versions/1.0.1/craftbook.json +107 -0
  475. package/data/craftbook-templates/so/social-thread/versions/1.0.1/test.json +110 -0
  476. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.1/craftbook.json +140 -0
  477. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.1/test.json +158 -0
  478. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.1/craftbook.json +143 -0
  479. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.1/test.json +97 -0
  480. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.3/craftbook.json +436 -0
  481. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.3/test.json +162 -0
  482. package/data/craftbook-templates/sp/spec-doc/versions/1.0.1/craftbook.json +143 -0
  483. package/data/craftbook-templates/sp/spec-doc/versions/1.0.1/test.json +104 -0
  484. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.1/craftbook.json +109 -0
  485. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.1/test.json +160 -0
  486. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.1/craftbook.json +137 -0
  487. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.1/test.json +103 -0
  488. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.1/craftbook.json +109 -0
  489. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.1/test.json +104 -0
  490. package/data/craftbook-templates/st/standup-summary/versions/1.0.1/craftbook.json +107 -0
  491. package/data/craftbook-templates/st/standup-summary/versions/1.0.1/test.json +110 -0
  492. package/data/craftbook-templates/st/state-machine/versions/1.0.1/craftbook.json +147 -0
  493. package/data/craftbook-templates/st/state-machine/versions/1.0.1/test.json +92 -0
  494. package/data/craftbook-templates/st/status-report/versions/1.0.1/craftbook.json +146 -0
  495. package/data/craftbook-templates/st/status-report/versions/1.0.1/test.json +110 -0
  496. package/data/craftbook-templates/su/subscription-audit/versions/1.0.1/craftbook.json +140 -0
  497. package/data/craftbook-templates/su/subscription-audit/versions/1.0.1/test.json +104 -0
  498. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.1/craftbook.json +128 -0
  499. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.1/test.json +103 -0
  500. package/data/craftbook-templates/su/summarize-long/versions/1.0.1/craftbook.json +107 -0
  501. package/data/craftbook-templates/su/summarize-long/versions/1.0.1/test.json +110 -0
  502. package/data/craftbook-templates/su/survey-analysis/versions/1.0.1/craftbook.json +141 -0
  503. package/data/craftbook-templates/su/survey-analysis/versions/1.0.1/test.json +104 -0
  504. package/data/craftbook-templates/sv/svg-animation/versions/1.0.1/craftbook.json +110 -0
  505. package/data/craftbook-templates/sv/svg-animation/versions/1.0.1/test.json +97 -0
  506. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.1/craftbook.json +114 -0
  507. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.1/test.json +97 -0
  508. package/data/craftbook-templates/te/technical-documentation/versions/2.0.3/craftbook.json +408 -0
  509. package/data/craftbook-templates/te/technical-documentation/versions/2.0.3/test.json +174 -0
  510. package/data/craftbook-templates/te/test-coverage-review/versions/1.1.1/craftbook.json +141 -0
  511. package/data/craftbook-templates/te/test-coverage-review/versions/1.1.1/test.json +113 -0
  512. package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.1/craftbook.json +120 -0
  513. package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.1/test.json +92 -0
  514. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.1/craftbook.json +143 -0
  515. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.1/test.json +141 -0
  516. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.1/craftbook.json +143 -0
  517. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.1/test.json +142 -0
  518. package/data/craftbook-templates/th/threat-model/versions/1.0.1/craftbook.json +141 -0
  519. package/data/craftbook-templates/th/threat-model/versions/1.0.1/test.json +110 -0
  520. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.1/craftbook.json +103 -0
  521. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.1/test.json +103 -0
  522. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.1/craftbook.json +160 -0
  523. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.1/test.json +159 -0
  524. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.1/craftbook.json +107 -0
  525. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.1/test.json +110 -0
  526. package/data/craftbook-templates/to/topic-explainer/versions/1.0.1/craftbook.json +140 -0
  527. package/data/craftbook-templates/to/topic-explainer/versions/1.0.1/test.json +110 -0
  528. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.1/craftbook.json +115 -0
  529. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.1/test.json +98 -0
  530. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.1/craftbook.json +107 -0
  531. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.1/test.json +103 -0
  532. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.1/craftbook.json +171 -0
  533. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.1/test.json +151 -0
  534. package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.1/craftbook.json +148 -0
  535. package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.1/test.json +92 -0
  536. package/data/craftbook-templates/ve/version-bump/versions/1.0.1/craftbook.json +155 -0
  537. package/data/craftbook-templates/ve/version-bump/versions/1.0.1/test.json +92 -0
  538. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.1/craftbook.json +109 -0
  539. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.1/test.json +103 -0
  540. package/data/craftbook-templates/vi/visit-prep/versions/1.0.1/craftbook.json +140 -0
  541. package/data/craftbook-templates/vi/visit-prep/versions/1.0.1/test.json +97 -0
  542. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.1/craftbook.json +107 -0
  543. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.1/test.json +103 -0
  544. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.1/craftbook.json +154 -0
  545. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.1/test.json +124 -0
  546. package/data/craftbook-templates/we/web-app-crud/versions/1.0.1/craftbook.json +143 -0
  547. package/data/craftbook-templates/we/web-app-crud/versions/1.0.1/test.json +97 -0
  548. package/data/craftbook-templates/we/web-component/versions/1.0.1/craftbook.json +110 -0
  549. package/data/craftbook-templates/we/web-component/versions/1.0.1/test.json +97 -0
  550. package/data/craftbook-templates/we/webhook-handler/versions/1.0.1/craftbook.json +147 -0
  551. package/data/craftbook-templates/we/webhook-handler/versions/1.0.1/test.json +162 -0
  552. package/data/craftbook-templates/we/week-plan/versions/1.0.1/craftbook.json +140 -0
  553. package/data/craftbook-templates/we/week-plan/versions/1.0.1/test.json +255 -0
  554. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.1/craftbook.json +140 -0
  555. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.1/test.json +97 -0
  556. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.1/craftbook.json +106 -0
  557. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.1/test.json +104 -0
  558. package/data/craftbook-templates/we/weekly-review/versions/1.0.1/craftbook.json +107 -0
  559. package/data/craftbook-templates/we/weekly-review/versions/1.0.1/test.json +110 -0
  560. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.1/craftbook.json +140 -0
  561. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.1/test.json +138 -0
  562. package/data/craftbook-templates/wh/whitepaper/versions/1.0.1/craftbook.json +141 -0
  563. package/data/craftbook-templates/wh/whitepaper/versions/1.0.1/test.json +110 -0
  564. package/data/craftbook-templates/ye/year-in-review/versions/1.0.1/craftbook.json +115 -0
  565. package/data/craftbook-templates/ye/year-in-review/versions/1.0.1/test.json +145 -0
  566. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.1/craftbook.json +134 -0
  567. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.1/test.json +103 -0
  568. package/package.json +1 -1
  569. package/schemas/chat-model-identity.schema.json +16 -0
  570. package/schemas/craftbook-doc.schema.json +8 -2
  571. package/schemas/craftbook-template-version.schema.json +8 -2
@@ -0,0 +1,141 @@
1
+ {
2
+ "id": "threat-model",
3
+ "name": "Lightweight Threat Model",
4
+ "description": "Produce a lightweight threat model for a feature or system using a structured method (STRIDE over a simple data-flow diagram) and output a prioritized mitigation plan. First scopes the system by drawing its data-flow — actors, processes, data stores, and trust boundaries — and locks what is in scope, then enumerates threats per element using STRIDE (spoofing, tampering, repudiation, info-disclosure, denial-of-service, elevation-of-privilege) and rates each by likelihood and impact, then writes a threat-model report mapping each credible threat to a concrete mitigation and an owner. Use this for a threat model, security design review, STRIDE analysis, attack-surface mapping, or thinking through what could go wrong before building a feature — it yields a structured, prioritized set of threats and mitigations rather than an ad-hoc list of worries.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nEvery deliverable lands in the project's **artifacts drawer** (`write_artifact`),\nnot the shipped workspace — a threat model is review/analysis output, not\nproduct source — and each is gated for size/shape there exactly as a workspace\nfile would be.\n\nPhases:\n\n1. Scope the system (planner) — draw the data-flow + trust boundaries, lock scope → gated on artifact `reports/threat-model-scope.md` (markdown-notes)\n2. Enumerate threats (reviewer) — STRIDE each element, rate likelihood × impact → gated on artifact `reports/threat-model-stride.md` (markdown-notes)\n3. Write the threat model (reviewer) — prioritized threats mapped to mitigations → gated on artifact `reports/threat-model.md` (markdown-report)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "scope",
6
+ "triggers": [
7
+ "threat model this",
8
+ "STRIDE analysis",
9
+ "what could go wrong with this design",
10
+ "security design review",
11
+ "map the attack surface",
12
+ "model the threats"
13
+ ],
14
+ "steps": [
15
+ {
16
+ "id": "scope",
17
+ "name": "Scope the system",
18
+ "description": "draw the data-flow + trust boundaries, lock scope",
19
+ "prompt": "Step 1: Describe the feature/system and draw its data-flow as a simple diagram (text/markdown is fine): the external actors and clients, the processes/services, the data stores, and the data flows between them. Step 2: Mark the TRUST BOUNDARIES — every line a request crosses from less-trusted to more-trusted (internet→service, service→db, user→admin). Step 3: List the assets worth protecting (PII, credentials, money, integrity of records) and the security objectives (confidentiality/integrity/availability priorities). Step 4: State what is IN scope and explicitly OUT of scope. Step 5: Write the acceptance-criteria checklist for the model, e.g. 'every element and trust boundary is in the diagram', 'each element is analyzed against all six STRIDE categories', 'every credible threat has a likelihood, impact, and mitigation'. A threat model is a review/analysis deliverable, not shipped product source, so write the diagram + assets + scope + checklist to the ARTIFACT `reports/threat-model-scope.md` with `write_artifact` (not the workspace), and drop a one-line summary via `write_task_note`. No threat enumeration yet.",
20
+ "suggestedRole": "planner",
21
+ "advanceWhen": {
22
+ "file": "reports/threat-model-scope.md",
23
+ "minBytes": 1,
24
+ "sniff": "nonempty",
25
+ "artifact": true
26
+ },
27
+ "gate": {
28
+ "at": "completion",
29
+ "checks": [
30
+ {
31
+ "kind": "minBytes",
32
+ "file": "reports/threat-model-scope.md",
33
+ "bytes": 120,
34
+ "artifact": true
35
+ },
36
+ {
37
+ "kind": "sniff",
38
+ "file": "reports/threat-model-scope.md",
39
+ "sniff": "nonempty",
40
+ "artifact": true
41
+ }
42
+ ],
43
+ "onReject": "scope",
44
+ "maxAttempts": 3
45
+ },
46
+ "next": "model"
47
+ },
48
+ {
49
+ "id": "model",
50
+ "name": "Enumerate threats",
51
+ "description": "STRIDE each element, rate likelihood × impact",
52
+ "prompt": "Step 1: For EACH element and trust-boundary crossing in the diagram, walk the six STRIDE categories and ask what a malicious actor could do: Spoofing (impersonate an actor/service), Tampering (alter data in transit or at rest), Repudiation (deny an action without an audit trail), Information disclosure (read data they shouldn't), Denial of service (exhaust a resource), Elevation of privilege (gain rights they shouldn't). Step 2: For each credible threat capture: the element/flow it targets, the STRIDE category, a one-line attack scenario, the likelihood (high/med/low) and impact (high/med/low), and a resulting risk rating. Step 3: Drop threats that are not credible for THIS system and say why (so the model is honest, not exhaustive theater). Step 4: For each credible threat, draft a concrete mitigation (e.g. 'sign tokens + verify on every boundary', 'parameterize + least-privilege the db role', 'rate-limit + idempotency key'). Step 5: Note existing controls already covering a threat. Good looks like: threats anchored to specific diagram elements with a plausible scenario, not generic 'hackers could attack'. Write the STRIDE threat table to the ARTIFACT `reports/threat-model-stride.md` with `write_artifact`, and note progress with `write_task_note`. Do not write the final report yet.",
53
+ "suggestedRole": "reviewer",
54
+ "advanceWhen": {
55
+ "file": "reports/threat-model-stride.md",
56
+ "minBytes": 1,
57
+ "sniff": "nonempty",
58
+ "artifact": true
59
+ },
60
+ "gate": {
61
+ "at": "completion",
62
+ "checks": [
63
+ {
64
+ "kind": "minBytes",
65
+ "file": "reports/threat-model-stride.md",
66
+ "bytes": 120,
67
+ "artifact": true
68
+ },
69
+ {
70
+ "kind": "sniff",
71
+ "file": "reports/threat-model-stride.md",
72
+ "sniff": "nonempty",
73
+ "artifact": true
74
+ }
75
+ ],
76
+ "onReject": "model",
77
+ "maxAttempts": 3
78
+ },
79
+ "next": "report"
80
+ },
81
+ {
82
+ "id": "report",
83
+ "name": "Write the threat model",
84
+ "description": "prioritized threats mapped to mitigations",
85
+ "prompt": "Step 1: Write the report to the ARTIFACT `reports/threat-model.md` with `write_artifact`, embedding the data-flow diagram and the trust boundaries up top. Step 2: Add a '## Threats' table ranked by risk (likelihood × impact): each row = element/flow, STRIDE category, attack scenario, likelihood, impact, risk, and the mitigation. Step 3: Add a '## Mitigation plan' ordered by priority — the must-do-before-ship controls first, with an owner/area for each. Step 4: Add an '## Accepted/low risks' section for threats consciously not mitigated and the rationale, and a '## Existing controls' note. Every credible threat must map to a concrete mitigation; no generic security platitudes. On a loop-back, fix only the named gaps. `write_task_note` the report path and the count of high-risk threats.",
86
+ "suggestedRole": "reviewer",
87
+ "advanceWhen": {
88
+ "file": "reports/threat-model.md",
89
+ "minBytes": 1,
90
+ "sniff": "nonempty",
91
+ "artifact": true
92
+ },
93
+ "gate": {
94
+ "at": "completion",
95
+ "checks": [
96
+ {
97
+ "kind": "minBytes",
98
+ "file": "reports/threat-model.md",
99
+ "bytes": 1500,
100
+ "artifact": true
101
+ },
102
+ {
103
+ "kind": "contains",
104
+ "file": "reports/threat-model.md",
105
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
106
+ "flags": "i",
107
+ "label": "at least one markdown heading",
108
+ "artifact": true
109
+ }
110
+ ],
111
+ "onReject": "report",
112
+ "maxAttempts": 4
113
+ },
114
+ "next": "evaluate"
115
+ },
116
+ {
117
+ "id": "evaluate",
118
+ "name": "Evaluate",
119
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
120
+ "prompt": "Open the artifact `reports/threat-model.md` (with `read_artifact`) and grade it against the scope checklist. Check EACH criterion and write PASS/FAIL with a one-line reason: (1) the data-flow diagram and trust boundaries are present; (2) every element/boundary was analyzed against all six STRIDE categories; (3) each credible threat has a concrete attack scenario, a likelihood, and an impact; (4) threats are ranked by risk; (5) every credible threat maps to a specific mitigation with an owner/area; (6) non-credible or accepted risks are stated with rationale; (7) no generic 'hackers could attack' filler. If any criterion fails, name the exact gap and loop back.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"report\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
121
+ "suggestedRole": "reviewer",
122
+ "consumes": [
123
+ {
124
+ "file": "reports/threat-model.md",
125
+ "artifact": true
126
+ }
127
+ ],
128
+ "next": "report"
129
+ },
130
+ {
131
+ "id": "finish",
132
+ "name": "Finish",
133
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
134
+ "prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s) (the artifacts under `reports/`), and a one-line confirmation that each criterion is met. Then report DONE.",
135
+ "suggestedRole": "developer",
136
+ "terminal": true
137
+ }
138
+ ],
139
+ "version": "1.0.1",
140
+ "releasedAt": "2026-08-14T00:00:00Z"
141
+ }
@@ -0,0 +1,110 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Lightweight Threat Model smoke eval",
4
+ "objective": "Self-contained smoke eval for the Lightweight Threat Model craftbook using the corpus generic harness.",
5
+ "tags": [
6
+ "corpus"
7
+ ],
8
+ "prompt": "We need a lightweight threat model for the returns-desk work. The backgound info is in source/brief.md — have a look and write it up in report.md.",
9
+ "setup": {
10
+ "projectName": "Lightweight Threat Model Eval",
11
+ "about": "Self-contained eval project for threat-model. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/report.md.",
12
+ "missionObjectives": "Use the Lightweight Threat Model craftbook/template, read the seeded local fixtures, and write report.md without network calls, real credentials, or live services.",
13
+ "files": [
14
+ {
15
+ "path": "source/brief.md",
16
+ "content": "# Lightweight Threat Model Eval Brief\n\nClient: Boreal Desk, a home-office accessories company.\nAudience: operations leads who need an artifact they can use this week.\n\nFixed source facts for grounding:\n- The returns desk pilot covered 18 SKUs.\n- Median first response improved from 18 hours to 6 hours.\n- Preventable refund leakage fell from 14.2% to 8.9%.\n- The top unresolved complaint is status silence after photo submission.\n- Required next actions are automated status emails, barcode-exception training, and a weekly Finance exception export.\n\nUse these facts when the task asks for prose, analysis, copy, UI content, or test data. Do not use live web services, real credentials, or current outside data.\n\nCraftbook under test: threat-model - Lightweight Threat Model.\n"
17
+ }
18
+ ],
19
+ "worker": {
20
+ "name": "Jules",
21
+ "role": "Writer"
22
+ }
23
+ },
24
+ "mocks": [],
25
+ "success": {
26
+ "summary": "report.md is a source-grounded markdown artifact with required facts and actions.",
27
+ "deliverables": [
28
+ {
29
+ "path": "report.md",
30
+ "kind": "markdown-report",
31
+ "minBytes": 1000,
32
+ "checks": [
33
+ {
34
+ "kind": "contains",
35
+ "file": "report.md",
36
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
37
+ "flags": "i"
38
+ },
39
+ {
40
+ "kind": "contains",
41
+ "file": "report.md",
42
+ "pattern": "source/brief\\.md|Brief",
43
+ "flags": "i",
44
+ "label": "cite or name the seeded source"
45
+ },
46
+ {
47
+ "kind": "contains",
48
+ "file": "report.md",
49
+ "pattern": "18\\b[\\s\\S]{0,30}\\bSKUs",
50
+ "flags": "i",
51
+ "label": "include the 18-SKU pilot scope"
52
+ },
53
+ {
54
+ "kind": "contains",
55
+ "file": "report.md",
56
+ "pattern": "18\\s*hours|6\\s*hours",
57
+ "flags": "i"
58
+ },
59
+ {
60
+ "kind": "contains",
61
+ "file": "report.md",
62
+ "pattern": "14\\.2%|8\\.9%",
63
+ "flags": "i"
64
+ },
65
+ {
66
+ "kind": "contains",
67
+ "file": "report.md",
68
+ "pattern": "status silence|photo submission",
69
+ "flags": "i"
70
+ },
71
+ {
72
+ "kind": "contains",
73
+ "file": "report.md",
74
+ "pattern": "automated status emails|barcode|Finance",
75
+ "flags": "i"
76
+ }
77
+ ]
78
+ }
79
+ ]
80
+ },
81
+ "rubric": {
82
+ "artifact": {
83
+ "path": "report.md",
84
+ "kind": "markdown"
85
+ },
86
+ "axes": [
87
+ {
88
+ "name": "grounding",
89
+ "description": "Seeded facts appear faithfully and the source is cited."
90
+ },
91
+ {
92
+ "name": "structure",
93
+ "description": "Sections progress logically for the artifact class."
94
+ },
95
+ {
96
+ "name": "completeness",
97
+ "description": "Required elements (risks, next actions, scope) are all present."
98
+ },
99
+ {
100
+ "name": "tone",
101
+ "description": "The register fits the audience and artifact class."
102
+ }
103
+ ]
104
+ },
105
+ "qualityFocus": [
106
+ "source-grounded prose",
107
+ "section structure",
108
+ "next-action clarity"
109
+ ]
110
+ }
@@ -0,0 +1,103 @@
1
+ {
2
+ "id": "thumbnail-generator",
3
+ "name": "Thumbnail Generator",
4
+ "description": "Derive a consistent set of thumbnails or responsive size-variants from a folder of source images — square crops for grids, srcset widths for the web, smart-cropped to keep the subject centered — and emit them with predictable names. Scope the target sizes, crop strategy, and naming convention FIRST so the output plugs straight into a gallery or srcset, then build every variant and confirm the matrix is complete. Covers thumbnails, responsive images, srcset, image variants, gallery tiles, and preview generation.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Scope the variants (planner) — lock sizes, crop strategy, format, and naming → gated on artifact `notes/scope.md` (markdown-notes)\n2. Build the variants (developer) — generate every variant per source with the naming convention → gated on `out` (image-set)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "scope",
6
+ "triggers": [
7
+ "generate thumbnails",
8
+ "make responsive image variants",
9
+ "create srcset images",
10
+ "thumbnail a folder",
11
+ "gallery thumbnails"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "scope",
16
+ "name": "Scope the variants",
17
+ "description": "lock sizes, crop strategy, format, and naming",
18
+ "prompt": "1) List the source images and their dimensions. 2) Decide the variant matrix: the target sizes (e.g. 1x square 200px for grid tiles, plus srcset widths 320/640/1024), the aspect ratio per variant (square thumb vs preserved ratio), and the crop strategy (center vs subject-aware smart crop). 3) Choose output format(s) (e.g. WebP + JPEG fallback) and quality. 4) Lock a naming convention that encodes size, e.g. <name>-200.jpg, <name>-640w.webp, so it drops into srcset. 5) Write an acceptance-criteria checklist: 'every source yields every named variant', 'square thumbs are exactly NxN and keep the subject', 'srcset widths match the spec', 'filenames follow the convention', 'no upscaling beyond source dimensions'. 6) Record matrix + checklist via write_task_note AND to notes/scope.md.\n\nThe deliverable `notes/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
19
+ "suggestedRole": "planner",
20
+ "advanceWhen": {
21
+ "file": "notes/scope.md",
22
+ "minBytes": 1,
23
+ "sniff": "nonempty",
24
+ "artifact": true
25
+ },
26
+ "gate": {
27
+ "at": "completion",
28
+ "checks": [
29
+ {
30
+ "kind": "minBytes",
31
+ "file": "notes/scope.md",
32
+ "bytes": 120,
33
+ "artifact": true
34
+ },
35
+ {
36
+ "kind": "sniff",
37
+ "file": "notes/scope.md",
38
+ "sniff": "nonempty",
39
+ "artifact": true
40
+ }
41
+ ],
42
+ "onReject": "scope",
43
+ "maxAttempts": 3
44
+ },
45
+ "next": "build"
46
+ },
47
+ {
48
+ "id": "build",
49
+ "name": "Build the variants",
50
+ "description": "generate every variant per source with the naming convention",
51
+ "prompt": "1) Read scope.md. 2) Prefer a small rerunnable script (ImageMagick/sharp/Pillow) over manual edits. 3) For each source image, generate every variant in the matrix: square thumbs cropped to keep the subject centered (smart-crop if available, else center-crop), srcset widths scaled preserving ratio, in the chosen format(s) and quality. 4) Never upscale past the source's native size — skip-and-log a variant the source is too small for. 5) Write outputs to out/ using the exact naming convention. 6) Build a tiny index.html (optional but encouraged) or at least a manifest line proving the srcset wiring. 7) write_task_note the out/ folder and the produced-vs-expected variant counts. Good looks like: a complete, predictably-named matrix ready for a gallery or srcset.",
52
+ "suggestedRole": "developer",
53
+ "advanceWhen": {
54
+ "file": "out",
55
+ "minBytes": 1,
56
+ "sniff": "nonempty"
57
+ },
58
+ "gate": {
59
+ "at": "completion",
60
+ "checks": [
61
+ {
62
+ "kind": "fileCount",
63
+ "ext": [
64
+ "png",
65
+ "jpg",
66
+ "jpeg",
67
+ "svg",
68
+ "webp"
69
+ ],
70
+ "min": 3,
71
+ "dir": "out"
72
+ }
73
+ ],
74
+ "onReject": "build",
75
+ "maxAttempts": 4
76
+ },
77
+ "next": "evaluate"
78
+ },
79
+ {
80
+ "id": "evaluate",
81
+ "name": "Evaluate",
82
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
83
+ "prompt": "1) Open out/ and verify the variant matrix is complete: each source has each named variant (PASS/FAIL on count). 2) Probe a sample: square thumbs are exactly the target NxN and the subject is still in frame; srcset widths match spec (PASS/FAIL). 3) Confirm filenames follow the naming convention so they'd work in srcset. 4) Confirm no variant was upscaled beyond its source. 5) Write PASS/FAIL per criterion with measured numbers. Any gap → loop back to build to fill missing/incorrect variants.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"build\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
84
+ "suggestedRole": "reviewer",
85
+ "consumes": [
86
+ {
87
+ "file": "out"
88
+ }
89
+ ],
90
+ "next": "build"
91
+ },
92
+ {
93
+ "id": "finish",
94
+ "name": "Finish",
95
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
96
+ "prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
97
+ "suggestedRole": "developer",
98
+ "terminal": true
99
+ }
100
+ ],
101
+ "version": "1.0.1",
102
+ "releasedAt": "2026-08-14T00:00:00Z"
103
+ }
@@ -0,0 +1,103 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Thumbnail Generator smoke eval",
4
+ "objective": "Self-contained smoke eval for the Thumbnail Generator craftbook using the media generic harness.",
5
+ "tags": [
6
+ "media"
7
+ ],
8
+ "prompt": "Our media files are all listd in source/media-index.csv. Can you put together the production plan for them as media-plan.json?",
9
+ "setup": {
10
+ "projectName": "Thumbnail Generator Eval",
11
+ "about": "Self-contained eval project for thumbnail-generator. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/media-plan.json.",
12
+ "missionObjectives": "Use the Thumbnail Generator craftbook/template, read the seeded local fixtures, and write media-plan.json without network calls, real credentials, or live services.",
13
+ "files": [
14
+ {
15
+ "path": "source/brief.md",
16
+ "content": "# Thumbnail Generator Eval Brief\n\nClient: Boreal Desk, a home-office accessories company.\nAudience: operations leads who need an artifact they can use this week.\n\nFixed source facts for grounding:\n- The returns desk pilot covered 18 SKUs.\n- Median first response improved from 18 hours to 6 hours.\n- Preventable refund leakage fell from 14.2% to 8.9%.\n- The top unresolved complaint is status silence after photo submission.\n- Required next actions are automated status emails, barcode-exception training, and a weekly Finance exception export.\n\nUse these facts when the task asks for prose, analysis, copy, UI content, or test data. Do not use live web services, real credentials, or current outside data.\n\nCraftbook under test: thumbnail-generator - Thumbnail Generator.\n"
17
+ },
18
+ {
19
+ "path": "source/media-index.csv",
20
+ "content": "filename,type,duration_or_size,notes\npilot-interview.wav,audio,00:02:15,mentions response time and status silence\nreturns-desk.png,image,1600x900,shows intake form and photo evidence step\nlaunch-clip.mp4,video,00:01:05,shows barcode exception handling\n"
21
+ }
22
+ ],
23
+ "worker": {
24
+ "name": "Jules",
25
+ "role": "Producer"
26
+ }
27
+ },
28
+ "mocks": [],
29
+ "success": {
30
+ "summary": "media-plan.json is a valid JSON media-production manifest grounded in seeded fixture metadata.",
31
+ "deliverables": [
32
+ {
33
+ "path": "media-plan.json",
34
+ "kind": "json",
35
+ "minBytes": 700,
36
+ "checks": [
37
+ {
38
+ "kind": "sniff",
39
+ "file": "media-plan.json",
40
+ "sniff": "json-valid"
41
+ },
42
+ {
43
+ "kind": "contains",
44
+ "file": "media-plan.json",
45
+ "pattern": "pilot-interview\\.wav|returns-desk\\.png|launch-clip\\.mp4",
46
+ "flags": "i"
47
+ },
48
+ {
49
+ "kind": "contains",
50
+ "file": "media-plan.json",
51
+ "pattern": "outputs|assets|steps|cues|verification",
52
+ "flags": "i"
53
+ },
54
+ {
55
+ "kind": "contains",
56
+ "file": "media-plan.json",
57
+ "pattern": "accessibility|alt|caption|transcript|metadata",
58
+ "flags": "i"
59
+ }
60
+ ]
61
+ }
62
+ ]
63
+ },
64
+ "rubric": {
65
+ "artifact": {
66
+ "path": "media-plan.json",
67
+ "kind": "json"
68
+ },
69
+ "axes": [
70
+ {
71
+ "name": "completeness",
72
+ "description": "The manifest covers sources, outputs, and processing steps end to end."
73
+ },
74
+ {
75
+ "name": "grounding",
76
+ "description": "Only seeded media fixtures are referenced, with faithful metadata."
77
+ },
78
+ {
79
+ "name": "accessibility",
80
+ "description": "Alt text, captions, or transcripts are planned wherever the class requires."
81
+ },
82
+ {
83
+ "name": "precision",
84
+ "description": "Timestamps, crops, and cues are specific enough to execute."
85
+ }
86
+ ]
87
+ },
88
+ "qualityFocus": [
89
+ "media fixture handling",
90
+ "structured manifest",
91
+ "verification metadata"
92
+ ],
93
+ "extensions": {
94
+ "legacySimulators": [
95
+ {
96
+ "id": "thumbnail-generator-media-fixtures",
97
+ "kind": "data-source",
98
+ "status": "implemented",
99
+ "description": "Seeded local media index replacing real audio, video, image generation, and external media metadata services."
100
+ }
101
+ ]
102
+ }
103
+ }
@@ -0,0 +1,160 @@
1
+ {
2
+ "id": "tileset-batch",
3
+ "name": "Tileset Batch",
4
+ "description": "Produce a style-locked batch of tiles and account for every one: named to the convention, sized to spec, generated against the library's style anchor, and appended to the manifest with tags — an asset library a game engine can trust, not a folder of maybes. Locks the tile list and the naming convention FIRST, then generates the batch in the house style, then writes the manifest records and the batch summary. Use for tile batches, 'we need forest tiles', growing a game's asset library, style-consistent tilesets, and keeping the asset manifest honest.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Lock the batch (assetsmid) — tile list, naming convention, size spec, style anchor → gated on artifact `notes/scope.md` (markdown-notes)\n2. Generate the tiles (image-generator) — the batch, named to the convention, in the house style → gated on `assets/tiles` (image-set)\n3. Write the manifest records (data-analyst) — one record per new tile, appended, ids unique\n4. Write the batch summary (copywriter) — what was made, how it is named, what the library now holds → gated on artifact `report.md` (markdown-report)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "scope",
6
+ "triggers": [
7
+ "make a batch of tiles",
8
+ "we need more tiles for the game",
9
+ "tileset for the platformer",
10
+ "generate the tile batch",
11
+ "grow the asset library"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "scope",
16
+ "name": "Lock the batch",
17
+ "description": "tile list, naming convention, size spec, style anchor",
18
+ "prompt": "Lock the batch before generating a tile. Step 1: read assets/manifest.json from the workspace — the library's existing records — and the style notes in assets/ (the palette, tile size, outline and shading rules that make the library one family). Step 2: write the tile list from the ask — every tile the batch needs, including the unglamorous edges and corners that make a set usable, at least eight. Step 3: lock the conventions — file names as assets/tiles/tile-<terrain>-<variant>.png, the size spec from the style notes, and the tags each tile will carry. Step 4: write an acceptance-criteria checklist ('every listed tile generated at spec size in the house style', 'every file named to the convention', 'every new tile appended to the manifest with id, file, size, and tags', 'the manifest stays valid JSON and lists only files that exist'). Call write_task_note with the tile list + checklist and write notes/scope.md.\n\nThe deliverable `notes/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
19
+ "suggestedRole": "assetsmid",
20
+ "advanceWhen": {
21
+ "file": "notes/scope.md",
22
+ "minBytes": 1,
23
+ "sniff": "nonempty",
24
+ "artifact": true
25
+ },
26
+ "gate": {
27
+ "at": "completion",
28
+ "checks": [
29
+ {
30
+ "kind": "minBytes",
31
+ "file": "notes/scope.md",
32
+ "bytes": 120,
33
+ "artifact": true
34
+ },
35
+ {
36
+ "kind": "sniff",
37
+ "file": "notes/scope.md",
38
+ "sniff": "nonempty",
39
+ "artifact": true
40
+ }
41
+ ],
42
+ "onReject": "scope",
43
+ "maxAttempts": 3
44
+ },
45
+ "next": "generate"
46
+ },
47
+ {
48
+ "id": "generate",
49
+ "name": "Generate the tiles",
50
+ "description": "the batch, named to the convention, in the house style",
51
+ "prompt": "Generate the batch into assets/tiles/. Step 1: work the locked tile list one tile at a time through the project's image capabilities — every prompt built from the style anchor (palette, outline, shading) so the batch reads as one hand's work, saved under the locked naming convention. Step 2: keep the set complete — the edge and corner variants from the list matter more to a level builder than another hero tile. Step 3: after generating, re-list assets/tiles/ against the tile list and fill any gap before completing. Call write_task_note with the count generated and the names.",
52
+ "suggestedRole": "image-generator",
53
+ "advanceWhen": {
54
+ "file": "assets/tiles",
55
+ "minBytes": 1,
56
+ "sniff": "nonempty"
57
+ },
58
+ "gate": {
59
+ "at": "completion",
60
+ "checks": [
61
+ {
62
+ "kind": "fileCount",
63
+ "ext": [
64
+ "png",
65
+ "jpg",
66
+ "jpeg",
67
+ "svg",
68
+ "webp"
69
+ ],
70
+ "min": 3,
71
+ "dir": "assets/tiles"
72
+ },
73
+ {
74
+ "kind": "fileCount",
75
+ "ext": [
76
+ "png"
77
+ ],
78
+ "min": 8,
79
+ "dir": "assets/tiles"
80
+ }
81
+ ],
82
+ "onReject": "generate",
83
+ "maxAttempts": 3
84
+ },
85
+ "next": "manifest"
86
+ },
87
+ {
88
+ "id": "manifest",
89
+ "name": "Write the manifest records",
90
+ "description": "one record per new tile, appended, ids unique",
91
+ "prompt": "Account for every tile in assets/manifest.json. Step 1: append one record per new tile to the top-level JSON array, keeping the existing records untouched. Step 2: each record carries exactly these fields: \"id\" (unique, e.g. tile-grass-01), \"file\" (the workspace-relative path, e.g. assets/tiles/tile-grass-01.png), \"size\" (the pixel spec, e.g. 32x32), and \"tags\" (an array like [\"forest\", \"ground\"]) — plus \"seed\" and \"prompt\" where the generation gave you them, so a tile can be re-made in-style later. Step 3: re-read the whole file after writing — it must parse as JSON, ids must stay unique, and every recorded file must exist on disk; a manifest that lists a tile that is not there is worse than no manifest. Call write_task_note with the record count before and after.",
92
+ "suggestedRole": "data-analyst",
93
+ "consumes": [
94
+ {
95
+ "file": "assets/tiles"
96
+ }
97
+ ],
98
+ "next": "report"
99
+ },
100
+ {
101
+ "id": "report",
102
+ "name": "Write the batch summary",
103
+ "description": "what was made, how it is named, what the library now holds",
104
+ "prompt": "Write the batch summary at report.md. Step 1: the headline — how many tiles this batch added and what terrain they cover, in one plain sentence. Step 2: the batch list — each tile's id, file, and tags, one line each. Step 3: note the conventions used (naming, size, style anchor) so the next batch starts from the same page, and name anything from the ask that was skipped and why. Step 4: close with the library's new total. Keep it under a page. Write report.md and call write_task_note with the report path and the new total.\n\nThe deliverable `report.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
105
+ "suggestedRole": "copywriter",
106
+ "advanceWhen": {
107
+ "file": "report.md",
108
+ "minBytes": 1,
109
+ "sniff": "nonempty",
110
+ "artifact": true
111
+ },
112
+ "gate": {
113
+ "at": "completion",
114
+ "checks": [
115
+ {
116
+ "kind": "minBytes",
117
+ "file": "report.md",
118
+ "bytes": 600,
119
+ "artifact": true
120
+ },
121
+ {
122
+ "kind": "contains",
123
+ "file": "report.md",
124
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
125
+ "flags": "i",
126
+ "label": "at least one markdown heading",
127
+ "artifact": true
128
+ }
129
+ ],
130
+ "onReject": "report",
131
+ "maxAttempts": 4
132
+ },
133
+ "next": "evaluate"
134
+ },
135
+ {
136
+ "id": "evaluate",
137
+ "name": "Evaluate",
138
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
139
+ "prompt": "Open assets/manifest.json, the assets/tiles/ listing, notes/scope.md, and report.md and verify every criterion: every tile on the locked list exists at the convention name — the missing corner variant is the classic failure; every new tile has a manifest record with id, file, size, and tags, ids unique, and every recorded path resolves to a real file — check both directions; the batch reads as one style family against the anchor notes; and the report's counts match the manifest. Write PASS/FAIL per criterion; on any failure, name the tile or record and loop back to generate.\n\nThe deliverable lives in the project's artifacts drawer — open `report.md` with `read_artifact`, not `read_file`.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"generate\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
140
+ "suggestedRole": "reviewer",
141
+ "consumes": [
142
+ {
143
+ "file": "report.md",
144
+ "artifact": true
145
+ }
146
+ ],
147
+ "next": "generate"
148
+ },
149
+ {
150
+ "id": "finish",
151
+ "name": "Finish",
152
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
153
+ "prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
154
+ "suggestedRole": "developer",
155
+ "terminal": true
156
+ }
157
+ ],
158
+ "version": "1.0.1",
159
+ "releasedAt": "2026-08-14T00:00:00Z"
160
+ }