@bendyline/gilde 0.1.51 → 0.1.52

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 (583) 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
@@ -0,0 +1,387 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "REST API contract and implementation",
4
+ "objective": "Measure the REST API craftbook shape with a deterministic bookstore API brief requiring OpenAPI, a dependency-free Node server, contract tests, pagination, auth, and error handling.",
5
+ "tags": [
6
+ "code"
7
+ ],
8
+ "prompt": "In the `REST API Eval` project, read `source/api-brief.md` and write `openapi.yaml`, `server.mjs`, `contract-test.mjs`, and `README.md`. Keep the implementation offline and dependency-free using Node ESM and `node:http` in the server only; do not use `require`, `node-fetch`, Express, Fastify, `/api/v1` prefixes, or package installs. Implement the exact paths GET /books, GET /books/{id}, and POST /books. `openapi.yaml` must use OpenAPI `3.1.0`, define `components.securitySchemes.bearerAuth`, apply that bearer auth to POST /books, define an `ErrorEnvelope` schema, and mention error codes `VALIDATION_ERROR` and `BOOK_NOT_FOUND`. `server.mjs` must export `createBookstoreServer()` without starting the listener itself, must enforce exact `Authorization: Bearer eval-token` on POST /books with 401 for missing/wrong tokens, must not import from `./server` or `./server.mjs`, and must not replace the native `server.close` method. In `server.mjs`, import the HTTP module normally at top level with `import http from 'node:http'` or `import { createServer } from 'node:http'`; do not use `await import('node:http')`. The ban on `node:http` imports applies only to `contract-test.mjs`. In every `server.mjs` route branch, send exactly one response per request: after any `sendResponse`, `sendJson`, `res.writeHead`, or `res.end` for auth, validation, not-found, or success, immediately `return` so the code never falls through into another response. `contract-test.mjs` must be a complete runnable file with no placeholder elisions like `... rest of file`. It must import `createBookstoreServer` from exactly `./server.mjs`, import assertions from `node:assert/strict`, must not import `node:http`, must call `createBookstoreServer()` and run the tests at top level when invoked with `node contract-test.mjs`, call `server.listen(0)` itself, resolve the assigned port inside the `listen(0)` callback using `server.address().port`, build every request URL from that resolved `baseUrl` including the assigned port, and never use `new URL(path, 'http://localhost')` because it drops the port. Use Node's built-in global `fetch()` directly or through a helper that calls `globalThis.fetch(url, options)`, declare any helper that awaits `fetch()` as `async`, pass POST `method`, `headers`, and `body` options through to `fetch`, and make the helper return status plus parsed JSON for all HTTP statuses instead of throwing on expected 400/401/404 responses. Run and log pagination/not-found/auth failure/validation failure/create success checks, include an explicit pagination request using `/books?limit=2` or equivalent URLSearchParams limit=2, run non-mutating checks before the create-success mutation or otherwise isolate state, and close the server cleanly. Do not wait for a `listening` event after `listen()` has already fired. Do not define or export tests that are never called. If you catch a test failure, log `error.stack ?? error` before rethrowing or setting a non-zero exit code; do not print only a generic failure banner. `README.md` must include a Usage section with these exact command lines: `node server.mjs` and `node contract-test.mjs`. It must also list GET /books, GET /books/{id}, POST /books, and show `Authorization: Bearer eval-token` for POST.",
9
+ "setup": {
10
+ "projectName": "REST API Eval",
11
+ "about": "Self-contained eval project for REST API craftbook behavior. The API brief is in workspace/source/api-brief.md and no live service or package install is needed.",
12
+ "missionObjectives": "Build a dependency-free API contract, server stub, tests, and run notes from the seeded brief. Do not use external services or credentials.",
13
+ "files": [
14
+ {
15
+ "path": "source/api-brief.md",
16
+ "content": "# Bookstore API brief\n\nResource: books for a small local bookstore.\nOpenAPI version: 3.1.0.\nSeed books: bk-1 The Left Hand of Darkness by au-1; bk-2 Parable of the Sower by au-2; bk-3 A Wizard of Earthsea by au-1.\nEndpoints:\n- GET /books?limit=&offset= returns `{ items, pagination: { limit, offset, total, hasMore } }`.\n- GET /books/{id} returns one book or 404 `{ error: { code: \"BOOK_NOT_FOUND\", message } }`.\n- POST /books creates a book and requires `Authorization: Bearer eval-token`.\n- POST body requires title and authorId. Missing fields return 400 `{ error: { code: \"VALIDATION_ERROR\", message } }`.\nOpenAPI auth requirement: define `components.securitySchemes.bearerAuth` with HTTP bearer auth and add `security: [{ bearerAuth: [] }]` to POST /books.\nOpenAPI must define an `ErrorEnvelope` schema shaped like `{ error: { code, message } }` and must mention `VALIDATION_ERROR` and `BOOK_NOT_FOUND` as concrete error codes.\nImplementation constraints: Node ESM, built-in modules only, no Express/Fastify/package install, server exports a `createBookstoreServer()` helper for tests and does not call listen() inside that helper. `server.mjs` must import the HTTP module normally at top level, such as `import http from \"node:http\"` or `import { createServer } from \"node:http\"`; do not use `await import(\"node:http\")`. `server.mjs` must enforce exact `Authorization: Bearer eval-token` on POST /books and return 401 for missing or wrong tokens. Every route branch in `server.mjs` must send exactly one response per request; after an auth, validation, not-found, or success response, immediately `return` so later code cannot write headers again. `server.mjs` must not import itself or import from `./server` or `./server.mjs`, and must not assign or replace `server.close`.\nTests must be complete runnable files with no placeholder elisions. They must import from exactly ./server.mjs, use node:assert/strict, call createBookstoreServer(), and run the tests at top level when `node contract-test.mjs` executes. Use the built-in global fetch() directly or through a helper that calls globalThis.fetch(url, options), call server.listen(0), resolve the assigned port inside the listen callback with server.address().port, and build request URLs from that resolved baseUrl before making requests. Do not use `new URL(path, \"http://localhost\")` in contract-test.mjs because it drops the assigned port. Do not wait for a `listening` event after `listen()` has already fired. Do not import node:http, node-fetch, or replace the global fetch function. If a helper uses `await fetch(...)`, declare that helper with `async function` or as an async arrow function, and pass POST method/headers/body options through to fetch. The helper must not throw on expected 400/401/404 HTTP responses; return status plus parsed JSON so negative tests can assert error codes. Do not catch assertion failures unless you log `error.stack ?? error` and then rethrow them or set a non-zero exit code. Run and log pagination, not-found, auth failure, validation failure, and create-success checks; the pagination check must explicitly request limit=2. Do not define or export tests that are never called. Run non-mutating checks before create success, or isolate/reset server state so pagination totals do not assume the seeded count after a create. Close the server cleanly.\nREADME must include a Usage section that shows these exact command lines: `node server.mjs` and `node contract-test.mjs`. It must also list GET /books, GET /books/{id}, POST /books, and the POST header `Authorization: Bearer eval-token`."
17
+ }
18
+ ],
19
+ "worker": {
20
+ "name": "Ravi",
21
+ "role": "Developer"
22
+ }
23
+ },
24
+ "mocks": [],
25
+ "success": {
26
+ "summary": "The run writes a contract, dependency-free server, contract tests, and run notes covering pagination, auth, validation, and error semantics.",
27
+ "deliverables": [
28
+ {
29
+ "path": "openapi.yaml",
30
+ "kind": "yaml-spec",
31
+ "minBytes": 1600,
32
+ "checks": [
33
+ {
34
+ "kind": "contains",
35
+ "file": "openapi.yaml",
36
+ "pattern": "openapi:\\s*3\\.1"
37
+ },
38
+ {
39
+ "kind": "contains",
40
+ "file": "openapi.yaml",
41
+ "pattern": "/books:"
42
+ },
43
+ {
44
+ "kind": "contains",
45
+ "file": "openapi.yaml",
46
+ "pattern": "/books/\\{id\\}:"
47
+ },
48
+ {
49
+ "kind": "contains",
50
+ "file": "openapi.yaml",
51
+ "pattern": "post:|POST",
52
+ "flags": "i"
53
+ },
54
+ {
55
+ "kind": "contains",
56
+ "file": "openapi.yaml",
57
+ "pattern": "bearerAuth|Authorization",
58
+ "flags": "i"
59
+ },
60
+ {
61
+ "kind": "contains",
62
+ "file": "openapi.yaml",
63
+ "pattern": "hasMore|pagination"
64
+ },
65
+ {
66
+ "kind": "contains",
67
+ "file": "openapi.yaml",
68
+ "pattern": "ErrorEnvelope"
69
+ },
70
+ {
71
+ "kind": "contains",
72
+ "file": "openapi.yaml",
73
+ "pattern": "VALIDATION_ERROR",
74
+ "label": "document VALIDATION_ERROR as a concrete error code"
75
+ },
76
+ {
77
+ "kind": "contains",
78
+ "file": "openapi.yaml",
79
+ "pattern": "BOOK_NOT_FOUND",
80
+ "label": "document BOOK_NOT_FOUND as a concrete error code"
81
+ },
82
+ {
83
+ "kind": "notContains",
84
+ "file": "openapi.yaml",
85
+ "pattern": "/api/v1",
86
+ "label": "use the exact bare paths /books and /books/{id}; do not add /api/v1"
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ "path": "server.mjs",
92
+ "kind": "code-module",
93
+ "minBytes": 2200,
94
+ "checks": [
95
+ {
96
+ "kind": "esmImports",
97
+ "file": "server.mjs"
98
+ },
99
+ {
100
+ "kind": "contains",
101
+ "file": "server.mjs",
102
+ "pattern": "node:http|createServer"
103
+ },
104
+ {
105
+ "kind": "contains",
106
+ "file": "server.mjs",
107
+ "pattern": "GET.*\\/books|\\/books",
108
+ "flags": "is"
109
+ },
110
+ {
111
+ "kind": "contains",
112
+ "file": "server.mjs",
113
+ "pattern": "POST.*\\/books|method.*POST",
114
+ "flags": "is"
115
+ },
116
+ {
117
+ "kind": "contains",
118
+ "file": "server.mjs",
119
+ "pattern": "(?:authorization|authHeader)[\\s\\S]{0,1200}(?:Bearer\\s+eval-token|AUTH_TOKEN|BEARER_TOKEN|eval-token)|(?:Bearer\\s+eval-token|AUTH_TOKEN|BEARER_TOKEN|eval-token)[\\s\\S]{0,1200}(?:authorization|authHeader)",
120
+ "flags": "i",
121
+ "label": "enforce POST auth by comparing the authorization header to `Bearer eval-token`; if using a token constant, declare it once"
122
+ },
123
+ {
124
+ "kind": "contains",
125
+ "file": "server.mjs",
126
+ "pattern": "401|UNAUTHORIZED"
127
+ },
128
+ {
129
+ "kind": "contains",
130
+ "file": "server.mjs",
131
+ "pattern": "limit|offset|hasMore"
132
+ },
133
+ {
134
+ "kind": "contains",
135
+ "file": "server.mjs",
136
+ "pattern": "BOOK_NOT_FOUND|VALIDATION_ERROR"
137
+ },
138
+ {
139
+ "kind": "notContains",
140
+ "file": "server.mjs",
141
+ "pattern": "from ['\"](express|fastify)['\"]|require\\(['\"](express|fastify)['\"]",
142
+ "flags": "i"
143
+ },
144
+ {
145
+ "kind": "notContains",
146
+ "file": "server.mjs",
147
+ "pattern": "from ['\"]\\./server(?:\\.mjs)?['\"]",
148
+ "label": "server.mjs must not import itself; remove imports from ./server or ./server.mjs and export createBookstoreServer exactly once"
149
+ },
150
+ {
151
+ "kind": "notContains",
152
+ "file": "server.mjs",
153
+ "pattern": "await\\s+import\\(['\"]node:http['\"]\\)",
154
+ "label": "server.mjs may import node:http at top level; do not use await import(\"node:http\") inside createBookstoreServer"
155
+ },
156
+ {
157
+ "kind": "notContains",
158
+ "file": "server.mjs",
159
+ "pattern": "server\\.close\\s*=",
160
+ "label": "do not replace the native HTTP server close method; close the server from contract-test.mjs"
161
+ },
162
+ {
163
+ "kind": "notContains",
164
+ "file": "server.mjs",
165
+ "pattern": "/api/v1",
166
+ "label": "route exact bare paths /books and /books/{id}; do not add /api/v1"
167
+ }
168
+ ]
169
+ },
170
+ {
171
+ "path": "contract-test.mjs",
172
+ "kind": "code-with-tests",
173
+ "minBytes": 1500,
174
+ "checks": [
175
+ {
176
+ "kind": "esmImports",
177
+ "file": "contract-test.mjs"
178
+ },
179
+ {
180
+ "kind": "contains",
181
+ "file": "contract-test.mjs",
182
+ "pattern": "import\\s+(?:assert|\\*\\s+as\\s+assert)\\s+from\\s*['\"]node:assert/strict['\"]|import\\s*\\{\\s*strict\\s+as\\s+assert\\s*\\}\\s*from\\s*['\"]node:assert(?:/strict)?['\"]",
183
+ "label": "import assertions from node:assert/strict before using assert"
184
+ },
185
+ {
186
+ "kind": "contains",
187
+ "file": "contract-test.mjs",
188
+ "pattern": "import\\s*\\{[^}]*\\bcreateBookstoreServer\\b[^}]*\\}\\s*from\\s*['\"]\\./server\\.mjs['\"]",
189
+ "label": "import createBookstoreServer with `import { createBookstoreServer } from \"./server.mjs\"`"
190
+ },
191
+ {
192
+ "kind": "notContains",
193
+ "file": "contract-test.mjs",
194
+ "pattern": "from ['\"]\\./server['\"]|require\\("
195
+ },
196
+ {
197
+ "kind": "notContains",
198
+ "file": "contract-test.mjs",
199
+ "pattern": "\\.\\.\\.\\s*\\(rest of the file content\\)|rest of the file content",
200
+ "flags": "i",
201
+ "label": "contract-test.mjs must be a complete runnable file; do not include placeholder elisions"
202
+ },
203
+ {
204
+ "kind": "contains",
205
+ "file": "contract-test.mjs",
206
+ "pattern": "createBookstoreServer\\s*\\(",
207
+ "label": "execute the imported server factory from contract-test.mjs; do not only export test helpers"
208
+ },
209
+ {
210
+ "kind": "notContains",
211
+ "file": "contract-test.mjs",
212
+ "pattern": "export\\s+\\{\\s*runTests\\s*\\}|export\\s+(?:async\\s+)?function\\s+runTests\\b",
213
+ "label": "contract-test.mjs must run tests when invoked with node, not only export runTests"
214
+ },
215
+ {
216
+ "kind": "contains",
217
+ "file": "contract-test.mjs",
218
+ "pattern": "limit=2|limit\\s*=\\s*2|limit\\s*:\\s*['\"]?2|limit['\"],\\s*['\"]2['\"]|limit[\"],\\s*[\"]2[\"]",
219
+ "label": "exercise GET /books pagination with an explicit limit=2 request"
220
+ },
221
+ {
222
+ "kind": "contains",
223
+ "file": "contract-test.mjs",
224
+ "pattern": "Bearer eval-token|Authorization"
225
+ },
226
+ {
227
+ "kind": "contains",
228
+ "file": "contract-test.mjs",
229
+ "pattern": "listen\\(0"
230
+ },
231
+ {
232
+ "kind": "contains",
233
+ "file": "contract-test.mjs",
234
+ "pattern": "globalThis\\.fetch|fetch\\(",
235
+ "label": "use Node built-in global fetch in contract requests"
236
+ },
237
+ {
238
+ "kind": "contains",
239
+ "file": "contract-test.mjs",
240
+ "pattern": "(?:globalThis\\.)?fetch\\s*\\([^\\n,]+,\\s*(?:\\{|[A-Za-z_$])",
241
+ "label": "pass fetch options for POST requests so method, headers, and body reach the server"
242
+ },
243
+ {
244
+ "kind": "notContains",
245
+ "file": "contract-test.mjs",
246
+ "pattern": "from\\s+['\"](?:node:)?http['\"]|import\\s+[^;]*['\"](?:node:)?http['\"]|require\\(['\"](?:node:)?http['\"]\\)|from\\s+['\"]node-fetch['\"]|import\\s*\\(['\"]node-fetch['\"]\\)|require\\(['\"]node-fetch['\"]\\)",
247
+ "label": "contract tests must not import node:http or node-fetch; remove those imports and use globalThis.fetch"
248
+ },
249
+ {
250
+ "kind": "notContains",
251
+ "file": "contract-test.mjs",
252
+ "pattern": "new\\s+URL\\([^,\\n]+,\\s*['\"]http://localhost['\"]\\s*\\)",
253
+ "label": "contract request helpers must include the assigned listen(0) port; build URLs from the resolved baseUrl, not plain http://localhost"
254
+ },
255
+ {
256
+ "kind": "notContains",
257
+ "file": "contract-test.mjs",
258
+ "pattern": "http\\.request|http\\.get",
259
+ "label": "contract tests must not use node:http request helpers; use globalThis.fetch"
260
+ },
261
+ {
262
+ "kind": "notContains",
263
+ "file": "contract-test.mjs",
264
+ "pattern": "\\bfunction\\s+fetch\\s*\\(|\\b(?:const|let|var)\\s+fetch\\s*=",
265
+ "label": "contract tests must not replace the global fetch function; use globalThis.fetch or a differently named helper"
266
+ },
267
+ {
268
+ "kind": "notContains",
269
+ "file": "contract-test.mjs",
270
+ "pattern": "/api/v1",
271
+ "label": "call the generated server with exact bare paths /books and /books/{id}; remove any /api/v1 prefix"
272
+ },
273
+ {
274
+ "kind": "contains",
275
+ "file": "contract-test.mjs",
276
+ "pattern": "401|403|400|404"
277
+ },
278
+ {
279
+ "kind": "contains",
280
+ "file": "contract-test.mjs",
281
+ "pattern": "close\\(|server\\.close"
282
+ },
283
+ {
284
+ "kind": "nodeScriptPasses",
285
+ "script": "contract-test.mjs",
286
+ "timeoutMs": 20000,
287
+ "requiredOutput": [
288
+ {
289
+ "pattern": "Pagination|GET /books|List Books",
290
+ "flags": "i",
291
+ "label": "pagination test ran"
292
+ },
293
+ {
294
+ "pattern": "Auth|Authentication|401|403",
295
+ "flags": "i",
296
+ "label": "auth failure test ran"
297
+ },
298
+ {
299
+ "pattern": "Validation|VALIDATION_ERROR|400",
300
+ "flags": "i",
301
+ "label": "validation test ran"
302
+ },
303
+ {
304
+ "pattern": "GET\\s+/books/\\{id\\}|Not Found|BOOK_NOT_FOUND|404",
305
+ "flags": "i",
306
+ "label": "not-found test ran"
307
+ },
308
+ {
309
+ "pattern": "Create|201|POST",
310
+ "flags": "i",
311
+ "label": "create-success test ran"
312
+ }
313
+ ]
314
+ }
315
+ ]
316
+ },
317
+ {
318
+ "path": "README.md",
319
+ "kind": "markdown-doc",
320
+ "minBytes": 500,
321
+ "checks": [
322
+ {
323
+ "kind": "contains",
324
+ "file": "README.md",
325
+ "pattern": "node server\\.mjs",
326
+ "label": "include the exact server command `node server.mjs`"
327
+ },
328
+ {
329
+ "kind": "contains",
330
+ "file": "README.md",
331
+ "pattern": "node contract-test\\.mjs",
332
+ "label": "include the exact contract-test command `node contract-test.mjs`"
333
+ },
334
+ {
335
+ "kind": "contains",
336
+ "file": "README.md",
337
+ "pattern": "GET /books"
338
+ },
339
+ {
340
+ "kind": "contains",
341
+ "file": "README.md",
342
+ "pattern": "GET /books/\\{id\\}|GET /books/:id|GET /books/<id>"
343
+ },
344
+ {
345
+ "kind": "contains",
346
+ "file": "README.md",
347
+ "pattern": "POST /books"
348
+ },
349
+ {
350
+ "kind": "contains",
351
+ "file": "README.md",
352
+ "pattern": "eval-token|Authorization"
353
+ }
354
+ ]
355
+ }
356
+ ]
357
+ },
358
+ "rubric": {
359
+ "artifact": {
360
+ "path": "openapi.yaml",
361
+ "kind": "yaml"
362
+ },
363
+ "axes": [
364
+ {
365
+ "name": "correctness",
366
+ "description": "The module does what the requirements ask, with sensible edge handling."
367
+ },
368
+ {
369
+ "name": "verification",
370
+ "description": "Self-tests exercise real behavior, not trivial truths."
371
+ },
372
+ {
373
+ "name": "clarity",
374
+ "description": "Exports, naming, and structure make the module usable without reading every line."
375
+ },
376
+ {
377
+ "name": "robustness",
378
+ "description": "Invalid input and boundary cases fail loudly rather than silently."
379
+ }
380
+ ]
381
+ },
382
+ "qualityFocus": [
383
+ "contract-first API design",
384
+ "server implementation",
385
+ "integration tests"
386
+ ]
387
+ }