@bendyline/gilde 0.1.39 → 0.1.41

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 (434) hide show
  1. package/authoring/chat-models/muse-glimmer-30b-q4.json +3 -3
  2. package/authoring/chat-models/ornith-9b-q4.json +1 -1
  3. package/authoring/chat-models/ornith1.5-9b-q4.json +149 -0
  4. package/authoring/chat-models/qwen3.8-27b-iq1-s.json +190 -0
  5. package/authoring/chat-models/qwen3.8-27b-q2.json +189 -0
  6. package/authoring/gstack/overlays/investigate.json +1 -0
  7. package/authoring/gstack/overlays/qa-only.json +1 -0
  8. package/authoring/gstack/wave.json +12 -2
  9. package/authoring/tactical/books/accessibility-retrofit.json +188 -0
  10. package/authoring/tactical/books/apply-review-findings.json +189 -0
  11. package/authoring/tactical/books/bug-fix-tdd.json +237 -0
  12. package/authoring/tactical/books/ci-pipeline.json +168 -0
  13. package/authoring/tactical/books/codemod-sweep.json +182 -0
  14. package/authoring/tactical/books/dependency-upgrade.json +196 -0
  15. package/authoring/tactical/books/flaky-test-fix.json +238 -0
  16. package/authoring/tactical/books/hotfix-flow.json +187 -0
  17. package/authoring/tactical/books/perf-optimization.json +219 -0
  18. package/authoring/tactical/books/refactor-module.json +217 -0
  19. package/authoring/tactical/books/schema-migration.json +192 -0
  20. package/authoring/tactical/books/test-suite-backfill.json +172 -0
  21. package/authoring/tactical/books/type-safety-pass.json +185 -0
  22. package/authoring/tactical/books/ux-update.json +178 -0
  23. package/authoring/tactical/evals/accessibility-retrofit.json +230 -0
  24. package/authoring/tactical/evals/apply-review-findings.json +290 -0
  25. package/authoring/tactical/evals/bug-fix-tdd.json +221 -0
  26. package/authoring/tactical/evals/ci-pipeline.json +227 -0
  27. package/authoring/tactical/evals/codemod-sweep.json +252 -0
  28. package/authoring/tactical/evals/dependency-upgrade.json +235 -0
  29. package/authoring/tactical/evals/flaky-test-fix.json +239 -0
  30. package/authoring/tactical/evals/hotfix-flow.json +220 -0
  31. package/authoring/tactical/evals/perf-optimization.json +235 -0
  32. package/authoring/tactical/evals/refactor-module.json +241 -0
  33. package/authoring/tactical/evals/schema-migration.json +225 -0
  34. package/authoring/tactical/evals/test-suite-backfill.json +197 -0
  35. package/authoring/tactical/evals/type-safety-pass.json +221 -0
  36. package/authoring/tactical/evals/ux-update.json +206 -0
  37. package/authoring/tactical/wave.json +89 -0
  38. package/data/chat-models/de/deepseek-r1-8b-q4/manifest.json +56 -1
  39. package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +56 -0
  40. package/data/chat-models/gp/gpt-oss-120b-q4/manifest.json +73 -1
  41. package/data/chat-models/gp/gpt-oss-20b-q4/manifest.json +77 -1
  42. package/data/chat-models/index.json +1 -1
  43. package/data/chat-models/ll/llama3.2-3b-q4/manifest.json +3 -1
  44. package/data/chat-models/mi/mistral-7b-q4/manifest.json +54 -3
  45. package/data/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +76 -1
  46. package/data/chat-models/mu/muse-glimmer-30b-q4/manifest.json +4 -3
  47. package/data/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.2/manifest.json +20 -0
  48. package/data/chat-models/or/ornith-9b-q4/manifest.json +1 -1
  49. package/data/chat-models/or/ornith1.5-9b-q4/manifest.json +187 -0
  50. package/data/chat-models/or/ornith1.5-9b-q4/versions/1.0.0/manifest.json +53 -0
  51. package/data/chat-models/qw/qwen3.8-27b-iq1-s/manifest.json +195 -0
  52. package/data/chat-models/qw/qwen3.8-27b-iq1-s/versions/1.0.0/manifest.json +19 -0
  53. package/data/chat-models/qw/qwen3.8-27b-q2/manifest.json +194 -0
  54. package/data/chat-models/qw/qwen3.8-27b-q2/versions/1.0.0/manifest.json +19 -0
  55. package/data/craftbook-templates/a1/a11y-audit/manifest.json +1 -0
  56. package/data/craftbook-templates/ab/ab-test-readout/manifest.json +1 -0
  57. package/data/craftbook-templates/ac/accessibility-retrofit/manifest.json +6 -4
  58. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/craftbook.json +451 -0
  59. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/test.json +231 -0
  60. package/data/craftbook-templates/ad/ad-variations/manifest.json +1 -0
  61. package/data/craftbook-templates/al/album-curate/manifest.json +1 -0
  62. package/data/craftbook-templates/al/alert-rules/manifest.json +1 -0
  63. package/data/craftbook-templates/al/alt-text-pass/manifest.json +6 -1
  64. package/data/craftbook-templates/an/anniversary-cut/manifest.json +1 -0
  65. package/data/craftbook-templates/an/annotated-bibliography/manifest.json +1 -0
  66. package/data/craftbook-templates/an/annual-document-review/manifest.json +1 -0
  67. package/data/craftbook-templates/an/anomaly-scan/manifest.json +1 -0
  68. package/data/craftbook-templates/ap/api-contract-review/manifest.json +1 -0
  69. package/data/craftbook-templates/ap/apply-review-findings/art.json +12 -0
  70. package/data/craftbook-templates/ap/apply-review-findings/logo.webp +0 -0
  71. package/data/craftbook-templates/ap/apply-review-findings/manifest.json +23 -0
  72. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/craftbook.json +436 -0
  73. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/test.json +291 -0
  74. package/data/craftbook-templates/ar/artifact-integrity-review/manifest.json +1 -0
  75. package/data/craftbook-templates/au/audio-ad-spot/manifest.json +1 -0
  76. package/data/craftbook-templates/au/audio-highlight-reel/manifest.json +1 -0
  77. package/data/craftbook-templates/au/audiobook-master-pack/manifest.json +1 -0
  78. package/data/craftbook-templates/au/auth-flow/manifest.json +1 -0
  79. package/data/craftbook-templates/au/automation-recipe/manifest.json +1 -0
  80. package/data/craftbook-templates/ba/backup-routine/manifest.json +1 -0
  81. package/data/craftbook-templates/bl/blog-post/manifest.json +1 -0
  82. package/data/craftbook-templates/bo/board-deck/manifest.json +1 -0
  83. package/data/craftbook-templates/bo/board-game-web/manifest.json +1 -0
  84. package/data/craftbook-templates/bo/booking-automation/manifest.json +1 -0
  85. package/data/craftbook-templates/br/branding-website/manifest.json +1 -0
  86. package/data/craftbook-templates/br/broadcast-announcement/manifest.json +1 -0
  87. package/data/craftbook-templates/br/browser-qa-audit/manifest.json +6 -1
  88. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/craftbook.json +438 -0
  89. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/test.json +379 -0
  90. package/data/craftbook-templates/bu/bug-fix-tdd/manifest.json +4 -3
  91. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/craftbook.json +545 -0
  92. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/test.json +222 -0
  93. package/data/craftbook-templates/bu/build-loop/manifest.json +1 -0
  94. package/data/craftbook-templates/ca/calendar-brief/manifest.json +1 -0
  95. package/data/craftbook-templates/ca/canvas-generative-art/manifest.json +1 -0
  96. package/data/craftbook-templates/ca/careful-mode/manifest.json +1 -0
  97. package/data/craftbook-templates/ca/case-study/manifest.json +1 -0
  98. package/data/craftbook-templates/ca/case-study-writeup/manifest.json +1 -0
  99. package/data/craftbook-templates/ch/changelog-cut/manifest.json +6 -1
  100. package/data/craftbook-templates/ch/changelog-writeup/manifest.json +6 -1
  101. package/data/craftbook-templates/ch/chapter-narration-run/manifest.json +1 -0
  102. package/data/craftbook-templates/ch/chapter-weave/manifest.json +1 -0
  103. package/data/craftbook-templates/ch/character-sheet/manifest.json +1 -0
  104. package/data/craftbook-templates/ch/character-turnaround/manifest.json +1 -0
  105. package/data/craftbook-templates/ch/chart-pack/manifest.json +1 -0
  106. package/data/craftbook-templates/ch/chrome-extension/manifest.json +1 -0
  107. package/data/craftbook-templates/ci/ci-pipeline/manifest.json +6 -3
  108. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/craftbook.json +423 -0
  109. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/test.json +228 -0
  110. package/data/craftbook-templates/ci/citation-audit/manifest.json +1 -0
  111. package/data/craftbook-templates/cl/cli-tool/manifest.json +1 -0
  112. package/data/craftbook-templates/co/code-review/manifest.json +1 -0
  113. package/data/craftbook-templates/co/codebase-refactoring-review/manifest.json +1 -0
  114. package/data/craftbook-templates/co/codebase-ux-review/manifest.json +1 -0
  115. package/data/craftbook-templates/co/codemod-sweep/art.json +12 -0
  116. package/data/craftbook-templates/co/codemod-sweep/logo.webp +0 -0
  117. package/data/craftbook-templates/co/codemod-sweep/manifest.json +23 -0
  118. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/craftbook.json +441 -0
  119. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/test.json +253 -0
  120. package/data/craftbook-templates/co/cohort-analysis/manifest.json +1 -0
  121. package/data/craftbook-templates/co/company-research-brief/manifest.json +1 -0
  122. package/data/craftbook-templates/co/comparison-matrix/manifest.json +1 -0
  123. package/data/craftbook-templates/co/compat-check/manifest.json +1 -0
  124. package/data/craftbook-templates/co/competitive-analysis/manifest.json +1 -0
  125. package/data/craftbook-templates/co/comprehensive-codebase-review/art.json +12 -0
  126. package/data/craftbook-templates/co/comprehensive-codebase-review/logo.webp +0 -0
  127. package/data/craftbook-templates/co/comprehensive-codebase-review/manifest.json +27 -0
  128. package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.0/craftbook.json +337 -0
  129. package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.0/test.json +160 -0
  130. package/data/craftbook-templates/co/config-scaffold/manifest.json +1 -0
  131. package/data/craftbook-templates/co/content-accuracy-review/manifest.json +1 -0
  132. package/data/craftbook-templates/co/content-deck/manifest.json +1 -0
  133. package/data/craftbook-templates/co/contract-template/manifest.json +1 -0
  134. package/data/craftbook-templates/co/cookbook-layout/manifest.json +1 -0
  135. package/data/craftbook-templates/co/copy-review/manifest.json +1 -0
  136. package/data/craftbook-templates/co/corpus-email-digest/manifest.json +1 -0
  137. package/data/craftbook-templates/co/corpus-synthesis/manifest.json +1 -0
  138. package/data/craftbook-templates/co/cover-letter/manifest.json +1 -0
  139. package/data/craftbook-templates/cr/crm-update-batch/manifest.json +1 -0
  140. package/data/craftbook-templates/cr/cron-job/manifest.json +1 -0
  141. package/data/craftbook-templates/cr/crossword-forge/manifest.json +1 -0
  142. package/data/craftbook-templates/cs/csv-transformer/manifest.json +1 -0
  143. package/data/craftbook-templates/da/dashboard-spec/manifest.json +1 -0
  144. package/data/craftbook-templates/da/data-dictionary/manifest.json +1 -0
  145. package/data/craftbook-templates/da/data-export-migrate/manifest.json +1 -0
  146. package/data/craftbook-templates/da/data-join-merge/manifest.json +1 -0
  147. package/data/craftbook-templates/da/data-pipeline-etl/manifest.json +1 -0
  148. package/data/craftbook-templates/da/data-quality-audit/manifest.json +1 -0
  149. package/data/craftbook-templates/da/data-to-report/manifest.json +1 -0
  150. package/data/craftbook-templates/da/data-viz-page/manifest.json +1 -0
  151. package/data/craftbook-templates/da/dataset-clean/manifest.json +1 -0
  152. package/data/craftbook-templates/db/db-index-tuning/manifest.json +1 -0
  153. package/data/craftbook-templates/de/deep-security-review/manifest.json +1 -0
  154. package/data/craftbook-templates/de/dependency-audit/manifest.json +1 -0
  155. package/data/craftbook-templates/de/dependency-upgrade/art.json +12 -0
  156. package/data/craftbook-templates/de/dependency-upgrade/logo.webp +0 -0
  157. package/data/craftbook-templates/de/dependency-upgrade/manifest.json +23 -0
  158. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/craftbook.json +459 -0
  159. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/test.json +236 -0
  160. package/data/craftbook-templates/de/deploy-checklist/manifest.json +1 -0
  161. package/data/craftbook-templates/de/design-review/manifest.json +1 -0
  162. package/data/craftbook-templates/de/design-system-consultation/manifest.json +1 -0
  163. package/data/craftbook-templates/di/diagram-from-text/manifest.json +1 -0
  164. package/data/craftbook-templates/di/digest-from-feeds/manifest.json +1 -0
  165. package/data/craftbook-templates/do/doc-intake-pipeline/manifest.json +1 -0
  166. package/data/craftbook-templates/do/doc-rewrite/manifest.json +1 -0
  167. package/data/craftbook-templates/do/dockerize-app/manifest.json +1 -0
  168. package/data/craftbook-templates/do/docs-site/manifest.json +1 -0
  169. package/data/craftbook-templates/do/documentation-drift-review/manifest.json +1 -0
  170. package/data/craftbook-templates/dr/draft-social-post/manifest.json +1 -0
  171. package/data/craftbook-templates/dr/drive-wrap-up/manifest.json +1 -0
  172. package/data/craftbook-templates/du/due-diligence-brief/manifest.json +1 -0
  173. package/data/craftbook-templates/eb/ebook-compile/manifest.json +1 -0
  174. package/data/craftbook-templates/ed/edit-notes/manifest.json +1 -0
  175. package/data/craftbook-templates/em/email-sequence/manifest.json +1 -0
  176. package/data/craftbook-templates/em/email-template/manifest.json +1 -0
  177. package/data/craftbook-templates/en/engineering-retrospective/manifest.json +1 -0
  178. package/data/craftbook-templates/ep/episode-plan/manifest.json +1 -0
  179. package/data/craftbook-templates/es/escalation-playbook/manifest.json +1 -0
  180. package/data/craftbook-templates/ev/evidence-brief/manifest.json +1 -0
  181. package/data/craftbook-templates/ex/executive-level-review/manifest.json +1 -0
  182. package/data/craftbook-templates/ex/expense-categorize/manifest.json +1 -0
  183. package/data/craftbook-templates/fa/fact-check/manifest.json +1 -0
  184. package/data/craftbook-templates/fa/family-story-chapter/manifest.json +1 -0
  185. package/data/craftbook-templates/fa/faq-from-docs/manifest.json +1 -0
  186. package/data/craftbook-templates/fa/favicon-set/manifest.json +1 -0
  187. package/data/craftbook-templates/fe/feature-flag-release/manifest.json +6 -1
  188. package/data/craftbook-templates/fe/feature-flag-rollout/manifest.json +5 -1
  189. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/craftbook.json +203 -0
  190. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/test.json +165 -0
  191. package/data/craftbook-templates/fe/feedback-widget/manifest.json +1 -0
  192. package/data/craftbook-templates/fl/flaky-test-fix/art.json +12 -0
  193. package/data/craftbook-templates/fl/flaky-test-fix/logo.webp +0 -0
  194. package/data/craftbook-templates/fl/flaky-test-fix/manifest.json +24 -0
  195. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/craftbook.json +534 -0
  196. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/test.json +240 -0
  197. package/data/craftbook-templates/fo/folder-to-audio/manifest.json +1 -0
  198. package/data/craftbook-templates/fo/forecast-model/manifest.json +1 -0
  199. package/data/craftbook-templates/fo/form-fill-batch/manifest.json +1 -0
  200. package/data/craftbook-templates/fo/form-wizard/manifest.json +1 -0
  201. package/data/craftbook-templates/fr/freeze-scope/manifest.json +1 -0
  202. package/data/craftbook-templates/ga/game-with-screens/manifest.json +1 -0
  203. package/data/craftbook-templates/gl/glossary-build/manifest.json +1 -0
  204. package/data/craftbook-templates/gr/graphql-api/manifest.json +1 -0
  205. package/data/craftbook-templates/gr/grpc-service/manifest.json +1 -0
  206. package/data/craftbook-templates/ha/handbook-section/manifest.json +1 -0
  207. package/data/craftbook-templates/he/hero-image/manifest.json +1 -0
  208. package/data/craftbook-templates/ho/holiday-card-run/manifest.json +1 -0
  209. package/data/craftbook-templates/ho/hotfix-flow/manifest.json +6 -3
  210. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/craftbook.json +442 -0
  211. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/test.json +221 -0
  212. package/data/craftbook-templates/ht/html-arcade-game/manifest.json +1 -0
  213. package/data/craftbook-templates/ht/html-puzzle-game/manifest.json +1 -0
  214. package/data/craftbook-templates/ic/icon-pack/manifest.json +1 -0
  215. package/data/craftbook-templates/id/idea-office-hours/manifest.json +1 -0
  216. package/data/craftbook-templates/id/idle-clicker-game/manifest.json +1 -0
  217. package/data/craftbook-templates/im/image-batch-edit/manifest.json +1 -0
  218. package/data/craftbook-templates/im/image-dedup-cluster/manifest.json +1 -0
  219. package/data/craftbook-templates/im/image-palette-extract/manifest.json +1 -0
  220. package/data/craftbook-templates/im/image-seo-rename/manifest.json +1 -0
  221. package/data/craftbook-templates/im/image-set-index/manifest.json +1 -0
  222. package/data/craftbook-templates/in/inbox-triage/manifest.json +1 -0
  223. package/data/craftbook-templates/in/incident-comms-templates/manifest.json +1 -0
  224. package/data/craftbook-templates/in/incident-postmortem/manifest.json +1 -0
  225. package/data/craftbook-templates/in/insurance-inventory/manifest.json +1 -0
  226. package/data/craftbook-templates/in/interactive-quiz/manifest.json +1 -0
  227. package/data/craftbook-templates/in/investigate/manifest.json +5 -1
  228. package/data/craftbook-templates/in/investigate-root-cause/manifest.json +6 -1
  229. package/data/craftbook-templates/in/invitation-design/manifest.json +1 -0
  230. package/data/craftbook-templates/in/invoice-generator/manifest.json +1 -0
  231. package/data/craftbook-templates/in/invoice-run/manifest.json +1 -0
  232. package/data/craftbook-templates/index.json +1 -1
  233. package/data/craftbook-templates/it/item-intake/manifest.json +1 -0
  234. package/data/craftbook-templates/ju/juice-pass/manifest.json +1 -0
  235. package/data/craftbook-templates/kn/knowledge-base-article/manifest.json +1 -0
  236. package/data/craftbook-templates/kp/kpi-scorecard/manifest.json +1 -0
  237. package/data/craftbook-templates/la/landing-copy/manifest.json +1 -0
  238. package/data/craftbook-templates/la/landing-page/manifest.json +1 -0
  239. package/data/craftbook-templates/le/lead-enrichment/manifest.json +1 -0
  240. package/data/craftbook-templates/li/library-package/manifest.json +1 -0
  241. package/data/craftbook-templates/li/literature-review/manifest.json +1 -0
  242. package/data/craftbook-templates/li/live-browser-qa/manifest.json +6 -1
  243. package/data/craftbook-templates/lo/localize-content/manifest.json +1 -0
  244. package/data/craftbook-templates/lo/logo-set/manifest.json +1 -0
  245. package/data/craftbook-templates/ma/market-scan/manifest.json +1 -0
  246. package/data/craftbook-templates/me/meeting-minutes/manifest.json +1 -0
  247. package/data/craftbook-templates/me/meeting-notes-to-actions/manifest.json +1 -0
  248. package/data/craftbook-templates/me/meeting-prep-brief/manifest.json +1 -0
  249. package/data/craftbook-templates/me/meeting-summary-audio/manifest.json +1 -0
  250. package/data/craftbook-templates/me/memory-prompt-session/manifest.json +1 -0
  251. package/data/craftbook-templates/me/message-queue-consumer/manifest.json +1 -0
  252. package/data/craftbook-templates/mi/micro-game-jam/manifest.json +1 -0
  253. package/data/craftbook-templates/mo/mock-interview/manifest.json +1 -0
  254. package/data/craftbook-templates/mo/mod-scaffold/manifest.json +1 -0
  255. package/data/craftbook-templates/mo/monitor-and-alert/manifest.json +1 -0
  256. package/data/craftbook-templates/mo/month-close/manifest.json +1 -0
  257. package/data/craftbook-templates/mo/monthly-recording-review/manifest.json +1 -0
  258. package/data/craftbook-templates/mo/moodboard/manifest.json +1 -0
  259. package/data/craftbook-templates/mo/morning-brief/manifest.json +1 -0
  260. package/data/craftbook-templates/mo/morning-report/manifest.json +1 -0
  261. package/data/craftbook-templates/mu/music-metadata-tag/manifest.json +1 -0
  262. package/data/craftbook-templates/na/narrated-slideshow/manifest.json +1 -0
  263. package/data/craftbook-templates/ne/newsletter-issue/manifest.json +1 -0
  264. package/data/craftbook-templates/ni/nightly-fix-sweep/art.json +12 -0
  265. package/data/craftbook-templates/ni/nightly-fix-sweep/logo.webp +0 -0
  266. package/data/craftbook-templates/ni/nightly-fix-sweep/manifest.json +23 -0
  267. package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/craftbook.json +145 -0
  268. package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/test.json +121 -0
  269. package/data/craftbook-templates/no/notification-router/manifest.json +1 -0
  270. package/data/craftbook-templates/oc/ocr-extract/manifest.json +1 -0
  271. package/data/craftbook-templates/of/offer-compare/manifest.json +1 -0
  272. package/data/craftbook-templates/of/office-hours/manifest.json +1 -0
  273. package/data/craftbook-templates/on/onboarding-checklist/manifest.json +1 -0
  274. package/data/craftbook-templates/on/onboarding-flow/manifest.json +1 -0
  275. package/data/craftbook-templates/on/oncall-handoff/manifest.json +1 -0
  276. package/data/craftbook-templates/on/one-pager/manifest.json +1 -0
  277. package/data/craftbook-templates/op/ops-runbook/manifest.json +1 -0
  278. package/data/craftbook-templates/pa/page-spread/manifest.json +1 -0
  279. package/data/craftbook-templates/pa/parser-grammar/manifest.json +1 -0
  280. package/data/craftbook-templates/pe/perf-audit/manifest.json +1 -0
  281. package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/craftbook.json +195 -0
  282. package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/test.json +165 -0
  283. package/data/craftbook-templates/pe/perf-optimization/manifest.json +4 -3
  284. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/craftbook.json +511 -0
  285. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/test.json +236 -0
  286. package/data/craftbook-templates/pe/pest-diagnosis/manifest.json +1 -0
  287. package/data/craftbook-templates/ph/photo-cull/manifest.json +1 -0
  288. package/data/craftbook-templates/ph/physics-toy/manifest.json +1 -0
  289. package/data/craftbook-templates/pi/pitch-deck/manifest.json +1 -0
  290. package/data/craftbook-templates/pl/plan/manifest.json +1 -0
  291. package/data/craftbook-templates/pl/playtest-report/manifest.json +1 -0
  292. package/data/craftbook-templates/po/podcast-chaptering/manifest.json +1 -0
  293. package/data/craftbook-templates/po/portfolio-site/manifest.json +1 -0
  294. package/data/craftbook-templates/po/powerpoint-deck/manifest.json +1 -0
  295. package/data/craftbook-templates/pr/pr-security-review/manifest.json +1 -0
  296. package/data/craftbook-templates/pr/practice-exam/manifest.json +1 -0
  297. package/data/craftbook-templates/pr/practice-session/manifest.json +1 -0
  298. package/data/craftbook-templates/pr/pre-departure-countdown/manifest.json +1 -0
  299. package/data/craftbook-templates/pr/press-release/manifest.json +1 -0
  300. package/data/craftbook-templates/pr/price-tracker/manifest.json +1 -0
  301. package/data/craftbook-templates/pr/pricing-page/manifest.json +1 -0
  302. package/data/craftbook-templates/pr/product-descriptions/manifest.json +1 -0
  303. package/data/craftbook-templates/pr/proposal-sow/manifest.json +1 -0
  304. package/data/craftbook-templates/pu/pull-request-review/manifest.json +1 -0
  305. package/data/craftbook-templates/pu/puzzle-pack-layout/manifest.json +1 -0
  306. package/data/craftbook-templates/pw/pwa-offline/manifest.json +1 -0
  307. package/data/craftbook-templates/qa/qa/manifest.json +4 -1
  308. package/data/craftbook-templates/qu/quarterly-summary/manifest.json +1 -0
  309. package/data/craftbook-templates/re/reading-list/manifest.json +1 -0
  310. package/data/craftbook-templates/re/receipt-intake/manifest.json +1 -0
  311. package/data/craftbook-templates/re/receipt-ocr-ledger/manifest.json +1 -0
  312. package/data/craftbook-templates/re/reception-report/manifest.json +1 -0
  313. package/data/craftbook-templates/re/recipe-capture/manifest.json +1 -0
  314. package/data/craftbook-templates/re/record-a-relative/manifest.json +1 -0
  315. package/data/craftbook-templates/re/recurring-invoice-run/manifest.json +1 -0
  316. package/data/craftbook-templates/re/refactor-module/manifest.json +3 -2
  317. package/data/craftbook-templates/re/refactor-module/versions/1.0.4/craftbook.json +150 -0
  318. package/data/craftbook-templates/re/refactor-module/versions/1.0.4/test.json +95 -0
  319. package/data/craftbook-templates/re/refactor-module/versions/2.0.0/craftbook.json +509 -0
  320. package/data/craftbook-templates/re/refactor-module/versions/2.0.0/test.json +242 -0
  321. package/data/craftbook-templates/re/regex-builder/manifest.json +1 -0
  322. package/data/craftbook-templates/re/release-announcement/manifest.json +1 -0
  323. package/data/craftbook-templates/re/release-artifact-sanity-check/manifest.json +1 -0
  324. package/data/craftbook-templates/re/release-notes/manifest.json +6 -1
  325. package/data/craftbook-templates/re/release-notes/versions/1.0.3/craftbook.json +220 -0
  326. package/data/craftbook-templates/re/release-notes/versions/1.0.3/test.json +114 -0
  327. package/data/craftbook-templates/re/release-pipeline-ci/manifest.json +6 -1
  328. package/data/craftbook-templates/re/release-readiness-review/manifest.json +1 -0
  329. package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/craftbook.json +192 -0
  330. package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/test.json +113 -0
  331. package/data/craftbook-templates/re/reliability-review/manifest.json +1 -0
  332. package/data/craftbook-templates/re/report-pdf/manifest.json +1 -0
  333. package/data/craftbook-templates/re/research-report/manifest.json +1 -0
  334. package/data/craftbook-templates/re/research-to-document/manifest.json +1 -0
  335. package/data/craftbook-templates/re/rest-api/manifest.json +1 -0
  336. package/data/craftbook-templates/re/resume-cv/manifest.json +1 -0
  337. package/data/craftbook-templates/re/reviewer-loop/manifest.json +1 -0
  338. package/data/craftbook-templates/ro/rollback-plan/manifest.json +1 -0
  339. package/data/craftbook-templates/ro/root-cause-investigation/manifest.json +8 -1
  340. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/craftbook.json +433 -0
  341. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/test.json +157 -0
  342. package/data/craftbook-templates/ro/rough-cut-assembly/manifest.json +1 -0
  343. package/data/craftbook-templates/ru/runbook/manifest.json +1 -0
  344. package/data/craftbook-templates/sc/schema-migration/manifest.json +5 -4
  345. package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/craftbook.json +459 -0
  346. package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/test.json +226 -0
  347. package/data/craftbook-templates/sc/scrape-to-structured/manifest.json +1 -0
  348. package/data/craftbook-templates/sc/script-automation/manifest.json +1 -0
  349. package/data/craftbook-templates/sd/sdk-wrapper/manifest.json +1 -0
  350. package/data/craftbook-templates/se/seasonal-maintenance-sweep/manifest.json +1 -0
  351. package/data/craftbook-templates/se/security-architecture-review/manifest.json +1 -0
  352. package/data/craftbook-templates/se/seo-meta-pack/manifest.json +1 -0
  353. package/data/craftbook-templates/sh/ship/manifest.json +1 -0
  354. package/data/craftbook-templates/so/social-digest/manifest.json +1 -0
  355. package/data/craftbook-templates/so/social-thread/manifest.json +1 -0
  356. package/data/craftbook-templates/so/source-quality-audit/manifest.json +1 -0
  357. package/data/craftbook-templates/sp/spa-dashboard/manifest.json +1 -0
  358. package/data/craftbook-templates/sp/spec-authoring/manifest.json +1 -0
  359. package/data/craftbook-templates/sp/spec-doc/manifest.json +1 -0
  360. package/data/craftbook-templates/sp/spreadsheet-model/manifest.json +1 -0
  361. package/data/craftbook-templates/sp/sprite-sheet/manifest.json +1 -0
  362. package/data/craftbook-templates/sq/sql-analysis/manifest.json +1 -0
  363. package/data/craftbook-templates/st/standup-summary/manifest.json +1 -0
  364. package/data/craftbook-templates/st/state-machine/manifest.json +1 -0
  365. package/data/craftbook-templates/st/status-report/manifest.json +1 -0
  366. package/data/craftbook-templates/su/subscription-audit/manifest.json +1 -0
  367. package/data/craftbook-templates/su/subtitle-generator/manifest.json +1 -0
  368. package/data/craftbook-templates/su/summarize-long/manifest.json +1 -0
  369. package/data/craftbook-templates/su/survey-analysis/manifest.json +1 -0
  370. package/data/craftbook-templates/sv/svg-animation/manifest.json +1 -0
  371. package/data/craftbook-templates/ta/tailor-resume/manifest.json +1 -0
  372. package/data/craftbook-templates/te/technical-documentation/manifest.json +1 -0
  373. package/data/craftbook-templates/te/test-coverage-review/manifest.json +1 -0
  374. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/craftbook.json +195 -0
  375. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/test.json +116 -0
  376. package/data/craftbook-templates/te/test-suite-backfill/manifest.json +2 -2
  377. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/craftbook.json +428 -0
  378. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/test.json +198 -0
  379. package/data/craftbook-templates/th/thank-you-batch/manifest.json +1 -0
  380. package/data/craftbook-templates/th/thank-you-sweep/manifest.json +1 -0
  381. package/data/craftbook-templates/th/threat-model/manifest.json +1 -0
  382. package/data/craftbook-templates/th/thumbnail-generator/manifest.json +1 -0
  383. package/data/craftbook-templates/ti/tileset-batch/manifest.json +1 -0
  384. package/data/craftbook-templates/to/tone-rewrite/manifest.json +1 -0
  385. package/data/craftbook-templates/to/topic-explainer/manifest.json +1 -0
  386. package/data/craftbook-templates/tr/transcribe-and-shownotes/manifest.json +1 -0
  387. package/data/craftbook-templates/tr/transcribe-audio/manifest.json +1 -0
  388. package/data/craftbook-templates/tr/transcribe-index/manifest.json +1 -0
  389. package/data/craftbook-templates/tr/translate-content/manifest.json +1 -0
  390. package/data/craftbook-templates/ty/type-safety-pass/manifest.json +4 -3
  391. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/craftbook.json +428 -0
  392. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/test.json +222 -0
  393. package/data/craftbook-templates/ux/ux-update/art.json +12 -0
  394. package/data/craftbook-templates/ux/ux-update/logo.webp +0 -0
  395. package/data/craftbook-templates/ux/ux-update/manifest.json +22 -0
  396. package/data/craftbook-templates/ux/ux-update/versions/1.0.0/craftbook.json +439 -0
  397. package/data/craftbook-templates/ux/ux-update/versions/1.0.0/test.json +207 -0
  398. package/data/craftbook-templates/ve/version-bump/manifest.json +1 -0
  399. package/data/craftbook-templates/ve/version-bump/versions/1.1.0/craftbook.json +206 -0
  400. package/data/craftbook-templates/ve/version-bump/versions/1.1.0/test.json +95 -0
  401. package/data/craftbook-templates/vi/video-storyboard/manifest.json +1 -0
  402. package/data/craftbook-templates/vi/visit-prep/manifest.json +1 -0
  403. package/data/craftbook-templates/vo/voiceover-script/manifest.json +1 -0
  404. package/data/craftbook-templates/we/weak-spot-drill/manifest.json +1 -0
  405. package/data/craftbook-templates/we/web-app-crud/manifest.json +1 -0
  406. package/data/craftbook-templates/we/web-component/manifest.json +1 -0
  407. package/data/craftbook-templates/we/webhook-handler/manifest.json +1 -0
  408. package/data/craftbook-templates/we/week-plan/manifest.json +1 -0
  409. package/data/craftbook-templates/we/weekly-menu-plan/manifest.json +1 -0
  410. package/data/craftbook-templates/we/weekly-pipeline-review/manifest.json +1 -0
  411. package/data/craftbook-templates/we/weekly-review/manifest.json +1 -0
  412. package/data/craftbook-templates/we/weekly-walkthrough/manifest.json +1 -0
  413. package/data/craftbook-templates/wh/whitepaper/manifest.json +1 -0
  414. package/data/craftbook-templates/ye/year-in-review/manifest.json +1 -0
  415. package/data/craftbook-templates/yo/youtube-chapters-seo/manifest.json +1 -0
  416. package/data/gezel-templates/bo/boekwachter/versions/1.1.0/about.md +29 -0
  417. package/data/gezel-templates/bo/boekwachter/versions/1.1.0/manifest.json +16 -0
  418. package/data/gezel-templates/bu/builder/versions/1.5.0/about.md +34 -0
  419. package/data/gezel-templates/bu/builder/versions/1.5.0/manifest.json +16 -0
  420. package/data/gezel-templates/de/developer/versions/1.5.0/about.md +34 -0
  421. package/data/gezel-templates/de/developer/versions/1.5.0/manifest.json +21 -0
  422. package/data/gezel-templates/index.json +1 -1
  423. package/data/gezel-templates/re/reviewer/versions/1.4.0/about.md +49 -0
  424. package/data/gezel-templates/re/reviewer/versions/1.4.0/manifest.json +21 -0
  425. package/data/project-types/index.json +1 -1
  426. package/data/project-types/so/software-project/manifest.json +20 -0
  427. package/data/project-types/so/software-project/versions/1.0.0/about.md +3 -0
  428. package/data/project-types/so/software-project/versions/1.0.0/manifest.json +41 -0
  429. package/data/project-types/so/software-project/versions/1.0.0/mission.md +4 -0
  430. package/package.json +1 -1
  431. package/schemas/craftbook-doc.schema.json +248 -0
  432. package/schemas/craftbook-template-identity.schema.json +21 -0
  433. package/schemas/craftbook-template-version.schema.json +248 -0
  434. package/schemas/craftbook-test.schema.json +210 -0
@@ -0,0 +1,221 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Hotfix with minimal blast radius and a rollback path",
4
+ "objective": "The craftbook drives an urgent fix of a seeded null-guard crash in a receipts formatter: reproduction with the least machinery, the smallest change at the real defect site, honest validation with a rollback path, and an enforced review — verified mechanically, including a mutant re-seed proving the patch engaged the real site.",
5
+ "tags": [
6
+ "code",
7
+ "bug-fix",
8
+ "hotfix",
9
+ "tactical-fleet"
10
+ ],
11
+ "prompt": "Use the Hotfix Flow craftbook for this emergency: the nightly receipts export is crashing in production on orders without a gift note. The incident report is in source/incident.md. Reproduce it with the least machinery that shows it, patch minimally at the real defect site, and leave a rollback path.",
12
+ "setup": {
13
+ "projectName": "Receiptline",
14
+ "about": "A tiny order-receipt formatting module behind a nightly export. No test suite - the export script is the only runnable surface.",
15
+ "files": [
16
+ {
17
+ "path": "package.json",
18
+ "content": "{\n \"name\": \"receiptline\",\n \"private\": true,\n \"version\": \"1.0.0\",\n \"type\": \"module\"\n}\n",
19
+ "modelInput": false
20
+ },
21
+ {
22
+ "path": "src/format-order.js",
23
+ "content": "export function formatOrder(order) {\n const lines = [];\n lines.push('Order ' + order.id + ' for ' + order.customer);\n for (const item of order.items) {\n lines.push(' ' + item.qty + ' x ' + item.name + ' @ ' + money(item.unitPrice));\n }\n lines.push('Total: ' + money(orderTotal(order)));\n lines.push('Gift note: ' + order.giftNote.trim());\n return lines.join('\\n');\n}\n\nexport function orderTotal(order) {\n let total = 0;\n for (const item of order.items) {\n total += item.qty * item.unitPrice;\n }\n return Math.round(total * 100) / 100;\n}\n\nfunction money(value) {\n return value.toFixed(2);\n}\n"
24
+ },
25
+ {
26
+ "path": "data/orders.json",
27
+ "content": "[\n {\n \"id\": \"A-1041\",\n \"customer\": \"Ana Torres\",\n \"items\": [{ \"qty\": 1, \"name\": \"Ceramic Vase\", \"unitPrice\": 30 }],\n \"giftNote\": \" Happy birthday, Ana! \"\n },\n {\n \"id\": \"A-1042\",\n \"customer\": \"Ben Ito\",\n \"items\": [{ \"qty\": 2, \"name\": \"Stone Mug\", \"unitPrice\": 9.5 }]\n },\n {\n \"id\": \"A-1043\",\n \"customer\": \"Priya Shah\",\n \"items\": [\n { \"qty\": 3, \"name\": \"Linen Napkin\", \"unitPrice\": 4 },\n { \"qty\": 1, \"name\": \"Oak Tray\", \"unitPrice\": 18 }\n ]\n }\n]\n",
28
+ "modelInput": false
29
+ },
30
+ {
31
+ "path": "scripts/print-receipts.mjs",
32
+ "content": "import { readFileSync } from 'node:fs';\nimport { formatOrder } from '../src/format-order.js';\n\nconst orders = JSON.parse(\n readFileSync(new URL('../data/orders.json', import.meta.url), 'utf8'),\n);\nfor (const order of orders) {\n console.log(formatOrder(order));\n console.log('---');\n}\n",
33
+ "modelInput": false
34
+ },
35
+ {
36
+ "path": "source/incident.md",
37
+ "content": "# Incident: receipts export crashing\n\n02:14 - the nightly receipts export died partway through and retail has no morning receipts. Support traced it to orders without a gift note:\n\n TypeError: Cannot read properties of undefined (reading 'trim')\n at formatOrder (src/format-order.js)\n\n`node scripts/print-receipts.mjs` reproduces it: the first order (which has a gift note) prints fine, then the export falls over on the second order in `data/orders.json`.\n\nWhat must hold once this is fixed:\n\n- Orders with a gift note keep printing the trimmed note line.\n- Orders without one print a normal receipt with NO gift-note line.\n- Item lines and totals unchanged.\n\nWe need the smallest safe patch now. The proper cleanup of the formatter can wait for daylight - write it down instead of doing it.\n"
38
+ },
39
+ {
40
+ "path": "tests/verify-hotfix.mjs",
41
+ "content": "import assert from 'node:assert/strict';\nimport { execFileSync } from 'node:child_process';\nimport { cpSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { formatOrder, orderTotal } from '../src/format-order.js';\n\nconst root = process.cwd();\n\n// 1) The crash case is fixed: an order without a gift note formats cleanly.\nconst plain = {\n id: 'A-1042',\n customer: 'Ben Ito',\n items: [{ qty: 2, name: 'Stone Mug', unitPrice: 9.5 }],\n};\nconst plainReceipt = formatOrder(plain);\nassert.ok(!plainReceipt.includes('undefined'), 'a receipt must not leak \"undefined\"');\nassert.ok(!/Gift note:/.test(plainReceipt), 'an order without a gift note must not print a gift-note line');\nassert.ok(plainReceipt.includes('Total: 19.00'), 'totals must survive the patch');\nconsole.log('HOTFIX_ORACLE crash case fixed');\n\n// 2) Neighborhood intact: gift notes still print trimmed, totals still add up.\nconst gifted = {\n id: 'A-1041',\n customer: 'Ana Torres',\n items: [{ qty: 1, name: 'Ceramic Vase', unitPrice: 30 }],\n giftNote: ' Happy birthday, Ana! ',\n};\nconst giftedReceipt = formatOrder(gifted);\nassert.ok(giftedReceipt.includes('Gift note: Happy birthday, Ana!'), 'gift notes must still print, trimmed');\nconst multi = {\n id: 'A-1043',\n customer: 'Priya Shah',\n items: [\n { qty: 3, name: 'Linen Napkin', unitPrice: 4 },\n { qty: 1, name: 'Oak Tray', unitPrice: 18 },\n ],\n};\nassert.equal(orderTotal(multi), 30, 'orderTotal must be untouched');\nconsole.log('HOTFIX_ORACLE neighborhood intact');\n\n// 3) The export the incident names runs clean end to end.\nconst exportOut = execFileSync(process.execPath, ['scripts/print-receipts.mjs'], {\n cwd: root,\n stdio: 'pipe',\n timeout: 30000,\n}).toString();\nassert.ok(exportOut.includes('A-1043'), 'the export must reach the last order');\nconsole.log('HOTFIX_ORACLE export green');\n\n// 4) Re-seed the original defect into a mutant tree: the crash must come\n// back, proving the patch engaged the real site rather than the callers\n// or the data (both of which are pinned fixtures anyway).\nconst ORIGINAL = `export function formatOrder(order) {\n const lines = [];\n lines.push('Order ' + order.id + ' for ' + order.customer);\n for (const item of order.items) {\n lines.push(' ' + item.qty + ' x ' + item.name + ' @ ' + money(item.unitPrice));\n }\n lines.push('Total: ' + money(orderTotal(order)));\n lines.push('Gift note: ' + order.giftNote.trim());\n return lines.join('\\\\n');\n}\n\nexport function orderTotal(order) {\n let total = 0;\n for (const item of order.items) {\n total += item.qty * item.unitPrice;\n }\n return Math.round(total * 100) / 100;\n}\n\nfunction money(value) {\n return value.toFixed(2);\n}\n`;\nconst mutantRoot = join(root, '.oracle-mutant');\nrmSync(mutantRoot, { recursive: true, force: true });\nmkdirSync(join(mutantRoot, 'src'), { recursive: true });\ncpSync(join(root, 'scripts'), join(mutantRoot, 'scripts'), { recursive: true });\ncpSync(join(root, 'data'), join(mutantRoot, 'data'), { recursive: true });\ncpSync(join(root, 'package.json'), join(mutantRoot, 'package.json'));\nwriteFileSync(join(mutantRoot, 'src', 'format-order.js'), ORIGINAL);\nlet mutantStatus = 0;\ntry {\n execFileSync(process.execPath, ['scripts/print-receipts.mjs'], {\n cwd: mutantRoot,\n stdio: 'pipe',\n timeout: 30000,\n });\n} catch (err) {\n mutantStatus = typeof err.status === 'number' ? err.status : 1;\n}\nassert.notEqual(mutantStatus, 0, 're-seeding the original defect must restore the crash - the patch did not engage the real site');\nconsole.log('HOTFIX_ORACLE mutant caught');\nconsole.log('HOTFIX_ORACLE done');\n",
42
+ "surface": "harness"
43
+ }
44
+ ],
45
+ "craftbookParams": {
46
+ "workPath": "tasks/eval",
47
+ "scope": "The nightly receipts export crashes on orders without a gift note; see source/incident.md. Smallest safe patch now - the proper cleanup is deferred, not attempted."
48
+ }
49
+ },
50
+ "mocks": [],
51
+ "success": {
52
+ "summary": "The seeded null-guard crash is fixed at the real site with minimal blast radius, the export runs clean, a mutant re-seed restores the crash, and the fleet artifacts carry honest evidence, a Follow-up debt record, and a runnable rollback.",
53
+ "deliverables": [
54
+ {
55
+ "path": "tasks/eval/repro.md",
56
+ "kind": "markdown-notes",
57
+ "artifact": true,
58
+ "minBytes": 500,
59
+ "checks": [
60
+ {
61
+ "kind": "contains",
62
+ "file": "tasks/eval/repro.md",
63
+ "pattern": "^##\\s+Symptom[\\s\\S]*^##\\s+Repro command[\\s\\S]*^##\\s+Expected[\\s\\S]*^##\\s+Actual[\\s\\S]*^##\\s+Evidence",
64
+ "flags": "im",
65
+ "label": "reproduction sections in order"
66
+ },
67
+ {
68
+ "kind": "citationsResolve",
69
+ "file": "tasks/eval/repro.md",
70
+ "minCitations": 2,
71
+ "artifact": true
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "path": "tasks/eval/fix-notes.md",
77
+ "kind": "markdown-notes",
78
+ "artifact": true,
79
+ "minBytes": 700,
80
+ "checks": [
81
+ {
82
+ "kind": "contains",
83
+ "file": "tasks/eval/fix-notes.md",
84
+ "pattern": "^##\\s+Problem[\\s\\S]*^##\\s+Change[\\s\\S]*^##\\s+Files touched[\\s\\S]*^##\\s+Risk[\\s\\S]*^##\\s+How to verify[\\s\\S]*^##\\s+Follow-up",
85
+ "flags": "im",
86
+ "label": "fix-notes sections in order, Follow-up included"
87
+ },
88
+ {
89
+ "kind": "contains",
90
+ "file": "tasks/eval/fix-notes.md",
91
+ "pattern": "src/format-order\\.js",
92
+ "label": "names the real defect site"
93
+ },
94
+ {
95
+ "kind": "citationsResolve",
96
+ "file": "tasks/eval/fix-notes.md",
97
+ "minCitations": 2,
98
+ "artifact": true
99
+ }
100
+ ]
101
+ },
102
+ {
103
+ "path": "tasks/eval/validation.md",
104
+ "kind": "markdown-notes",
105
+ "artifact": true,
106
+ "minBytes": 400,
107
+ "checks": [
108
+ {
109
+ "kind": "contains",
110
+ "file": "tasks/eval/validation.md",
111
+ "pattern": "^##\\s+Repro re-run[\\s\\S]*^##\\s+Result[\\s\\S]*^##\\s+Rollback",
112
+ "flags": "im",
113
+ "label": "validation sections in order, Rollback included"
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "path": "tasks/eval/review.md",
119
+ "kind": "markdown-report",
120
+ "artifact": true,
121
+ "minBytes": 400,
122
+ "checks": [
123
+ {
124
+ "kind": "contains",
125
+ "file": "tasks/eval/review.md",
126
+ "pattern": "Verdict:\\s*(?:PASS|REVISE)",
127
+ "flags": "i",
128
+ "label": "explicit reviewer verdict"
129
+ }
130
+ ]
131
+ }
132
+ ],
133
+ "checks": [
134
+ {
135
+ "kind": "notContains",
136
+ "file": "src/format-order.js",
137
+ "pattern": "\\btry\\s*\\{|\\bcatch\\s*\\(",
138
+ "label": "the crash is fixed at the site, not swallowed with try/catch"
139
+ },
140
+ {
141
+ "kind": "sourceParses",
142
+ "file": "src/format-order.js"
143
+ },
144
+ {
145
+ "kind": "nodeRuns",
146
+ "file": "scripts/print-receipts.mjs",
147
+ "timeoutMs": 30000
148
+ },
149
+ {
150
+ "kind": "nodeScriptPasses",
151
+ "script": "tests/verify-hotfix.mjs",
152
+ "timeoutMs": 60000,
153
+ "requiredOutput": [
154
+ {
155
+ "pattern": "HOTFIX_ORACLE crash case fixed",
156
+ "label": "the null-guard crash is gone"
157
+ },
158
+ {
159
+ "pattern": "HOTFIX_ORACLE neighborhood intact",
160
+ "label": "gift notes and totals still behave"
161
+ },
162
+ {
163
+ "pattern": "HOTFIX_ORACLE export green",
164
+ "label": "the incident's export runs end to end"
165
+ },
166
+ {
167
+ "pattern": "HOTFIX_ORACLE mutant caught",
168
+ "label": "re-seeding the defect restores the crash"
169
+ }
170
+ ]
171
+ }
172
+ ],
173
+ "taskNotes": {
174
+ "minBytes": 120,
175
+ "checks": [
176
+ {
177
+ "kind": "contains",
178
+ "file": "task-notes.md",
179
+ "pattern": "\\bDONE\\b[\\s\\S]*validation\\.md",
180
+ "flags": "i",
181
+ "label": "DONE note names the validation deliverable"
182
+ }
183
+ ]
184
+ },
185
+ "taskGraph": {
186
+ "requireCraftbookTask": true,
187
+ "requireTerminalStep": true
188
+ },
189
+ "unchangedFixtures": [
190
+ "source/incident.md",
191
+ "package.json",
192
+ "data/orders.json",
193
+ "scripts/print-receipts.mjs"
194
+ ]
195
+ },
196
+ "rubric": {
197
+ "artifact": {
198
+ "path": "tasks/eval/fix-notes.md",
199
+ "kind": "markdown"
200
+ },
201
+ "axes": [
202
+ {
203
+ "name": "Minimal blast radius",
204
+ "description": "The change is the smallest that stops the failure at the real defect site - no refactor, rename, or cleanup rode along with the emergency patch."
205
+ },
206
+ {
207
+ "name": "Honest evidence under pressure",
208
+ "description": "Reproduction and validation quote real observed behavior, and anything that could not actually be run is labeled unverified rather than claimed."
209
+ },
210
+ {
211
+ "name": "Deferred debt discipline",
212
+ "description": "Follow-up records the proper fix and the debt the patch leaves (with a backport note where relevant) instead of attempting a deeper repair mid-incident, and Rollback is a concrete, runnable path."
213
+ }
214
+ ]
215
+ },
216
+ "qualityFocus": [
217
+ "minimal-diff discipline",
218
+ "honest verification",
219
+ "runnable rollback"
220
+ ]
221
+ }
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "html-arcade-game",
5
5
  "role": "project-starter",
6
+ "category": "code-build",
6
7
  "name": "HTML Arcade Game",
7
8
  "description": "Build a playable single-file HTML/canvas arcade game (shooter, runner, dodger, etc.). Splits design into game-mechanics and visual look, builds, then evaluates against a playability bar and loops until it is actually fun and bug-free.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "html-puzzle-game",
5
5
  "role": "project-starter",
6
+ "category": "code-build",
6
7
  "name": "HTML Puzzle Game",
7
8
  "description": "Build a single-file HTML logic or puzzle game such as a match-3, sliding tile, Sokoban, 2048, minesweeper, or sudoku. Locks the rule system, the solve/fail condition, and the win detection first, then a clean grid visual language, then implements deterministic board state with valid-move enforcement. Puzzle games live or die on correct rules and reliable win detection, so the design phase pins the exact legal-move and victory logic before any rendering — the ordering that prevents a small model from shipping a grid that looks right but never registers a win.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "icon-pack",
5
5
  "role": "general",
6
+ "category": "design",
6
7
  "name": "Coherent Icon Pack",
7
8
  "description": "Produce a coherent set of UI icons that look like they belong to one family — consistent grid, stroke weight, corner radius, optical sizing, and metaphor language — from a named list of concepts. Lock the style system (grid, stroke, padding, keyline shapes) BEFORE drawing any icon, because icon-set quality is almost entirely about consistency: a pack of individually-nice icons with mismatched strokes looks broken. Then generate every icon to the system and assemble a previewable sheet. Covers icon sets, UI icons, SVG icon libraries, glyph packs, and design systems.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "idea-office-hours",
5
5
  "role": "general",
6
+ "category": "practice",
6
7
  "name": "Idea Office Hours",
7
8
  "description": "Pressure-test a product idea with forcing questions before jumping to solutions, then capture the decision in a short design doc — a structured 'office hours' diagnostic.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "idle-clicker-game",
5
5
  "role": "project-starter",
6
+ "category": "code-build",
6
7
  "name": "Idle / Incremental Game",
7
8
  "description": "Build a single-file idle or incremental clicker game such as a cookie/factory clicker with upgrades, generators, and exponential growth. Designs the resource economy — base click yield, generator costs, cost-scaling factor, and per-second production — first, then the layout, then implements a tick loop with persistent-feeling progression. Idle games are an economy problem before a UI problem: if costs and yields are not tuned the game is boring in 10 seconds or unwinnable, so the economy phase locks the exact numbers and growth curve before any rendering.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "image-batch-edit",
5
5
  "role": "general",
6
+ "category": "media",
6
7
  "name": "Batch Image Transform",
7
8
  "description": "Apply a consistent transform across a whole folder of images — resize, crop to a ratio, convert format, compress, watermark, or recolor — and verify every file came out correct. Scope the exact transform and a verification rule FIRST (target dimensions, format, quality, naming) so the batch is deterministic and reproducible, then process every file and prove the output count, dimensions, and format match the spec. Covers bulk image processing, resizing, format conversion, compression, watermarking, and folder-wide edits.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "image-dedup-cluster",
5
5
  "role": "general",
6
+ "category": "media",
6
7
  "name": "Image Dedup & Cluster",
7
8
  "description": "Find and group near-duplicate images across a folder — exact dupes, resized/re-encoded copies, and visually similar shots from the same burst — using perceptual hashing or visual similarity, then report clusters with a recommended keeper per group. Lock the similarity definition and thresholds FIRST (what counts as a duplicate vs merely similar) because the whole result hinges on that line; then analyze pairwise, cluster, and produce a human-reviewable report. Covers deduplication, near-duplicate detection, perceptual hashing, image clustering, burst grouping, and library cleanup.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "image-palette-extract",
5
5
  "role": "general",
6
+ "category": "design",
6
7
  "name": "Image Palette Extraction",
7
8
  "description": "Extract a usable color palette from an image or a set of images — the dominant and accent colors as hex/RGB with proportions — and emit it as design tokens (CSS variables / JSON) plus a swatch preview, so a brand or theme can be built from a reference photo. Lock FIRST how many colors, the color space and clustering method, and accessibility constraints (e.g. text/background pairs must meet a contrast ratio) because a raw dominant-color dump is rarely directly usable as a theme; then extract, name, and present the palette. Covers color extraction, palette generation, design tokens, theme-from-image, dominant colors, and brand color sampling.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "image-seo-rename",
5
5
  "role": "general",
6
+ "category": "media",
6
7
  "name": "Image SEO Rename & Tag",
7
8
  "description": "Rename and tag a folder of images for SEO and findability — descriptive, hyphenated, keyword-rich filenames plus consistent metadata (title, caption, keyword tags) — driven by what each image actually depicts, while preserving a mapping back to the originals so links don't break silently. Scope FIRST the naming convention, keyword strategy, and collision/mapping rules, because bulk-renaming without a plan creates duplicate-name clashes and broken references; then process the folder and emit the rename map. Covers image SEO, filename optimization, descriptive renaming, alt/metadata tagging, and asset findability.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "image-set-index",
5
5
  "role": "general",
6
+ "category": "media",
6
7
  "name": "Index & Describe an Image Set",
7
8
  "description": "Given a folder of images, produce a structured index that describes each one (caption, tags, notable content) in a consistent schema, then validates coverage and consistency. For cataloguing, search, or alt-text generation over an image collection.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "inbox-triage",
5
5
  "role": "general",
6
+ "category": "business",
6
7
  "name": "Inbox Triage & Reply Drafts",
7
8
  "description": "Triage a batch of incoming emails or messages into priority buckets and draft replies for the ones that need them. Locks the triage rules and bucket taxonomy FIRST (urgent / needs-reply / FYI / archive, plus the criteria for each and a reply policy), then classifies every message deterministically against those rules, then a copywriter drafts on-voice replies only for the messages flagged needs-reply. The rules-before-triage ordering is what stops a small model from inventing ad-hoc categories and gives the reviewer something to grade. Use for inbox zero, support-queue triage, email sorting, message prioritization, and auto-drafting responses.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "incident-comms-templates",
5
5
  "role": "general",
6
+ "category": "code-ops",
6
7
  "name": "Incident Communication Templates",
7
8
  "description": "Author a reusable set of incident communication templates: status-page posts and stakeholder update messages for each phase of an incident (Investigating, Identified, Monitoring, Resolved) across severities, with fill-in variables and a cadence guide. Scopes the audiences, phases, and tone rules FIRST (who reads each channel, the phase ladder, what may and may not be said, the variable set), then a copywriter writes the on-brand templates with bracketed placeholders, then a reviewer checks coverage, tone, and that no template over-promises or leaks blame. Scoping audiences and phases before drafting is what produces calm, honest, copy-paste-ready updates instead of ad-hoc panic posts. Use for incident comms, status page templates, customer incident updates, outage communication, and stakeholder messaging during an incident.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "incident-postmortem",
5
5
  "role": "maintenance-review",
6
+ "category": "code-ops",
6
7
  "name": "Incident Postmortem",
7
8
  "description": "Write a blameless incident postmortem after a production outage or degradation — a structured, factual document covering the impact, a precise timeline (detection → diagnosis → mitigation → resolution), the root cause and contributing factors via a five-whys analysis, what went well and what went poorly, and concrete, owned, dated action items that prevent recurrence. A researcher assembles the verified timeline and evidence from logs/alerts/chat, a copywriter writes the blameless narrative and root-cause analysis, and a reviewer checks the timeline is accurate, the analysis reaches a true root cause, and every action item is specific and owned. Use this for outage retrospectives, severity-incident reviews, and any 'what happened and how do we prevent it' writeup.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "insurance-inventory",
5
5
  "role": "general",
6
+ "category": "business",
6
7
  "name": "Insurance Inventory",
7
8
  "description": "Compile the inventory nobody has until the day they desperately need it: every cataloged item with its value, photo reference, and acquisition info in one document, the gaps (no photo, no value) named instead of papered over, and the total stated with its basis. Locks the completeness criteria FIRST, then compiles the full table, then writes the cover note — the quiet payoff of keeping the catalog honest. Use for insurance inventories, 'our agent wants a full inventory', documenting the collection for coverage, and preparing a collection record for a claim.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "interactive-quiz",
5
5
  "role": "project-starter",
6
+ "category": "personal",
6
7
  "name": "Interactive Quiz Widget",
7
8
  "description": "Build a single-file interactive quiz or assessment — multiple-choice, true/false, or a scored personality quiz — that asks questions one at a time, tracks the score, gives feedback, and shows a results screen. Authors the question bank, answer keys, and scoring logic first, designs the question and results UI, then implements stateful question flow with correct scoring. Quizzes break when the score is miscounted or the results screen never appears, so the content phase locks the answer key and the score-to-result mapping before any markup.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "investigate",
5
5
  "role": "maintenance-review",
6
+ "category": "code-quality",
6
7
  "name": "Investigate",
7
8
  "description": "Systematic root-cause debugging procedure. Iron Law: no fixes without investigation. Gathers symptoms, reproduces, traces, finds root cause, saves the learning.",
8
9
  "tags": [
@@ -14,6 +15,9 @@
14
15
  },
15
16
  "logo": "logo.webp",
16
17
  "license": "MIT",
17
- "yankedVersions": [],
18
+ "yankedVersions": [
19
+ "1.0.0",
20
+ "1.1.0"
21
+ ],
18
22
  "workflow": "investigation"
19
23
  }
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "investigate-root-cause",
5
5
  "role": "maintenance-review",
6
+ "category": "code-quality",
6
7
  "name": "Root-Cause Investigation",
7
8
  "description": "Debug a defect or production incident down to its true root cause and document the diagnosis with evidence, instead of patching the first symptom. First reproduces the failure reliably and locks what 'understood' means (a confirmed repro, the failing assertion, the exact trigger condition), then narrows the cause by forming and testing hypotheses, bisecting, reading stack traces and logs, and tracing the data path until one hypothesis is proven, then writes a root-cause report with the evidence chain, the smallest fix, and how to prevent recurrence. Use this for debugging, root-cause analysis, investigating a bug or flaky test, diagnosing an incident, or figuring out why something breaks — it produces a proven cause backed by evidence, not a guess.",
8
9
  "tags": [
@@ -18,6 +19,10 @@
18
19
  },
19
20
  "logo": "logo.webp",
20
21
  "license": "MIT",
21
- "yankedVersions": [],
22
+ "yankedVersions": [
23
+ "1.0.0",
24
+ "1.0.1",
25
+ "1.0.2"
26
+ ],
22
27
  "workflow": "build-loop"
23
28
  }
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "invitation-design",
5
5
  "role": "general",
6
+ "category": "personal",
6
7
  "name": "Design the Invitations",
7
8
  "description": "Produce the invitation the day deserves and get the facts beyond doubt: the date, time, venue, and RSVP instructions checked letter-for-letter against the event record — because a beautiful card with the wrong date is the classic disaster. Locks the fact checklist and the look brief FIRST, then designs the print-ready invitation, then proofs every fact against the record before anything reaches a printer. Use for party invitations, designing the invites, birthday and anniversary invitations, and 'make the invitation printable'.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "invoice-generator",
5
5
  "role": "general",
6
+ "category": "business",
6
7
  "name": "Invoice Generator",
7
8
  "description": "Generate a clean, professional, print-ready invoice from billing details — sender/recipient, line items with quantity and rate, subtotal, tax, total, invoice number, dates, and payment instructions. Scopes the required fields and the tax/total math FIRST (a wrong total is the one unforgivable invoice bug), then builds a polished single-file HTML invoice with an itemized table and correctly computed totals. Use for freelancer/contractor billing, one-off invoices, and invoice templates.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "invoice-run",
5
5
  "role": "general",
6
+ "category": "business",
6
7
  "name": "Monthly Invoice Run",
7
8
  "description": "Run the month's invoicing in one calm pass from the office's own books: an invoice per client built from the tracked work in the ledger, numbering that continues the sequence without a skip or a repeat, due dates per each client's terms, everything recorded as sent — plus a one-page summary of what went out. Unlike a one-off invoice generator, this is the standing monthly ritual over the client roster and ledger, ending in print-ready invoices and updated books. Use for the monthly invoice run, end-of-month invoicing, 'bill the clients for this month', and closing the billing month.",
8
9
  "tags": [