@bendyline/gilde 0.1.51 → 0.1.53

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 (585) hide show
  1. package/authoring/chat-models/nanbeige4.2-3b-q4.json +133 -0
  2. package/data/chat-models/index.json +1 -1
  3. package/data/chat-models/na/nanbeige4.2-3b-q4/manifest.json +138 -0
  4. package/data/chat-models/na/nanbeige4.2-3b-q4/versions/1.0.0/manifest.json +14 -0
  5. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/craftbook.json +278 -0
  6. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/test.json +118 -0
  7. package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.3/craftbook.json +277 -0
  8. package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.3/test.json +189 -0
  9. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.1/craftbook.json +616 -0
  10. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.1/test.json +228 -0
  11. package/data/craftbook-templates/ad/ad-variations/versions/1.0.3/craftbook.json +213 -0
  12. package/data/craftbook-templates/ad/ad-variations/versions/1.0.3/test.json +108 -0
  13. package/data/craftbook-templates/al/album-curate/versions/1.0.3/craftbook.json +250 -0
  14. package/data/craftbook-templates/al/album-curate/versions/1.0.3/test.json +147 -0
  15. package/data/craftbook-templates/al/alert-rules/versions/1.0.3/craftbook.json +213 -0
  16. package/data/craftbook-templates/al/alert-rules/versions/1.0.3/test.json +145 -0
  17. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/craftbook.json +381 -0
  18. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/test.json +157 -0
  19. package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.3/craftbook.json +279 -0
  20. package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.3/test.json +102 -0
  21. package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/craftbook.json +277 -0
  22. package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/test.json +113 -0
  23. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/craftbook.json +277 -0
  24. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/test.json +123 -0
  25. package/data/craftbook-templates/ap/api-contract-review/versions/1.1.3/craftbook.json +278 -0
  26. package/data/craftbook-templates/ap/api-contract-review/versions/1.1.3/test.json +192 -0
  27. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.1/craftbook.json +600 -0
  28. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.1/test.json +290 -0
  29. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/craftbook.json +282 -0
  30. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/test.json +139 -0
  31. package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.3/craftbook.json +265 -0
  32. package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.3/test.json +103 -0
  33. package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.3/craftbook.json +259 -0
  34. package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.3/test.json +103 -0
  35. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/craftbook.json +370 -0
  36. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/test.json +221 -0
  37. package/data/craftbook-templates/au/auth-flow/versions/1.0.3/craftbook.json +279 -0
  38. package/data/craftbook-templates/au/auth-flow/versions/1.0.3/test.json +143 -0
  39. package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/craftbook.json +324 -0
  40. package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/test.json +296 -0
  41. package/data/craftbook-templates/ba/backup-routine/versions/1.0.3/craftbook.json +279 -0
  42. package/data/craftbook-templates/ba/backup-routine/versions/1.0.3/test.json +108 -0
  43. package/data/craftbook-templates/bl/blog-post/versions/1.0.3/craftbook.json +278 -0
  44. package/data/craftbook-templates/bl/blog-post/versions/1.0.3/test.json +118 -0
  45. package/data/craftbook-templates/bo/board-deck/versions/1.0.3/craftbook.json +279 -0
  46. package/data/craftbook-templates/bo/board-deck/versions/1.0.3/test.json +100 -0
  47. package/data/craftbook-templates/bo/board-game-web/versions/1.0.3/craftbook.json +288 -0
  48. package/data/craftbook-templates/bo/board-game-web/versions/1.0.3/test.json +99 -0
  49. package/data/craftbook-templates/bo/booking-automation/versions/1.0.3/craftbook.json +294 -0
  50. package/data/craftbook-templates/bo/booking-automation/versions/1.0.3/test.json +162 -0
  51. package/data/craftbook-templates/br/branding-website/versions/1.1.2/craftbook.json +329 -0
  52. package/data/craftbook-templates/br/branding-website/versions/1.1.2/test.json +164 -0
  53. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/craftbook.json +219 -0
  54. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/test.json +103 -0
  55. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.6/craftbook.json +620 -0
  56. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.6/test.json +376 -0
  57. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.1/craftbook.json +728 -0
  58. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.1/test.json +221 -0
  59. package/data/craftbook-templates/bu/build-loop/versions/1.1.1/craftbook.json +139 -0
  60. package/data/craftbook-templates/bu/build-loop/versions/1.1.1/test.json +121 -0
  61. package/data/craftbook-templates/ca/calendar-brief/versions/1.0.3/craftbook.json +219 -0
  62. package/data/craftbook-templates/ca/calendar-brief/versions/1.0.3/test.json +102 -0
  63. package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.3/craftbook.json +222 -0
  64. package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.3/test.json +106 -0
  65. package/data/craftbook-templates/ca/careful-mode/versions/1.2.1/craftbook.json +64 -0
  66. package/data/craftbook-templates/ca/careful-mode/versions/1.2.1/test.json +110 -0
  67. package/data/craftbook-templates/ca/case-study/versions/1.0.3/craftbook.json +275 -0
  68. package/data/craftbook-templates/ca/case-study/versions/1.0.3/test.json +112 -0
  69. package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.3/craftbook.json +289 -0
  70. package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.3/test.json +105 -0
  71. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/craftbook.json +279 -0
  72. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/test.json +155 -0
  73. package/data/craftbook-templates/ch/chapter-weave/versions/1.0.3/craftbook.json +184 -0
  74. package/data/craftbook-templates/ch/chapter-weave/versions/1.0.3/test.json +98 -0
  75. package/data/craftbook-templates/ch/character-sheet/versions/1.0.3/craftbook.json +216 -0
  76. package/data/craftbook-templates/ch/character-sheet/versions/1.0.3/test.json +143 -0
  77. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/craftbook.json +256 -0
  78. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +178 -0
  79. package/data/craftbook-templates/ch/chart-pack/versions/1.0.3/craftbook.json +285 -0
  80. package/data/craftbook-templates/ch/chart-pack/versions/1.0.3/test.json +104 -0
  81. package/data/craftbook-templates/ch/chrome-extension/versions/1.0.3/craftbook.json +286 -0
  82. package/data/craftbook-templates/ch/chrome-extension/versions/1.0.3/test.json +97 -0
  83. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.1/craftbook.json +585 -0
  84. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.1/test.json +225 -0
  85. package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/craftbook.json +278 -0
  86. package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/test.json +152 -0
  87. package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/craftbook.json +283 -0
  88. package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/test.json +128 -0
  89. package/data/craftbook-templates/co/code-review/versions/1.0.1/craftbook.json +229 -0
  90. package/data/craftbook-templates/co/code-review/versions/1.0.1/test.json +249 -0
  91. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/craftbook.json +280 -0
  92. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/test.json +119 -0
  93. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/craftbook.json +279 -0
  94. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/test.json +122 -0
  95. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/test.json +1 -1
  96. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.1/craftbook.json +603 -0
  97. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.1/test.json +252 -0
  98. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/craftbook.json +277 -0
  99. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/test.json +229 -0
  100. package/data/craftbook-templates/co/company-research-brief/versions/1.0.3/craftbook.json +272 -0
  101. package/data/craftbook-templates/co/company-research-brief/versions/1.0.3/test.json +97 -0
  102. package/data/craftbook-templates/co/comparison-matrix/versions/1.0.3/craftbook.json +286 -0
  103. package/data/craftbook-templates/co/comparison-matrix/versions/1.0.3/test.json +109 -0
  104. package/data/craftbook-templates/co/compat-check/versions/1.0.3/craftbook.json +285 -0
  105. package/data/craftbook-templates/co/compat-check/versions/1.0.3/test.json +148 -0
  106. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/craftbook.json +273 -0
  107. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/test.json +119 -0
  108. package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.1/craftbook.json +518 -0
  109. package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.1/test.json +160 -0
  110. package/data/craftbook-templates/co/config-scaffold/versions/1.0.3/craftbook.json +215 -0
  111. package/data/craftbook-templates/co/config-scaffold/versions/1.0.3/test.json +120 -0
  112. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/craftbook.json +277 -0
  113. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/test.json +152 -0
  114. package/data/craftbook-templates/co/content-deck/versions/1.2.3/craftbook.json +335 -0
  115. package/data/craftbook-templates/co/content-deck/versions/1.2.3/test.json +169 -0
  116. package/data/craftbook-templates/co/contract-template/versions/1.0.3/craftbook.json +283 -0
  117. package/data/craftbook-templates/co/contract-template/versions/1.0.3/test.json +102 -0
  118. package/data/craftbook-templates/co/cookbook-layout/versions/1.0.3/craftbook.json +233 -0
  119. package/data/craftbook-templates/co/cookbook-layout/versions/1.0.3/test.json +159 -0
  120. package/data/craftbook-templates/co/copy-review/versions/1.0.3/craftbook.json +278 -0
  121. package/data/craftbook-templates/co/copy-review/versions/1.0.3/test.json +105 -0
  122. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/craftbook.json +339 -0
  123. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/test.json +187 -0
  124. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/craftbook.json +279 -0
  125. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/test.json +159 -0
  126. package/data/craftbook-templates/co/cover-letter/versions/1.0.3/craftbook.json +216 -0
  127. package/data/craftbook-templates/co/cover-letter/versions/1.0.3/test.json +100 -0
  128. package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.3/craftbook.json +212 -0
  129. package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.3/test.json +207 -0
  130. package/data/craftbook-templates/cr/cron-job/versions/1.0.3/craftbook.json +282 -0
  131. package/data/craftbook-templates/cr/cron-job/versions/1.0.3/test.json +104 -0
  132. package/data/craftbook-templates/cr/crossword-forge/versions/1.0.3/craftbook.json +301 -0
  133. package/data/craftbook-templates/cr/crossword-forge/versions/1.0.3/test.json +138 -0
  134. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/craftbook.json +211 -0
  135. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/test.json +102 -0
  136. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/craftbook.json +219 -0
  137. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/test.json +114 -0
  138. package/data/craftbook-templates/da/data-dictionary/versions/1.0.3/craftbook.json +219 -0
  139. package/data/craftbook-templates/da/data-dictionary/versions/1.0.3/test.json +101 -0
  140. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.3/craftbook.json +282 -0
  141. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.3/test.json +104 -0
  142. package/data/craftbook-templates/da/data-join-merge/versions/1.0.3/craftbook.json +212 -0
  143. package/data/craftbook-templates/da/data-join-merge/versions/1.0.3/test.json +104 -0
  144. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.4/craftbook.json +281 -0
  145. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.4/test.json +162 -0
  146. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/craftbook.json +277 -0
  147. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/test.json +329 -0
  148. package/data/craftbook-templates/da/data-to-report/versions/1.0.3/craftbook.json +277 -0
  149. package/data/craftbook-templates/da/data-to-report/versions/1.0.3/test.json +98 -0
  150. package/data/craftbook-templates/da/data-viz-page/versions/1.0.3/craftbook.json +281 -0
  151. package/data/craftbook-templates/da/data-viz-page/versions/1.0.3/test.json +117 -0
  152. package/data/craftbook-templates/da/dataset-clean/versions/1.2.4/craftbook.json +212 -0
  153. package/data/craftbook-templates/da/dataset-clean/versions/1.2.4/test.json +95 -0
  154. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.3/craftbook.json +283 -0
  155. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.3/test.json +104 -0
  156. package/data/craftbook-templates/de/deep-security-review/versions/1.1.3/craftbook.json +378 -0
  157. package/data/craftbook-templates/de/deep-security-review/versions/1.1.3/test.json +184 -0
  158. package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/craftbook.json +275 -0
  159. package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/test.json +111 -0
  160. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.1/craftbook.json +619 -0
  161. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.1/test.json +235 -0
  162. package/data/craftbook-templates/de/deploy-checklist/versions/1.0.3/craftbook.json +288 -0
  163. package/data/craftbook-templates/de/deploy-checklist/versions/1.0.3/test.json +165 -0
  164. package/data/craftbook-templates/de/design-review/versions/1.0.3/craftbook.json +277 -0
  165. package/data/craftbook-templates/de/design-review/versions/1.0.3/test.json +121 -0
  166. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.5/craftbook.json +627 -0
  167. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.5/test.json +201 -0
  168. package/data/craftbook-templates/di/diagram-from-text/versions/1.0.3/craftbook.json +221 -0
  169. package/data/craftbook-templates/di/diagram-from-text/versions/1.0.3/test.json +97 -0
  170. package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.3/craftbook.json +283 -0
  171. package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.3/test.json +162 -0
  172. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.3/craftbook.json +282 -0
  173. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.3/test.json +104 -0
  174. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/craftbook.json +216 -0
  175. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +110 -0
  176. package/data/craftbook-templates/do/dockerize-app/versions/1.0.3/craftbook.json +282 -0
  177. package/data/craftbook-templates/do/dockerize-app/versions/1.0.3/test.json +92 -0
  178. package/data/craftbook-templates/do/docs-site/versions/1.0.3/craftbook.json +281 -0
  179. package/data/craftbook-templates/do/docs-site/versions/1.0.3/test.json +97 -0
  180. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/craftbook.json +279 -0
  181. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/test.json +135 -0
  182. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.1/craftbook.json +321 -0
  183. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.1/test.json +161 -0
  184. package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.3/craftbook.json +277 -0
  185. package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.3/test.json +104 -0
  186. package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.3/craftbook.json +278 -0
  187. package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.3/test.json +110 -0
  188. package/data/craftbook-templates/eb/ebook-compile/versions/1.0.3/craftbook.json +280 -0
  189. package/data/craftbook-templates/eb/ebook-compile/versions/1.0.3/test.json +97 -0
  190. package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/craftbook.json +312 -0
  191. package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +146 -0
  192. package/data/craftbook-templates/em/email-sequence/versions/1.0.3/craftbook.json +274 -0
  193. package/data/craftbook-templates/em/email-sequence/versions/1.0.3/test.json +97 -0
  194. package/data/craftbook-templates/em/email-template/versions/1.0.3/craftbook.json +281 -0
  195. package/data/craftbook-templates/em/email-template/versions/1.0.3/test.json +97 -0
  196. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.5/craftbook.json +577 -0
  197. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.5/test.json +191 -0
  198. package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/craftbook.json +277 -0
  199. package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/test.json +100 -0
  200. package/data/craftbook-templates/es/escalation-playbook/versions/1.0.3/craftbook.json +219 -0
  201. package/data/craftbook-templates/es/escalation-playbook/versions/1.0.3/test.json +110 -0
  202. package/data/craftbook-templates/ev/evidence-brief/versions/1.0.3/craftbook.json +279 -0
  203. package/data/craftbook-templates/ev/evidence-brief/versions/1.0.3/test.json +110 -0
  204. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.5/craftbook.json +606 -0
  205. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.5/test.json +139 -0
  206. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.3/craftbook.json +274 -0
  207. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.3/test.json +104 -0
  208. package/data/craftbook-templates/fa/fact-check/versions/1.0.3/craftbook.json +278 -0
  209. package/data/craftbook-templates/fa/fact-check/versions/1.0.3/test.json +110 -0
  210. package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.3/craftbook.json +184 -0
  211. package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.3/test.json +111 -0
  212. package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.3/craftbook.json +215 -0
  213. package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.3/test.json +110 -0
  214. package/data/craftbook-templates/fa/favicon-set/versions/1.0.3/craftbook.json +284 -0
  215. package/data/craftbook-templates/fa/favicon-set/versions/1.0.3/test.json +103 -0
  216. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.1/craftbook.json +324 -0
  217. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.1/test.json +162 -0
  218. package/data/craftbook-templates/fe/feedback-widget/versions/1.0.3/craftbook.json +281 -0
  219. package/data/craftbook-templates/fe/feedback-widget/versions/1.0.3/test.json +97 -0
  220. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.1/craftbook.json +716 -0
  221. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.1/test.json +239 -0
  222. package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.3/craftbook.json +215 -0
  223. package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.3/test.json +103 -0
  224. package/data/craftbook-templates/fo/forecast-model/versions/1.0.3/craftbook.json +216 -0
  225. package/data/craftbook-templates/fo/forecast-model/versions/1.0.3/test.json +104 -0
  226. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.3/craftbook.json +282 -0
  227. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.3/test.json +162 -0
  228. package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/craftbook.json +222 -0
  229. package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/test.json +110 -0
  230. package/data/craftbook-templates/fr/freeze-scope/versions/1.3.1/craftbook.json +96 -0
  231. package/data/craftbook-templates/fr/freeze-scope/versions/1.3.1/test.json +131 -0
  232. package/data/craftbook-templates/ga/game-with-screens/versions/1.0.3/craftbook.json +306 -0
  233. package/data/craftbook-templates/ga/game-with-screens/versions/1.0.3/test.json +99 -0
  234. package/data/craftbook-templates/gl/glossary-build/versions/1.0.3/craftbook.json +274 -0
  235. package/data/craftbook-templates/gl/glossary-build/versions/1.0.3/test.json +110 -0
  236. package/data/craftbook-templates/gr/graphql-api/versions/1.0.4/craftbook.json +281 -0
  237. package/data/craftbook-templates/gr/graphql-api/versions/1.0.4/test.json +92 -0
  238. package/data/craftbook-templates/gr/grpc-service/versions/1.0.3/craftbook.json +283 -0
  239. package/data/craftbook-templates/gr/grpc-service/versions/1.0.3/test.json +92 -0
  240. package/data/craftbook-templates/ha/handbook-section/versions/1.0.3/craftbook.json +283 -0
  241. package/data/craftbook-templates/ha/handbook-section/versions/1.0.3/test.json +110 -0
  242. package/data/craftbook-templates/he/hero-image/versions/1.0.3/craftbook.json +289 -0
  243. package/data/craftbook-templates/he/hero-image/versions/1.0.3/test.json +103 -0
  244. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/craftbook.json +365 -0
  245. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +128 -0
  246. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.1/craftbook.json +605 -0
  247. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.1/test.json +220 -0
  248. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.2/craftbook.json +337 -0
  249. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.2/test.json +176 -0
  250. package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.3/craftbook.json +288 -0
  251. package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.3/test.json +99 -0
  252. package/data/craftbook-templates/ic/icon-pack/versions/1.0.3/craftbook.json +281 -0
  253. package/data/craftbook-templates/ic/icon-pack/versions/1.0.3/test.json +103 -0
  254. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.5/craftbook.json +571 -0
  255. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.5/test.json +141 -0
  256. package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.3/craftbook.json +288 -0
  257. package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.3/test.json +99 -0
  258. package/data/craftbook-templates/im/image-batch-edit/versions/1.0.3/craftbook.json +277 -0
  259. package/data/craftbook-templates/im/image-batch-edit/versions/1.0.3/test.json +103 -0
  260. package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.3/craftbook.json +276 -0
  261. package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.3/test.json +103 -0
  262. package/data/craftbook-templates/im/image-palette-extract/versions/1.0.3/craftbook.json +221 -0
  263. package/data/craftbook-templates/im/image-palette-extract/versions/1.0.3/test.json +97 -0
  264. package/data/craftbook-templates/im/image-seo-rename/versions/1.0.3/craftbook.json +216 -0
  265. package/data/craftbook-templates/im/image-seo-rename/versions/1.0.3/test.json +103 -0
  266. package/data/craftbook-templates/im/image-set-index/versions/1.2.2/craftbook.json +295 -0
  267. package/data/craftbook-templates/im/image-set-index/versions/1.2.2/test.json +180 -0
  268. package/data/craftbook-templates/in/inbox-triage/versions/1.0.3/craftbook.json +276 -0
  269. package/data/craftbook-templates/in/inbox-triage/versions/1.0.3/test.json +104 -0
  270. package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.3/craftbook.json +219 -0
  271. package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.3/test.json +110 -0
  272. package/data/craftbook-templates/in/incident-postmortem/versions/1.0.3/craftbook.json +288 -0
  273. package/data/craftbook-templates/in/incident-postmortem/versions/1.0.3/test.json +109 -0
  274. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/craftbook.json +288 -0
  275. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +121 -0
  276. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/craftbook.json +281 -0
  277. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/test.json +99 -0
  278. package/data/craftbook-templates/in/invitation-design/versions/1.0.3/craftbook.json +240 -0
  279. package/data/craftbook-templates/in/invitation-design/versions/1.0.3/test.json +121 -0
  280. package/data/craftbook-templates/in/invoice-generator/versions/1.0.3/craftbook.json +222 -0
  281. package/data/craftbook-templates/in/invoice-generator/versions/1.0.3/test.json +97 -0
  282. package/data/craftbook-templates/in/invoice-run/versions/1.1.3/craftbook.json +354 -0
  283. package/data/craftbook-templates/in/invoice-run/versions/1.1.3/test.json +140 -0
  284. package/data/craftbook-templates/index.json +1 -1
  285. package/data/craftbook-templates/it/item-intake/versions/1.0.3/craftbook.json +276 -0
  286. package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +145 -0
  287. package/data/craftbook-templates/ju/juice-pass/versions/1.0.3/craftbook.json +228 -0
  288. package/data/craftbook-templates/ju/juice-pass/versions/1.0.3/test.json +116 -0
  289. package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.3/craftbook.json +275 -0
  290. package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.3/test.json +110 -0
  291. package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.3/craftbook.json +285 -0
  292. package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.3/test.json +97 -0
  293. package/data/craftbook-templates/la/landing-copy/versions/1.0.3/craftbook.json +275 -0
  294. package/data/craftbook-templates/la/landing-copy/versions/1.0.3/test.json +110 -0
  295. package/data/craftbook-templates/la/landing-page/versions/1.0.3/craftbook.json +348 -0
  296. package/data/craftbook-templates/la/landing-page/versions/1.0.3/test.json +97 -0
  297. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.3/craftbook.json +274 -0
  298. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.3/test.json +104 -0
  299. package/data/craftbook-templates/li/library-package/versions/1.0.3/craftbook.json +284 -0
  300. package/data/craftbook-templates/li/library-package/versions/1.0.3/test.json +92 -0
  301. package/data/craftbook-templates/li/literature-review/versions/1.0.3/craftbook.json +279 -0
  302. package/data/craftbook-templates/li/literature-review/versions/1.0.3/test.json +110 -0
  303. package/data/craftbook-templates/lo/localize-content/versions/1.0.3/craftbook.json +275 -0
  304. package/data/craftbook-templates/lo/localize-content/versions/1.0.3/test.json +110 -0
  305. package/data/craftbook-templates/lo/logo-set/versions/1.0.3/craftbook.json +281 -0
  306. package/data/craftbook-templates/lo/logo-set/versions/1.0.3/test.json +103 -0
  307. package/data/craftbook-templates/ma/market-scan/versions/1.0.3/craftbook.json +279 -0
  308. package/data/craftbook-templates/ma/market-scan/versions/1.0.3/test.json +213 -0
  309. package/data/craftbook-templates/me/meeting-minutes/versions/1.0.3/craftbook.json +220 -0
  310. package/data/craftbook-templates/me/meeting-minutes/versions/1.0.3/test.json +110 -0
  311. package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.3/craftbook.json +219 -0
  312. package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.3/test.json +110 -0
  313. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/craftbook.json +218 -0
  314. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/test.json +187 -0
  315. package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.3/craftbook.json +220 -0
  316. package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.3/test.json +103 -0
  317. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/craftbook.json +250 -0
  318. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +112 -0
  319. package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.3/craftbook.json +283 -0
  320. package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.3/test.json +92 -0
  321. package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.3/craftbook.json +229 -0
  322. package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.3/test.json +99 -0
  323. package/data/craftbook-templates/mo/mock-interview/versions/1.0.3/craftbook.json +270 -0
  324. package/data/craftbook-templates/mo/mock-interview/versions/1.0.3/test.json +110 -0
  325. package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.3/craftbook.json +293 -0
  326. package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.3/test.json +136 -0
  327. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.3/craftbook.json +294 -0
  328. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.3/test.json +197 -0
  329. package/data/craftbook-templates/mo/month-close/versions/1.0.3/craftbook.json +277 -0
  330. package/data/craftbook-templates/mo/month-close/versions/1.0.3/test.json +97 -0
  331. package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.3/craftbook.json +277 -0
  332. package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.3/test.json +120 -0
  333. package/data/craftbook-templates/mo/moodboard/versions/1.0.3/craftbook.json +221 -0
  334. package/data/craftbook-templates/mo/moodboard/versions/1.0.3/test.json +103 -0
  335. package/data/craftbook-templates/mo/morning-brief/versions/1.0.3/craftbook.json +241 -0
  336. package/data/craftbook-templates/mo/morning-brief/versions/1.0.3/test.json +225 -0
  337. package/data/craftbook-templates/mo/morning-report/versions/1.0.3/craftbook.json +289 -0
  338. package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +250 -0
  339. package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.3/craftbook.json +212 -0
  340. package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.3/test.json +103 -0
  341. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.3/craftbook.json +324 -0
  342. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.3/test.json +86 -0
  343. package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.3/craftbook.json +281 -0
  344. package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.3/test.json +110 -0
  345. package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.1/craftbook.json +242 -0
  346. package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.1/test.json +120 -0
  347. package/data/craftbook-templates/no/notification-router/versions/1.0.3/craftbook.json +293 -0
  348. package/data/craftbook-templates/no/notification-router/versions/1.0.3/test.json +162 -0
  349. package/data/craftbook-templates/oc/ocr-extract/versions/1.0.3/craftbook.json +275 -0
  350. package/data/craftbook-templates/oc/ocr-extract/versions/1.0.3/test.json +103 -0
  351. package/data/craftbook-templates/of/offer-compare/versions/1.0.3/craftbook.json +214 -0
  352. package/data/craftbook-templates/of/offer-compare/versions/1.0.3/test.json +110 -0
  353. package/data/craftbook-templates/of/office-hours/versions/1.1.1/craftbook.json +150 -0
  354. package/data/craftbook-templates/of/office-hours/versions/1.1.1/test.json +118 -0
  355. package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.3/craftbook.json +219 -0
  356. package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.3/test.json +110 -0
  357. package/data/craftbook-templates/on/onboarding-flow/versions/1.0.3/craftbook.json +281 -0
  358. package/data/craftbook-templates/on/onboarding-flow/versions/1.0.3/test.json +97 -0
  359. package/data/craftbook-templates/on/oncall-handoff/versions/1.0.3/craftbook.json +219 -0
  360. package/data/craftbook-templates/on/oncall-handoff/versions/1.0.3/test.json +110 -0
  361. package/data/craftbook-templates/on/one-pager/versions/1.0.3/craftbook.json +281 -0
  362. package/data/craftbook-templates/on/one-pager/versions/1.0.3/test.json +110 -0
  363. package/data/craftbook-templates/op/ops-runbook/versions/1.0.3/craftbook.json +197 -0
  364. package/data/craftbook-templates/op/ops-runbook/versions/1.0.3/test.json +104 -0
  365. package/data/craftbook-templates/pa/page-spread/versions/1.0.3/craftbook.json +216 -0
  366. package/data/craftbook-templates/pa/page-spread/versions/1.0.3/test.json +132 -0
  367. package/data/craftbook-templates/pa/parser-grammar/versions/1.0.3/craftbook.json +283 -0
  368. package/data/craftbook-templates/pa/parser-grammar/versions/1.0.3/test.json +92 -0
  369. package/data/craftbook-templates/pe/perf-audit/versions/1.1.1/craftbook.json +320 -0
  370. package/data/craftbook-templates/pe/perf-audit/versions/1.1.1/test.json +162 -0
  371. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.1/craftbook.json +695 -0
  372. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.1/test.json +235 -0
  373. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/craftbook.json +276 -0
  374. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +122 -0
  375. package/data/craftbook-templates/ph/photo-cull/versions/1.0.3/craftbook.json +277 -0
  376. package/data/craftbook-templates/ph/photo-cull/versions/1.0.3/test.json +103 -0
  377. package/data/craftbook-templates/ph/physics-toy/versions/1.0.3/craftbook.json +222 -0
  378. package/data/craftbook-templates/ph/physics-toy/versions/1.0.3/test.json +99 -0
  379. package/data/craftbook-templates/pi/pitch-deck/versions/1.0.3/craftbook.json +279 -0
  380. package/data/craftbook-templates/pi/pitch-deck/versions/1.0.3/test.json +97 -0
  381. package/data/craftbook-templates/pl/plan/versions/1.0.1/craftbook.json +222 -0
  382. package/data/craftbook-templates/pl/plan/versions/1.0.1/test.json +91 -0
  383. package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/craftbook.json +277 -0
  384. package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +111 -0
  385. package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.3/craftbook.json +276 -0
  386. package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.3/test.json +103 -0
  387. package/data/craftbook-templates/po/portfolio-site/versions/1.0.3/craftbook.json +289 -0
  388. package/data/craftbook-templates/po/portfolio-site/versions/1.0.3/test.json +97 -0
  389. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.9/craftbook.json +589 -0
  390. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.9/test.json +240 -0
  391. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.3/craftbook.json +273 -0
  392. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.3/test.json +110 -0
  393. package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/craftbook.json +296 -0
  394. package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +117 -0
  395. package/data/craftbook-templates/pr/practice-session/versions/1.0.3/craftbook.json +250 -0
  396. package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +114 -0
  397. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.3/craftbook.json +277 -0
  398. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.3/test.json +97 -0
  399. package/data/craftbook-templates/pr/press-release/versions/1.0.3/craftbook.json +275 -0
  400. package/data/craftbook-templates/pr/press-release/versions/1.0.3/test.json +356 -0
  401. package/data/craftbook-templates/pr/price-tracker/versions/1.0.3/craftbook.json +220 -0
  402. package/data/craftbook-templates/pr/price-tracker/versions/1.0.3/test.json +150 -0
  403. package/data/craftbook-templates/pr/pricing-page/versions/1.0.3/craftbook.json +348 -0
  404. package/data/craftbook-templates/pr/pricing-page/versions/1.0.3/test.json +97 -0
  405. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.3/craftbook.json +213 -0
  406. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.3/test.json +110 -0
  407. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.3/craftbook.json +281 -0
  408. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.3/test.json +110 -0
  409. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.1/craftbook.json +432 -0
  410. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.1/test.json +141 -0
  411. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.3/craftbook.json +233 -0
  412. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.3/test.json +123 -0
  413. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.3/craftbook.json +293 -0
  414. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.3/test.json +97 -0
  415. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/craftbook.json +277 -0
  416. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/test.json +116 -0
  417. package/data/craftbook-templates/re/reading-list/versions/1.0.3/craftbook.json +218 -0
  418. package/data/craftbook-templates/re/reading-list/versions/1.0.3/test.json +110 -0
  419. package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/craftbook.json +277 -0
  420. package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +149 -0
  421. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.3/craftbook.json +274 -0
  422. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.3/test.json +104 -0
  423. package/data/craftbook-templates/re/reception-report/versions/1.0.2/craftbook.json +295 -0
  424. package/data/craftbook-templates/re/reception-report/versions/1.0.2/test.json +168 -0
  425. package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/craftbook.json +277 -0
  426. package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +128 -0
  427. package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/craftbook.json +250 -0
  428. package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +110 -0
  429. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.3/craftbook.json +282 -0
  430. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.3/test.json +104 -0
  431. package/data/craftbook-templates/re/refactor-module/versions/2.0.1/craftbook.json +693 -0
  432. package/data/craftbook-templates/re/refactor-module/versions/2.0.1/test.json +241 -0
  433. package/data/craftbook-templates/re/regex-builder/versions/1.0.3/craftbook.json +283 -0
  434. package/data/craftbook-templates/re/regex-builder/versions/1.0.3/test.json +92 -0
  435. package/data/craftbook-templates/re/release-announcement/versions/1.0.3/craftbook.json +290 -0
  436. package/data/craftbook-templates/re/release-announcement/versions/1.0.3/test.json +202 -0
  437. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.3/craftbook.json +358 -0
  438. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.3/test.json +138 -0
  439. package/data/craftbook-templates/re/release-notes/versions/1.0.4/craftbook.json +336 -0
  440. package/data/craftbook-templates/re/release-notes/versions/1.0.4/test.json +111 -0
  441. package/data/craftbook-templates/re/release-readiness-review/versions/1.1.1/craftbook.json +317 -0
  442. package/data/craftbook-templates/re/release-readiness-review/versions/1.1.1/test.json +110 -0
  443. package/data/craftbook-templates/re/reliability-review/versions/1.0.3/craftbook.json +281 -0
  444. package/data/craftbook-templates/re/reliability-review/versions/1.0.3/test.json +115 -0
  445. package/data/craftbook-templates/re/report-pdf/versions/1.1.3/craftbook.json +317 -0
  446. package/data/craftbook-templates/re/report-pdf/versions/1.1.3/test.json +98 -0
  447. package/data/craftbook-templates/re/research-report/versions/1.0.3/craftbook.json +279 -0
  448. package/data/craftbook-templates/re/research-report/versions/1.0.3/test.json +113 -0
  449. package/data/craftbook-templates/re/research-to-document/versions/1.2.3/craftbook.json +388 -0
  450. package/data/craftbook-templates/re/research-to-document/versions/1.2.3/test.json +243 -0
  451. package/data/craftbook-templates/re/rest-api/versions/1.0.4/craftbook.json +282 -0
  452. package/data/craftbook-templates/re/rest-api/versions/1.0.4/test.json +387 -0
  453. package/data/craftbook-templates/re/resume-cv/versions/1.0.3/craftbook.json +281 -0
  454. package/data/craftbook-templates/re/resume-cv/versions/1.0.3/test.json +97 -0
  455. package/data/craftbook-templates/re/reviewer-loop/versions/1.0.1/craftbook.json +144 -0
  456. package/data/craftbook-templates/re/reviewer-loop/versions/1.0.1/test.json +135 -0
  457. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.3/craftbook.json +290 -0
  458. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.3/test.json +162 -0
  459. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.6/craftbook.json +595 -0
  460. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.6/test.json +157 -0
  461. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/craftbook.json +302 -0
  462. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +137 -0
  463. package/data/craftbook-templates/ru/runbook/versions/1.0.3/craftbook.json +282 -0
  464. package/data/craftbook-templates/ru/runbook/versions/1.0.3/test.json +118 -0
  465. package/data/craftbook-templates/sc/schema-migration/versions/2.0.1/craftbook.json +619 -0
  466. package/data/craftbook-templates/sc/schema-migration/versions/2.0.1/test.json +225 -0
  467. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.4/craftbook.json +274 -0
  468. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.4/test.json +162 -0
  469. package/data/craftbook-templates/sc/script-automation/versions/1.0.3/craftbook.json +281 -0
  470. package/data/craftbook-templates/sc/script-automation/versions/1.0.3/test.json +162 -0
  471. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.4/craftbook.json +282 -0
  472. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.4/test.json +90 -0
  473. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.3/craftbook.json +277 -0
  474. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.3/test.json +110 -0
  475. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.5/craftbook.json +608 -0
  476. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.5/test.json +157 -0
  477. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.3/craftbook.json +213 -0
  478. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.3/test.json +97 -0
  479. package/data/craftbook-templates/sh/ship/versions/1.1.1/craftbook.json +301 -0
  480. package/data/craftbook-templates/sh/ship/versions/1.1.1/test.json +225 -0
  481. package/data/craftbook-templates/so/social-digest/versions/1.0.2/craftbook.json +233 -0
  482. package/data/craftbook-templates/so/social-digest/versions/1.0.2/test.json +168 -0
  483. package/data/craftbook-templates/so/social-thread/versions/1.0.3/craftbook.json +216 -0
  484. package/data/craftbook-templates/so/social-thread/versions/1.0.3/test.json +110 -0
  485. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/craftbook.json +277 -0
  486. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +158 -0
  487. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.3/craftbook.json +280 -0
  488. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.3/test.json +97 -0
  489. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.5/craftbook.json +610 -0
  490. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.5/test.json +162 -0
  491. package/data/craftbook-templates/sp/spec-doc/versions/1.0.3/craftbook.json +280 -0
  492. package/data/craftbook-templates/sp/spec-doc/versions/1.0.3/test.json +104 -0
  493. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.3/craftbook.json +221 -0
  494. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.3/test.json +160 -0
  495. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.3/craftbook.json +271 -0
  496. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.3/test.json +103 -0
  497. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.3/craftbook.json +218 -0
  498. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.3/test.json +104 -0
  499. package/data/craftbook-templates/st/standup-summary/versions/1.0.3/craftbook.json +219 -0
  500. package/data/craftbook-templates/st/standup-summary/versions/1.0.3/test.json +110 -0
  501. package/data/craftbook-templates/st/state-machine/versions/1.0.3/craftbook.json +283 -0
  502. package/data/craftbook-templates/st/state-machine/versions/1.0.3/test.json +92 -0
  503. package/data/craftbook-templates/st/status-report/versions/1.0.3/craftbook.json +283 -0
  504. package/data/craftbook-templates/st/status-report/versions/1.0.3/test.json +110 -0
  505. package/data/craftbook-templates/su/subscription-audit/versions/1.0.3/craftbook.json +277 -0
  506. package/data/craftbook-templates/su/subscription-audit/versions/1.0.3/test.json +104 -0
  507. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.3/craftbook.json +264 -0
  508. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.3/test.json +103 -0
  509. package/data/craftbook-templates/su/summarize-long/versions/1.0.3/craftbook.json +216 -0
  510. package/data/craftbook-templates/su/summarize-long/versions/1.0.3/test.json +110 -0
  511. package/data/craftbook-templates/su/survey-analysis/versions/1.0.3/craftbook.json +277 -0
  512. package/data/craftbook-templates/su/survey-analysis/versions/1.0.3/test.json +104 -0
  513. package/data/craftbook-templates/sv/svg-animation/versions/1.0.3/craftbook.json +219 -0
  514. package/data/craftbook-templates/sv/svg-animation/versions/1.0.3/test.json +97 -0
  515. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.3/craftbook.json +226 -0
  516. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.3/test.json +97 -0
  517. package/data/craftbook-templates/te/technical-documentation/versions/2.0.5/craftbook.json +582 -0
  518. package/data/craftbook-templates/te/technical-documentation/versions/2.0.5/test.json +174 -0
  519. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/craftbook.json +320 -0
  520. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/test.json +116 -0
  521. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.1/craftbook.json +590 -0
  522. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.1/test.json +195 -0
  523. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/craftbook.json +280 -0
  524. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/test.json +144 -0
  525. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/craftbook.json +280 -0
  526. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +142 -0
  527. package/data/craftbook-templates/th/threat-model/versions/1.0.3/craftbook.json +274 -0
  528. package/data/craftbook-templates/th/threat-model/versions/1.0.3/test.json +110 -0
  529. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.3/craftbook.json +214 -0
  530. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.3/test.json +103 -0
  531. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/craftbook.json +321 -0
  532. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +159 -0
  533. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.3/craftbook.json +216 -0
  534. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.3/test.json +110 -0
  535. package/data/craftbook-templates/to/topic-explainer/versions/1.0.3/craftbook.json +274 -0
  536. package/data/craftbook-templates/to/topic-explainer/versions/1.0.3/test.json +110 -0
  537. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/craftbook.json +250 -0
  538. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/test.json +101 -0
  539. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.3/craftbook.json +218 -0
  540. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.3/test.json +103 -0
  541. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/craftbook.json +329 -0
  542. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/test.json +154 -0
  543. package/data/craftbook-templates/tr/translate-content/versions/1.1.2/craftbook.json +139 -0
  544. package/data/craftbook-templates/tr/translate-content/versions/1.1.2/test.json +141 -0
  545. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.1/craftbook.json +589 -0
  546. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.1/test.json +221 -0
  547. package/data/craftbook-templates/ux/ux-update/versions/1.0.1/craftbook.json +604 -0
  548. package/data/craftbook-templates/ux/ux-update/versions/1.0.1/test.json +206 -0
  549. package/data/craftbook-templates/ve/version-bump/versions/1.1.1/craftbook.json +322 -0
  550. package/data/craftbook-templates/ve/version-bump/versions/1.1.1/test.json +92 -0
  551. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.3/craftbook.json +221 -0
  552. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.3/test.json +103 -0
  553. package/data/craftbook-templates/vi/visit-prep/versions/1.0.3/craftbook.json +274 -0
  554. package/data/craftbook-templates/vi/visit-prep/versions/1.0.3/test.json +97 -0
  555. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.3/craftbook.json +216 -0
  556. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.3/test.json +103 -0
  557. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/craftbook.json +291 -0
  558. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +124 -0
  559. package/data/craftbook-templates/we/web-app-crud/versions/1.0.3/craftbook.json +281 -0
  560. package/data/craftbook-templates/we/web-app-crud/versions/1.0.3/test.json +97 -0
  561. package/data/craftbook-templates/we/web-component/versions/1.0.3/craftbook.json +222 -0
  562. package/data/craftbook-templates/we/web-component/versions/1.0.3/test.json +97 -0
  563. package/data/craftbook-templates/we/webhook-handler/versions/1.0.3/craftbook.json +283 -0
  564. package/data/craftbook-templates/we/webhook-handler/versions/1.0.3/test.json +162 -0
  565. package/data/craftbook-templates/we/week-plan/versions/1.0.3/craftbook.json +276 -0
  566. package/data/craftbook-templates/we/week-plan/versions/1.0.3/test.json +258 -0
  567. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.3/craftbook.json +277 -0
  568. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.3/test.json +97 -0
  569. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.3/craftbook.json +214 -0
  570. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.3/test.json +104 -0
  571. package/data/craftbook-templates/we/weekly-review/versions/1.0.3/craftbook.json +219 -0
  572. package/data/craftbook-templates/we/weekly-review/versions/1.0.3/test.json +110 -0
  573. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/craftbook.json +277 -0
  574. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +138 -0
  575. package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/craftbook.json +277 -0
  576. package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/test.json +113 -0
  577. package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/craftbook.json +250 -0
  578. package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/test.json +145 -0
  579. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.3/craftbook.json +271 -0
  580. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.3/test.json +103 -0
  581. package/package.json +1 -1
  582. package/schemas/craftbook-doc.schema.json +86 -0
  583. package/schemas/craftbook-template-version.schema.json +86 -0
  584. package/schemas/knowledge-catalog-identity.schema.json +122 -0
  585. package/schemas/knowledge-catalog-version.schema.json +169 -0
@@ -0,0 +1,225 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Expand/contract data migration with no record stranded",
4
+ "objective": "The craftbook drives an expand/contract migration of a JSON user store from a flat name field to a nested profile shape: a plan grounded in the real files, accessors changed at their real sites with the suite green between stages, the data transformed with every value surviving exactly, and the old shape fully retired - verified mechanically, including a pure-nested-record probe proving the dual-read did not linger.",
5
+ "tags": [
6
+ "code",
7
+ "schema-migration",
8
+ "expand-contract",
9
+ "tactical-fleet"
10
+ ],
11
+ "prompt": "Use the Schema / Type Migration craftbook for this: migrate our user records from the flat name field to the nested profile shape described in source/migration-brief.md. No record may be lost, the accessors in src/users.js must keep working at every stage, and when it is done nothing may read the flat field any more.",
12
+ "setup": {
13
+ "projectName": "Crew Roster",
14
+ "about": "A tiny user-roster module backed by a JSON data file. Tests run with `npm run test` (node --test).",
15
+ "files": [
16
+ {
17
+ "path": "package.json",
18
+ "content": "{\n \"name\": \"crew-roster\",\n \"private\": true,\n \"version\": \"1.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"test\": \"node --test\"\n }\n}\n"
19
+ },
20
+ {
21
+ "path": "data/users.json",
22
+ "content": "[\n { \"id\": 1, \"name\": \"Ada Lovelace\", \"email\": \"ada@example.com\" },\n { \"id\": 2, \"name\": \"Grace Hopper\", \"email\": \"grace@example.com\" },\n { \"id\": 3, \"name\": \"Annie Easley\", \"email\": \"annie@example.com\" }\n]\n"
23
+ },
24
+ {
25
+ "path": "src/users.js",
26
+ "content": "import { readFileSync } from 'node:fs';\n\nconst DB_URL = new URL('../data/users.json', import.meta.url);\n\nexport function loadUsers() {\n return JSON.parse(readFileSync(DB_URL, 'utf8'));\n}\n\nexport function fullName(user) {\n return user.name;\n}\n\nexport function byFullName(users, wanted) {\n return users.find((user) => user.name === wanted);\n}\n"
27
+ },
28
+ {
29
+ "path": "tests/users.test.mjs",
30
+ "content": "import assert from 'node:assert/strict';\nimport { test } from 'node:test';\nimport { byFullName, fullName, loadUsers } from '../src/users.js';\n\ntest('loads every user record', () => {\n assert.equal(loadUsers().length, 3);\n});\n\ntest('fullName renders the display name', () => {\n assert.deepEqual(loadUsers().map(fullName), [\n 'Ada Lovelace',\n 'Grace Hopper',\n 'Annie Easley',\n ]);\n});\n\ntest('byFullName finds a user by display name', () => {\n assert.equal(byFullName(loadUsers(), 'Grace Hopper').email, 'grace@example.com');\n});\n"
31
+ },
32
+ {
33
+ "path": "source/migration-brief.md",
34
+ "content": "# Migration brief: nested profile shape\n\nWe sort and filter by last name now, so the flat `name` field has to go.\n\nCurrent record shape in `data/users.json`:\n\n { \"id\": 1, \"name\": \"Ada Lovelace\", \"email\": \"ada@example.com\" }\n\nTarget record shape:\n\n { \"id\": 1, \"profile\": { \"first\": \"Ada\", \"last\": \"Lovelace\" }, \"email\": \"ada@example.com\" }\n\nRules:\n\n- Every existing record must survive the migration exactly - same people, same\n emails, names split on the single space between first and last name.\n- The accessors in `src/users.js` must keep working for their callers at every\n stage: `fullName` and `byFullName` keep returning the same display names as\n today.\n- When the migration is done, nothing reads the flat `name` field any more.\n"
35
+ },
36
+ {
37
+ "path": "tests/verify-migration.mjs",
38
+ "content": "import assert from 'node:assert/strict';\nimport { execFileSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nconst root = process.cwd();\n\n// 1) The data moved to the target shape with no record stranded.\nconst records = JSON.parse(readFileSync(join(root, 'data/users.json'), 'utf8'));\nassert.ok(Array.isArray(records), 'data/users.json must stay a JSON array');\nassert.equal(records.length, 3, 'all three records must survive the migration');\nconst expected = new Map([\n ['ada@example.com', ['Ada', 'Lovelace']],\n ['grace@example.com', ['Grace', 'Hopper']],\n ['annie@example.com', ['Annie', 'Easley']],\n]);\nfor (const record of records) {\n assert.ok(record && typeof record === 'object', 'each record must stay an object');\n assert.ok(!('name' in record), `record ${record.id} still carries the flat name field`);\n const want = expected.get(record.email);\n assert.ok(want, `record ${record.id} lost or changed its email`);\n assert.equal(record.profile?.first, want[0], `record ${record.id} must keep its first name exactly`);\n assert.equal(record.profile?.last, want[1], `record ${record.id} must keep its last name exactly`);\n}\nconsole.log('SCHEMAMIG_ORACLE data intact');\n\n// 2) The accessors read the new shape - a pure nested record, no flat fallback.\nconst users = await import(pathToFileURL(join(root, 'src/users.js')).href);\nassert.equal(\n users.fullName({ profile: { first: 'Test', last: 'User' } }),\n 'Test User',\n 'fullName must read profile.first and profile.last',\n);\nassert.equal(\n users.byFullName([{ profile: { first: 'Grace', last: 'Hopper' }, email: 'x' }], 'Grace Hopper')?.email,\n 'x',\n 'byFullName must match display names on the new shape',\n);\nconsole.log('SCHEMAMIG_ORACLE accessors migrated');\n\n// 3) Contract landed: no flat-shape read remains in the accessor module.\nconst accessorSource = readFileSync(join(root, 'src/users.js'), 'utf8');\nassert.ok(\n !/\\.name\\b|\\[[\"']name[\"']\\]/.test(accessorSource),\n 'src/users.js still reads the flat name field',\n);\nconsole.log('SCHEMAMIG_ORACLE contract complete');\n\n// 4) The suite is green on the migrated tree, and the seeded test file survives.\nreadFileSync(join(root, 'tests/users.test.mjs'));\nfunction runSuite(cwd) {\n try {\n execFileSync(process.execPath, ['--test'], { cwd, stdio: 'pipe', timeout: 30000 });\n return 0;\n } catch (err) {\n return typeof err.status === 'number' ? err.status : 1;\n }\n}\nassert.equal(runSuite(root), 0, 'the suite must be green after the migration');\nconsole.log('SCHEMAMIG_ORACLE suite green');\nconsole.log('SCHEMAMIG_ORACLE done');\n",
39
+ "surface": "harness"
40
+ }
41
+ ],
42
+ "craftbookParams": {
43
+ "scope": "Migrate data/users.json and src/users.js from the flat name field to profile.first/profile.last per source/migration-brief.md, with no record loss and reads working at every stage."
44
+ }
45
+ },
46
+ "mocks": [],
47
+ "success": {
48
+ "summary": "Every record reaches the nested profile shape with its values intact, the accessors read the new shape with the dual-read retired, the flat field is gone from data and code, the suite is green, and every fleet artifact exists with honest receipts.",
49
+ "deliverables": [
50
+ {
51
+ "path": "{{task.dir}}/migration-plan.md",
52
+ "kind": "markdown-notes",
53
+ "artifact": true,
54
+ "minBytes": 700,
55
+ "checks": [
56
+ {
57
+ "kind": "contains",
58
+ "file": "{{task.dir}}/migration-plan.md",
59
+ "pattern": "^##\\s+Current shape[\\s\\S]*^##\\s+Target shape[\\s\\S]*^##\\s+Stages[\\s\\S]*^##\\s+Data safety[\\s\\S]*^##\\s+Rollback per stage",
60
+ "flags": "im",
61
+ "label": "plan sections in order"
62
+ },
63
+ {
64
+ "kind": "contains",
65
+ "file": "{{task.dir}}/migration-plan.md",
66
+ "pattern": "data/users\\.json",
67
+ "label": "names the real data file"
68
+ },
69
+ {
70
+ "kind": "citationsResolve",
71
+ "file": "{{task.dir}}/migration-plan.md",
72
+ "minCitations": 2,
73
+ "artifact": true
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "path": "{{task.dir}}/change-notes.md",
79
+ "kind": "markdown-notes",
80
+ "artifact": true,
81
+ "minBytes": 700,
82
+ "checks": [
83
+ {
84
+ "kind": "contains",
85
+ "file": "{{task.dir}}/change-notes.md",
86
+ "pattern": "^##\\s+Stages executed[\\s\\S]*^##\\s+Files touched[\\s\\S]*^##\\s+Data transformed[\\s\\S]*^##\\s+Deviations",
87
+ "flags": "im",
88
+ "label": "change-notes sections in order"
89
+ },
90
+ {
91
+ "kind": "citationsResolve",
92
+ "file": "{{task.dir}}/change-notes.md",
93
+ "minCitations": 2,
94
+ "artifact": true
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ "path": "{{task.dir}}/verification.md",
100
+ "kind": "markdown-notes",
101
+ "artifact": true,
102
+ "minBytes": 500,
103
+ "checks": [
104
+ {
105
+ "kind": "contains",
106
+ "file": "{{task.dir}}/verification.md",
107
+ "pattern": "^##\\s+Old shape check[\\s\\S]*^##\\s+Data integrity[\\s\\S]*^##\\s+Suite[\\s\\S]*^##\\s+Result",
108
+ "flags": "im",
109
+ "label": "verification sections in order"
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "path": "{{task.dir}}/review.md",
115
+ "kind": "markdown-report",
116
+ "artifact": true,
117
+ "minBytes": 400,
118
+ "checks": [
119
+ {
120
+ "kind": "contains",
121
+ "file": "{{task.dir}}/review.md",
122
+ "pattern": "Verdict:\\s*(?:PASS|REVISE)",
123
+ "flags": "i",
124
+ "label": "explicit reviewer verdict"
125
+ }
126
+ ]
127
+ }
128
+ ],
129
+ "checks": [
130
+ {
131
+ "kind": "notContains",
132
+ "file": "data/users.json",
133
+ "pattern": "\"name\"\\s*:",
134
+ "label": "the flat name field is gone from the data"
135
+ },
136
+ {
137
+ "kind": "notContains",
138
+ "file": "src/users.js",
139
+ "pattern": "\\.name\\b|\\[[\"']name[\"']\\]",
140
+ "label": "no flat-shape read remains in the accessors"
141
+ },
142
+ {
143
+ "kind": "sourceParses",
144
+ "file": "src/users.js"
145
+ },
146
+ {
147
+ "kind": "sniff",
148
+ "file": "data/users.json",
149
+ "sniff": "json-valid"
150
+ },
151
+ {
152
+ "kind": "nodeRuns",
153
+ "file": "tests/users.test.mjs"
154
+ },
155
+ {
156
+ "kind": "nodeScriptPasses",
157
+ "script": "tests/verify-migration.mjs",
158
+ "timeoutMs": 60000,
159
+ "requiredOutput": [
160
+ {
161
+ "pattern": "SCHEMAMIG_ORACLE data intact",
162
+ "label": "every record migrated with values intact"
163
+ },
164
+ {
165
+ "pattern": "SCHEMAMIG_ORACLE accessors migrated",
166
+ "label": "accessors read the new shape"
167
+ },
168
+ {
169
+ "pattern": "SCHEMAMIG_ORACLE contract complete",
170
+ "label": "the dual-read retired with the old shape"
171
+ },
172
+ {
173
+ "pattern": "SCHEMAMIG_ORACLE suite green",
174
+ "label": "suite green on the migrated tree"
175
+ }
176
+ ]
177
+ }
178
+ ],
179
+ "taskNotes": {
180
+ "minBytes": 120,
181
+ "checks": [
182
+ {
183
+ "kind": "contains",
184
+ "file": "task-notes.md",
185
+ "pattern": "\\bDONE\\b[\\s\\S]*(npm\\s+run\\s+test|node\\s+--test)",
186
+ "flags": "i",
187
+ "label": "DONE note names the real test command"
188
+ }
189
+ ]
190
+ },
191
+ "taskGraph": {
192
+ "requireCraftbookTask": true,
193
+ "requireTerminalStep": true
194
+ },
195
+ "unchangedFixtures": [
196
+ "source/migration-brief.md",
197
+ "package.json"
198
+ ]
199
+ },
200
+ "rubric": {
201
+ "artifact": {
202
+ "path": "{{task.dir}}/change-notes.md",
203
+ "kind": "markdown"
204
+ },
205
+ "axes": [
206
+ {
207
+ "name": "Expand/contract discipline",
208
+ "description": "The stages genuinely followed expand, migrate, contract in order - readers accepted both shapes while the data moved, and the old shape was dropped only after the transform completed with a green suite."
209
+ },
210
+ {
211
+ "name": "Data preservation",
212
+ "description": "The transform is real and lossless: every record reached the target shape with names and emails surviving exactly, proven by counts and spot-checks rather than asserted."
213
+ },
214
+ {
215
+ "name": "Honest verification",
216
+ "description": "Verification searched for leftover old-shape reads, quoted what it found, ran the real suite, and labeled anything unrun as unverified instead of claiming it."
217
+ }
218
+ ]
219
+ },
220
+ "qualityFocus": [
221
+ "expand/contract data safety",
222
+ "no record stranded",
223
+ "real-site accessor changes"
224
+ ]
225
+ }
@@ -0,0 +1,274 @@
1
+ {
2
+ "id": "scrape-to-structured",
3
+ "name": "Scrape a Site to Structured Data",
4
+ "description": "Turn one or more web pages into a clean, structured dataset (JSON or CSV) with a fixed schema — product listings, directory entries, articles, tables, or job posts. Scopes the exact fields and a sample-row target FIRST so extraction is verifiable, then crawls and parses each page into rows, then validates that every row matches the schema, types are coerced, required fields are non-empty, and there are no duplicates. The scope-before-scrape ordering is the point: a small model that locks the field list and one hand-written sample row extracts consistently instead of inventing keys per page.\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 extraction (planner) — lock target URLs, the field schema, and a sample row → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Scrape and parse (developer) — fetch each page and extract rows to the schema → gated on `data.json` (json)\n3. Validate the dataset (reviewer) — schema, types, completeness, and dedup checks → gated on artifact `{{workPath}}/validate.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
+ "scrape a website",
8
+ "extract data from a site",
9
+ "turn a page into JSON",
10
+ "crawl and structure",
11
+ "pull a table from the web"
12
+ ],
13
+ "paramSchema": {
14
+ "type": "object",
15
+ "properties": {
16
+ "workPath": {
17
+ "type": "string",
18
+ "title": "Working folder",
19
+ "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.",
20
+ "default": "{{task.dir}}"
21
+ }
22
+ }
23
+ },
24
+ "steps": [
25
+ {
26
+ "id": "scope",
27
+ "name": "Scope the extraction",
28
+ "description": "lock target URLs, the field schema, and a sample row",
29
+ "prompt": "Define exactly what to extract before fetching anything. Step 1: list the target URL(s) or the URL pattern to crawl, and note pagination (how to reach page 2..N) if any. Step 2: define the output schema as a flat field list — for each field give a name, a type (string/number/boolean/date/url), and whether it is required. Step 3: hand-write ONE fully-populated sample row in the chosen format so the build phase has a concrete target to match. Step 4: decide output format (JSON array of objects, or CSV) and the file path. Step 5: write an acceptance-criteria checklist (e.g. 'every page in scope is fetched', 'every row has all required fields non-empty', 'numeric/date fields are typed not strings', 'no duplicate rows by the key field', 'row count is within the expected range'). Call write_task_note with the schema, the sample row, and the checklist, and also write that same content to {{workPath}}/scope.md. No scraping 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.",
30
+ "suggestedRole": "planner",
31
+ "advanceWhen": {
32
+ "file": "{{workPath}}/scope.md",
33
+ "minBytes": 1,
34
+ "sniff": "nonempty",
35
+ "artifact": true
36
+ },
37
+ "gate": {
38
+ "at": "completion",
39
+ "checks": [
40
+ {
41
+ "kind": "minBytes",
42
+ "file": "{{workPath}}/scope.md",
43
+ "bytes": 120,
44
+ "artifact": true
45
+ },
46
+ {
47
+ "kind": "sniff",
48
+ "file": "{{workPath}}/scope.md",
49
+ "sniff": "nonempty",
50
+ "artifact": true
51
+ }
52
+ ],
53
+ "onReject": "scope",
54
+ "maxAttempts": 3
55
+ },
56
+ "next": "scrape",
57
+ "toolPolicy": {
58
+ "disallowBuiltinToolsets": [
59
+ "ai-apps",
60
+ "archives",
61
+ "audio",
62
+ "browser-automation",
63
+ "code-execution",
64
+ "craftbooks",
65
+ "data-tables",
66
+ "entity-intel",
67
+ "git",
68
+ "image-intel",
69
+ "images",
70
+ "role-delegation",
71
+ "role-delegation-escalation",
72
+ "security-intel",
73
+ "team-management",
74
+ "videos",
75
+ "web",
76
+ "workspace-fs-write"
77
+ ],
78
+ "outputMedium": "artifact",
79
+ "additionalOutputMedia": [
80
+ "task-note"
81
+ ]
82
+ }
83
+ },
84
+ {
85
+ "id": "scrape",
86
+ "name": "Scrape and parse",
87
+ "description": "fetch each page and extract rows to the schema",
88
+ "prompt": "Fetch each in-scope page (use the available fetch/browser capability) and parse out the fields defined in the schema. Step 1: fetch page 1, locate the repeating record container, and map each schema field to its selector/pattern. Step 2: extract every record on the page into an object keyed exactly by the schema field names — never invent or rename keys. Step 3: follow pagination and repeat until all in-scope pages are done. Step 4: coerce types as you go (parse numbers, normalize dates to ISO, absolutize relative URLs) and trim whitespace. Step 5: write all rows to the scoped output file in the chosen format and confirm it parses. Stage progress so a partial run is observable. Call write_task_note with the output path and the row count.",
89
+ "suggestedRole": "developer",
90
+ "advanceWhen": {
91
+ "file": "data.json",
92
+ "minBytes": 1,
93
+ "sniff": "json-valid"
94
+ },
95
+ "gate": {
96
+ "at": "completion",
97
+ "checks": [
98
+ {
99
+ "kind": "minBytes",
100
+ "file": "data.json",
101
+ "bytes": 2
102
+ }
103
+ ],
104
+ "scripts": [
105
+ {
106
+ "name": "checkJsonValid",
107
+ "scope": "standard",
108
+ "inputs": {
109
+ "file": "data.json"
110
+ }
111
+ }
112
+ ],
113
+ "onReject": "scrape",
114
+ "maxAttempts": 3
115
+ },
116
+ "next": "validate",
117
+ "toolPolicy": {
118
+ "disallowBuiltinToolsets": [
119
+ "ai-apps",
120
+ "archives",
121
+ "artifacts",
122
+ "audio",
123
+ "browser-automation",
124
+ "craftbooks",
125
+ "data-tables",
126
+ "entity-intel",
127
+ "git",
128
+ "image-intel",
129
+ "images",
130
+ "role-delegation",
131
+ "role-delegation-escalation",
132
+ "security-intel",
133
+ "team-management",
134
+ "videos",
135
+ "web"
136
+ ],
137
+ "outputMedium": "workspace",
138
+ "additionalOutputMedia": [
139
+ "task-note"
140
+ ]
141
+ }
142
+ },
143
+ {
144
+ "id": "validate",
145
+ "name": "Validate the dataset",
146
+ "description": "schema, types, completeness, and dedup checks",
147
+ "prompt": "Validate the produced dataset against the locked schema and checklist. Step 1: confirm the file parses and is the chosen format. Step 2: for every row, confirm all required fields are present and non-empty and that types match (numbers are numbers, dates are ISO, urls are absolute). Step 3: check coverage — the row count is within the expected range and pages were not silently skipped. Step 4: check for duplicate rows by the key field and flag any. Step 5: spot-check 3 rows against the live source to confirm values are correct, not hallucinated. Write a PASS/FAIL line per criterion to {{workPath}}/validate.md and to task notes. If anything fails, list the exact rows/fields and loop back to scrape.\n\nThe deliverable `{{workPath}}/validate.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.",
148
+ "suggestedRole": "reviewer",
149
+ "advanceWhen": {
150
+ "file": "{{workPath}}/validate.md",
151
+ "minBytes": 1,
152
+ "sniff": "nonempty",
153
+ "artifact": true
154
+ },
155
+ "gate": {
156
+ "at": "completion",
157
+ "checks": [
158
+ {
159
+ "kind": "minBytes",
160
+ "file": "data.json",
161
+ "bytes": 2
162
+ }
163
+ ],
164
+ "scripts": [
165
+ {
166
+ "name": "checkJsonValid",
167
+ "scope": "standard",
168
+ "inputs": {
169
+ "file": "data.json"
170
+ }
171
+ }
172
+ ],
173
+ "onReject": "validate",
174
+ "maxAttempts": 4
175
+ },
176
+ "next": "evaluate",
177
+ "toolPolicy": {
178
+ "disallowBuiltinToolsets": [
179
+ "ai-apps",
180
+ "archives",
181
+ "audio",
182
+ "browser-automation",
183
+ "code-execution",
184
+ "craftbooks",
185
+ "data-tables",
186
+ "entity-intel",
187
+ "git",
188
+ "image-intel",
189
+ "images",
190
+ "role-delegation",
191
+ "role-delegation-escalation",
192
+ "security-intel",
193
+ "team-management",
194
+ "videos",
195
+ "web",
196
+ "workspace-fs-write"
197
+ ],
198
+ "outputMedium": "artifact"
199
+ }
200
+ },
201
+ {
202
+ "id": "evaluate",
203
+ "name": "Evaluate",
204
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
205
+ "prompt": "Open data.json and verify it against every acceptance criterion from {{workPath}}/scope.md. Confirm it parses as valid JSON. For each row, check required fields are non-empty and types are correct (numbers typed, dates ISO, urls absolute). Verify there are no duplicate rows by the key field and the row count is in range. Spot-check 3 rows against the source. Write PASS/FAIL per criterion; on any failure, name the offending rows/fields and loop back to scrape.\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: \"scrape\" })` 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.",
206
+ "suggestedRole": "reviewer",
207
+ "consumes": [
208
+ {
209
+ "file": "data.json"
210
+ }
211
+ ],
212
+ "next": "scrape",
213
+ "toolPolicy": {
214
+ "disallowBuiltinToolsets": [
215
+ "ai-apps",
216
+ "archives",
217
+ "artifacts",
218
+ "audio",
219
+ "browser-automation",
220
+ "code-execution",
221
+ "craftbooks",
222
+ "data-tables",
223
+ "entity-intel",
224
+ "git",
225
+ "image-intel",
226
+ "images",
227
+ "role-delegation",
228
+ "role-delegation-escalation",
229
+ "security-intel",
230
+ "team-management",
231
+ "videos",
232
+ "web",
233
+ "workspace-fs-write"
234
+ ],
235
+ "outputMedium": "task-note"
236
+ }
237
+ },
238
+ {
239
+ "id": "finish",
240
+ "name": "Finish",
241
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
242
+ "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.",
243
+ "suggestedRole": "developer",
244
+ "terminal": true,
245
+ "toolPolicy": {
246
+ "disallowBuiltinToolsets": [
247
+ "ai-apps",
248
+ "archives",
249
+ "artifacts",
250
+ "audio",
251
+ "browser-automation",
252
+ "code-execution",
253
+ "craftbooks",
254
+ "data-tables",
255
+ "entity-intel",
256
+ "git",
257
+ "image-intel",
258
+ "images",
259
+ "role-delegation",
260
+ "role-delegation-escalation",
261
+ "security-intel",
262
+ "team-management",
263
+ "videos",
264
+ "web",
265
+ "workspace-fs-write"
266
+ ],
267
+ "outputMedium": "task-note"
268
+ }
269
+ }
270
+ ],
271
+ "version": "1.0.4",
272
+ "releasedAt": "2026-09-01T20:00:00Z",
273
+ "minGezelVersion": "1.26233"
274
+ }
@@ -0,0 +1,162 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Scrape a Site to Structured Data smoke eval",
4
+ "objective": "Self-contained smoke eval for the Scrape a Site to Structured Data 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": "Scrape a Site to Structured Data Eval",
11
+ "about": "Self-contained eval project for scrape-to-structured. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/automation.md.",
12
+ "missionObjectives": "Use the Scrape a Site to Structured Data 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": "# Scrape a Site to Structured Data 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: scrape-to-structured - Scrape a Site to Structured Data.\n"
17
+ }
18
+ ],
19
+ "worker": {
20
+ "name": "Jules",
21
+ "role": "Developer"
22
+ }
23
+ },
24
+ "mocks": [
25
+ {
26
+ "kind": "http",
27
+ "id": "ops",
28
+ "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.",
29
+ "credential": {
30
+ "name": "mock.ops"
31
+ },
32
+ "routes": [
33
+ {
34
+ "method": "GET",
35
+ "path": "/api/bookings/open",
36
+ "body": {
37
+ "items": [
38
+ "BKG-1001",
39
+ "BKG-1002",
40
+ "BKG-1003"
41
+ ]
42
+ }
43
+ },
44
+ {
45
+ "method": "POST",
46
+ "path": "/api/bookings/dry-run",
47
+ "status": 201,
48
+ "body": {
49
+ "status": "DRY_RUN_OK",
50
+ "recorded": 3
51
+ }
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "kind": "webhook",
57
+ "id": "notify",
58
+ "description": "Notification receiver. POST a JSON completion notice here when the run finishes.",
59
+ "path": "/hooks/notify"
60
+ },
61
+ {
62
+ "kind": "cli",
63
+ "id": "probe",
64
+ "description": "Provenance-trusted project script `mock-probe` that exercises the fake ops service through http.authed and returns the raw responses.",
65
+ "shim": {
66
+ "path": "scripts/mock-probe.ts",
67
+ "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"
68
+ }
69
+ }
70
+ ],
71
+ "success": {
72
+ "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.",
73
+ "deliverables": [
74
+ {
75
+ "path": "automation.md",
76
+ "kind": "markdown-report",
77
+ "minBytes": 900,
78
+ "checks": [
79
+ {
80
+ "kind": "contains",
81
+ "file": "automation.md",
82
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
83
+ "flags": "i"
84
+ },
85
+ {
86
+ "kind": "contains",
87
+ "file": "automation.md",
88
+ "pattern": "DRY_RUN_OK|dry-run|dry run",
89
+ "flags": "i"
90
+ },
91
+ {
92
+ "kind": "contains",
93
+ "file": "automation.md",
94
+ "pattern": "fake-ci|fake-github|/api/bookings",
95
+ "flags": "i"
96
+ },
97
+ {
98
+ "kind": "contains",
99
+ "file": "automation.md",
100
+ "pattern": "no real|credentials|safety|guard",
101
+ "flags": "i"
102
+ },
103
+ {
104
+ "kind": "contains",
105
+ "file": "automation.md",
106
+ "pattern": "success|failure|retry|abort",
107
+ "flags": "i"
108
+ }
109
+ ]
110
+ }
111
+ ],
112
+ "mocks": [
113
+ {
114
+ "service": "ops",
115
+ "minRequests": 2,
116
+ "requiredPaths": [
117
+ "^/api/bookings/open$",
118
+ "^/api/bookings/dry-run$"
119
+ ]
120
+ }
121
+ ]
122
+ },
123
+ "rubric": {
124
+ "artifact": {
125
+ "path": "automation.md",
126
+ "kind": "markdown"
127
+ },
128
+ "axes": [
129
+ {
130
+ "name": "safety",
131
+ "description": "Dry-run posture is explicit: no real credentials, clear stop-before-side-effect boundary."
132
+ },
133
+ {
134
+ "name": "mapping",
135
+ "description": "Fake endpoints/commands are mapped completely to the workflow steps."
136
+ },
137
+ {
138
+ "name": "signals",
139
+ "description": "Success, failure, retry, and abort conditions are all defined."
140
+ },
141
+ {
142
+ "name": "containment",
143
+ "description": "The plan cannot accidentally reach a real service from a mock context."
144
+ }
145
+ ]
146
+ },
147
+ "qualityFocus": [
148
+ "dry-run safety",
149
+ "fake tool mapping",
150
+ "side-effect containment"
151
+ ],
152
+ "extensions": {
153
+ "legacySimulators": [
154
+ {
155
+ "id": "scrape-to-structured-fake-service-fixture",
156
+ "kind": "data-source",
157
+ "status": "implemented",
158
+ "description": "Seeded local fake service contract replacing live CLIs, HTTP APIs, credentials, and side effects."
159
+ }
160
+ ]
161
+ }
162
+ }