@bendyline/gilde 0.1.37 → 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 (551) 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.3/craftbook.json +9 -8
  361. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.4/craftbook.json +397 -0
  362. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.4/test.json +242 -0
  363. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.2/craftbook.json +153 -0
  364. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.2/test.json +113 -0
  365. package/data/craftbook-templates/pr/practice-exam/versions/1.0.2/craftbook.json +171 -0
  366. package/data/craftbook-templates/pr/practice-exam/versions/1.0.2/test.json +120 -0
  367. package/data/craftbook-templates/pr/practice-session/versions/1.0.2/craftbook.json +127 -0
  368. package/data/craftbook-templates/pr/practice-session/versions/1.0.2/test.json +117 -0
  369. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.2/craftbook.json +152 -0
  370. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.2/test.json +100 -0
  371. package/data/craftbook-templates/pr/press-release/versions/1.0.2/craftbook.json +155 -0
  372. package/data/craftbook-templates/pr/press-release/versions/1.0.2/test.json +359 -0
  373. package/data/craftbook-templates/pr/price-tracker/versions/1.0.2/craftbook.json +121 -0
  374. package/data/craftbook-templates/pr/price-tracker/versions/1.0.2/test.json +153 -0
  375. package/data/craftbook-templates/pr/pricing-page/versions/1.0.2/craftbook.json +196 -0
  376. package/data/craftbook-templates/pr/pricing-page/versions/1.0.2/test.json +100 -0
  377. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.2/craftbook.json +117 -0
  378. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.2/test.json +113 -0
  379. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.2/craftbook.json +155 -0
  380. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.2/test.json +113 -0
  381. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.1/craftbook.json +273 -0
  382. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.1/test.json +141 -0
  383. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.2/craftbook.json +279 -0
  384. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.2/test.json +144 -0
  385. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.2/craftbook.json +133 -0
  386. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.2/test.json +126 -0
  387. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.2/craftbook.json +167 -0
  388. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.2/test.json +100 -0
  389. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.2/craftbook.json +152 -0
  390. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.2/test.json +116 -0
  391. package/data/craftbook-templates/re/reading-list/versions/1.0.2/craftbook.json +119 -0
  392. package/data/craftbook-templates/re/reading-list/versions/1.0.2/test.json +113 -0
  393. package/data/craftbook-templates/re/receipt-intake/versions/1.0.2/craftbook.json +152 -0
  394. package/data/craftbook-templates/re/receipt-intake/versions/1.0.2/test.json +152 -0
  395. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.2/craftbook.json +152 -0
  396. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.2/test.json +107 -0
  397. package/data/craftbook-templates/re/reception-report/versions/1.0.1/craftbook.json +177 -0
  398. package/data/craftbook-templates/re/reception-report/versions/1.0.1/test.json +169 -0
  399. package/data/craftbook-templates/re/recipe-capture/versions/1.0.2/craftbook.json +152 -0
  400. package/data/craftbook-templates/re/recipe-capture/versions/1.0.2/test.json +131 -0
  401. package/data/craftbook-templates/re/record-a-relative/versions/1.0.2/craftbook.json +127 -0
  402. package/data/craftbook-templates/re/record-a-relative/versions/1.0.2/test.json +113 -0
  403. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.2/craftbook.json +160 -0
  404. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.2/test.json +107 -0
  405. package/data/craftbook-templates/re/refactor-module/versions/1.0.3/craftbook.json +160 -0
  406. package/data/craftbook-templates/re/refactor-module/versions/1.0.3/test.json +95 -0
  407. package/data/craftbook-templates/re/regex-builder/versions/1.0.2/craftbook.json +159 -0
  408. package/data/craftbook-templates/re/regex-builder/versions/1.0.2/test.json +95 -0
  409. package/data/craftbook-templates/re/release-announcement/versions/1.0.2/craftbook.json +171 -0
  410. package/data/craftbook-templates/re/release-announcement/versions/1.0.2/test.json +205 -0
  411. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.2/craftbook.json +226 -0
  412. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.2/test.json +141 -0
  413. package/data/craftbook-templates/re/release-notes/versions/1.0.2/craftbook.json +171 -0
  414. package/data/craftbook-templates/re/release-notes/versions/1.0.2/test.json +114 -0
  415. package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.2/craftbook.json +159 -0
  416. package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.2/test.json +165 -0
  417. package/data/craftbook-templates/re/release-readiness-review/versions/1.0.2/craftbook.json +153 -0
  418. package/data/craftbook-templates/re/release-readiness-review/versions/1.0.2/test.json +113 -0
  419. package/data/craftbook-templates/re/reliability-review/versions/1.0.2/craftbook.json +165 -0
  420. package/data/craftbook-templates/re/reliability-review/versions/1.0.2/test.json +115 -0
  421. package/data/craftbook-templates/re/report-pdf/versions/1.1.2/craftbook.json +185 -0
  422. package/data/craftbook-templates/re/report-pdf/versions/1.1.2/test.json +101 -0
  423. package/data/craftbook-templates/re/research-report/versions/1.0.2/craftbook.json +158 -0
  424. package/data/craftbook-templates/re/research-report/versions/1.0.2/test.json +113 -0
  425. package/data/craftbook-templates/re/research-to-document/versions/1.2.2/craftbook.json +228 -0
  426. package/data/craftbook-templates/re/research-to-document/versions/1.2.2/test.json +243 -0
  427. package/data/craftbook-templates/re/rest-api/versions/1.0.3/craftbook.json +159 -0
  428. package/data/craftbook-templates/re/rest-api/versions/1.0.3/test.json +390 -0
  429. package/data/craftbook-templates/re/resume-cv/versions/1.0.2/craftbook.json +155 -0
  430. package/data/craftbook-templates/re/resume-cv/versions/1.0.2/test.json +100 -0
  431. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.2/craftbook.json +171 -0
  432. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.2/test.json +165 -0
  433. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.4/craftbook.json +425 -0
  434. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.4/test.json +157 -0
  435. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.3/craftbook.json +179 -0
  436. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.3/test.json +140 -0
  437. package/data/craftbook-templates/ru/runbook/versions/1.0.2/craftbook.json +157 -0
  438. package/data/craftbook-templates/ru/runbook/versions/1.0.2/test.json +121 -0
  439. package/data/craftbook-templates/sc/schema-migration/versions/1.0.2/craftbook.json +156 -0
  440. package/data/craftbook-templates/sc/schema-migration/versions/1.0.2/test.json +106 -0
  441. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.3/craftbook.json +152 -0
  442. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.3/test.json +165 -0
  443. package/data/craftbook-templates/sc/script-automation/versions/1.0.2/craftbook.json +160 -0
  444. package/data/craftbook-templates/sc/script-automation/versions/1.0.2/test.json +165 -0
  445. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.3/craftbook.json +159 -0
  446. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.3/test.json +93 -0
  447. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.2/craftbook.json +152 -0
  448. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.2/test.json +113 -0
  449. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.4/craftbook.json +452 -0
  450. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.4/test.json +157 -0
  451. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.2/craftbook.json +117 -0
  452. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.2/test.json +100 -0
  453. package/data/craftbook-templates/so/social-digest/versions/1.0.1/craftbook.json +140 -0
  454. package/data/craftbook-templates/so/social-digest/versions/1.0.1/test.json +169 -0
  455. package/data/craftbook-templates/so/social-thread/versions/1.0.2/craftbook.json +119 -0
  456. package/data/craftbook-templates/so/social-thread/versions/1.0.2/test.json +113 -0
  457. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.2/craftbook.json +152 -0
  458. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.2/test.json +161 -0
  459. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.2/craftbook.json +155 -0
  460. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.2/test.json +100 -0
  461. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.4/craftbook.json +448 -0
  462. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.4/test.json +165 -0
  463. package/data/craftbook-templates/sp/spec-doc/versions/1.0.2/craftbook.json +155 -0
  464. package/data/craftbook-templates/sp/spec-doc/versions/1.0.2/test.json +107 -0
  465. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.2/craftbook.json +121 -0
  466. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.2/test.json +163 -0
  467. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.2/craftbook.json +149 -0
  468. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.2/test.json +106 -0
  469. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.2/craftbook.json +121 -0
  470. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.2/test.json +107 -0
  471. package/data/craftbook-templates/st/standup-summary/versions/1.0.2/craftbook.json +119 -0
  472. package/data/craftbook-templates/st/standup-summary/versions/1.0.2/test.json +113 -0
  473. package/data/craftbook-templates/st/state-machine/versions/1.0.2/craftbook.json +159 -0
  474. package/data/craftbook-templates/st/state-machine/versions/1.0.2/test.json +95 -0
  475. package/data/craftbook-templates/st/status-report/versions/1.0.2/craftbook.json +158 -0
  476. package/data/craftbook-templates/st/status-report/versions/1.0.2/test.json +113 -0
  477. package/data/craftbook-templates/su/subscription-audit/versions/1.0.2/craftbook.json +152 -0
  478. package/data/craftbook-templates/su/subscription-audit/versions/1.0.2/test.json +107 -0
  479. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.2/craftbook.json +140 -0
  480. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.2/test.json +106 -0
  481. package/data/craftbook-templates/su/summarize-long/versions/1.0.2/craftbook.json +119 -0
  482. package/data/craftbook-templates/su/summarize-long/versions/1.0.2/test.json +113 -0
  483. package/data/craftbook-templates/su/survey-analysis/versions/1.0.2/craftbook.json +153 -0
  484. package/data/craftbook-templates/su/survey-analysis/versions/1.0.2/test.json +107 -0
  485. package/data/craftbook-templates/sv/svg-animation/versions/1.0.2/craftbook.json +122 -0
  486. package/data/craftbook-templates/sv/svg-animation/versions/1.0.2/test.json +100 -0
  487. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.2/craftbook.json +126 -0
  488. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.2/test.json +100 -0
  489. package/data/craftbook-templates/te/technical-documentation/versions/2.0.4/craftbook.json +420 -0
  490. package/data/craftbook-templates/te/technical-documentation/versions/2.0.4/test.json +177 -0
  491. package/data/craftbook-templates/te/test-coverage-review/versions/1.1.2/craftbook.json +153 -0
  492. package/data/craftbook-templates/te/test-coverage-review/versions/1.1.2/test.json +116 -0
  493. package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.2/craftbook.json +132 -0
  494. package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.2/test.json +95 -0
  495. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.2/craftbook.json +155 -0
  496. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.2/test.json +144 -0
  497. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.2/craftbook.json +155 -0
  498. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.2/test.json +145 -0
  499. package/data/craftbook-templates/th/threat-model/versions/1.0.2/craftbook.json +153 -0
  500. package/data/craftbook-templates/th/threat-model/versions/1.0.2/test.json +113 -0
  501. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.2/craftbook.json +115 -0
  502. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.2/test.json +106 -0
  503. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.2/craftbook.json +172 -0
  504. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.2/test.json +162 -0
  505. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.2/craftbook.json +119 -0
  506. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.2/test.json +113 -0
  507. package/data/craftbook-templates/to/topic-explainer/versions/1.0.2/craftbook.json +152 -0
  508. package/data/craftbook-templates/to/topic-explainer/versions/1.0.2/test.json +113 -0
  509. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.2/craftbook.json +127 -0
  510. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.2/test.json +101 -0
  511. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.2/craftbook.json +119 -0
  512. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.2/test.json +106 -0
  513. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.2/craftbook.json +183 -0
  514. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.2/test.json +154 -0
  515. package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.2/craftbook.json +160 -0
  516. package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.2/test.json +95 -0
  517. package/data/craftbook-templates/ve/version-bump/versions/1.0.2/craftbook.json +167 -0
  518. package/data/craftbook-templates/ve/version-bump/versions/1.0.2/test.json +95 -0
  519. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.2/craftbook.json +121 -0
  520. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.2/test.json +106 -0
  521. package/data/craftbook-templates/vi/visit-prep/versions/1.0.2/craftbook.json +152 -0
  522. package/data/craftbook-templates/vi/visit-prep/versions/1.0.2/test.json +100 -0
  523. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.2/craftbook.json +119 -0
  524. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.2/test.json +106 -0
  525. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.2/craftbook.json +166 -0
  526. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.2/test.json +127 -0
  527. package/data/craftbook-templates/we/web-app-crud/versions/1.0.2/craftbook.json +155 -0
  528. package/data/craftbook-templates/we/web-app-crud/versions/1.0.2/test.json +100 -0
  529. package/data/craftbook-templates/we/web-component/versions/1.0.2/craftbook.json +122 -0
  530. package/data/craftbook-templates/we/web-component/versions/1.0.2/test.json +100 -0
  531. package/data/craftbook-templates/we/webhook-handler/versions/1.0.2/craftbook.json +159 -0
  532. package/data/craftbook-templates/we/webhook-handler/versions/1.0.2/test.json +165 -0
  533. package/data/craftbook-templates/we/week-plan/versions/1.0.2/craftbook.json +152 -0
  534. package/data/craftbook-templates/we/week-plan/versions/1.0.2/test.json +258 -0
  535. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.2/craftbook.json +152 -0
  536. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.2/test.json +100 -0
  537. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.2/craftbook.json +118 -0
  538. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.2/test.json +107 -0
  539. package/data/craftbook-templates/we/weekly-review/versions/1.0.2/craftbook.json +119 -0
  540. package/data/craftbook-templates/we/weekly-review/versions/1.0.2/test.json +113 -0
  541. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.2/craftbook.json +152 -0
  542. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.2/test.json +141 -0
  543. package/data/craftbook-templates/wh/whitepaper/versions/1.0.2/craftbook.json +153 -0
  544. package/data/craftbook-templates/wh/whitepaper/versions/1.0.2/test.json +113 -0
  545. package/data/craftbook-templates/ye/year-in-review/versions/1.0.2/craftbook.json +127 -0
  546. package/data/craftbook-templates/ye/year-in-review/versions/1.0.2/test.json +148 -0
  547. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.2/craftbook.json +146 -0
  548. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.2/test.json +106 -0
  549. package/package.json +1 -1
  550. package/schemas/craftbook-doc.schema.json +4 -2
  551. package/schemas/craftbook-template-version.schema.json +4 -2
@@ -0,0 +1,160 @@
1
+ {
2
+ "id": "script-automation",
3
+ "name": "One-Off Automation Script",
4
+ "description": "Write a one-off automation script that reliably does a repetitive task — process files, call an API, transform data — with arguments, a dry-run, idempotency, and clear logging so it is safe to run. Scopes the task FIRST — inputs/outputs, side-effects, the dry-run, idempotency, and failure handling — then implements the runnable script with args and a dry-run mode, then a reviewer confirms it does the job, is safe to re-run, and fails loudly. Covers argument handling, dry-run/preview mode, idempotent side-effects, progress logging, error handling, and safe-to-rerun automation.\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 task (planner) — lock inputs/outputs, side-effects, dry-run, safety → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Build the script (developer) — implement the runnable script with dry-run → gated on `src/script.js` (code-module)\n3. Verify the script (reviewer) — confirm it works, is rerun-safe, fails loudly → 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
+ "write an automation script",
8
+ "automate a task",
9
+ "one-off script",
10
+ "script to process files",
11
+ "batch automation"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "scope",
16
+ "name": "Scope the task",
17
+ "description": "lock inputs/outputs, side-effects, dry-run, safety",
18
+ "prompt": "Scope the automation before coding — a script with side-effects deserves a plan. Step 1: State exactly what the script does, its INPUTS (args, files, env) and its OUTPUTS/side-effects (files written, API calls, records changed). Step 2: Decide the safety affordances: a DRY-RUN/preview mode that shows what would happen without doing it, and how the real run is confirmed. Step 3: Decide idempotency — re-running must not double-apply (skip already-done work) — and failure handling (stop vs skip-and-log, exit code). Step 4: Decide the logging: what progress and summary it prints. Step 5: Write a numbered acceptance-criteria checklist of 5-9 items (e.g. 'a dry-run makes no changes and previews the plan', 'a real run performs the task', 're-running is a safe no-op on already-done items', 'errors are logged and exit non-zero'). `write_task_note` the scope + checklist and write the same to the produces path.\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 script",
50
+ "description": "implement the runnable script with dry-run",
51
+ "prompt": "Implement the script to the scope as a single runnable file. Step 1: Parse the arguments (including a `--dry-run` flag) and validate inputs up front, failing fast with a clear message on bad args. Step 2: Implement the core task; in dry-run mode, LOG what each action WOULD do and make zero side-effects, while the real run performs them. Step 3: Make side-effects idempotent — check before writing/calling so a re-run skips already-done items. Step 4: Log progress per item and a final summary (done/skipped/failed counts); on error, log it clearly and exit non-zero. Write the script to the produces path. On a loop-back, fix only the named gap. `write_task_note` the file path and which criteria now pass.",
52
+ "suggestedRole": "developer",
53
+ "advanceWhen": {
54
+ "file": "src/script.js",
55
+ "minBytes": 1,
56
+ "sniff": "nonempty"
57
+ },
58
+ "gate": {
59
+ "at": "completion",
60
+ "checks": [
61
+ {
62
+ "kind": "minBytes",
63
+ "file": "src/script.js",
64
+ "bytes": 200
65
+ },
66
+ {
67
+ "kind": "sniff",
68
+ "file": "src/script.js",
69
+ "sniff": "nonempty"
70
+ },
71
+ {
72
+ "kind": "esmImports",
73
+ "file": "src/script.js"
74
+ },
75
+ {
76
+ "kind": "sourceParses",
77
+ "file": "src/script.js"
78
+ }
79
+ ],
80
+ "onReject": "build",
81
+ "maxAttempts": 3
82
+ },
83
+ "next": "verify"
84
+ },
85
+ {
86
+ "id": "verify",
87
+ "name": "Verify the script",
88
+ "description": "confirm it works, is rerun-safe, fails loudly",
89
+ "prompt": "Verify the automation is correct and safe. Step 1: Run it with `--dry-run` and confirm it previews actions and makes NO changes. Step 2: Run it for real on sample input and confirm it performs the task and prints a sensible summary. Step 3: Run it AGAIN and confirm the second run is a safe no-op on already-done items (idempotent). Step 4: Feed bad input/args and confirm it fails loudly with a clear message and a non-zero exit. Write a verification note covering the dry-run, real run, re-run, and error handling to the produces path.\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": "src/script.js",
103
+ "bytes": 200
104
+ },
105
+ {
106
+ "kind": "sniff",
107
+ "file": "src/script.js",
108
+ "sniff": "nonempty"
109
+ },
110
+ {
111
+ "kind": "esmImports",
112
+ "file": "src/script.js"
113
+ },
114
+ {
115
+ "kind": "sourceParses",
116
+ "file": "src/script.js"
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 the script in dry-run, real, re-run, and error modes. For EACH acceptance criterion: confirm dry-run makes no changes and previews the plan, confirm a real run performs the task with a summary, confirm a re-run is a safe no-op on done items, and confirm bad input fails loudly with a non-zero exit. Write PASS/FAIL per criterion; a dry-run that mutates state or a non-idempotent re-run is a FAIL.\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": "src/script.js"
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
+ }
@@ -0,0 +1,165 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "One-Off Automation Script smoke eval",
4
+ "objective": "Self-contained smoke eval for the One-Off Automation Script craftbook using the external generic harness.",
5
+ "tags": [
6
+ "external"
7
+ ],
8
+ "prompt": "Theres a fake ops service wired up for this so nothing real gets touched — the endpoints are in mocks/services.md, and the ready-made mock-probe script talks to them for you. Can you run the automation against it and write up how it went in automation.md?",
9
+ "setup": {
10
+ "projectName": "One-Off Automation Script Eval",
11
+ "about": "Self-contained eval project for script-automation. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/automation.md.",
12
+ "missionObjectives": "Use the One-Off Automation Script craftbook/template, read the seeded local fixtures, and write automation.md without network calls, real credentials, or live services.",
13
+ "files": [
14
+ {
15
+ "path": "source/brief.md",
16
+ "content": "# One-Off Automation Script 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: script-automation - One-Off Automation Script.\n"
17
+ }
18
+ ],
19
+ "worker": {
20
+ "name": "Jules",
21
+ "role": "Developer"
22
+ },
23
+ "craftbookParams": {
24
+ "workPath": "tasks/eval"
25
+ }
26
+ },
27
+ "mocks": [
28
+ {
29
+ "kind": "http",
30
+ "id": "ops",
31
+ "description": "Fake operations service for this eval. GET /api/bookings/open lists the open work items; POST /api/bookings/dry-run records a simulated submission and returns DRY_RUN_OK.",
32
+ "credential": {
33
+ "name": "mock.ops"
34
+ },
35
+ "routes": [
36
+ {
37
+ "method": "GET",
38
+ "path": "/api/bookings/open",
39
+ "body": {
40
+ "items": [
41
+ "BKG-1001",
42
+ "BKG-1002",
43
+ "BKG-1003"
44
+ ]
45
+ }
46
+ },
47
+ {
48
+ "method": "POST",
49
+ "path": "/api/bookings/dry-run",
50
+ "status": 201,
51
+ "body": {
52
+ "status": "DRY_RUN_OK",
53
+ "recorded": 3
54
+ }
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "kind": "webhook",
60
+ "id": "notify",
61
+ "description": "Notification receiver. POST a JSON completion notice here when the run finishes.",
62
+ "path": "/hooks/notify"
63
+ },
64
+ {
65
+ "kind": "cli",
66
+ "id": "probe",
67
+ "description": "Provenance-trusted project script `mock-probe` that exercises the fake ops service through http.authed and returns the raw responses.",
68
+ "shim": {
69
+ "path": "scripts/mock-probe.ts",
70
+ "content": "import { defineScript, gezel } from '@bendyline/gezel-sdk';\n\nexport const meta = defineScript({\n name: 'mock-probe',\n description:\n 'Probe the live fake ops service for this eval: lists the open work items and records a dry-run submission. Outputs the raw JSON responses as evidence for the write-up.',\n inputs: {},\n outputs: {\n open: { type: 'string', description: 'Raw JSON body from the open-items listing.' },\n dryRun: { type: 'string', description: 'Raw JSON body from the dry-run submission.' },\n },\n requires: ['workspace.read', 'network', 'credential:mock.ops'],\n});\n\nconst services = JSON.parse(await gezel.fs.read('mocks/services.json'));\nconst base = (id) => {\n const service = services.find((entry) => entry.id === id);\n if (!service) throw new Error(`mock service \"${id}\" is not listed in mocks/services.json`);\n return service.baseUrl;\n};\n\nconst open = await gezel.http.authed(`${base('ops')}/api/bookings/open`, {\n credential: 'mock.ops',\n});\nif (!open.ok) throw new Error(`open-items listing failed: ${open.status} ${open.body}`);\n\nconst dryRun = await gezel.http.authed(`${base('ops')}/api/bookings/dry-run`, {\n credential: 'mock.ops',\n method: 'POST',\n body: JSON.stringify({ items: JSON.parse(open.body).items, mode: 'dry-run' }),\n});\nif (!dryRun.ok) throw new Error(`dry-run submission failed: ${dryRun.status} ${dryRun.body}`);\n\ngezel.output({ open: open.body, dryRun: dryRun.body });\n"
71
+ }
72
+ }
73
+ ],
74
+ "success": {
75
+ "summary": "automation.md is grounded in live fake-service responses: the open items were actually listed and a dry-run actually recorded (request-log assertions), with safety guards and signals described.",
76
+ "deliverables": [
77
+ {
78
+ "path": "automation.md",
79
+ "kind": "markdown-report",
80
+ "minBytes": 900,
81
+ "checks": [
82
+ {
83
+ "kind": "contains",
84
+ "file": "automation.md",
85
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
86
+ "flags": "i"
87
+ },
88
+ {
89
+ "kind": "contains",
90
+ "file": "automation.md",
91
+ "pattern": "DRY_RUN_OK|dry-run|dry run",
92
+ "flags": "i"
93
+ },
94
+ {
95
+ "kind": "contains",
96
+ "file": "automation.md",
97
+ "pattern": "fake-ci|fake-github|/api/bookings",
98
+ "flags": "i"
99
+ },
100
+ {
101
+ "kind": "contains",
102
+ "file": "automation.md",
103
+ "pattern": "no real|credentials|safety|guard",
104
+ "flags": "i"
105
+ },
106
+ {
107
+ "kind": "contains",
108
+ "file": "automation.md",
109
+ "pattern": "success|failure|retry|abort",
110
+ "flags": "i"
111
+ }
112
+ ]
113
+ }
114
+ ],
115
+ "mocks": [
116
+ {
117
+ "service": "ops",
118
+ "minRequests": 2,
119
+ "requiredPaths": [
120
+ "^/api/bookings/open$",
121
+ "^/api/bookings/dry-run$"
122
+ ]
123
+ }
124
+ ]
125
+ },
126
+ "rubric": {
127
+ "artifact": {
128
+ "path": "automation.md",
129
+ "kind": "markdown"
130
+ },
131
+ "axes": [
132
+ {
133
+ "name": "safety",
134
+ "description": "Dry-run posture is explicit: no real credentials, clear stop-before-side-effect boundary."
135
+ },
136
+ {
137
+ "name": "mapping",
138
+ "description": "Fake endpoints/commands are mapped completely to the workflow steps."
139
+ },
140
+ {
141
+ "name": "signals",
142
+ "description": "Success, failure, retry, and abort conditions are all defined."
143
+ },
144
+ {
145
+ "name": "containment",
146
+ "description": "The plan cannot accidentally reach a real service from a mock context."
147
+ }
148
+ ]
149
+ },
150
+ "qualityFocus": [
151
+ "dry-run safety",
152
+ "fake tool mapping",
153
+ "side-effect containment"
154
+ ],
155
+ "extensions": {
156
+ "legacySimulators": [
157
+ {
158
+ "id": "script-automation-fake-service-fixture",
159
+ "kind": "data-source",
160
+ "status": "implemented",
161
+ "description": "Seeded local fake service contract replacing live CLIs, HTTP APIs, credentials, and side effects."
162
+ }
163
+ ]
164
+ }
165
+ }
@@ -0,0 +1,159 @@
1
+ {
2
+ "id": "sdk-wrapper",
3
+ "name": "Typed SDK Wrapper for an External API",
4
+ "description": "Wrap a third-party HTTP API as a clean, typed client library — studying the real API surface first so the wrapper matches reality, not guesses. Studies the API FIRST — endpoints, auth, request/response shapes, rate limits, error formats, and pagination from the actual docs — then builds a typed client with sensible methods and error handling, then tests each method against a mocked API including auth and error paths. Covers reading API docs, typed request/response models, auth handling, retry/rate-limit awareness, pagination helpers, error mapping, and a mockable client.\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. Study the API (researcher) — extract endpoints, auth, shapes, limits from the docs → gated on artifact `{{workPath}}/api-study.md` (markdown-notes)\n2. Build the client (developer) — implement the typed client to the study → gated on `src/client.ts` (code-module)\n3. Test against a mock (developer) — test each method, auth, errors, pagination → gated on `src/client.test.ts` (code-with-tests)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "api-study",
6
+ "triggers": [
7
+ "wrap an api",
8
+ "build an sdk client",
9
+ "typed api client",
10
+ "create a wrapper for an external api",
11
+ "api client library"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "api-study",
16
+ "name": "Study the API",
17
+ "description": "extract endpoints, auth, shapes, limits from the docs",
18
+ "prompt": "Study the real external API before writing a client — the wrapper must match reality, not a guess. Step 1: From the API's documentation, list the endpoints you will wrap with their methods, paths, and required params. Step 2: Capture the AUTH scheme (API key header, OAuth bearer, etc.) and how it is attached to requests. Step 3: Record the request and response JSON shapes for each endpoint, the error response format and status codes, the pagination scheme, and any rate limits. Step 4: Note quirks (snake_case fields, nullable fields, enum values). Step 5: Write a numbered acceptance-criteria checklist of 5-9 items (e.g. 'each wrapped endpoint has a typed method matching the real shape', 'auth is attached correctly', 'API errors map to a typed client error', 'pagination is handled'). `write_task_note` the API study (endpoints + shapes + auth + errors) + checklist and write the same to the produces path.\n\nThe deliverable `{{workPath}}/api-study.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": "researcher",
20
+ "advanceWhen": {
21
+ "file": "{{workPath}}/api-study.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}}/api-study.md",
32
+ "bytes": 120,
33
+ "artifact": true
34
+ },
35
+ {
36
+ "kind": "sniff",
37
+ "file": "{{workPath}}/api-study.md",
38
+ "sniff": "nonempty",
39
+ "artifact": true
40
+ }
41
+ ],
42
+ "onReject": "api-study",
43
+ "maxAttempts": 3
44
+ },
45
+ "next": "build"
46
+ },
47
+ {
48
+ "id": "build",
49
+ "name": "Build the client",
50
+ "description": "implement the typed client to the study",
51
+ "prompt": "Implement the typed client to the API study. Step 1: Define request/response types matching the real shapes (including the API's casing and nullability), and a typed error type. Step 2: Write a client class/factory that takes config (base URL, credentials) and attaches auth to every request as studied. Step 3: Implement one method per wrapped endpoint with typed params and a typed return; parse responses into the typed models. Step 4: Map non-2xx responses to the typed client error (do not leak raw HTTP), and add a pagination helper and basic retry/backoff for rate limits if the API needs it. Step 5: Make the transport injectable so it can be mocked in tests. Write the client to the produces path. On a loop-back, fix only the named gaps. `write_task_note` the file path and which criteria now pass.",
52
+ "suggestedRole": "developer",
53
+ "advanceWhen": {
54
+ "file": "src/client.ts",
55
+ "minBytes": 1,
56
+ "sniff": "nonempty"
57
+ },
58
+ "gate": {
59
+ "at": "completion",
60
+ "checks": [
61
+ {
62
+ "kind": "minBytes",
63
+ "file": "src/client.ts",
64
+ "bytes": 200
65
+ },
66
+ {
67
+ "kind": "sniff",
68
+ "file": "src/client.ts",
69
+ "sniff": "nonempty"
70
+ },
71
+ {
72
+ "kind": "esmImports",
73
+ "file": "src/client.ts"
74
+ },
75
+ {
76
+ "kind": "sourceParses",
77
+ "file": "src/client.ts"
78
+ }
79
+ ],
80
+ "onReject": "build",
81
+ "maxAttempts": 3
82
+ },
83
+ "next": "test"
84
+ },
85
+ {
86
+ "id": "test",
87
+ "name": "Test against a mock",
88
+ "description": "test each method, auth, errors, pagination",
89
+ "prompt": "Write tests against a mocked transport (no live network). Step 1: For each method, mock the API's documented success response and assert the client returns the correctly-typed parsed result. Step 2: Assert auth headers/credentials are attached to outgoing requests. Step 3: Mock error responses (4xx/5xx) and assert they surface as the typed client error, not a raw HTTP throw. Step 4: Assert the pagination helper walks multiple pages, and retry/backoff fires on a rate-limit response if implemented. `write_task_note` the test file path and pass/fail count.",
90
+ "suggestedRole": "developer",
91
+ "advanceWhen": {
92
+ "file": "src/client.test.ts",
93
+ "minBytes": 1,
94
+ "sniff": "nonempty"
95
+ },
96
+ "gate": {
97
+ "at": "completion",
98
+ "checks": [
99
+ {
100
+ "kind": "minBytes",
101
+ "file": "src/client.ts",
102
+ "bytes": 200
103
+ },
104
+ {
105
+ "kind": "sniff",
106
+ "file": "src/client.ts",
107
+ "sniff": "nonempty"
108
+ },
109
+ {
110
+ "kind": "esmImports",
111
+ "file": "src/client.ts"
112
+ },
113
+ {
114
+ "kind": "sourceParses",
115
+ "file": "src/client.ts"
116
+ }
117
+ ],
118
+ "onReject": "test",
119
+ "maxAttempts": 4
120
+ },
121
+ "next": "evaluate"
122
+ },
123
+ {
124
+ "id": "evaluate",
125
+ "name": "Evaluate",
126
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
127
+ "prompt": "Run the tests against the mocked API. For EACH acceptance criterion: confirm each method returns the correctly-typed result for the documented response, confirm auth is attached, confirm API errors map to a typed client error (no raw HTTP leak), and confirm pagination/retry behave. Write PASS/FAIL per criterion; a method whose types do not match the real API shape is a FAIL.\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.",
128
+ "suggestedRole": "reviewer",
129
+ "consumes": [
130
+ {
131
+ "file": "src/client.ts"
132
+ }
133
+ ],
134
+ "next": "build"
135
+ },
136
+ {
137
+ "id": "finish",
138
+ "name": "Finish",
139
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
140
+ "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.",
141
+ "suggestedRole": "developer",
142
+ "terminal": true
143
+ }
144
+ ],
145
+ "version": "1.0.3",
146
+ "releasedAt": "2026-08-21T00:00:00Z",
147
+ "paramSchema": {
148
+ "type": "object",
149
+ "properties": {
150
+ "workPath": {
151
+ "type": "string",
152
+ "title": "Working folder",
153
+ "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.",
154
+ "default": "{{task.dir}}"
155
+ }
156
+ }
157
+ },
158
+ "minGezelVersion": "1.26233"
159
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Typed SDK wrapper against a fictional API",
4
+ "objective": "Measure whether the SDK-wrapper task class can study an API, implement a typed client, mock transport, and pass behavioral tests without using live network access.",
5
+ "tags": [
6
+ "code"
7
+ ],
8
+ "prompt": "We need a small Node helper for this — the requirments are in source/requirements.md. Put it in src/solution.mjs.",
9
+ "setup": {
10
+ "projectName": "Typed SDK Wrapper for an External API Eval",
11
+ "files": [
12
+ {
13
+ "path": "source/brief.md",
14
+ "content": "# Typed SDK Wrapper for an External API 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: sdk-wrapper - Typed SDK Wrapper for an External API.\n"
15
+ },
16
+ {
17
+ "path": "source/requirements.md",
18
+ "content": "# Runner Requirements\n\nBuild a dependency-free Node ESM helper for Boreal Desk support operations. Export at least one function. Include a tiny self-test section using node:assert or an equivalent assertion helper. Use fixture values for 18 -> 6 hour response time and 14.2 -> 8.9 refund leakage.\n"
19
+ }
20
+ ],
21
+ "worker": {
22
+ "name": "Jules",
23
+ "role": "Developer"
24
+ },
25
+ "craftbookParams": {
26
+ "workPath": "tasks/eval"
27
+ }
28
+ },
29
+ "mocks": [],
30
+ "success": {
31
+ "summary": "The hand-authored fictional-sdk grader seeds a fictional API library and requires a worker module that obeys auth, batching, ack, close, and spam-filter semantics.",
32
+ "deliverables": [
33
+ {
34
+ "path": "src/solution.mjs",
35
+ "kind": "code-with-tests",
36
+ "minBytes": 1500,
37
+ "checks": [
38
+ {
39
+ "kind": "esmImports",
40
+ "file": "src/solution.mjs"
41
+ },
42
+ {
43
+ "kind": "contains",
44
+ "file": "src/solution.mjs",
45
+ "pattern": "export\\s+(function|const|class)|export\\s*\\{",
46
+ "flags": "i"
47
+ },
48
+ {
49
+ "kind": "contains",
50
+ "file": "src/solution.mjs",
51
+ "pattern": "assert|test|describe|it|expect",
52
+ "flags": "i"
53
+ },
54
+ {
55
+ "kind": "contains",
56
+ "file": "src/solution.mjs",
57
+ "pattern": "18|6|14\\.2|8\\.9|Boreal",
58
+ "flags": "i"
59
+ }
60
+ ]
61
+ }
62
+ ]
63
+ },
64
+ "rubric": {
65
+ "artifact": {
66
+ "path": "src/solution.mjs",
67
+ "kind": "typescript"
68
+ },
69
+ "axes": [
70
+ {
71
+ "name": "correctness",
72
+ "description": "The module does what the requirements ask, with sensible edge handling."
73
+ },
74
+ {
75
+ "name": "verification",
76
+ "description": "Self-tests exercise real behavior, not trivial truths."
77
+ },
78
+ {
79
+ "name": "clarity",
80
+ "description": "Exports, naming, and structure make the module usable without reading every line."
81
+ },
82
+ {
83
+ "name": "robustness",
84
+ "description": "Invalid input and boundary cases fail loudly rather than silently."
85
+ }
86
+ ]
87
+ },
88
+ "qualityFocus": [
89
+ "fake SDK fixture",
90
+ "typed wrapper semantics",
91
+ "behavioral tests"
92
+ ]
93
+ }