@bendyline/gilde 0.1.38 → 0.1.39

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 (546) hide show
  1. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.2/craftbook.json +153 -0
  2. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.2/test.json +118 -0
  3. package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.2/craftbook.json +153 -0
  4. package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.2/test.json +189 -0
  5. package/data/craftbook-templates/ac/accessibility-retrofit/versions/1.0.2/craftbook.json +122 -0
  6. package/data/craftbook-templates/ac/accessibility-retrofit/versions/1.0.2/test.json +100 -0
  7. package/data/craftbook-templates/ad/ad-variations/versions/1.0.2/craftbook.json +117 -0
  8. package/data/craftbook-templates/ad/ad-variations/versions/1.0.2/test.json +111 -0
  9. package/data/craftbook-templates/al/album-curate/versions/1.0.2/craftbook.json +127 -0
  10. package/data/craftbook-templates/al/album-curate/versions/1.0.2/test.json +150 -0
  11. package/data/craftbook-templates/al/alert-rules/versions/1.0.2/craftbook.json +113 -0
  12. package/data/craftbook-templates/al/alert-rules/versions/1.0.2/test.json +148 -0
  13. package/data/craftbook-templates/al/alt-text-pass/versions/1.0.2/craftbook.json +154 -0
  14. package/data/craftbook-templates/al/alt-text-pass/versions/1.0.2/test.json +100 -0
  15. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.4/craftbook.json +238 -0
  16. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.4/test.json +160 -0
  17. package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.2/craftbook.json +158 -0
  18. package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.2/test.json +105 -0
  19. package/data/craftbook-templates/an/annual-document-review/versions/1.0.2/craftbook.json +152 -0
  20. package/data/craftbook-templates/an/annual-document-review/versions/1.0.2/test.json +113 -0
  21. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.2/craftbook.json +153 -0
  22. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.2/test.json +123 -0
  23. package/data/craftbook-templates/ap/api-contract-review/versions/1.1.2/craftbook.json +153 -0
  24. package/data/craftbook-templates/ap/api-contract-review/versions/1.1.2/test.json +118 -0
  25. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.2/craftbook.json +170 -0
  26. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.2/test.json +139 -0
  27. package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.2/craftbook.json +141 -0
  28. package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.2/test.json +106 -0
  29. package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.2/craftbook.json +135 -0
  30. package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.2/test.json +106 -0
  31. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.4/craftbook.json +222 -0
  32. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.4/test.json +224 -0
  33. package/data/craftbook-templates/au/auth-flow/versions/1.0.2/craftbook.json +160 -0
  34. package/data/craftbook-templates/au/auth-flow/versions/1.0.2/test.json +143 -0
  35. package/data/craftbook-templates/au/automation-recipe/versions/1.0.2/craftbook.json +176 -0
  36. package/data/craftbook-templates/au/automation-recipe/versions/1.0.2/test.json +299 -0
  37. package/data/craftbook-templates/ba/backup-routine/versions/1.0.2/craftbook.json +160 -0
  38. package/data/craftbook-templates/ba/backup-routine/versions/1.0.2/test.json +111 -0
  39. package/data/craftbook-templates/bl/blog-post/versions/1.0.2/craftbook.json +155 -0
  40. package/data/craftbook-templates/bl/blog-post/versions/1.0.2/test.json +121 -0
  41. package/data/craftbook-templates/bo/board-deck/versions/1.0.2/craftbook.json +153 -0
  42. package/data/craftbook-templates/bo/board-deck/versions/1.0.2/test.json +103 -0
  43. package/data/craftbook-templates/bo/board-game-web/versions/1.0.2/craftbook.json +162 -0
  44. package/data/craftbook-templates/bo/board-game-web/versions/1.0.2/test.json +102 -0
  45. package/data/craftbook-templates/bo/booking-automation/versions/1.0.2/craftbook.json +170 -0
  46. package/data/craftbook-templates/bo/booking-automation/versions/1.0.2/test.json +165 -0
  47. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.2/craftbook.json +119 -0
  48. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.2/test.json +106 -0
  49. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.4/craftbook.json +429 -0
  50. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.4/test.json +379 -0
  51. package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.3/craftbook.json +176 -0
  52. package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.3/test.json +95 -0
  53. package/data/craftbook-templates/ca/calendar-brief/versions/1.0.2/craftbook.json +119 -0
  54. package/data/craftbook-templates/ca/calendar-brief/versions/1.0.2/test.json +105 -0
  55. package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.2/craftbook.json +122 -0
  56. package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.2/test.json +109 -0
  57. package/data/craftbook-templates/ca/case-study/versions/1.0.2/craftbook.json +155 -0
  58. package/data/craftbook-templates/ca/case-study/versions/1.0.2/test.json +115 -0
  59. package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.2/craftbook.json +163 -0
  60. package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.2/test.json +108 -0
  61. package/data/craftbook-templates/ch/changelog-cut/versions/1.0.2/craftbook.json +125 -0
  62. package/data/craftbook-templates/ch/changelog-cut/versions/1.0.2/test.json +109 -0
  63. package/data/craftbook-templates/ch/changelog-writeup/versions/1.0.2/craftbook.json +119 -0
  64. package/data/craftbook-templates/ch/changelog-writeup/versions/1.0.2/test.json +132 -0
  65. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.3/craftbook.json +135 -0
  66. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.3/test.json +158 -0
  67. package/data/craftbook-templates/ch/chapter-weave/versions/1.0.2/craftbook.json +86 -0
  68. package/data/craftbook-templates/ch/chapter-weave/versions/1.0.2/test.json +101 -0
  69. package/data/craftbook-templates/ch/character-sheet/versions/1.0.2/craftbook.json +94 -0
  70. package/data/craftbook-templates/ch/character-sheet/versions/1.0.2/test.json +146 -0
  71. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.2/craftbook.json +133 -0
  72. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.2/test.json +181 -0
  73. package/data/craftbook-templates/ch/chart-pack/versions/1.0.2/craftbook.json +160 -0
  74. package/data/craftbook-templates/ch/chart-pack/versions/1.0.2/test.json +107 -0
  75. package/data/craftbook-templates/ch/chrome-extension/versions/1.0.2/craftbook.json +160 -0
  76. package/data/craftbook-templates/ch/chrome-extension/versions/1.0.2/test.json +100 -0
  77. package/data/craftbook-templates/ci/ci-pipeline/versions/1.0.2/craftbook.json +144 -0
  78. package/data/craftbook-templates/ci/ci-pipeline/versions/1.0.2/test.json +165 -0
  79. package/data/craftbook-templates/ci/citation-audit/versions/1.0.2/craftbook.json +158 -0
  80. package/data/craftbook-templates/ci/citation-audit/versions/1.0.2/test.json +152 -0
  81. package/data/craftbook-templates/cl/cli-tool/versions/1.1.2/craftbook.json +159 -0
  82. package/data/craftbook-templates/cl/cli-tool/versions/1.1.2/test.json +131 -0
  83. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.2/craftbook.json +165 -0
  84. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.2/test.json +119 -0
  85. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.2/craftbook.json +165 -0
  86. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.2/test.json +122 -0
  87. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.2/craftbook.json +153 -0
  88. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.2/test.json +229 -0
  89. package/data/craftbook-templates/co/company-research-brief/versions/1.0.2/craftbook.json +151 -0
  90. package/data/craftbook-templates/co/company-research-brief/versions/1.0.2/test.json +100 -0
  91. package/data/craftbook-templates/co/comparison-matrix/versions/1.0.2/craftbook.json +165 -0
  92. package/data/craftbook-templates/co/comparison-matrix/versions/1.0.2/test.json +112 -0
  93. package/data/craftbook-templates/co/compat-check/versions/1.0.2/craftbook.json +158 -0
  94. package/data/craftbook-templates/co/compat-check/versions/1.0.2/test.json +148 -0
  95. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.2/craftbook.json +152 -0
  96. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.2/test.json +119 -0
  97. package/data/craftbook-templates/co/config-scaffold/versions/1.0.2/craftbook.json +117 -0
  98. package/data/craftbook-templates/co/config-scaffold/versions/1.0.2/test.json +123 -0
  99. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.2/craftbook.json +153 -0
  100. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.2/test.json +152 -0
  101. package/data/craftbook-templates/co/contract-template/versions/1.0.2/craftbook.json +157 -0
  102. package/data/craftbook-templates/co/contract-template/versions/1.0.2/test.json +105 -0
  103. package/data/craftbook-templates/co/cookbook-layout/versions/1.0.2/craftbook.json +133 -0
  104. package/data/craftbook-templates/co/cookbook-layout/versions/1.0.2/test.json +162 -0
  105. package/data/craftbook-templates/co/copy-review/versions/1.0.2/craftbook.json +153 -0
  106. package/data/craftbook-templates/co/copy-review/versions/1.0.2/test.json +105 -0
  107. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.2/craftbook.json +158 -0
  108. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.2/test.json +159 -0
  109. package/data/craftbook-templates/co/cover-letter/versions/1.0.2/craftbook.json +119 -0
  110. package/data/craftbook-templates/co/cover-letter/versions/1.0.2/test.json +103 -0
  111. package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.2/craftbook.json +113 -0
  112. package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.2/test.json +210 -0
  113. package/data/craftbook-templates/cr/cron-job/versions/1.0.2/craftbook.json +159 -0
  114. package/data/craftbook-templates/cr/cron-job/versions/1.0.2/test.json +107 -0
  115. package/data/craftbook-templates/cr/crossword-forge/versions/1.0.2/craftbook.json +176 -0
  116. package/data/craftbook-templates/cr/crossword-forge/versions/1.0.2/test.json +138 -0
  117. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.3/craftbook.json +113 -0
  118. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.3/test.json +105 -0
  119. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.2/craftbook.json +119 -0
  120. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.2/test.json +117 -0
  121. package/data/craftbook-templates/da/data-dictionary/versions/1.0.2/craftbook.json +119 -0
  122. package/data/craftbook-templates/da/data-dictionary/versions/1.0.2/test.json +104 -0
  123. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.2/craftbook.json +160 -0
  124. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.2/test.json +107 -0
  125. package/data/craftbook-templates/da/data-join-merge/versions/1.0.2/craftbook.json +113 -0
  126. package/data/craftbook-templates/da/data-join-merge/versions/1.0.2/test.json +107 -0
  127. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.3/craftbook.json +160 -0
  128. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.3/test.json +165 -0
  129. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.2/craftbook.json +153 -0
  130. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.2/test.json +329 -0
  131. package/data/craftbook-templates/da/data-to-report/versions/1.0.2/craftbook.json +152 -0
  132. package/data/craftbook-templates/da/data-to-report/versions/1.0.2/test.json +98 -0
  133. package/data/craftbook-templates/da/data-viz-page/versions/1.0.2/craftbook.json +155 -0
  134. package/data/craftbook-templates/da/data-viz-page/versions/1.0.2/test.json +120 -0
  135. package/data/craftbook-templates/da/dataset-clean/versions/1.2.3/craftbook.json +113 -0
  136. package/data/craftbook-templates/da/dataset-clean/versions/1.2.3/test.json +98 -0
  137. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.2/craftbook.json +160 -0
  138. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.2/test.json +107 -0
  139. package/data/craftbook-templates/de/deep-security-review/versions/1.1.2/craftbook.json +223 -0
  140. package/data/craftbook-templates/de/deep-security-review/versions/1.1.2/test.json +160 -0
  141. package/data/craftbook-templates/de/dependency-audit/versions/1.1.2/craftbook.json +153 -0
  142. package/data/craftbook-templates/de/dependency-audit/versions/1.1.2/test.json +111 -0
  143. package/data/craftbook-templates/de/deploy-checklist/versions/1.0.2/craftbook.json +171 -0
  144. package/data/craftbook-templates/de/deploy-checklist/versions/1.0.2/test.json +168 -0
  145. package/data/craftbook-templates/de/design-review/versions/1.0.2/craftbook.json +153 -0
  146. package/data/craftbook-templates/de/design-review/versions/1.0.2/test.json +121 -0
  147. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.4/craftbook.json +443 -0
  148. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.4/test.json +204 -0
  149. package/data/craftbook-templates/di/diagram-from-text/versions/1.0.2/craftbook.json +121 -0
  150. package/data/craftbook-templates/di/diagram-from-text/versions/1.0.2/test.json +100 -0
  151. package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.2/craftbook.json +158 -0
  152. package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.2/test.json +165 -0
  153. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.2/craftbook.json +160 -0
  154. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.2/test.json +107 -0
  155. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.2/craftbook.json +119 -0
  156. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.2/test.json +113 -0
  157. package/data/craftbook-templates/do/dockerize-app/versions/1.0.2/craftbook.json +160 -0
  158. package/data/craftbook-templates/do/dockerize-app/versions/1.0.2/test.json +95 -0
  159. package/data/craftbook-templates/do/docs-site/versions/1.0.2/craftbook.json +155 -0
  160. package/data/craftbook-templates/do/docs-site/versions/1.0.2/test.json +100 -0
  161. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.2/craftbook.json +165 -0
  162. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.2/test.json +135 -0
  163. package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.2/craftbook.json +152 -0
  164. package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.2/test.json +107 -0
  165. package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.2/craftbook.json +158 -0
  166. package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.2/test.json +113 -0
  167. package/data/craftbook-templates/eb/ebook-compile/versions/1.0.2/craftbook.json +155 -0
  168. package/data/craftbook-templates/eb/ebook-compile/versions/1.0.2/test.json +100 -0
  169. package/data/craftbook-templates/ed/edit-notes/versions/1.0.2/craftbook.json +188 -0
  170. package/data/craftbook-templates/ed/edit-notes/versions/1.0.2/test.json +149 -0
  171. package/data/craftbook-templates/em/email-sequence/versions/1.0.2/craftbook.json +154 -0
  172. package/data/craftbook-templates/em/email-sequence/versions/1.0.2/test.json +100 -0
  173. package/data/craftbook-templates/em/email-template/versions/1.0.2/craftbook.json +155 -0
  174. package/data/craftbook-templates/em/email-template/versions/1.0.2/test.json +100 -0
  175. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.4/craftbook.json +415 -0
  176. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.4/test.json +194 -0
  177. package/data/craftbook-templates/ep/episode-plan/versions/1.0.2/craftbook.json +152 -0
  178. package/data/craftbook-templates/ep/episode-plan/versions/1.0.2/test.json +100 -0
  179. package/data/craftbook-templates/es/escalation-playbook/versions/1.0.2/craftbook.json +119 -0
  180. package/data/craftbook-templates/es/escalation-playbook/versions/1.0.2/test.json +113 -0
  181. package/data/craftbook-templates/ev/evidence-brief/versions/1.0.2/craftbook.json +158 -0
  182. package/data/craftbook-templates/ev/evidence-brief/versions/1.0.2/test.json +113 -0
  183. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.4/craftbook.json +445 -0
  184. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.4/test.json +139 -0
  185. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.2/craftbook.json +152 -0
  186. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.2/test.json +107 -0
  187. package/data/craftbook-templates/fa/fact-check/versions/1.0.2/craftbook.json +158 -0
  188. package/data/craftbook-templates/fa/fact-check/versions/1.0.2/test.json +113 -0
  189. package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.2/craftbook.json +86 -0
  190. package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.2/test.json +111 -0
  191. package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.2/craftbook.json +119 -0
  192. package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.2/test.json +113 -0
  193. package/data/craftbook-templates/fa/favicon-set/versions/1.0.2/craftbook.json +158 -0
  194. package/data/craftbook-templates/fa/favicon-set/versions/1.0.2/test.json +106 -0
  195. package/data/craftbook-templates/fe/feature-flag-release/versions/1.0.2/craftbook.json +171 -0
  196. package/data/craftbook-templates/fe/feature-flag-release/versions/1.0.2/test.json +165 -0
  197. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.0.2/craftbook.json +160 -0
  198. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.0.2/test.json +165 -0
  199. package/data/craftbook-templates/fe/feedback-widget/versions/1.0.2/craftbook.json +155 -0
  200. package/data/craftbook-templates/fe/feedback-widget/versions/1.0.2/test.json +100 -0
  201. package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.2/craftbook.json +115 -0
  202. package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.2/test.json +106 -0
  203. package/data/craftbook-templates/fo/forecast-model/versions/1.0.2/craftbook.json +117 -0
  204. package/data/craftbook-templates/fo/forecast-model/versions/1.0.2/test.json +107 -0
  205. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.2/craftbook.json +160 -0
  206. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.2/test.json +165 -0
  207. package/data/craftbook-templates/fo/form-wizard/versions/1.0.2/craftbook.json +122 -0
  208. package/data/craftbook-templates/fo/form-wizard/versions/1.0.2/test.json +113 -0
  209. package/data/craftbook-templates/ga/game-with-screens/versions/1.0.2/craftbook.json +180 -0
  210. package/data/craftbook-templates/ga/game-with-screens/versions/1.0.2/test.json +102 -0
  211. package/data/craftbook-templates/gl/glossary-build/versions/1.0.2/craftbook.json +152 -0
  212. package/data/craftbook-templates/gl/glossary-build/versions/1.0.2/test.json +113 -0
  213. package/data/craftbook-templates/gr/graphql-api/versions/1.0.3/craftbook.json +158 -0
  214. package/data/craftbook-templates/gr/graphql-api/versions/1.0.3/test.json +95 -0
  215. package/data/craftbook-templates/gr/grpc-service/versions/1.0.2/craftbook.json +159 -0
  216. package/data/craftbook-templates/gr/grpc-service/versions/1.0.2/test.json +95 -0
  217. package/data/craftbook-templates/ha/handbook-section/versions/1.0.2/craftbook.json +157 -0
  218. package/data/craftbook-templates/ha/handbook-section/versions/1.0.2/test.json +113 -0
  219. package/data/craftbook-templates/he/hero-image/versions/1.0.2/craftbook.json +166 -0
  220. package/data/craftbook-templates/he/hero-image/versions/1.0.2/test.json +106 -0
  221. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.2/craftbook.json +214 -0
  222. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.2/test.json +131 -0
  223. package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.2/craftbook.json +194 -0
  224. package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.2/test.json +95 -0
  225. package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.2/craftbook.json +162 -0
  226. package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.2/test.json +102 -0
  227. package/data/craftbook-templates/ic/icon-pack/versions/1.0.2/craftbook.json +158 -0
  228. package/data/craftbook-templates/ic/icon-pack/versions/1.0.2/test.json +106 -0
  229. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.4/craftbook.json +409 -0
  230. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.4/test.json +144 -0
  231. package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.2/craftbook.json +162 -0
  232. package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.2/test.json +102 -0
  233. package/data/craftbook-templates/im/image-batch-edit/versions/1.0.2/craftbook.json +153 -0
  234. package/data/craftbook-templates/im/image-batch-edit/versions/1.0.2/test.json +106 -0
  235. package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.2/craftbook.json +152 -0
  236. package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.2/test.json +106 -0
  237. package/data/craftbook-templates/im/image-palette-extract/versions/1.0.2/craftbook.json +121 -0
  238. package/data/craftbook-templates/im/image-palette-extract/versions/1.0.2/test.json +100 -0
  239. package/data/craftbook-templates/im/image-seo-rename/versions/1.0.2/craftbook.json +117 -0
  240. package/data/craftbook-templates/im/image-seo-rename/versions/1.0.2/test.json +106 -0
  241. package/data/craftbook-templates/in/inbox-triage/versions/1.0.2/craftbook.json +152 -0
  242. package/data/craftbook-templates/in/inbox-triage/versions/1.0.2/test.json +107 -0
  243. package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.2/craftbook.json +119 -0
  244. package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.2/test.json +113 -0
  245. package/data/craftbook-templates/in/incident-postmortem/versions/1.0.2/craftbook.json +170 -0
  246. package/data/craftbook-templates/in/incident-postmortem/versions/1.0.2/test.json +112 -0
  247. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.2/craftbook.json +165 -0
  248. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.2/test.json +124 -0
  249. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.2/craftbook.json +155 -0
  250. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.2/test.json +102 -0
  251. package/data/craftbook-templates/in/investigate-root-cause/versions/1.0.2/craftbook.json +153 -0
  252. package/data/craftbook-templates/in/investigate-root-cause/versions/1.0.2/test.json +113 -0
  253. package/data/craftbook-templates/in/invitation-design/versions/1.0.2/craftbook.json +140 -0
  254. package/data/craftbook-templates/in/invitation-design/versions/1.0.2/test.json +124 -0
  255. package/data/craftbook-templates/in/invoice-generator/versions/1.0.2/craftbook.json +122 -0
  256. package/data/craftbook-templates/in/invoice-generator/versions/1.0.2/test.json +100 -0
  257. package/data/craftbook-templates/in/invoice-run/versions/1.1.2/craftbook.json +211 -0
  258. package/data/craftbook-templates/in/invoice-run/versions/1.1.2/test.json +143 -0
  259. package/data/craftbook-templates/index.json +1 -1
  260. package/data/craftbook-templates/it/item-intake/versions/1.0.2/craftbook.json +152 -0
  261. package/data/craftbook-templates/it/item-intake/versions/1.0.2/test.json +148 -0
  262. package/data/craftbook-templates/ju/juice-pass/versions/1.0.2/craftbook.json +128 -0
  263. package/data/craftbook-templates/ju/juice-pass/versions/1.0.2/test.json +119 -0
  264. package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.2/craftbook.json +155 -0
  265. package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.2/test.json +113 -0
  266. package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.2/craftbook.json +160 -0
  267. package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.2/test.json +100 -0
  268. package/data/craftbook-templates/la/landing-copy/versions/1.0.2/craftbook.json +155 -0
  269. package/data/craftbook-templates/la/landing-copy/versions/1.0.2/test.json +113 -0
  270. package/data/craftbook-templates/la/landing-page/versions/1.0.2/craftbook.json +196 -0
  271. package/data/craftbook-templates/la/landing-page/versions/1.0.2/test.json +100 -0
  272. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.2/craftbook.json +152 -0
  273. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.2/test.json +107 -0
  274. package/data/craftbook-templates/li/library-package/versions/1.0.2/craftbook.json +159 -0
  275. package/data/craftbook-templates/li/library-package/versions/1.0.2/test.json +95 -0
  276. package/data/craftbook-templates/li/literature-review/versions/1.0.2/craftbook.json +158 -0
  277. package/data/craftbook-templates/li/literature-review/versions/1.0.2/test.json +113 -0
  278. package/data/craftbook-templates/li/live-browser-qa/versions/1.0.2/craftbook.json +153 -0
  279. package/data/craftbook-templates/li/live-browser-qa/versions/1.0.2/test.json +165 -0
  280. package/data/craftbook-templates/lo/localize-content/versions/1.0.2/craftbook.json +155 -0
  281. package/data/craftbook-templates/lo/localize-content/versions/1.0.2/test.json +113 -0
  282. package/data/craftbook-templates/lo/logo-set/versions/1.0.2/craftbook.json +158 -0
  283. package/data/craftbook-templates/lo/logo-set/versions/1.0.2/test.json +106 -0
  284. package/data/craftbook-templates/ma/market-scan/versions/1.0.2/craftbook.json +158 -0
  285. package/data/craftbook-templates/ma/market-scan/versions/1.0.2/test.json +213 -0
  286. package/data/craftbook-templates/me/meeting-minutes/versions/1.0.2/craftbook.json +120 -0
  287. package/data/craftbook-templates/me/meeting-minutes/versions/1.0.2/test.json +113 -0
  288. package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.2/craftbook.json +119 -0
  289. package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.2/test.json +113 -0
  290. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.2/craftbook.json +119 -0
  291. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.2/test.json +187 -0
  292. package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.2/craftbook.json +121 -0
  293. package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.2/test.json +106 -0
  294. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.2/craftbook.json +127 -0
  295. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.2/test.json +115 -0
  296. package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.2/craftbook.json +159 -0
  297. package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.2/test.json +95 -0
  298. package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.2/craftbook.json +129 -0
  299. package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.2/test.json +102 -0
  300. package/data/craftbook-templates/mo/mock-interview/versions/1.0.2/craftbook.json +151 -0
  301. package/data/craftbook-templates/mo/mock-interview/versions/1.0.2/test.json +113 -0
  302. package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.2/craftbook.json +168 -0
  303. package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.2/test.json +136 -0
  304. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.2/craftbook.json +170 -0
  305. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.2/test.json +200 -0
  306. package/data/craftbook-templates/mo/month-close/versions/1.0.2/craftbook.json +152 -0
  307. package/data/craftbook-templates/mo/month-close/versions/1.0.2/test.json +100 -0
  308. package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.2/craftbook.json +152 -0
  309. package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.2/test.json +120 -0
  310. package/data/craftbook-templates/mo/moodboard/versions/1.0.2/craftbook.json +121 -0
  311. package/data/craftbook-templates/mo/moodboard/versions/1.0.2/test.json +106 -0
  312. package/data/craftbook-templates/mo/morning-brief/versions/1.0.2/craftbook.json +119 -0
  313. package/data/craftbook-templates/mo/morning-brief/versions/1.0.2/test.json +228 -0
  314. package/data/craftbook-templates/mo/morning-report/versions/1.0.2/craftbook.json +164 -0
  315. package/data/craftbook-templates/mo/morning-report/versions/1.0.2/test.json +253 -0
  316. package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.2/craftbook.json +113 -0
  317. package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.2/test.json +106 -0
  318. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.2/craftbook.json +193 -0
  319. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.2/test.json +89 -0
  320. package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.2/craftbook.json +155 -0
  321. package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.2/test.json +113 -0
  322. package/data/craftbook-templates/no/notification-router/versions/1.0.2/craftbook.json +170 -0
  323. package/data/craftbook-templates/no/notification-router/versions/1.0.2/test.json +165 -0
  324. package/data/craftbook-templates/oc/ocr-extract/versions/1.0.2/craftbook.json +149 -0
  325. package/data/craftbook-templates/oc/ocr-extract/versions/1.0.2/test.json +106 -0
  326. package/data/craftbook-templates/of/offer-compare/versions/1.0.2/craftbook.json +118 -0
  327. package/data/craftbook-templates/of/offer-compare/versions/1.0.2/test.json +113 -0
  328. package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.2/craftbook.json +119 -0
  329. package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.2/test.json +113 -0
  330. package/data/craftbook-templates/on/onboarding-flow/versions/1.0.2/craftbook.json +155 -0
  331. package/data/craftbook-templates/on/onboarding-flow/versions/1.0.2/test.json +100 -0
  332. package/data/craftbook-templates/on/oncall-handoff/versions/1.0.2/craftbook.json +119 -0
  333. package/data/craftbook-templates/on/oncall-handoff/versions/1.0.2/test.json +113 -0
  334. package/data/craftbook-templates/on/one-pager/versions/1.0.2/craftbook.json +155 -0
  335. package/data/craftbook-templates/on/one-pager/versions/1.0.2/test.json +113 -0
  336. package/data/craftbook-templates/op/ops-runbook/versions/1.0.2/craftbook.json +124 -0
  337. package/data/craftbook-templates/op/ops-runbook/versions/1.0.2/test.json +107 -0
  338. package/data/craftbook-templates/pa/page-spread/versions/1.0.2/craftbook.json +94 -0
  339. package/data/craftbook-templates/pa/page-spread/versions/1.0.2/test.json +135 -0
  340. package/data/craftbook-templates/pa/parser-grammar/versions/1.0.2/craftbook.json +159 -0
  341. package/data/craftbook-templates/pa/parser-grammar/versions/1.0.2/test.json +95 -0
  342. package/data/craftbook-templates/pe/perf-audit/versions/1.0.2/craftbook.json +153 -0
  343. package/data/craftbook-templates/pe/perf-audit/versions/1.0.2/test.json +165 -0
  344. package/data/craftbook-templates/pe/perf-optimization/versions/1.0.2/craftbook.json +160 -0
  345. package/data/craftbook-templates/pe/perf-optimization/versions/1.0.2/test.json +95 -0
  346. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.2/craftbook.json +152 -0
  347. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.2/test.json +125 -0
  348. package/data/craftbook-templates/ph/photo-cull/versions/1.0.2/craftbook.json +152 -0
  349. package/data/craftbook-templates/ph/photo-cull/versions/1.0.2/test.json +106 -0
  350. package/data/craftbook-templates/ph/physics-toy/versions/1.0.2/craftbook.json +122 -0
  351. package/data/craftbook-templates/ph/physics-toy/versions/1.0.2/test.json +102 -0
  352. package/data/craftbook-templates/pi/pitch-deck/versions/1.0.2/craftbook.json +153 -0
  353. package/data/craftbook-templates/pi/pitch-deck/versions/1.0.2/test.json +100 -0
  354. package/data/craftbook-templates/pl/playtest-report/versions/1.0.2/craftbook.json +152 -0
  355. package/data/craftbook-templates/pl/playtest-report/versions/1.0.2/test.json +114 -0
  356. package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.2/craftbook.json +152 -0
  357. package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.2/test.json +106 -0
  358. package/data/craftbook-templates/po/portfolio-site/versions/1.0.2/craftbook.json +163 -0
  359. package/data/craftbook-templates/po/portfolio-site/versions/1.0.2/test.json +100 -0
  360. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.4/craftbook.json +397 -0
  361. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.4/test.json +242 -0
  362. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.2/craftbook.json +153 -0
  363. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.2/test.json +113 -0
  364. package/data/craftbook-templates/pr/practice-exam/versions/1.0.2/craftbook.json +171 -0
  365. package/data/craftbook-templates/pr/practice-exam/versions/1.0.2/test.json +120 -0
  366. package/data/craftbook-templates/pr/practice-session/versions/1.0.2/craftbook.json +127 -0
  367. package/data/craftbook-templates/pr/practice-session/versions/1.0.2/test.json +117 -0
  368. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.2/craftbook.json +152 -0
  369. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.2/test.json +100 -0
  370. package/data/craftbook-templates/pr/press-release/versions/1.0.2/craftbook.json +155 -0
  371. package/data/craftbook-templates/pr/press-release/versions/1.0.2/test.json +359 -0
  372. package/data/craftbook-templates/pr/price-tracker/versions/1.0.2/craftbook.json +121 -0
  373. package/data/craftbook-templates/pr/price-tracker/versions/1.0.2/test.json +153 -0
  374. package/data/craftbook-templates/pr/pricing-page/versions/1.0.2/craftbook.json +196 -0
  375. package/data/craftbook-templates/pr/pricing-page/versions/1.0.2/test.json +100 -0
  376. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.2/craftbook.json +117 -0
  377. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.2/test.json +113 -0
  378. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.2/craftbook.json +155 -0
  379. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.2/test.json +113 -0
  380. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.2/craftbook.json +279 -0
  381. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.2/test.json +144 -0
  382. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.2/craftbook.json +133 -0
  383. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.2/test.json +126 -0
  384. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.2/craftbook.json +167 -0
  385. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.2/test.json +100 -0
  386. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.2/craftbook.json +152 -0
  387. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.2/test.json +116 -0
  388. package/data/craftbook-templates/re/reading-list/versions/1.0.2/craftbook.json +119 -0
  389. package/data/craftbook-templates/re/reading-list/versions/1.0.2/test.json +113 -0
  390. package/data/craftbook-templates/re/receipt-intake/versions/1.0.2/craftbook.json +152 -0
  391. package/data/craftbook-templates/re/receipt-intake/versions/1.0.2/test.json +152 -0
  392. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.2/craftbook.json +152 -0
  393. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.2/test.json +107 -0
  394. package/data/craftbook-templates/re/reception-report/versions/1.0.1/craftbook.json +177 -0
  395. package/data/craftbook-templates/re/reception-report/versions/1.0.1/test.json +169 -0
  396. package/data/craftbook-templates/re/recipe-capture/versions/1.0.2/craftbook.json +152 -0
  397. package/data/craftbook-templates/re/recipe-capture/versions/1.0.2/test.json +131 -0
  398. package/data/craftbook-templates/re/record-a-relative/versions/1.0.2/craftbook.json +127 -0
  399. package/data/craftbook-templates/re/record-a-relative/versions/1.0.2/test.json +113 -0
  400. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.2/craftbook.json +160 -0
  401. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.2/test.json +107 -0
  402. package/data/craftbook-templates/re/refactor-module/versions/1.0.3/craftbook.json +160 -0
  403. package/data/craftbook-templates/re/refactor-module/versions/1.0.3/test.json +95 -0
  404. package/data/craftbook-templates/re/regex-builder/versions/1.0.2/craftbook.json +159 -0
  405. package/data/craftbook-templates/re/regex-builder/versions/1.0.2/test.json +95 -0
  406. package/data/craftbook-templates/re/release-announcement/versions/1.0.2/craftbook.json +171 -0
  407. package/data/craftbook-templates/re/release-announcement/versions/1.0.2/test.json +205 -0
  408. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.2/craftbook.json +226 -0
  409. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.2/test.json +141 -0
  410. package/data/craftbook-templates/re/release-notes/versions/1.0.2/craftbook.json +171 -0
  411. package/data/craftbook-templates/re/release-notes/versions/1.0.2/test.json +114 -0
  412. package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.2/craftbook.json +159 -0
  413. package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.2/test.json +165 -0
  414. package/data/craftbook-templates/re/release-readiness-review/versions/1.0.2/craftbook.json +153 -0
  415. package/data/craftbook-templates/re/release-readiness-review/versions/1.0.2/test.json +113 -0
  416. package/data/craftbook-templates/re/reliability-review/versions/1.0.2/craftbook.json +165 -0
  417. package/data/craftbook-templates/re/reliability-review/versions/1.0.2/test.json +115 -0
  418. package/data/craftbook-templates/re/report-pdf/versions/1.1.2/craftbook.json +185 -0
  419. package/data/craftbook-templates/re/report-pdf/versions/1.1.2/test.json +101 -0
  420. package/data/craftbook-templates/re/research-report/versions/1.0.2/craftbook.json +158 -0
  421. package/data/craftbook-templates/re/research-report/versions/1.0.2/test.json +113 -0
  422. package/data/craftbook-templates/re/research-to-document/versions/1.2.2/craftbook.json +228 -0
  423. package/data/craftbook-templates/re/research-to-document/versions/1.2.2/test.json +243 -0
  424. package/data/craftbook-templates/re/rest-api/versions/1.0.3/craftbook.json +159 -0
  425. package/data/craftbook-templates/re/rest-api/versions/1.0.3/test.json +390 -0
  426. package/data/craftbook-templates/re/resume-cv/versions/1.0.2/craftbook.json +155 -0
  427. package/data/craftbook-templates/re/resume-cv/versions/1.0.2/test.json +100 -0
  428. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.2/craftbook.json +171 -0
  429. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.2/test.json +165 -0
  430. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.4/craftbook.json +425 -0
  431. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.4/test.json +157 -0
  432. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.3/craftbook.json +179 -0
  433. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.3/test.json +140 -0
  434. package/data/craftbook-templates/ru/runbook/versions/1.0.2/craftbook.json +157 -0
  435. package/data/craftbook-templates/ru/runbook/versions/1.0.2/test.json +121 -0
  436. package/data/craftbook-templates/sc/schema-migration/versions/1.0.2/craftbook.json +156 -0
  437. package/data/craftbook-templates/sc/schema-migration/versions/1.0.2/test.json +106 -0
  438. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.3/craftbook.json +152 -0
  439. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.3/test.json +165 -0
  440. package/data/craftbook-templates/sc/script-automation/versions/1.0.2/craftbook.json +160 -0
  441. package/data/craftbook-templates/sc/script-automation/versions/1.0.2/test.json +165 -0
  442. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.3/craftbook.json +159 -0
  443. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.3/test.json +93 -0
  444. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.2/craftbook.json +152 -0
  445. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.2/test.json +113 -0
  446. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.4/craftbook.json +452 -0
  447. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.4/test.json +157 -0
  448. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.2/craftbook.json +117 -0
  449. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.2/test.json +100 -0
  450. package/data/craftbook-templates/so/social-digest/versions/1.0.1/craftbook.json +140 -0
  451. package/data/craftbook-templates/so/social-digest/versions/1.0.1/test.json +169 -0
  452. package/data/craftbook-templates/so/social-thread/versions/1.0.2/craftbook.json +119 -0
  453. package/data/craftbook-templates/so/social-thread/versions/1.0.2/test.json +113 -0
  454. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.2/craftbook.json +152 -0
  455. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.2/test.json +161 -0
  456. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.2/craftbook.json +155 -0
  457. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.2/test.json +100 -0
  458. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.4/craftbook.json +448 -0
  459. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.4/test.json +165 -0
  460. package/data/craftbook-templates/sp/spec-doc/versions/1.0.2/craftbook.json +155 -0
  461. package/data/craftbook-templates/sp/spec-doc/versions/1.0.2/test.json +107 -0
  462. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.2/craftbook.json +121 -0
  463. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.2/test.json +163 -0
  464. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.2/craftbook.json +149 -0
  465. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.2/test.json +106 -0
  466. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.2/craftbook.json +121 -0
  467. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.2/test.json +107 -0
  468. package/data/craftbook-templates/st/standup-summary/versions/1.0.2/craftbook.json +119 -0
  469. package/data/craftbook-templates/st/standup-summary/versions/1.0.2/test.json +113 -0
  470. package/data/craftbook-templates/st/state-machine/versions/1.0.2/craftbook.json +159 -0
  471. package/data/craftbook-templates/st/state-machine/versions/1.0.2/test.json +95 -0
  472. package/data/craftbook-templates/st/status-report/versions/1.0.2/craftbook.json +158 -0
  473. package/data/craftbook-templates/st/status-report/versions/1.0.2/test.json +113 -0
  474. package/data/craftbook-templates/su/subscription-audit/versions/1.0.2/craftbook.json +152 -0
  475. package/data/craftbook-templates/su/subscription-audit/versions/1.0.2/test.json +107 -0
  476. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.2/craftbook.json +140 -0
  477. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.2/test.json +106 -0
  478. package/data/craftbook-templates/su/summarize-long/versions/1.0.2/craftbook.json +119 -0
  479. package/data/craftbook-templates/su/summarize-long/versions/1.0.2/test.json +113 -0
  480. package/data/craftbook-templates/su/survey-analysis/versions/1.0.2/craftbook.json +153 -0
  481. package/data/craftbook-templates/su/survey-analysis/versions/1.0.2/test.json +107 -0
  482. package/data/craftbook-templates/sv/svg-animation/versions/1.0.2/craftbook.json +122 -0
  483. package/data/craftbook-templates/sv/svg-animation/versions/1.0.2/test.json +100 -0
  484. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.2/craftbook.json +126 -0
  485. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.2/test.json +100 -0
  486. package/data/craftbook-templates/te/technical-documentation/versions/2.0.4/craftbook.json +420 -0
  487. package/data/craftbook-templates/te/technical-documentation/versions/2.0.4/test.json +177 -0
  488. package/data/craftbook-templates/te/test-coverage-review/versions/1.1.2/craftbook.json +153 -0
  489. package/data/craftbook-templates/te/test-coverage-review/versions/1.1.2/test.json +116 -0
  490. package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.2/craftbook.json +132 -0
  491. package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.2/test.json +95 -0
  492. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.2/craftbook.json +155 -0
  493. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.2/test.json +144 -0
  494. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.2/craftbook.json +155 -0
  495. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.2/test.json +145 -0
  496. package/data/craftbook-templates/th/threat-model/versions/1.0.2/craftbook.json +153 -0
  497. package/data/craftbook-templates/th/threat-model/versions/1.0.2/test.json +113 -0
  498. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.2/craftbook.json +115 -0
  499. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.2/test.json +106 -0
  500. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.2/craftbook.json +172 -0
  501. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.2/test.json +162 -0
  502. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.2/craftbook.json +119 -0
  503. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.2/test.json +113 -0
  504. package/data/craftbook-templates/to/topic-explainer/versions/1.0.2/craftbook.json +152 -0
  505. package/data/craftbook-templates/to/topic-explainer/versions/1.0.2/test.json +113 -0
  506. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.2/craftbook.json +127 -0
  507. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.2/test.json +101 -0
  508. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.2/craftbook.json +119 -0
  509. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.2/test.json +106 -0
  510. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.2/craftbook.json +183 -0
  511. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.2/test.json +154 -0
  512. package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.2/craftbook.json +160 -0
  513. package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.2/test.json +95 -0
  514. package/data/craftbook-templates/ve/version-bump/versions/1.0.2/craftbook.json +167 -0
  515. package/data/craftbook-templates/ve/version-bump/versions/1.0.2/test.json +95 -0
  516. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.2/craftbook.json +121 -0
  517. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.2/test.json +106 -0
  518. package/data/craftbook-templates/vi/visit-prep/versions/1.0.2/craftbook.json +152 -0
  519. package/data/craftbook-templates/vi/visit-prep/versions/1.0.2/test.json +100 -0
  520. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.2/craftbook.json +119 -0
  521. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.2/test.json +106 -0
  522. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.2/craftbook.json +166 -0
  523. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.2/test.json +127 -0
  524. package/data/craftbook-templates/we/web-app-crud/versions/1.0.2/craftbook.json +155 -0
  525. package/data/craftbook-templates/we/web-app-crud/versions/1.0.2/test.json +100 -0
  526. package/data/craftbook-templates/we/web-component/versions/1.0.2/craftbook.json +122 -0
  527. package/data/craftbook-templates/we/web-component/versions/1.0.2/test.json +100 -0
  528. package/data/craftbook-templates/we/webhook-handler/versions/1.0.2/craftbook.json +159 -0
  529. package/data/craftbook-templates/we/webhook-handler/versions/1.0.2/test.json +165 -0
  530. package/data/craftbook-templates/we/week-plan/versions/1.0.2/craftbook.json +152 -0
  531. package/data/craftbook-templates/we/week-plan/versions/1.0.2/test.json +258 -0
  532. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.2/craftbook.json +152 -0
  533. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.2/test.json +100 -0
  534. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.2/craftbook.json +118 -0
  535. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.2/test.json +107 -0
  536. package/data/craftbook-templates/we/weekly-review/versions/1.0.2/craftbook.json +119 -0
  537. package/data/craftbook-templates/we/weekly-review/versions/1.0.2/test.json +113 -0
  538. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.2/craftbook.json +152 -0
  539. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.2/test.json +141 -0
  540. package/data/craftbook-templates/wh/whitepaper/versions/1.0.2/craftbook.json +153 -0
  541. package/data/craftbook-templates/wh/whitepaper/versions/1.0.2/test.json +113 -0
  542. package/data/craftbook-templates/ye/year-in-review/versions/1.0.2/craftbook.json +127 -0
  543. package/data/craftbook-templates/ye/year-in-review/versions/1.0.2/test.json +148 -0
  544. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.2/craftbook.json +146 -0
  545. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.2/test.json +106 -0
  546. package/package.json +1 -1
@@ -0,0 +1,176 @@
1
+ {
2
+ "id": "automation-recipe",
3
+ "name": "Write an Automation Recipe",
4
+ "description": "Turn 'I wish the house would...' into an inspectable, versioned automation: triggers and actions that name real devices from the house's own inventory, a dry run through the device tools before anything is armed, and a manual override always written in. Locks the owner's intent and the safety rules FIRST (nothing that heats or locks runs unattended without a failsafe, an override path is mandatory, dry-run before arm), then drafts the recipe, then proves it against the devices — so the house only ever does what was actually asked, and never anything it cannot be talked out of. Use for home automations, 'make the lights do X', schedules and scenes, sensor-triggered routines, and wiring up a new smart-home behavior.\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 wish (huisautomaat) — the owner's intent, the real device inventory, and the safety rules locked → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Draft the recipe (developer) — the automation as one inspectable JSON file under automations/\n3. Dry-run the recipe (developer) — every trigger and action exercised against the devices, evidence on file → gated on artifact `{{workPath}}/dry-run.md` (markdown-notes)\n4. Write the install notes (copywriter) — what it does, how to arm it, how to stop it, what the dry run proved → gated on artifact `{{workPath}}/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
+ "set up an automation",
8
+ "make the house do",
9
+ "automate the lights",
10
+ "write an automation recipe",
11
+ "when I get home, turn on"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "scope",
16
+ "name": "Scope the wish",
17
+ "description": "the owner's intent, the real device inventory, and the safety rules locked",
18
+ "prompt": "Understand the wish and the house before writing a single trigger. Step 1: restate the owner's intent in one plain sentence — when should what happen, and when should it NOT — and confirm it with them if anything is ambiguous. Step 2: pull the device inventory through the project's home capabilities and list the devices this automation actually needs: the sensors that will trigger it, the devices it will act on, each with its exact inventory id and current state. If a device the wish assumes does not exist in the inventory, say so now — never plan around an invented device. Step 3: lock the safety rules — nothing that heats, locks, or opens runs unattended without a stated failsafe; every automation carries a manual override the owner can flip without ceremony; and no recipe is armed before a dry run has exercised it against the devices. Step 4: write an acceptance-criteria checklist ('every device in the recipe exists in the inventory, by exact id', 'trigger, conditions, and actions are all present and specific', 'a manual override is written into the recipe', 'the dry run exercised every action with the tool responses recorded', 'the install notes say how to arm it and how to stop it'). Call write_task_note with the intent sentence + the devices involved + the checklist and write {{workPath}}/scope.md.\n\nThe deliverable `{{workPath}}/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": "huisautomaat",
20
+ "advanceWhen": {
21
+ "file": "{{workPath}}/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": "{{workPath}}/scope.md",
32
+ "bytes": 120,
33
+ "artifact": true
34
+ },
35
+ {
36
+ "kind": "sniff",
37
+ "file": "{{workPath}}/scope.md",
38
+ "sniff": "nonempty",
39
+ "artifact": true
40
+ }
41
+ ],
42
+ "onReject": "scope",
43
+ "maxAttempts": 3
44
+ },
45
+ "next": "draft"
46
+ },
47
+ {
48
+ "id": "draft",
49
+ "name": "Draft the recipe",
50
+ "description": "the automation as one inspectable JSON file under automations/",
51
+ "prompt": "Write the automation down as a file someone can read, diff, and version. Step 1: derive a short lowercase-kebab slug from the automation's name and write the recipe to automations/<slug>.json — one JSON object with a name, a plain-language summary, the trigger (what starts it), the conditions (what must also be true), the actions (what happens, in order), and the override (how a human stops or bypasses it, always present). Step 2: reference every device by its exact inventory id from {{workPath}}/scope.md — the id the house actually answers to, not a nickname. Step 3: keep every field concrete: a trigger names its sensor and the state change, a condition names what it checks, an action names the device and the state it sets. Step 4: re-read the file once as JSON — valid, complete, no placeholder values left. Call write_task_note with the recipe path and a one-line description of trigger, conditions, actions, and override.\n\nBefore working, open the artifact input `{{workPath}}/scope.md` with `read_artifact`; do not look for it in the workspace.",
52
+ "suggestedRole": "developer",
53
+ "consumes": [
54
+ {
55
+ "file": "{{workPath}}/scope.md",
56
+ "artifact": true
57
+ }
58
+ ],
59
+ "next": "dryrun"
60
+ },
61
+ {
62
+ "id": "dryrun",
63
+ "name": "Dry-run the recipe",
64
+ "description": "every trigger and action exercised against the devices, evidence on file",
65
+ "prompt": "Prove the recipe against the real device inventory before anyone arms it. Step 1: for every device the recipe references, read its current state through the project's home capabilities and confirm the device answers — a device that does not exist or does not respond sends you back to the draft, not onward. Step 2: exercise each action through the device tools' dry-run path, so the intended state change is checked without actually switching anything in the house. Step 3: record the evidence in {{workPath}}/dry-run.md — for each device: its id, the state you read, the dry-run response you got, verbatim — plus a short verdict per action (would fire as intended, or what was off). Step 4: if any action came back wrong, fix the recipe first and dry-run again; the notes must describe the run that matches the final recipe. Call write_task_note with the device count exercised and the verdict.\n\nThe deliverable `{{workPath}}/dry-run.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.",
66
+ "suggestedRole": "developer",
67
+ "advanceWhen": {
68
+ "file": "{{workPath}}/dry-run.md",
69
+ "minBytes": 1,
70
+ "sniff": "nonempty",
71
+ "artifact": true
72
+ },
73
+ "gate": {
74
+ "at": "completion",
75
+ "checks": [
76
+ {
77
+ "kind": "minBytes",
78
+ "file": "{{workPath}}/dry-run.md",
79
+ "bytes": 120,
80
+ "artifact": true
81
+ },
82
+ {
83
+ "kind": "sniff",
84
+ "file": "{{workPath}}/dry-run.md",
85
+ "sniff": "nonempty",
86
+ "artifact": true
87
+ }
88
+ ],
89
+ "onReject": "dryrun",
90
+ "maxAttempts": 3
91
+ },
92
+ "next": "report"
93
+ },
94
+ {
95
+ "id": "report",
96
+ "name": "Write the install notes",
97
+ "description": "what it does, how to arm it, how to stop it, what the dry run proved",
98
+ "prompt": "Write the install notes the owner will actually read. Step 1: open with one warm paragraph saying what the automation does and when — the intent sentence from {{workPath}}/scope.md, in the owner's language. Step 2: list the devices it touches, each with its friendly name and inventory id, and where the recipe file lives. Step 3: say how to arm it and — just as prominently — how to stop or override it: the manual override path from the recipe, spelled out so it works at 2am. Step 4: summarize what the dry run proved, citing the evidence in {{workPath}}/dry-run.md — which devices answered, which actions were exercised, and that nothing was actually switched. Step 5: close with what to watch the first week and the one or two ways this automation could misbehave (the safety rules from scope, made concrete). Write {{workPath}}/report.md and call write_task_note with a one-line DONE summary.\n\nBefore working, open the artifact inputs `{{workPath}}/scope.md`, `{{workPath}}/dry-run.md` with `read_artifact`; do not look for them in the workspace.\n\nThe deliverable `{{workPath}}/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.",
99
+ "suggestedRole": "copywriter",
100
+ "consumes": [
101
+ {
102
+ "file": "{{workPath}}/scope.md",
103
+ "artifact": true
104
+ },
105
+ {
106
+ "file": "{{workPath}}/dry-run.md",
107
+ "artifact": true
108
+ }
109
+ ],
110
+ "advanceWhen": {
111
+ "file": "{{workPath}}/report.md",
112
+ "minBytes": 1,
113
+ "sniff": "nonempty",
114
+ "artifact": true
115
+ },
116
+ "gate": {
117
+ "at": "completion",
118
+ "checks": [
119
+ {
120
+ "kind": "minBytes",
121
+ "file": "{{workPath}}/report.md",
122
+ "bytes": 800,
123
+ "artifact": true
124
+ },
125
+ {
126
+ "kind": "contains",
127
+ "file": "{{workPath}}/report.md",
128
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
129
+ "flags": "i",
130
+ "label": "at least one markdown heading",
131
+ "artifact": true
132
+ }
133
+ ],
134
+ "onReject": "report",
135
+ "maxAttempts": 4
136
+ },
137
+ "next": "evaluate"
138
+ },
139
+ {
140
+ "id": "evaluate",
141
+ "name": "Evaluate",
142
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
143
+ "prompt": "Open automations/, {{workPath}}/dry-run.md, {{workPath}}/report.md, and {{workPath}}/scope.md and verify every criterion from the checklist: the recipe file parses as JSON and carries a trigger, conditions, actions, and a manual override; every device id in the recipe appears in the inventory evidence gathered during scope and dry-run — no invented devices; the dry-run notes show every action exercised with real tool responses recorded, not paraphrased; and the install notes say how to arm the automation, how to stop it, and what the dry run proved. Write PASS/FAIL per criterion; on any failure, name the field or device that is wrong and loop back to draft.\n\nThe deliverable lives in the project's artifacts drawer — open `{{workPath}}/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: \"draft\" })` 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.",
144
+ "suggestedRole": "reviewer",
145
+ "consumes": [
146
+ {
147
+ "file": "{{workPath}}/report.md",
148
+ "artifact": true
149
+ }
150
+ ],
151
+ "next": "draft"
152
+ },
153
+ {
154
+ "id": "finish",
155
+ "name": "Finish",
156
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
157
+ "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.",
158
+ "suggestedRole": "developer",
159
+ "terminal": true
160
+ }
161
+ ],
162
+ "version": "1.0.2",
163
+ "releasedAt": "2026-08-21T00:00:00Z",
164
+ "paramSchema": {
165
+ "type": "object",
166
+ "properties": {
167
+ "workPath": {
168
+ "type": "string",
169
+ "title": "Working folder",
170
+ "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.",
171
+ "default": "{{task.dir}}"
172
+ }
173
+ }
174
+ },
175
+ "minGezelVersion": "1.26233"
176
+ }
@@ -0,0 +1,299 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Write an Automation Recipe smoke eval",
4
+ "objective": "Task-specific eval for the Write an Automation Recipe craftbook: a porch-light-at-sunset wish becomes a versioned JSON recipe grounded in the live fake-house inventory, dry-run through the wired device tools before anything would be armed, with a manual override written in and install notes that say how to stop it.",
5
+ "tags": [
6
+ "external"
7
+ ],
8
+ "prompt": "can you set up an automation so the porch light comes on at sunset when someones home? dry run it first plaese - i dont want anything actually switching yet",
9
+ "setup": {
10
+ "projectName": "Smart Home — Automation Recipe Eval",
11
+ "about": "Self-contained eval project for automation-recipe. The fake house's device tools are wired into the project's tool roster — the live inventory and device states come from them, and their state-setting path runs dry-run only in this eval, so nothing actually switches. A cached inventory snapshot from last night is on file at home/devices.json for reference; the live tools are authoritative. The recipe goes to automations/porch-light.json, the dry-run evidence to tasks/eval/dry-run.md, and the install notes to tasks/eval/report.md.",
12
+ "missionObjectives": "Use the Write an Automation Recipe craftbook/template, ground every device reference in the live inventory read through the wired device tools, exercise the recipe in dry-run before anything would be armed, and deliver automations/porch-light.json plus tasks/eval/report.md. No real smart-home services, hubs, or credentials — only the wired fake house.",
13
+ "files": [
14
+ {
15
+ "path": "home/devices.json",
16
+ "content": "{\n \"note\": \"cached inventory snapshot - the live device tools are authoritative\",\n \"generatedAt\": \"2026-07-18T22:30:00Z\",\n \"devices\": [\n { \"id\": \"dev-01\", \"name\": \"porch light\", \"zone\": \"outside\", \"type\": \"light\", \"state\": \"off\" },\n { \"id\": \"dev-02\", \"name\": \"front hall presence sensor\", \"zone\": \"hall\", \"type\": \"presence\", \"state\": \"home\" },\n { \"id\": \"dev-03\", \"name\": \"living room thermostat\", \"zone\": \"living room\", \"type\": \"thermostat\", \"state\": \"heat 19.5C\" },\n { \"id\": \"dev-04\", \"name\": \"garage door\", \"zone\": \"garage\", \"type\": \"cover\", \"state\": \"closed\" },\n { \"id\": \"dev-05\", \"name\": \"kitchen ceiling light\", \"zone\": \"kitchen\", \"type\": \"light\", \"state\": \"off\" },\n { \"id\": \"dev-06\", \"name\": \"bedroom lamp\", \"zone\": \"bedroom\", \"type\": \"light\", \"state\": \"off\" },\n { \"id\": \"dev-07\", \"name\": \"front door lock\", \"zone\": \"hall\", \"type\": \"lock\", \"state\": \"locked\" },\n { \"id\": \"dev-08\", \"name\": \"backyard motion sensor\", \"zone\": \"outside\", \"type\": \"motion\", \"state\": \"clear\", \"battery\": 82 }\n ]\n}\n"
17
+ }
18
+ ],
19
+ "worker": {
20
+ "name": "Daan",
21
+ "role": "Huisautomaat"
22
+ },
23
+ "craftbookParams": {
24
+ "workPath": "tasks/eval"
25
+ }
26
+ },
27
+ "mocks": [
28
+ {
29
+ "kind": "mcp",
30
+ "id": "home",
31
+ "description": "Fake smart-home MCP for this eval. Its tools surface directly on the tool roster: list the house's device inventory, read the current device states, and request a state change — state changes always run as a dry run here, validated and echoed back but never applied.",
32
+ "tools": [
33
+ {
34
+ "name": "list_devices",
35
+ "description": "List every device in the house with its id, name, zone, type, and current state",
36
+ "resultTemplate": {
37
+ "devices": [
38
+ {
39
+ "id": "dev-01",
40
+ "name": "porch light",
41
+ "zone": "outside",
42
+ "type": "light",
43
+ "state": "off"
44
+ },
45
+ {
46
+ "id": "dev-02",
47
+ "name": "front hall presence sensor",
48
+ "zone": "hall",
49
+ "type": "presence",
50
+ "state": "home"
51
+ },
52
+ {
53
+ "id": "dev-03",
54
+ "name": "living room thermostat",
55
+ "zone": "living room",
56
+ "type": "thermostat",
57
+ "state": "heat 19.5C"
58
+ },
59
+ {
60
+ "id": "dev-04",
61
+ "name": "garage door",
62
+ "zone": "garage",
63
+ "type": "cover",
64
+ "state": "closed"
65
+ },
66
+ {
67
+ "id": "dev-05",
68
+ "name": "kitchen ceiling light",
69
+ "zone": "kitchen",
70
+ "type": "light",
71
+ "state": "off"
72
+ },
73
+ {
74
+ "id": "dev-06",
75
+ "name": "bedroom lamp",
76
+ "zone": "bedroom",
77
+ "type": "light",
78
+ "state": "off"
79
+ },
80
+ {
81
+ "id": "dev-07",
82
+ "name": "front door lock",
83
+ "zone": "hall",
84
+ "type": "lock",
85
+ "state": "locked"
86
+ },
87
+ {
88
+ "id": "dev-08",
89
+ "name": "backyard motion sensor",
90
+ "zone": "outside",
91
+ "type": "motion",
92
+ "state": "clear",
93
+ "battery": 82
94
+ }
95
+ ]
96
+ }
97
+ },
98
+ {
99
+ "name": "get_state",
100
+ "description": "Read the current state snapshot of the house's devices",
101
+ "resultTemplate": {
102
+ "asOf": "2026-07-19T17:55:00Z",
103
+ "states": [
104
+ {
105
+ "id": "dev-01",
106
+ "name": "porch light",
107
+ "state": "off",
108
+ "reachable": true
109
+ },
110
+ {
111
+ "id": "dev-02",
112
+ "name": "front hall presence sensor",
113
+ "state": "home",
114
+ "reachable": true
115
+ },
116
+ {
117
+ "id": "dev-03",
118
+ "name": "living room thermostat",
119
+ "state": "heat 19.5C",
120
+ "reachable": true
121
+ },
122
+ {
123
+ "id": "dev-04",
124
+ "name": "garage door",
125
+ "state": "closed",
126
+ "reachable": true
127
+ },
128
+ {
129
+ "id": "dev-05",
130
+ "name": "kitchen ceiling light",
131
+ "state": "off",
132
+ "reachable": true
133
+ },
134
+ {
135
+ "id": "dev-06",
136
+ "name": "bedroom lamp",
137
+ "state": "off",
138
+ "reachable": true
139
+ },
140
+ {
141
+ "id": "dev-07",
142
+ "name": "front door lock",
143
+ "state": "locked",
144
+ "reachable": true
145
+ },
146
+ {
147
+ "id": "dev-08",
148
+ "name": "backyard motion sensor",
149
+ "state": "clear",
150
+ "battery": 82,
151
+ "reachable": true
152
+ }
153
+ ]
154
+ }
155
+ },
156
+ {
157
+ "name": "set_state",
158
+ "description": "Request a device state change; in this eval every request runs as a dry run — validated and echoed back, never applied",
159
+ "resultTemplate": {
160
+ "ok": true,
161
+ "mode": "dry-run",
162
+ "applied": false,
163
+ "note": "dry run only: the request was validated and recorded; no device state was changed"
164
+ }
165
+ }
166
+ ]
167
+ }
168
+ ],
169
+ "success": {
170
+ "summary": "automations/porch-light.json is a valid recipe whose trigger, conditions, actions, and manual override name only devices from the live inventory (the inventory was actually listed and the action path actually exercised in dry-run — request-log assertions), and tasks/eval/report.md says how to arm it, how to stop it, and what the dry run proved.",
171
+ "deliverables": [
172
+ {
173
+ "path": "automations/porch-light.json",
174
+ "kind": "json",
175
+ "checks": [
176
+ {
177
+ "kind": "sniff",
178
+ "file": "automations/porch-light.json",
179
+ "sniff": "json-valid"
180
+ },
181
+ {
182
+ "kind": "contains",
183
+ "file": "automations/porch-light.json",
184
+ "pattern": "trigger",
185
+ "flags": "i",
186
+ "label": "the recipe declares its trigger"
187
+ },
188
+ {
189
+ "kind": "contains",
190
+ "file": "automations/porch-light.json",
191
+ "pattern": "action",
192
+ "flags": "i",
193
+ "label": "the recipe declares its actions"
194
+ },
195
+ {
196
+ "kind": "contains",
197
+ "file": "automations/porch-light.json",
198
+ "pattern": "override|manual",
199
+ "flags": "i",
200
+ "label": "a manual override is written in"
201
+ },
202
+ {
203
+ "kind": "valuesSubsetOf",
204
+ "file": "automations/porch-light.json",
205
+ "sourceFiles": [
206
+ "home/devices.json"
207
+ ],
208
+ "pattern": "\"(dev-\\d{2})\"",
209
+ "minMatches": 2,
210
+ "label": "every device id in the recipe exists in the house inventory"
211
+ }
212
+ ]
213
+ },
214
+ {
215
+ "path": "tasks/eval/report.md",
216
+ "kind": "markdown-report",
217
+ "minBytes": 600,
218
+ "checks": [
219
+ {
220
+ "kind": "contains",
221
+ "file": "tasks/eval/report.md",
222
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
223
+ "flags": "i"
224
+ },
225
+ {
226
+ "kind": "contains",
227
+ "file": "tasks/eval/report.md",
228
+ "pattern": "dry[ -]?run",
229
+ "flags": "i",
230
+ "label": "the dry run is reported"
231
+ },
232
+ {
233
+ "kind": "contains",
234
+ "file": "tasks/eval/report.md",
235
+ "pattern": "override|manual|stop",
236
+ "flags": "i",
237
+ "label": "the install notes say how to stop it"
238
+ },
239
+ {
240
+ "kind": "citationsResolve",
241
+ "file": "tasks/eval/report.md",
242
+ "pattern": "(automations/[a-z0-9-]+\\.json)",
243
+ "minCitations": 1,
244
+ "label": "the install notes point at a recipe file that exists on disk"
245
+ },
246
+ {
247
+ "kind": "judge",
248
+ "file": "tasks/eval/report.md",
249
+ "rubric": "The install notes explain how to arm the automation and how to stop or override it in plain language, the dry-run summary matches the recorded evidence rather than overclaiming, and no device outside the house inventory is mentioned.",
250
+ "sourceFiles": [
251
+ "tasks/eval/dry-run.md",
252
+ "home/devices.json"
253
+ ],
254
+ "label": "honest, grounded install notes"
255
+ }
256
+ ]
257
+ }
258
+ ],
259
+ "mocks": [
260
+ {
261
+ "service": "home",
262
+ "minRequests": 2,
263
+ "requiredTools": [
264
+ "list_devices",
265
+ "set_state"
266
+ ]
267
+ }
268
+ ]
269
+ },
270
+ "rubric": {
271
+ "artifact": {
272
+ "path": "automations/porch-light.json",
273
+ "kind": "json"
274
+ },
275
+ "axes": [
276
+ {
277
+ "name": "safety",
278
+ "description": "Dry-run before arm is respected, a manual override is written into the recipe, and nothing claims to have actually switched a device."
279
+ },
280
+ {
281
+ "name": "groundedness",
282
+ "description": "Trigger, conditions, and actions reference real inventory device ids — the presence sensor and the porch light — never invented devices."
283
+ },
284
+ {
285
+ "name": "clarity",
286
+ "description": "The recipe reads as an inspectable record: concrete trigger, conditions, ordered actions, and a plain-language summary."
287
+ },
288
+ {
289
+ "name": "maintainability",
290
+ "description": "A stranger could arm, stop, or edit this automation from the recipe file and the install notes alone."
291
+ }
292
+ ]
293
+ },
294
+ "qualityFocus": [
295
+ "dry-run before arm",
296
+ "inventory-grounded device ids",
297
+ "manual override always present"
298
+ ]
299
+ }
@@ -0,0 +1,160 @@
1
+ {
2
+ "id": "backup-routine",
3
+ "name": "Scheduled Backup or Export",
4
+ "description": "Build a scheduled, idempotent backup/export routine that snapshots data (files, a database, or an app export) to a timestamped, optionally compressed destination, prunes old backups by a retention policy, and verifies each backup is restorable. Locks what to back up, the destination layout, the retention policy, and the integrity check FIRST, then builds the snapshot-write-verify-prune routine, then verifies a fresh backup is created, integrity-checked, and that retention deletes only what it should. Defining retention and an integrity check up front is the wisdom that turns backups from a false sense of safety into a tested recovery path.\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 backup (planner) — sources, destination layout, retention, integrity check → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Build the routine (developer) — snapshot, write, integrity-check, prune, log → gated on `backup.sh` (code-module)\n3. Verify the routine (reviewer) — fresh backup, integrity, safe retention, idempotency → gated on artifact `{{workPath}}/verify.md` (markdown-notes)\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
+ "set up a backup",
8
+ "scheduled export",
9
+ "automate backups",
10
+ "backup my database",
11
+ "nightly backup routine"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "scope",
16
+ "name": "Scope the backup",
17
+ "description": "sources, destination layout, retention, integrity check",
18
+ "prompt": "Define the backup contract before building. Step 1: list exactly what to back up (which directories / which database / which export endpoint) and what to exclude. Step 2: define the destination and naming layout (e.g. backups/{name}-{YYYYMMDD-HHMMSS}.tar.gz) and whether to compress and/or checksum. Step 3: define the retention policy precisely (e.g. keep last N, or keep dailies 7d + weeklies 4w) and confirm it can never delete the only/most-recent backup. Step 4: define the integrity check that proves a backup is restorable (verify the archive lists/extracts, the checksum matches, or a row-count/sentinel survives a test restore). Step 5: write an acceptance-criteria checklist ('a fresh timestamped backup is produced each run', 'backup passes the integrity check', 'retention prunes only out-of-policy backups and never the newest', 'run is idempotent and logs each backup', 'a failed source aborts with a non-zero status, no silent empty backup'). Call write_task_note with sources + layout + retention + integrity + checklist and write {{workPath}}/scope.md. No code yet.\n\nThe deliverable `{{workPath}}/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": "{{workPath}}/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": "{{workPath}}/scope.md",
32
+ "bytes": 120,
33
+ "artifact": true
34
+ },
35
+ {
36
+ "kind": "sniff",
37
+ "file": "{{workPath}}/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 routine",
50
+ "description": "snapshot, write, integrity-check, prune, log",
51
+ "prompt": "Implement the backup routine to the locked contract. Step 1: snapshot the sources into a timestamped artifact at the destination (compress/checksum as scoped); fail loudly with a non-zero exit if a source is missing or empty rather than writing a hollow archive. Step 2: run the integrity check immediately after writing (list/extract the archive, verify the checksum) and mark the backup verified only if it passes. Step 3: apply the retention policy — compute which backups are out-of-policy and delete only those, with a hard guard that never removes the most-recent verified backup. Step 4: append a backup-log entry (timestamp, size, checksum, verified, pruned list). Step 5: write the routine as a cron-friendly runnable module. Call write_task_note with the module path, the destination layout, and how integrity + retention are enforced.",
52
+ "suggestedRole": "developer",
53
+ "advanceWhen": {
54
+ "file": "backup.sh",
55
+ "minBytes": 1,
56
+ "sniff": "nonempty"
57
+ },
58
+ "gate": {
59
+ "at": "completion",
60
+ "checks": [
61
+ {
62
+ "kind": "minBytes",
63
+ "file": "backup.sh",
64
+ "bytes": 200
65
+ },
66
+ {
67
+ "kind": "sniff",
68
+ "file": "backup.sh",
69
+ "sniff": "nonempty"
70
+ },
71
+ {
72
+ "kind": "esmImports",
73
+ "file": "backup.sh"
74
+ },
75
+ {
76
+ "kind": "sourceParses",
77
+ "file": "backup.sh"
78
+ }
79
+ ],
80
+ "onReject": "build",
81
+ "maxAttempts": 3
82
+ },
83
+ "next": "verify"
84
+ },
85
+ {
86
+ "id": "verify",
87
+ "name": "Verify the routine",
88
+ "description": "fresh backup, integrity, safe retention, idempotency",
89
+ "prompt": "Verify the routine against scope. Step 1: confirm a run produces a fresh timestamped backup at the destination. Step 2: confirm the integrity check actually runs and that a corrupted/empty backup would be caught (the verified flag is meaningful). Step 3: confirm retention deletes only out-of-policy backups and that the newest verified backup is protected even at the retention boundary. Step 4: confirm idempotency and failure handling — a re-run does not clobber prior backups, and a missing source causes a non-zero exit with no hollow archive written. Step 5: confirm each backup is logged. Write PASS/FAIL per criterion to {{workPath}}/verify.md and task notes; on failure, name it and loop back to build.\n\nThe deliverable `{{workPath}}/verify.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.",
90
+ "suggestedRole": "reviewer",
91
+ "advanceWhen": {
92
+ "file": "{{workPath}}/verify.md",
93
+ "minBytes": 1,
94
+ "sniff": "nonempty",
95
+ "artifact": true
96
+ },
97
+ "gate": {
98
+ "at": "completion",
99
+ "checks": [
100
+ {
101
+ "kind": "minBytes",
102
+ "file": "backup.sh",
103
+ "bytes": 200
104
+ },
105
+ {
106
+ "kind": "sniff",
107
+ "file": "backup.sh",
108
+ "sniff": "nonempty"
109
+ },
110
+ {
111
+ "kind": "esmImports",
112
+ "file": "backup.sh"
113
+ },
114
+ {
115
+ "kind": "sourceParses",
116
+ "file": "backup.sh"
117
+ }
118
+ ],
119
+ "onReject": "verify",
120
+ "maxAttempts": 4
121
+ },
122
+ "next": "evaluate"
123
+ },
124
+ {
125
+ "id": "evaluate",
126
+ "name": "Evaluate",
127
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
128
+ "prompt": "Run backup.sh in a scratch location (or trace it) and verify every criterion from {{workPath}}/scope.md: a fresh timestamped backup is created, the integrity check runs and is meaningful, retention prunes only out-of-policy backups and never the newest verified one, a missing source aborts non-zero with no hollow archive, runs are idempotent, and each backup is logged. Write PASS/FAIL per criterion; on any failure, name it and loop back to build.\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.",
129
+ "suggestedRole": "reviewer",
130
+ "consumes": [
131
+ {
132
+ "file": "backup.sh"
133
+ }
134
+ ],
135
+ "next": "build"
136
+ },
137
+ {
138
+ "id": "finish",
139
+ "name": "Finish",
140
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
141
+ "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.",
142
+ "suggestedRole": "developer",
143
+ "terminal": true
144
+ }
145
+ ],
146
+ "version": "1.0.2",
147
+ "releasedAt": "2026-08-21T00:00:00Z",
148
+ "paramSchema": {
149
+ "type": "object",
150
+ "properties": {
151
+ "workPath": {
152
+ "type": "string",
153
+ "title": "Working folder",
154
+ "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.",
155
+ "default": "{{task.dir}}"
156
+ }
157
+ }
158
+ },
159
+ "minGezelVersion": "1.26233"
160
+ }