@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,236 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Vendored dependency upgrade with staged receipts",
4
+ "objective": "The craftbook drives a staged upgrade of a vendored library across a breaking major: a recorded green suite before any change, the v2 API adopted at both real call sites with behavior preserved against the v1 reference, an honest stage record, and an enforced review - all verified mechanically, including a resolved-module check proving the call sites genuinely run v2.",
5
+ "tags": [
6
+ "code",
7
+ "dependency-upgrade",
8
+ "tactical-fleet"
9
+ ],
10
+ "prompt": "Use the Upgrade a Dependency craftbook for this: upgrade our vendored markdownlite library from 1.4.2 to the staged 2.0.0 copy. The vendoring convention and the v2 changelog are in VENDORING.md, and the request is in source/upgrade-request.md. Rendering behavior must not change - adapt the call sites to the new API rather than accepting the new defaults.",
11
+ "setup": {
12
+ "projectName": "Relay Notes",
13
+ "about": "A tiny note-rendering module for a team relay tool. Dependencies are vendored under lib/vendored/ per VENDORING.md. Tests run with `npm run test` (node --test).",
14
+ "files": [
15
+ {
16
+ "path": "package.json",
17
+ "content": "{\n \"name\": \"relay-notes\",\n \"private\": true,\n \"version\": \"1.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"test\": \"node --test\"\n }\n}\n"
18
+ },
19
+ {
20
+ "path": "lib/vendored/markdownlite.js",
21
+ "content": "// markdownlite 1.4.2 (vendored - see VENDORING.md)\nexport function parse(text) {\n const lines = String(text).split(/\\r?\\n/);\n const out = [];\n for (const line of lines) {\n const t = line.trim();\n if (t === '') continue;\n const h = /^(#{1,3})\\s+(.*)$/.exec(t);\n if (h) {\n out.push(`<h${h[1].length}>${inline(h[2])}</h${h[1].length}>`);\n } else {\n out.push(`<p>${inline(t)}</p>`);\n }\n }\n return out.join('\\n');\n}\n\nfunction inline(text) {\n return text.replace(/\\*([^*]+)\\*/g, '<em>$1</em>');\n}\n"
22
+ },
23
+ {
24
+ "path": "lib/vendored/v2/markdownlite.js",
25
+ "content": "// markdownlite 2.0.0 (vendored staging copy - see VENDORING.md)\nexport function parseDoc(text, options = {}) {\n const wrapParagraphs = options.wrapParagraphs ?? false;\n const lines = String(text).split(/\\r?\\n/);\n const out = [];\n for (const line of lines) {\n const t = line.trim();\n if (t === '') continue;\n const h = /^(#{1,3})\\s+(.*)$/.exec(t);\n if (h) {\n out.push(`<h${h[1].length}>${inline(h[2])}</h${h[1].length}>`);\n } else {\n out.push(wrapParagraphs ? `<p>${inline(t)}</p>` : inline(t));\n }\n }\n return out.join('\\n');\n}\n\nfunction inline(text) {\n return text.replace(/\\*([^*]+)\\*/g, '<em>$1</em>');\n}\n"
26
+ },
27
+ {
28
+ "path": "src/render-note.js",
29
+ "content": "import { parse } from '../lib/vendored/markdownlite.js';\n\nexport function renderNote(note) {\n return `<h2>${note.title}</h2>\\n${parse(note.body)}`;\n}\n"
30
+ },
31
+ {
32
+ "path": "src/render-digest.js",
33
+ "content": "import { parse } from '../lib/vendored/markdownlite.js';\n\nexport function renderDigest(notes) {\n return notes\n .map((note) => `<section>\\n<h2>${note.title}</h2>\\n${parse(note.body)}\\n</section>`)\n .join('\\n');\n}\n"
34
+ },
35
+ {
36
+ "path": "tests/render-note.test.mjs",
37
+ "content": "import assert from 'node:assert/strict';\nimport { test } from 'node:test';\nimport { renderNote } from '../src/render-note.js';\n\ntest('renders the body as wrapped paragraphs', () => {\n assert.equal(\n renderNote({ title: 'Standup', body: 'we shipped the *fast* path' }),\n '<h2>Standup</h2>\\n<p>we shipped the <em>fast</em> path</p>',\n );\n});\n\ntest('renders headings inside the body', () => {\n assert.equal(\n renderNote({ title: 'Plan', body: '# Goals\\nship it' }),\n '<h2>Plan</h2>\\n<h1>Goals</h1>\\n<p>ship it</p>',\n );\n});\n"
38
+ },
39
+ {
40
+ "path": "tests/render-digest.test.mjs",
41
+ "content": "import assert from 'node:assert/strict';\nimport { test } from 'node:test';\nimport { renderDigest } from '../src/render-digest.js';\n\ntest('joins every note as a wrapped section', () => {\n const html = renderDigest([\n { title: 'One', body: 'first' },\n { title: 'Two', body: 'second line' },\n ]);\n assert.equal(\n html,\n '<section>\\n<h2>One</h2>\\n<p>first</p>\\n</section>\\n<section>\\n<h2>Two</h2>\\n<p>second line</p>\\n</section>',\n );\n});\n"
42
+ },
43
+ {
44
+ "path": "VENDORING.md",
45
+ "content": "# Vendoring convention\n\nThis project vendors small dependencies directly under `lib/vendored/` instead\nof installing them from a registry. Each vendored library is a single file named\nafter the package. Upgrades arrive as a staged copy in a version subfolder\n(for example `lib/vendored/v2/`) so the switch is an explicit, reviewable\nchange: move the staged copy into place (or point the imports at it), adapt the\ncall sites, and remove the staging folder when the switch is complete.\n\n## markdownlite\n\nCurrent vendored version: 1.4.2 at `lib/vendored/markdownlite.js`.\nStaged upgrade: 2.0.0 at `lib/vendored/v2/markdownlite.js`.\n\n### markdownlite 2.0.0 changelog\n\n- BREAKING: `parse(text)` is renamed to `parseDoc(text, options)`.\n- BREAKING: plain lines are no longer wrapped in `<p>` by default. Paragraph\n wrapping is now opt-in: pass `{ wrapParagraphs: true }` to keep the 1.x\n output.\n- Heading and emphasis handling are unchanged.\n"
46
+ },
47
+ {
48
+ "path": "source/upgrade-request.md",
49
+ "content": "# Upgrade request\n\nPlease move us from vendored markdownlite 1.4.2 to the staged 2.0.0 copy.\nThe v2 changelog is in VENDORING.md. Rendering behavior must not change:\nnotes and digests must produce exactly the same HTML as today, so adapt the\ncall sites to the new API rather than accepting the new defaults.\n"
50
+ },
51
+ {
52
+ "path": "tests/verify-upgrade.mjs",
53
+ "content": "import assert from 'node:assert/strict';\nimport { execFileSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nconst root = process.cwd();\n\n// 1) Both call sites moved off the removed v1 API and resolve to a v2 module.\n// Accepted either way: v2 copied into place at lib/vendored/markdownlite.js,\n// or imports repointed at the staged v2 file.\nconst callSites = ['src/render-note.js', 'src/render-digest.js'];\nfor (const file of callSites) {\n const source = readFileSync(join(root, file), 'utf8');\n assert.ok(/\\bparseDoc\\s*\\(/.test(source), `${file} must call the v2 parseDoc API`);\n assert.ok(!/\\bparse\\s*\\(/.test(source), `${file} still calls the removed v1 parse API`);\n const spec = /import\\s*\\{[^}]*\\}\\s*from\\s*['\"]([^'\"]*markdownlite[^'\"]*)['\"]/.exec(source);\n assert.ok(spec, `${file} must import the vendored markdownlite module`);\n const mod = await import(new URL(spec[1], pathToFileURL(join(root, file))).href);\n assert.equal(typeof mod.parseDoc, 'function', `${file} must resolve to markdownlite v2 (parseDoc export)`);\n assert.equal(mod.parse, undefined, `${file} resolves to a module that still exports the removed v1 parse API`);\n}\nconsole.log('DEPUPGRADE_ORACLE call sites adapted');\n\n// 2) Behavior is unchanged against the v1 reference output.\nconst { renderNote } = await import(pathToFileURL(join(root, 'src/render-note.js')).href);\nconst { renderDigest } = await import(pathToFileURL(join(root, 'src/render-digest.js')).href);\nassert.equal(\n renderNote({ title: 'Standup', body: 'we shipped the *fast* path' }),\n '<h2>Standup</h2>\\n<p>we shipped the <em>fast</em> path</p>',\n 'renderNote must keep wrapping paragraphs after the upgrade',\n);\nassert.equal(\n renderNote({ title: 'Plan', body: '# Goals\\nship it' }),\n '<h2>Plan</h2>\\n<h1>Goals</h1>\\n<p>ship it</p>',\n 'renderNote must keep heading handling after the upgrade',\n);\nassert.equal(\n renderDigest([\n { title: 'One', body: 'first' },\n { title: 'Two', body: 'second line' },\n ]),\n '<section>\\n<h2>One</h2>\\n<p>first</p>\\n</section>\\n<section>\\n<h2>Two</h2>\\n<p>second line</p>\\n</section>',\n 'renderDigest must keep its exact output after the upgrade',\n);\nconsole.log('DEPUPGRADE_ORACLE behavior ok');\n\n// 3) The suite is green on the upgraded tree, and the seeded tests survive.\nreadFileSync(join(root, 'tests/render-note.test.mjs'));\nreadFileSync(join(root, 'tests/render-digest.test.mjs'));\nfunction runSuite(cwd) {\n try {\n execFileSync(process.execPath, ['--test'], { cwd, stdio: 'pipe', timeout: 30000 });\n return 0;\n } catch (err) {\n return typeof err.status === 'number' ? err.status : 1;\n }\n}\nassert.equal(runSuite(root), 0, 'the suite must be green on the upgraded tree');\nconsole.log('DEPUPGRADE_ORACLE suite green');\nconsole.log('DEPUPGRADE_ORACLE done');\n",
54
+ "surface": "harness"
55
+ }
56
+ ],
57
+ "craftbookParams": {
58
+ "workPath": "tasks/eval",
59
+ "scope": "Upgrade the vendored markdownlite from 1.4.2 to the staged 2.0.0 copy per VENDORING.md; rendering behavior must not change."
60
+ }
61
+ },
62
+ "mocks": [],
63
+ "success": {
64
+ "summary": "The vendored library runs at v2 through both call sites (either moved into place or repointed), every adaptation preserves the exact v1 rendering behavior, the suite is green, and every fleet artifact exists with honest receipts.",
65
+ "deliverables": [
66
+ {
67
+ "path": "tasks/eval/survey.md",
68
+ "kind": "markdown-notes",
69
+ "artifact": true,
70
+ "minBytes": 600,
71
+ "checks": [
72
+ {
73
+ "kind": "contains",
74
+ "file": "tasks/eval/survey.md",
75
+ "pattern": "^##\\s+Current state[\\s\\S]*^##\\s+Candidates[\\s\\S]*^##\\s+Breaking-change notes[\\s\\S]*^##\\s+Stage plan",
76
+ "flags": "im",
77
+ "label": "survey sections in order"
78
+ },
79
+ {
80
+ "kind": "contains",
81
+ "file": "tasks/eval/survey.md",
82
+ "pattern": "parseDoc",
83
+ "label": "names the real v2 API change from the local changelog"
84
+ },
85
+ {
86
+ "kind": "citationsResolve",
87
+ "file": "tasks/eval/survey.md",
88
+ "minCitations": 2,
89
+ "artifact": true
90
+ }
91
+ ]
92
+ },
93
+ {
94
+ "path": "tasks/eval/change-notes.md",
95
+ "kind": "markdown-notes",
96
+ "artifact": true,
97
+ "minBytes": 700,
98
+ "checks": [
99
+ {
100
+ "kind": "contains",
101
+ "file": "tasks/eval/change-notes.md",
102
+ "pattern": "^##\\s+Stages executed[\\s\\S]*^##\\s+Files touched[\\s\\S]*^##\\s+Adaptations[\\s\\S]*^##\\s+Reverted stages",
103
+ "flags": "im",
104
+ "label": "change-notes sections in order"
105
+ },
106
+ {
107
+ "kind": "citationsResolve",
108
+ "file": "tasks/eval/change-notes.md",
109
+ "minCitations": 2,
110
+ "artifact": true
111
+ }
112
+ ]
113
+ },
114
+ {
115
+ "path": "tasks/eval/verification.md",
116
+ "kind": "markdown-notes",
117
+ "artifact": true,
118
+ "minBytes": 450,
119
+ "checks": [
120
+ {
121
+ "kind": "contains",
122
+ "file": "tasks/eval/verification.md",
123
+ "pattern": "^##\\s+Suite[\\s\\S]*^##\\s+Adaptations verified[\\s\\S]*^##\\s+Rollback[\\s\\S]*^##\\s+Result",
124
+ "flags": "im",
125
+ "label": "verification sections in order"
126
+ }
127
+ ]
128
+ },
129
+ {
130
+ "path": "tasks/eval/review.md",
131
+ "kind": "markdown-report",
132
+ "artifact": true,
133
+ "minBytes": 400,
134
+ "checks": [
135
+ {
136
+ "kind": "contains",
137
+ "file": "tasks/eval/review.md",
138
+ "pattern": "Verdict:\\s*(?:PASS|REVISE)",
139
+ "flags": "i",
140
+ "label": "explicit reviewer verdict"
141
+ }
142
+ ]
143
+ }
144
+ ],
145
+ "checks": [
146
+ {
147
+ "kind": "notContains",
148
+ "file": "src/render-note.js",
149
+ "pattern": "\\bparse\\s*\\(|import\\s*\\{[^}]*\\bparse\\b[^}]*\\}",
150
+ "label": "the removed v1 parse API is gone from the note call site"
151
+ },
152
+ {
153
+ "kind": "notContains",
154
+ "file": "src/render-digest.js",
155
+ "pattern": "\\bparse\\s*\\(|import\\s*\\{[^}]*\\bparse\\b[^}]*\\}",
156
+ "label": "the removed v1 parse API is gone from the digest call site"
157
+ },
158
+ {
159
+ "kind": "sourceParses",
160
+ "file": "src/render-note.js"
161
+ },
162
+ {
163
+ "kind": "sourceParses",
164
+ "file": "src/render-digest.js"
165
+ },
166
+ {
167
+ "kind": "nodeRuns",
168
+ "file": "tests/render-note.test.mjs"
169
+ },
170
+ {
171
+ "kind": "nodeScriptPasses",
172
+ "script": "tests/verify-upgrade.mjs",
173
+ "timeoutMs": 60000,
174
+ "requiredOutput": [
175
+ {
176
+ "pattern": "DEPUPGRADE_ORACLE call sites adapted",
177
+ "label": "both call sites run the v2 API"
178
+ },
179
+ {
180
+ "pattern": "DEPUPGRADE_ORACLE behavior ok",
181
+ "label": "rendering behavior preserved against the v1 reference"
182
+ },
183
+ {
184
+ "pattern": "DEPUPGRADE_ORACLE suite green",
185
+ "label": "suite green on the upgraded tree"
186
+ }
187
+ ]
188
+ }
189
+ ],
190
+ "taskNotes": {
191
+ "minBytes": 120,
192
+ "checks": [
193
+ {
194
+ "kind": "contains",
195
+ "file": "task-notes.md",
196
+ "pattern": "\\bDONE\\b[\\s\\S]*(npm\\s+run\\s+test|node\\s+--test)",
197
+ "flags": "i",
198
+ "label": "DONE note names the real test command"
199
+ }
200
+ ]
201
+ },
202
+ "taskGraph": {
203
+ "requireCraftbookTask": true,
204
+ "requireTerminalStep": true
205
+ },
206
+ "unchangedFixtures": [
207
+ "source/upgrade-request.md",
208
+ "package.json"
209
+ ]
210
+ },
211
+ "rubric": {
212
+ "artifact": {
213
+ "path": "tasks/eval/change-notes.md",
214
+ "kind": "markdown"
215
+ },
216
+ "axes": [
217
+ {
218
+ "name": "Staged discipline",
219
+ "description": "The work ran as ordered stages with the suite genuinely run before the first change and between stages, and the record distinguishes executed stages from reverted or deferred ones."
220
+ },
221
+ {
222
+ "name": "Local evidence honesty",
223
+ "description": "Breaking-change notes come from sources actually read in the repository (VENDORING.md, the staged v2 file), with nothing presented as a release note that was invented."
224
+ },
225
+ {
226
+ "name": "Adaptation fidelity",
227
+ "description": "Call sites were adapted at their real locations to preserve exact rendering behavior under the v2 API, rather than accepting changed defaults or weakening tests."
228
+ }
229
+ ]
230
+ },
231
+ "qualityFocus": [
232
+ "staged upgrades with receipts",
233
+ "local breaking-change evidence",
234
+ "honest reverts"
235
+ ]
236
+ }
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "deploy-checklist",
5
5
  "role": "general",
6
+ "category": "code-release",
6
7
  "name": "Deploy Checklist",
7
8
  "description": "Author and then actually execute a pre-deploy verification checklist for shipping a release to production — the concrete gates that must be green before the deploy button is pressed: tests passing, build clean, migrations reviewed, config/secrets present, feature flags set, rollback path confirmed, and observability/alerts ready. A planner scopes the checklist tailored to this service and risk level, a developer runs each item and records real evidence (command output, links, screenshots) for pass or fail, and a reviewer signs off go/no-go. Use this before a production deploy, a release cut-over, or any 'are we ready to ship?' gate where skipping a step causes outages.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "design-review",
5
5
  "role": "maintenance-review",
6
+ "category": "design",
6
7
  "name": "UX & Visual Design Review",
7
8
  "description": "Critique a UI's user experience and visual design and produce a prioritized design-review report. First scopes the screens and flows and locks a heuristic checklist (visual hierarchy, spacing rhythm and alignment, typographic scale, color and contrast, consistency, affordance and feedback, empty/loading/error states, and the primary task's friction), then reviews each screen against those heuristics with a designer's eye for both polish and usability, then writes a findings report rating each issue by impact with a concrete, specific design fix. Use this for a design review, UX critique, visual QA, design feedback, a heuristic evaluation, or 'does this look and feel right' — it gives actionable, specific design fixes (exact spacing, color, hierarchy changes) rather than 'make it pop'.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "design-system-consultation",
5
5
  "role": "maintenance-review",
6
+ "category": "design",
6
7
  "name": "Design System Consultation",
7
8
  "description": "Interview for product context and taste, then propose a full design system — type, color, layout, motion — and capture it as a DESIGN.md with live preview pages.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "diagram-from-text",
5
5
  "role": "general",
6
+ "category": "code-docs",
6
7
  "name": "Diagram from Text",
7
8
  "description": "Render a clear technical diagram — flowchart, architecture, sequence, ER, or org chart — from a plain-language description, as code-defined (Mermaid/Graphviz/SVG) so it is editable and version-controllable rather than a flat picture. Spec FIRST the diagram type, the exact nodes and edges, and the layout direction, because diagrams fail when relationships are wrong or the graph is an unreadable tangle; then build the diagram so it renders, with every described entity and relationship present and labeled. Covers flowcharts, architecture diagrams, sequence diagrams, ER diagrams, org charts, mind maps, and diagram-as-code.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "digest-from-feeds",
5
5
  "role": "general",
6
+ "category": "research",
6
7
  "name": "RSS / Feed Digest",
7
8
  "description": "Build a recurring digest from RSS/Atom feeds or news sources: fetch the latest items in the window, dedupe and cluster by topic, then write a scannable digest with one-line takes and source links. Scopes the feed list and digest format FIRST (which feeds, the time window, topic sections, item cap, ranking signal), then a developer fetches and normalizes the feed items into a deduped item list, then a copywriter writes the curated digest from those items only. Scoping sources and the window before fetching is what keeps the digest fresh, deduped, and within length instead of an unranked firehose. Use for RSS digests, news roundups, feed summaries, content curation, and recurring reading digests.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "doc-intake-pipeline",
5
5
  "role": "general",
6
+ "category": "business",
6
7
  "name": "Classify and Route Incoming Documents",
7
8
  "description": "Build a document-intake pipeline that classifies each incoming file (invoice, contract, resume, receipt, ID, support ticket, other) into a fixed type set, extracts a few key fields per type, and routes it to the right destination folder with a normalized filename. Locks the document-type taxonomy, per-type extraction fields, and the routing/naming rules FIRST, then builds the classify-extract-route loop, then verifies every input file was handled, classifications are in-set with an 'other' fallback, and routing is deterministic. Taxonomy-and-routing-before-build prevents files from silently vanishing or piling into a misc bucket.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "doc-rewrite",
5
5
  "role": "general",
6
+ "category": "code-docs",
6
7
  "name": "Documentation Rewrite",
7
8
  "description": "Rewrite confusing existing documentation into clear, scannable, task-oriented prose without losing any technical fact: it first audits the current doc to catalog every problem — buried steps, undefined jargon, missing prerequisites, broken structure — and locks a clarity checklist, then rewrites the doc to fix exactly those issues while preserving every accurate instruction. Covers documentation rewrite, doc cleanup, clarify docs, improve README, restructure guide, and technical editing. Auditing before rewriting is the point: a small model that first inventories what is wrong rewrites with intent and preserves the facts, instead of producing a prettier doc that quietly drops a critical step.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "dockerize-app",
5
5
  "role": "maintenance-review",
6
+ "category": "code-release",
6
7
  "name": "Containerize a Service",
7
8
  "description": "Containerize an application with a production-grade Dockerfile — small, secure, reproducible, and buildable — plus the supporting files to run it. Scopes the container contract FIRST — base image, build vs runtime stages, dependencies, exposed port, entrypoint, env config, and the size/security bar — then writes the Dockerfile + .dockerignore + compose, then a reviewer confirms it builds, runs, and meets the bar. Covers multi-stage builds, slim base images, layer caching, non-root user, .dockerignore, healthchecks, EXPOSE/ENTRYPOINT, and reproducible image builds.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "docs-site",
5
5
  "role": "project-starter",
6
+ "category": "code-docs",
6
7
  "name": "Documentation Site",
7
8
  "description": "Build a single-page documentation site with a sidebar table of contents, anchored sections, code blocks, and in-page navigation — the kind of reference page a library or API ships. Locks the information architecture (the section tree and ordering) first, then a readable docs visual design with good typography and code styling, then builds the HTML with working anchor links and a sticky sidebar. Getting the IA right before layout is what makes docs findable; a small model that jumps straight to HTML produces an unnavigable wall of text.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "documentation-drift-review",
5
5
  "role": "maintenance-review",
6
+ "category": "code-docs",
6
7
  "name": "Documentation Drift Review",
7
8
  "description": "Review project documentation against the code, configuration, commands, API surface, and shipped behavior to find stale or misleading guidance. Uses the indexed docs and source map to verify examples and references instead of proofreading in isolation, then leaves a prioritized morning report with exact doc locations, source-of-truth evidence, corrected text, owners, and a prevention plan. Use for a weekly docs-health sweep, documentation accuracy review, stale README audit, or finding runbook and API-documentation drift.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "draft-social-post",
5
5
  "role": "general",
6
+ "category": "marketing",
6
7
  "name": "Draft a Social Post",
7
8
  "description": "Draft one social post from idea to approved copy. Reads your voice guide and recent posts, grounds the angle in what your feeds actually responded to, drafts the base message, then fits a variant to each platform's limits — Bluesky 300 graphemes, X 280 characters, Instagram captions with the hook in the first 125 characters, LinkedIn up to 3000 characters in a professional register — with hashtags where idiomatic, alt text for media, and thread splits when the copy runs long. Then it stops for your review: approve, ask for a revision round, or approve and queue to Bluesky through the outbox. Covers social media copywriting, tweet and thread drafting, Bluesky posts, Instagram captions, post scheduling, and a human approval gate. Nothing is ever published without your say-so.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "drive-wrap-up",
5
5
  "role": "general",
6
+ "category": "personal",
6
7
  "name": "Fundraiser Wrap-Up",
7
8
  "description": "Close a fundraising drive properly: verify the final numbers against the donation ledger, confirm every donor was thanked (or finish the thank-yous now), and write the wrap-up story — the total, what the money does, and the people who made it happen — ready to share with the community and hand to the next organizer. Locks the wrap-up's claims and the thank-you completeness check FIRST, then verifies against the ledger, then writes the story. Use for ending a fundraiser, drive wrap-up reports, final fundraising totals, and community thank-you posts.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "due-diligence-brief",
5
5
  "role": "general",
6
+ "category": "research",
6
7
  "name": "Due-Diligence Brief",
7
8
  "description": "Produce a structured due-diligence brief on an entity (company, vendor, investment, partner): a planner locks the diligence dimensions and red-flag criteria, a researcher gathers verifiable facts and risk signals per dimension with sources, and a copywriter writes a decision-oriented brief with findings, risks, and an overall read. The ordering matters because diligence without locked dimensions misses a category (e.g. legal, financial, reputational) and a brief without a red-flag rubric buries the risks; fixing the dimensions and what counts as a flag first makes the brief decision-ready and defensible. Use this for vendor/partner due diligence, investment diligence, background briefs on a company or person, risk assessments, and 'should we work with / invest in X' questions.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "ebook-compile",
5
5
  "role": "general",
6
+ "category": "writing",
6
7
  "name": "Ebook Compile",
7
8
  "description": "Compile a collection of notes, articles, or chapter drafts into a coherent, readable ebook — with a title page, table of contents, consistently formatted chapters, and front/back matter — output as a single navigable HTML book. Outlines the chapter structure and through-line FIRST (so disparate notes become a real book, not a pile), writes/edits each chapter to a consistent voice and adds connective tissue, then builds the compiled HTML with a linked TOC and chapter navigation. Use for turning a blog backlog, course notes, or drafts into a downloadable ebook.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "edit-notes",
5
5
  "role": "maintenance-review",
6
+ "category": "media",
6
7
  "name": "Edit Notes Pass",
7
8
  "description": "Review the footage like an editor: timestamped notes on pacing and cuts read against the transcript and the media index, then a machine-readable cut list the assembly step can execute — opinion upstream, precision downstream. Locks the review criteria FIRST (every keep or cut carries a timecode and a reason, b-roll gaps get named), then writes the edit notes, then distills them into the cut list — so the creative call and the executable record never drift apart. Use for edit passes, footage reviews, 'what should we cut', cutlist prep, and tightening a video that drags.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "email-sequence",
5
5
  "role": "general",
6
+ "category": "marketing",
6
7
  "name": "Lifecycle Email Sequence",
7
8
  "description": "Design and build a multi-email lifecycle sequence (welcome, onboarding, nurture, re-engagement) that moves a subscriber from one stage to the next: it first maps the customer journey — entry trigger, the goal of each email, send timing/cadence, and the one CTA per email — then drafts every email's subject line, preview text, and body to its single goal, then builds the sequence into a client-safe, inline-styled HTML email set ready to load into an ESP. Covers email sequence, drip campaign, welcome series, onboarding emails, nurture sequence, and lifecycle marketing. Journey-mapping before writing is the point: a small model that assigns each email one job and one CTA avoids the redundant sequence where every email says the same thing and asks for everything at once.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "email-template",
5
5
  "role": "project-starter",
6
+ "category": "marketing",
6
7
  "name": "Responsive HTML Email",
7
8
  "description": "Build a responsive HTML email template that renders across email clients — Outlook, Gmail, Apple Mail — using table-based layout, inline styles, and bulletproof buttons, for a newsletter, transactional, or promo send. Designs the visual structure and the client-safe constraints first, writes the copy, then builds the table-based HTML with all CSS inlined. Email is not the web: external CSS, flexbox, and modern selectors break, so the design phase locks the table layout and inline-only rule before any markup, the ordering that keeps a small model from producing a div-and-class email that renders broken in Outlook.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "engineering-retrospective",
5
5
  "role": "maintenance-review",
6
+ "category": "business",
6
7
  "name": "Engineering Retrospective",
7
8
  "description": "Build a data-grounded engineering retrospective from git history: activity, hotspots, review patterns, and per-person growth notes for a given window.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "episode-plan",
5
5
  "role": "general",
6
+ "category": "media",
6
7
  "name": "Plan the Episode",
7
8
  "description": "Turn the idea backlog and last episode's loose threads into a locked plan for the next episode: a rundown with timed segments, what to prep, and a record date — so the show ships on rhythm instead of on adrenaline. Locks the episode goal and the acceptance checklist FIRST, then builds the timed rundown, then writes the brief with prep owners and the record date. Use for planning the next episode, episode rundowns, show planning, and 'what's the next episode'.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "escalation-playbook",
5
5
  "role": "general",
6
+ "category": "code-ops",
6
7
  "name": "On-Call Escalation Playbook",
7
8
  "description": "Author an on-call escalation playbook: the severity ladder, who-to-page-when escalation tiers with timeouts, communication cadence to stakeholders, and the step-by-step actions for each severity. Scopes the severity definitions and escalation policy FIRST (SEV levels with concrete examples, tier timeouts, roles, comms channels and cadence), then a copywriter writes the playbook in clear, do-this-now imperative steps, then a reviewer validates it for completeness and that no severity dead-ends without an escalation path. Scoping the SEV ladder and timeouts before writing prose is what makes the playbook unambiguous at 3am. Use for on-call runbooks, incident escalation policy, paging tiers, severity ladders, and SRE escalation procedures.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "evidence-brief",
5
5
  "role": "general",
6
+ "category": "research",
6
7
  "name": "Decision Evidence Brief",
7
8
  "description": "Answer a specific decision question with a weighted, confidence-rated evidence brief: a planner frames the decision and the options, locks the evidence criteria and a confidence scale, a researcher gathers evidence for and against each option and rates the strength of each piece, and a copywriter writes a decision-oriented brief that states a recommendation with explicit confidence levels and the key uncertainties. The ordering matters because evidence gathered before framing the decision is unfocused and a recommendation without a confidence scale hides how strong the case really is; fixing the question, the options, and a confidence rubric first produces an honest, decision-ready brief. Use this for evidence-based decision support, 'what does the evidence say we should do about X', recommendation memos, weighing options with confidence levels, and policy/strategy briefs grounded in sources.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "executive-level-review",
5
5
  "role": "maintenance-review",
6
+ "category": "practice",
6
7
  "name": "Executive-Level Review",
7
8
  "description": "A strategic, executive-level review of a plan or scope: challenge the premise, weigh alternatives, and score each dimension before committing — the 'should we even build this' p...",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "expense-categorize",
5
5
  "role": "general",
6
+ "category": "business",
6
7
  "name": "Categorize Transactions",
7
8
  "description": "Classify a list of bank/card transactions into a fixed chart-of-accounts category set, with confidence and a review queue for the uncertain ones, producing a clean categorized ledger ready for bookkeeping or tax. Locks the category taxonomy and the matching rules (merchant patterns, amount/sign heuristics) FIRST, then categorizes every transaction deterministically-first then by inference, then reviews that the taxonomy is closed, low-confidence rows are queued not force-fit, and totals reconcile to the input. Rules-before-categorize is the wisdom: a defined taxonomy plus rule precedence makes results auditable and repeatable, not a one-off guess.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "fact-check",
5
5
  "role": "maintenance-review",
6
+ "category": "research",
6
7
  "name": "Fact-Check a Set of Claims",
7
8
  "description": "Verify a set of claims one by one and produce a verdict report: a planner extracts and itemizes every checkable claim and locks the rating scale, a researcher independently verifies each claim against primary sources and logs the evidence, and a reviewer compiles a per-claim verdict report with ratings and corrections. The ordering matters because verifying before itemizing lets claims slip through unchecked, and a report without a fixed rating scale gives inconsistent verdicts; isolating each atomic claim and locking the scale first makes the check exhaustive and auditable. Use this for fact-checking articles or statements, verifying claims, debunking, accuracy passes, and 'is this true' / 'check these facts' requests.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "family-story-chapter",
5
5
  "role": "general",
6
+ "category": "writing",
6
7
  "name": "Family Story Chapter",
7
8
  "description": "Write one chapter of the family story from the record you actually have — interviews and tree facts woven into narrative, speculation clearly dressed as speculation — the ritual that turns an archive into the book every family means to write. Locks the chapter's arc and the sourcing rules FIRST, then drafts from the record only, with a faithfulness pass that loops until every event traces. Use for drafting a family history chapter, writing up the emigration years, turning interviews into narrative, and 'write the family story'.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "faq-from-docs",
5
5
  "role": "general",
6
+ "category": "writing",
6
7
  "name": "FAQ from Source Docs",
7
8
  "description": "Build a grounded FAQ page by mining real source documents for the questions users actually ask, then writing tight, accurate answers traced back to the source: it first researches the corpus to extract candidate questions, dedupes and groups them, and ranks by likely frequency, then writes clear question-and-answer pairs where every answer is supported by the docs. Covers FAQ generation, help center questions, support docs, knowledge mining, common questions, and self-service content. Mining the source before writing is the point: a small model that derives questions from the actual docs avoids inventing FAQs nobody asks and answers the docs cannot support.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "favicon-set",
5
5
  "role": "general",
6
+ "category": "design",
6
7
  "name": "Favicon & App-Icon Set",
7
8
  "description": "Generate the complete favicon and app-icon set a modern site needs — the multi-size favicon, Apple touch icon, Android/maskable icons, and the web app manifest plus the exact HTML link/meta tags — from a single source mark, ensuring the icon stays legible at 16px and the maskable variant survives platform cropping. Lock FIRST the source mark, the exact size matrix, and the safe-area/padding rules (maskable icons need extra padding or platforms clip them) because favicon sets fail when the icon is illegible tiny or gets cropped on Android; then generate every size and emit the manifest + install snippet. Covers favicons, app icons, PWA icons, touch icons, maskable icons, and the web app manifest.",
8
9
  "tags": [
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "feature-flag-release",
5
5
  "role": "general",
6
+ "category": "code-release",
6
7
  "name": "Feature Flag Release Plan",
7
8
  "description": "Plan and document a progressive feature-flag rollout for shipping a change behind a flag — defining the flag and its default-off state, the staged ramp (internal → 1% → 10% → 50% → 100%) with the success and guardrail metrics that gate each step, the automatic rollback/kill-switch criteria, and the cleanup that removes the flag once fully rolled out. A planner scopes the flag, ramp stages, and metrics, a developer writes the rollout runbook with the exact flag changes and the kill-switch procedure, and a reviewer verifies each ramp step has a measurable gate and a safe abort. Use this for gradual rollouts, canary releases, dark launches, percentage-based ramps, and de-risking a risky change behind a toggle.",
8
9
  "tags": [
@@ -19,6 +20,10 @@
19
20
  },
20
21
  "logo": "logo.webp",
21
22
  "license": "MIT",
22
- "yankedVersions": [],
23
+ "yankedVersions": [
24
+ "1.0.0",
25
+ "1.0.1",
26
+ "1.0.2"
27
+ ],
23
28
  "workflow": "build-loop"
24
29
  }
@@ -3,6 +3,7 @@
3
3
  "kind": "craftbook-template",
4
4
  "id": "feature-flag-rollout",
5
5
  "role": "maintenance-review",
6
+ "category": "code-release",
6
7
  "name": "Flagged Feature Rollout",
7
8
  "description": "Add a new feature behind a feature flag so it can ship dark, be toggled per-environment/user, and roll back instantly without a deploy. Plans the flag contract FIRST — the flag name/default, the toggle points, the on/off behavior, the targeting (env/percentage/user), and the cleanup plan — then implements the flagged code with both paths working, then a reviewer verifies both states behave and the off-state default is safe. Covers feature flags, toggle points, percentage/targeted rollout, default-off safety, dark launches, and flag-cleanup discipline.",
8
9
  "tags": [
@@ -11,7 +12,10 @@
11
12
  "rollout",
12
13
  "toggle",
13
14
  "release",
14
- "experiment"
15
+ "experiment",
16
+ "canary",
17
+ "progressive-delivery",
18
+ "kill-switch"
15
19
  ],
16
20
  "maintainer": {
17
21
  "name": "Gezel"