@bendyline/gilde 0.1.37 → 0.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (551) hide show
  1. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.2/craftbook.json +153 -0
  2. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.2/test.json +118 -0
  3. package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.2/craftbook.json +153 -0
  4. package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.2/test.json +189 -0
  5. package/data/craftbook-templates/ac/accessibility-retrofit/versions/1.0.2/craftbook.json +122 -0
  6. package/data/craftbook-templates/ac/accessibility-retrofit/versions/1.0.2/test.json +100 -0
  7. package/data/craftbook-templates/ad/ad-variations/versions/1.0.2/craftbook.json +117 -0
  8. package/data/craftbook-templates/ad/ad-variations/versions/1.0.2/test.json +111 -0
  9. package/data/craftbook-templates/al/album-curate/versions/1.0.2/craftbook.json +127 -0
  10. package/data/craftbook-templates/al/album-curate/versions/1.0.2/test.json +150 -0
  11. package/data/craftbook-templates/al/alert-rules/versions/1.0.2/craftbook.json +113 -0
  12. package/data/craftbook-templates/al/alert-rules/versions/1.0.2/test.json +148 -0
  13. package/data/craftbook-templates/al/alt-text-pass/versions/1.0.2/craftbook.json +154 -0
  14. package/data/craftbook-templates/al/alt-text-pass/versions/1.0.2/test.json +100 -0
  15. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.4/craftbook.json +238 -0
  16. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.4/test.json +160 -0
  17. package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.2/craftbook.json +158 -0
  18. package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.2/test.json +105 -0
  19. package/data/craftbook-templates/an/annual-document-review/versions/1.0.2/craftbook.json +152 -0
  20. package/data/craftbook-templates/an/annual-document-review/versions/1.0.2/test.json +113 -0
  21. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.2/craftbook.json +153 -0
  22. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.2/test.json +123 -0
  23. package/data/craftbook-templates/ap/api-contract-review/versions/1.1.2/craftbook.json +153 -0
  24. package/data/craftbook-templates/ap/api-contract-review/versions/1.1.2/test.json +118 -0
  25. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.2/craftbook.json +170 -0
  26. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.2/test.json +139 -0
  27. package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.2/craftbook.json +141 -0
  28. package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.2/test.json +106 -0
  29. package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.2/craftbook.json +135 -0
  30. package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.2/test.json +106 -0
  31. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.4/craftbook.json +222 -0
  32. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.4/test.json +224 -0
  33. package/data/craftbook-templates/au/auth-flow/versions/1.0.2/craftbook.json +160 -0
  34. package/data/craftbook-templates/au/auth-flow/versions/1.0.2/test.json +143 -0
  35. package/data/craftbook-templates/au/automation-recipe/versions/1.0.2/craftbook.json +176 -0
  36. package/data/craftbook-templates/au/automation-recipe/versions/1.0.2/test.json +299 -0
  37. package/data/craftbook-templates/ba/backup-routine/versions/1.0.2/craftbook.json +160 -0
  38. package/data/craftbook-templates/ba/backup-routine/versions/1.0.2/test.json +111 -0
  39. package/data/craftbook-templates/bl/blog-post/versions/1.0.2/craftbook.json +155 -0
  40. package/data/craftbook-templates/bl/blog-post/versions/1.0.2/test.json +121 -0
  41. package/data/craftbook-templates/bo/board-deck/versions/1.0.2/craftbook.json +153 -0
  42. package/data/craftbook-templates/bo/board-deck/versions/1.0.2/test.json +103 -0
  43. package/data/craftbook-templates/bo/board-game-web/versions/1.0.2/craftbook.json +162 -0
  44. package/data/craftbook-templates/bo/board-game-web/versions/1.0.2/test.json +102 -0
  45. package/data/craftbook-templates/bo/booking-automation/versions/1.0.2/craftbook.json +170 -0
  46. package/data/craftbook-templates/bo/booking-automation/versions/1.0.2/test.json +165 -0
  47. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.2/craftbook.json +119 -0
  48. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.2/test.json +106 -0
  49. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.4/craftbook.json +429 -0
  50. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.4/test.json +379 -0
  51. package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.3/craftbook.json +176 -0
  52. package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.3/test.json +95 -0
  53. package/data/craftbook-templates/ca/calendar-brief/versions/1.0.2/craftbook.json +119 -0
  54. package/data/craftbook-templates/ca/calendar-brief/versions/1.0.2/test.json +105 -0
  55. package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.2/craftbook.json +122 -0
  56. package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.2/test.json +109 -0
  57. package/data/craftbook-templates/ca/case-study/versions/1.0.2/craftbook.json +155 -0
  58. package/data/craftbook-templates/ca/case-study/versions/1.0.2/test.json +115 -0
  59. package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.2/craftbook.json +163 -0
  60. package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.2/test.json +108 -0
  61. package/data/craftbook-templates/ch/changelog-cut/versions/1.0.2/craftbook.json +125 -0
  62. package/data/craftbook-templates/ch/changelog-cut/versions/1.0.2/test.json +109 -0
  63. package/data/craftbook-templates/ch/changelog-writeup/versions/1.0.2/craftbook.json +119 -0
  64. package/data/craftbook-templates/ch/changelog-writeup/versions/1.0.2/test.json +132 -0
  65. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.3/craftbook.json +135 -0
  66. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.3/test.json +158 -0
  67. package/data/craftbook-templates/ch/chapter-weave/versions/1.0.2/craftbook.json +86 -0
  68. package/data/craftbook-templates/ch/chapter-weave/versions/1.0.2/test.json +101 -0
  69. package/data/craftbook-templates/ch/character-sheet/versions/1.0.2/craftbook.json +94 -0
  70. package/data/craftbook-templates/ch/character-sheet/versions/1.0.2/test.json +146 -0
  71. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.2/craftbook.json +133 -0
  72. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.2/test.json +181 -0
  73. package/data/craftbook-templates/ch/chart-pack/versions/1.0.2/craftbook.json +160 -0
  74. package/data/craftbook-templates/ch/chart-pack/versions/1.0.2/test.json +107 -0
  75. package/data/craftbook-templates/ch/chrome-extension/versions/1.0.2/craftbook.json +160 -0
  76. package/data/craftbook-templates/ch/chrome-extension/versions/1.0.2/test.json +100 -0
  77. package/data/craftbook-templates/ci/ci-pipeline/versions/1.0.2/craftbook.json +144 -0
  78. package/data/craftbook-templates/ci/ci-pipeline/versions/1.0.2/test.json +165 -0
  79. package/data/craftbook-templates/ci/citation-audit/versions/1.0.2/craftbook.json +158 -0
  80. package/data/craftbook-templates/ci/citation-audit/versions/1.0.2/test.json +152 -0
  81. package/data/craftbook-templates/cl/cli-tool/versions/1.1.2/craftbook.json +159 -0
  82. package/data/craftbook-templates/cl/cli-tool/versions/1.1.2/test.json +131 -0
  83. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.2/craftbook.json +165 -0
  84. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.2/test.json +119 -0
  85. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.2/craftbook.json +165 -0
  86. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.2/test.json +122 -0
  87. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.2/craftbook.json +153 -0
  88. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.2/test.json +229 -0
  89. package/data/craftbook-templates/co/company-research-brief/versions/1.0.2/craftbook.json +151 -0
  90. package/data/craftbook-templates/co/company-research-brief/versions/1.0.2/test.json +100 -0
  91. package/data/craftbook-templates/co/comparison-matrix/versions/1.0.2/craftbook.json +165 -0
  92. package/data/craftbook-templates/co/comparison-matrix/versions/1.0.2/test.json +112 -0
  93. package/data/craftbook-templates/co/compat-check/versions/1.0.2/craftbook.json +158 -0
  94. package/data/craftbook-templates/co/compat-check/versions/1.0.2/test.json +148 -0
  95. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.2/craftbook.json +152 -0
  96. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.2/test.json +119 -0
  97. package/data/craftbook-templates/co/config-scaffold/versions/1.0.2/craftbook.json +117 -0
  98. package/data/craftbook-templates/co/config-scaffold/versions/1.0.2/test.json +123 -0
  99. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.2/craftbook.json +153 -0
  100. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.2/test.json +152 -0
  101. package/data/craftbook-templates/co/contract-template/versions/1.0.2/craftbook.json +157 -0
  102. package/data/craftbook-templates/co/contract-template/versions/1.0.2/test.json +105 -0
  103. package/data/craftbook-templates/co/cookbook-layout/versions/1.0.2/craftbook.json +133 -0
  104. package/data/craftbook-templates/co/cookbook-layout/versions/1.0.2/test.json +162 -0
  105. package/data/craftbook-templates/co/copy-review/versions/1.0.2/craftbook.json +153 -0
  106. package/data/craftbook-templates/co/copy-review/versions/1.0.2/test.json +105 -0
  107. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.2/craftbook.json +158 -0
  108. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.2/test.json +159 -0
  109. package/data/craftbook-templates/co/cover-letter/versions/1.0.2/craftbook.json +119 -0
  110. package/data/craftbook-templates/co/cover-letter/versions/1.0.2/test.json +103 -0
  111. package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.2/craftbook.json +113 -0
  112. package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.2/test.json +210 -0
  113. package/data/craftbook-templates/cr/cron-job/versions/1.0.2/craftbook.json +159 -0
  114. package/data/craftbook-templates/cr/cron-job/versions/1.0.2/test.json +107 -0
  115. package/data/craftbook-templates/cr/crossword-forge/versions/1.0.2/craftbook.json +176 -0
  116. package/data/craftbook-templates/cr/crossword-forge/versions/1.0.2/test.json +138 -0
  117. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.3/craftbook.json +113 -0
  118. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.3/test.json +105 -0
  119. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.2/craftbook.json +119 -0
  120. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.2/test.json +117 -0
  121. package/data/craftbook-templates/da/data-dictionary/versions/1.0.2/craftbook.json +119 -0
  122. package/data/craftbook-templates/da/data-dictionary/versions/1.0.2/test.json +104 -0
  123. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.2/craftbook.json +160 -0
  124. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.2/test.json +107 -0
  125. package/data/craftbook-templates/da/data-join-merge/versions/1.0.2/craftbook.json +113 -0
  126. package/data/craftbook-templates/da/data-join-merge/versions/1.0.2/test.json +107 -0
  127. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.3/craftbook.json +160 -0
  128. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.3/test.json +165 -0
  129. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.2/craftbook.json +153 -0
  130. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.2/test.json +329 -0
  131. package/data/craftbook-templates/da/data-to-report/versions/1.0.2/craftbook.json +152 -0
  132. package/data/craftbook-templates/da/data-to-report/versions/1.0.2/test.json +98 -0
  133. package/data/craftbook-templates/da/data-viz-page/versions/1.0.2/craftbook.json +155 -0
  134. package/data/craftbook-templates/da/data-viz-page/versions/1.0.2/test.json +120 -0
  135. package/data/craftbook-templates/da/dataset-clean/versions/1.2.3/craftbook.json +113 -0
  136. package/data/craftbook-templates/da/dataset-clean/versions/1.2.3/test.json +98 -0
  137. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.2/craftbook.json +160 -0
  138. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.2/test.json +107 -0
  139. package/data/craftbook-templates/de/deep-security-review/versions/1.1.2/craftbook.json +223 -0
  140. package/data/craftbook-templates/de/deep-security-review/versions/1.1.2/test.json +160 -0
  141. package/data/craftbook-templates/de/dependency-audit/versions/1.1.2/craftbook.json +153 -0
  142. package/data/craftbook-templates/de/dependency-audit/versions/1.1.2/test.json +111 -0
  143. package/data/craftbook-templates/de/deploy-checklist/versions/1.0.2/craftbook.json +171 -0
  144. package/data/craftbook-templates/de/deploy-checklist/versions/1.0.2/test.json +168 -0
  145. package/data/craftbook-templates/de/design-review/versions/1.0.2/craftbook.json +153 -0
  146. package/data/craftbook-templates/de/design-review/versions/1.0.2/test.json +121 -0
  147. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.4/craftbook.json +443 -0
  148. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.4/test.json +204 -0
  149. package/data/craftbook-templates/di/diagram-from-text/versions/1.0.2/craftbook.json +121 -0
  150. package/data/craftbook-templates/di/diagram-from-text/versions/1.0.2/test.json +100 -0
  151. package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.2/craftbook.json +158 -0
  152. package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.2/test.json +165 -0
  153. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.2/craftbook.json +160 -0
  154. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.2/test.json +107 -0
  155. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.2/craftbook.json +119 -0
  156. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.2/test.json +113 -0
  157. package/data/craftbook-templates/do/dockerize-app/versions/1.0.2/craftbook.json +160 -0
  158. package/data/craftbook-templates/do/dockerize-app/versions/1.0.2/test.json +95 -0
  159. package/data/craftbook-templates/do/docs-site/versions/1.0.2/craftbook.json +155 -0
  160. package/data/craftbook-templates/do/docs-site/versions/1.0.2/test.json +100 -0
  161. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.2/craftbook.json +165 -0
  162. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.2/test.json +135 -0
  163. package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.2/craftbook.json +152 -0
  164. package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.2/test.json +107 -0
  165. package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.2/craftbook.json +158 -0
  166. package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.2/test.json +113 -0
  167. package/data/craftbook-templates/eb/ebook-compile/versions/1.0.2/craftbook.json +155 -0
  168. package/data/craftbook-templates/eb/ebook-compile/versions/1.0.2/test.json +100 -0
  169. package/data/craftbook-templates/ed/edit-notes/versions/1.0.2/craftbook.json +188 -0
  170. package/data/craftbook-templates/ed/edit-notes/versions/1.0.2/test.json +149 -0
  171. package/data/craftbook-templates/em/email-sequence/versions/1.0.2/craftbook.json +154 -0
  172. package/data/craftbook-templates/em/email-sequence/versions/1.0.2/test.json +100 -0
  173. package/data/craftbook-templates/em/email-template/versions/1.0.2/craftbook.json +155 -0
  174. package/data/craftbook-templates/em/email-template/versions/1.0.2/test.json +100 -0
  175. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.4/craftbook.json +415 -0
  176. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.4/test.json +194 -0
  177. package/data/craftbook-templates/ep/episode-plan/versions/1.0.2/craftbook.json +152 -0
  178. package/data/craftbook-templates/ep/episode-plan/versions/1.0.2/test.json +100 -0
  179. package/data/craftbook-templates/es/escalation-playbook/versions/1.0.2/craftbook.json +119 -0
  180. package/data/craftbook-templates/es/escalation-playbook/versions/1.0.2/test.json +113 -0
  181. package/data/craftbook-templates/ev/evidence-brief/versions/1.0.2/craftbook.json +158 -0
  182. package/data/craftbook-templates/ev/evidence-brief/versions/1.0.2/test.json +113 -0
  183. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.4/craftbook.json +445 -0
  184. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.4/test.json +139 -0
  185. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.2/craftbook.json +152 -0
  186. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.2/test.json +107 -0
  187. package/data/craftbook-templates/fa/fact-check/versions/1.0.2/craftbook.json +158 -0
  188. package/data/craftbook-templates/fa/fact-check/versions/1.0.2/test.json +113 -0
  189. package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.2/craftbook.json +86 -0
  190. package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.2/test.json +111 -0
  191. package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.2/craftbook.json +119 -0
  192. package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.2/test.json +113 -0
  193. package/data/craftbook-templates/fa/favicon-set/versions/1.0.2/craftbook.json +158 -0
  194. package/data/craftbook-templates/fa/favicon-set/versions/1.0.2/test.json +106 -0
  195. package/data/craftbook-templates/fe/feature-flag-release/versions/1.0.2/craftbook.json +171 -0
  196. package/data/craftbook-templates/fe/feature-flag-release/versions/1.0.2/test.json +165 -0
  197. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.0.2/craftbook.json +160 -0
  198. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.0.2/test.json +165 -0
  199. package/data/craftbook-templates/fe/feedback-widget/versions/1.0.2/craftbook.json +155 -0
  200. package/data/craftbook-templates/fe/feedback-widget/versions/1.0.2/test.json +100 -0
  201. package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.2/craftbook.json +115 -0
  202. package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.2/test.json +106 -0
  203. package/data/craftbook-templates/fo/forecast-model/versions/1.0.2/craftbook.json +117 -0
  204. package/data/craftbook-templates/fo/forecast-model/versions/1.0.2/test.json +107 -0
  205. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.2/craftbook.json +160 -0
  206. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.2/test.json +165 -0
  207. package/data/craftbook-templates/fo/form-wizard/versions/1.0.2/craftbook.json +122 -0
  208. package/data/craftbook-templates/fo/form-wizard/versions/1.0.2/test.json +113 -0
  209. package/data/craftbook-templates/ga/game-with-screens/versions/1.0.2/craftbook.json +180 -0
  210. package/data/craftbook-templates/ga/game-with-screens/versions/1.0.2/test.json +102 -0
  211. package/data/craftbook-templates/gl/glossary-build/versions/1.0.2/craftbook.json +152 -0
  212. package/data/craftbook-templates/gl/glossary-build/versions/1.0.2/test.json +113 -0
  213. package/data/craftbook-templates/gr/graphql-api/versions/1.0.3/craftbook.json +158 -0
  214. package/data/craftbook-templates/gr/graphql-api/versions/1.0.3/test.json +95 -0
  215. package/data/craftbook-templates/gr/grpc-service/versions/1.0.2/craftbook.json +159 -0
  216. package/data/craftbook-templates/gr/grpc-service/versions/1.0.2/test.json +95 -0
  217. package/data/craftbook-templates/ha/handbook-section/versions/1.0.2/craftbook.json +157 -0
  218. package/data/craftbook-templates/ha/handbook-section/versions/1.0.2/test.json +113 -0
  219. package/data/craftbook-templates/he/hero-image/versions/1.0.2/craftbook.json +166 -0
  220. package/data/craftbook-templates/he/hero-image/versions/1.0.2/test.json +106 -0
  221. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.2/craftbook.json +214 -0
  222. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.2/test.json +131 -0
  223. package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.2/craftbook.json +194 -0
  224. package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.2/test.json +95 -0
  225. package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.2/craftbook.json +162 -0
  226. package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.2/test.json +102 -0
  227. package/data/craftbook-templates/ic/icon-pack/versions/1.0.2/craftbook.json +158 -0
  228. package/data/craftbook-templates/ic/icon-pack/versions/1.0.2/test.json +106 -0
  229. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.4/craftbook.json +409 -0
  230. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.4/test.json +144 -0
  231. package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.2/craftbook.json +162 -0
  232. package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.2/test.json +102 -0
  233. package/data/craftbook-templates/im/image-batch-edit/versions/1.0.2/craftbook.json +153 -0
  234. package/data/craftbook-templates/im/image-batch-edit/versions/1.0.2/test.json +106 -0
  235. package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.2/craftbook.json +152 -0
  236. package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.2/test.json +106 -0
  237. package/data/craftbook-templates/im/image-palette-extract/versions/1.0.2/craftbook.json +121 -0
  238. package/data/craftbook-templates/im/image-palette-extract/versions/1.0.2/test.json +100 -0
  239. package/data/craftbook-templates/im/image-seo-rename/versions/1.0.2/craftbook.json +117 -0
  240. package/data/craftbook-templates/im/image-seo-rename/versions/1.0.2/test.json +106 -0
  241. package/data/craftbook-templates/in/inbox-triage/versions/1.0.2/craftbook.json +152 -0
  242. package/data/craftbook-templates/in/inbox-triage/versions/1.0.2/test.json +107 -0
  243. package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.2/craftbook.json +119 -0
  244. package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.2/test.json +113 -0
  245. package/data/craftbook-templates/in/incident-postmortem/versions/1.0.2/craftbook.json +170 -0
  246. package/data/craftbook-templates/in/incident-postmortem/versions/1.0.2/test.json +112 -0
  247. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.2/craftbook.json +165 -0
  248. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.2/test.json +124 -0
  249. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.2/craftbook.json +155 -0
  250. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.2/test.json +102 -0
  251. package/data/craftbook-templates/in/investigate-root-cause/versions/1.0.2/craftbook.json +153 -0
  252. package/data/craftbook-templates/in/investigate-root-cause/versions/1.0.2/test.json +113 -0
  253. package/data/craftbook-templates/in/invitation-design/versions/1.0.2/craftbook.json +140 -0
  254. package/data/craftbook-templates/in/invitation-design/versions/1.0.2/test.json +124 -0
  255. package/data/craftbook-templates/in/invoice-generator/versions/1.0.2/craftbook.json +122 -0
  256. package/data/craftbook-templates/in/invoice-generator/versions/1.0.2/test.json +100 -0
  257. package/data/craftbook-templates/in/invoice-run/versions/1.1.2/craftbook.json +211 -0
  258. package/data/craftbook-templates/in/invoice-run/versions/1.1.2/test.json +143 -0
  259. package/data/craftbook-templates/index.json +1 -1
  260. package/data/craftbook-templates/it/item-intake/versions/1.0.2/craftbook.json +152 -0
  261. package/data/craftbook-templates/it/item-intake/versions/1.0.2/test.json +148 -0
  262. package/data/craftbook-templates/ju/juice-pass/versions/1.0.2/craftbook.json +128 -0
  263. package/data/craftbook-templates/ju/juice-pass/versions/1.0.2/test.json +119 -0
  264. package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.2/craftbook.json +155 -0
  265. package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.2/test.json +113 -0
  266. package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.2/craftbook.json +160 -0
  267. package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.2/test.json +100 -0
  268. package/data/craftbook-templates/la/landing-copy/versions/1.0.2/craftbook.json +155 -0
  269. package/data/craftbook-templates/la/landing-copy/versions/1.0.2/test.json +113 -0
  270. package/data/craftbook-templates/la/landing-page/versions/1.0.2/craftbook.json +196 -0
  271. package/data/craftbook-templates/la/landing-page/versions/1.0.2/test.json +100 -0
  272. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.2/craftbook.json +152 -0
  273. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.2/test.json +107 -0
  274. package/data/craftbook-templates/li/library-package/versions/1.0.2/craftbook.json +159 -0
  275. package/data/craftbook-templates/li/library-package/versions/1.0.2/test.json +95 -0
  276. package/data/craftbook-templates/li/literature-review/versions/1.0.2/craftbook.json +158 -0
  277. package/data/craftbook-templates/li/literature-review/versions/1.0.2/test.json +113 -0
  278. package/data/craftbook-templates/li/live-browser-qa/versions/1.0.2/craftbook.json +153 -0
  279. package/data/craftbook-templates/li/live-browser-qa/versions/1.0.2/test.json +165 -0
  280. package/data/craftbook-templates/lo/localize-content/versions/1.0.2/craftbook.json +155 -0
  281. package/data/craftbook-templates/lo/localize-content/versions/1.0.2/test.json +113 -0
  282. package/data/craftbook-templates/lo/logo-set/versions/1.0.2/craftbook.json +158 -0
  283. package/data/craftbook-templates/lo/logo-set/versions/1.0.2/test.json +106 -0
  284. package/data/craftbook-templates/ma/market-scan/versions/1.0.2/craftbook.json +158 -0
  285. package/data/craftbook-templates/ma/market-scan/versions/1.0.2/test.json +213 -0
  286. package/data/craftbook-templates/me/meeting-minutes/versions/1.0.2/craftbook.json +120 -0
  287. package/data/craftbook-templates/me/meeting-minutes/versions/1.0.2/test.json +113 -0
  288. package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.2/craftbook.json +119 -0
  289. package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.2/test.json +113 -0
  290. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.2/craftbook.json +119 -0
  291. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.2/test.json +187 -0
  292. package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.2/craftbook.json +121 -0
  293. package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.2/test.json +106 -0
  294. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.2/craftbook.json +127 -0
  295. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.2/test.json +115 -0
  296. package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.2/craftbook.json +159 -0
  297. package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.2/test.json +95 -0
  298. package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.2/craftbook.json +129 -0
  299. package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.2/test.json +102 -0
  300. package/data/craftbook-templates/mo/mock-interview/versions/1.0.2/craftbook.json +151 -0
  301. package/data/craftbook-templates/mo/mock-interview/versions/1.0.2/test.json +113 -0
  302. package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.2/craftbook.json +168 -0
  303. package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.2/test.json +136 -0
  304. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.2/craftbook.json +170 -0
  305. package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.2/test.json +200 -0
  306. package/data/craftbook-templates/mo/month-close/versions/1.0.2/craftbook.json +152 -0
  307. package/data/craftbook-templates/mo/month-close/versions/1.0.2/test.json +100 -0
  308. package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.2/craftbook.json +152 -0
  309. package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.2/test.json +120 -0
  310. package/data/craftbook-templates/mo/moodboard/versions/1.0.2/craftbook.json +121 -0
  311. package/data/craftbook-templates/mo/moodboard/versions/1.0.2/test.json +106 -0
  312. package/data/craftbook-templates/mo/morning-brief/versions/1.0.2/craftbook.json +119 -0
  313. package/data/craftbook-templates/mo/morning-brief/versions/1.0.2/test.json +228 -0
  314. package/data/craftbook-templates/mo/morning-report/versions/1.0.2/craftbook.json +164 -0
  315. package/data/craftbook-templates/mo/morning-report/versions/1.0.2/test.json +253 -0
  316. package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.2/craftbook.json +113 -0
  317. package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.2/test.json +106 -0
  318. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.2/craftbook.json +193 -0
  319. package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.2/test.json +89 -0
  320. package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.2/craftbook.json +155 -0
  321. package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.2/test.json +113 -0
  322. package/data/craftbook-templates/no/notification-router/versions/1.0.2/craftbook.json +170 -0
  323. package/data/craftbook-templates/no/notification-router/versions/1.0.2/test.json +165 -0
  324. package/data/craftbook-templates/oc/ocr-extract/versions/1.0.2/craftbook.json +149 -0
  325. package/data/craftbook-templates/oc/ocr-extract/versions/1.0.2/test.json +106 -0
  326. package/data/craftbook-templates/of/offer-compare/versions/1.0.2/craftbook.json +118 -0
  327. package/data/craftbook-templates/of/offer-compare/versions/1.0.2/test.json +113 -0
  328. package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.2/craftbook.json +119 -0
  329. package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.2/test.json +113 -0
  330. package/data/craftbook-templates/on/onboarding-flow/versions/1.0.2/craftbook.json +155 -0
  331. package/data/craftbook-templates/on/onboarding-flow/versions/1.0.2/test.json +100 -0
  332. package/data/craftbook-templates/on/oncall-handoff/versions/1.0.2/craftbook.json +119 -0
  333. package/data/craftbook-templates/on/oncall-handoff/versions/1.0.2/test.json +113 -0
  334. package/data/craftbook-templates/on/one-pager/versions/1.0.2/craftbook.json +155 -0
  335. package/data/craftbook-templates/on/one-pager/versions/1.0.2/test.json +113 -0
  336. package/data/craftbook-templates/op/ops-runbook/versions/1.0.2/craftbook.json +124 -0
  337. package/data/craftbook-templates/op/ops-runbook/versions/1.0.2/test.json +107 -0
  338. package/data/craftbook-templates/pa/page-spread/versions/1.0.2/craftbook.json +94 -0
  339. package/data/craftbook-templates/pa/page-spread/versions/1.0.2/test.json +135 -0
  340. package/data/craftbook-templates/pa/parser-grammar/versions/1.0.2/craftbook.json +159 -0
  341. package/data/craftbook-templates/pa/parser-grammar/versions/1.0.2/test.json +95 -0
  342. package/data/craftbook-templates/pe/perf-audit/versions/1.0.2/craftbook.json +153 -0
  343. package/data/craftbook-templates/pe/perf-audit/versions/1.0.2/test.json +165 -0
  344. package/data/craftbook-templates/pe/perf-optimization/versions/1.0.2/craftbook.json +160 -0
  345. package/data/craftbook-templates/pe/perf-optimization/versions/1.0.2/test.json +95 -0
  346. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.2/craftbook.json +152 -0
  347. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.2/test.json +125 -0
  348. package/data/craftbook-templates/ph/photo-cull/versions/1.0.2/craftbook.json +152 -0
  349. package/data/craftbook-templates/ph/photo-cull/versions/1.0.2/test.json +106 -0
  350. package/data/craftbook-templates/ph/physics-toy/versions/1.0.2/craftbook.json +122 -0
  351. package/data/craftbook-templates/ph/physics-toy/versions/1.0.2/test.json +102 -0
  352. package/data/craftbook-templates/pi/pitch-deck/versions/1.0.2/craftbook.json +153 -0
  353. package/data/craftbook-templates/pi/pitch-deck/versions/1.0.2/test.json +100 -0
  354. package/data/craftbook-templates/pl/playtest-report/versions/1.0.2/craftbook.json +152 -0
  355. package/data/craftbook-templates/pl/playtest-report/versions/1.0.2/test.json +114 -0
  356. package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.2/craftbook.json +152 -0
  357. package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.2/test.json +106 -0
  358. package/data/craftbook-templates/po/portfolio-site/versions/1.0.2/craftbook.json +163 -0
  359. package/data/craftbook-templates/po/portfolio-site/versions/1.0.2/test.json +100 -0
  360. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.3/craftbook.json +9 -8
  361. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.4/craftbook.json +397 -0
  362. package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.4/test.json +242 -0
  363. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.2/craftbook.json +153 -0
  364. package/data/craftbook-templates/pr/pr-security-review/versions/1.0.2/test.json +113 -0
  365. package/data/craftbook-templates/pr/practice-exam/versions/1.0.2/craftbook.json +171 -0
  366. package/data/craftbook-templates/pr/practice-exam/versions/1.0.2/test.json +120 -0
  367. package/data/craftbook-templates/pr/practice-session/versions/1.0.2/craftbook.json +127 -0
  368. package/data/craftbook-templates/pr/practice-session/versions/1.0.2/test.json +117 -0
  369. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.2/craftbook.json +152 -0
  370. package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.2/test.json +100 -0
  371. package/data/craftbook-templates/pr/press-release/versions/1.0.2/craftbook.json +155 -0
  372. package/data/craftbook-templates/pr/press-release/versions/1.0.2/test.json +359 -0
  373. package/data/craftbook-templates/pr/price-tracker/versions/1.0.2/craftbook.json +121 -0
  374. package/data/craftbook-templates/pr/price-tracker/versions/1.0.2/test.json +153 -0
  375. package/data/craftbook-templates/pr/pricing-page/versions/1.0.2/craftbook.json +196 -0
  376. package/data/craftbook-templates/pr/pricing-page/versions/1.0.2/test.json +100 -0
  377. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.2/craftbook.json +117 -0
  378. package/data/craftbook-templates/pr/product-descriptions/versions/1.0.2/test.json +113 -0
  379. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.2/craftbook.json +155 -0
  380. package/data/craftbook-templates/pr/proposal-sow/versions/1.0.2/test.json +113 -0
  381. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.1/craftbook.json +273 -0
  382. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.1/test.json +141 -0
  383. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.2/craftbook.json +279 -0
  384. package/data/craftbook-templates/pu/pull-request-review/versions/1.7.2/test.json +144 -0
  385. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.2/craftbook.json +133 -0
  386. package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.2/test.json +126 -0
  387. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.2/craftbook.json +167 -0
  388. package/data/craftbook-templates/pw/pwa-offline/versions/1.0.2/test.json +100 -0
  389. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.2/craftbook.json +152 -0
  390. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.2/test.json +116 -0
  391. package/data/craftbook-templates/re/reading-list/versions/1.0.2/craftbook.json +119 -0
  392. package/data/craftbook-templates/re/reading-list/versions/1.0.2/test.json +113 -0
  393. package/data/craftbook-templates/re/receipt-intake/versions/1.0.2/craftbook.json +152 -0
  394. package/data/craftbook-templates/re/receipt-intake/versions/1.0.2/test.json +152 -0
  395. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.2/craftbook.json +152 -0
  396. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.2/test.json +107 -0
  397. package/data/craftbook-templates/re/reception-report/versions/1.0.1/craftbook.json +177 -0
  398. package/data/craftbook-templates/re/reception-report/versions/1.0.1/test.json +169 -0
  399. package/data/craftbook-templates/re/recipe-capture/versions/1.0.2/craftbook.json +152 -0
  400. package/data/craftbook-templates/re/recipe-capture/versions/1.0.2/test.json +131 -0
  401. package/data/craftbook-templates/re/record-a-relative/versions/1.0.2/craftbook.json +127 -0
  402. package/data/craftbook-templates/re/record-a-relative/versions/1.0.2/test.json +113 -0
  403. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.2/craftbook.json +160 -0
  404. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.2/test.json +107 -0
  405. package/data/craftbook-templates/re/refactor-module/versions/1.0.3/craftbook.json +160 -0
  406. package/data/craftbook-templates/re/refactor-module/versions/1.0.3/test.json +95 -0
  407. package/data/craftbook-templates/re/regex-builder/versions/1.0.2/craftbook.json +159 -0
  408. package/data/craftbook-templates/re/regex-builder/versions/1.0.2/test.json +95 -0
  409. package/data/craftbook-templates/re/release-announcement/versions/1.0.2/craftbook.json +171 -0
  410. package/data/craftbook-templates/re/release-announcement/versions/1.0.2/test.json +205 -0
  411. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.2/craftbook.json +226 -0
  412. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.2/test.json +141 -0
  413. package/data/craftbook-templates/re/release-notes/versions/1.0.2/craftbook.json +171 -0
  414. package/data/craftbook-templates/re/release-notes/versions/1.0.2/test.json +114 -0
  415. package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.2/craftbook.json +159 -0
  416. package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.2/test.json +165 -0
  417. package/data/craftbook-templates/re/release-readiness-review/versions/1.0.2/craftbook.json +153 -0
  418. package/data/craftbook-templates/re/release-readiness-review/versions/1.0.2/test.json +113 -0
  419. package/data/craftbook-templates/re/reliability-review/versions/1.0.2/craftbook.json +165 -0
  420. package/data/craftbook-templates/re/reliability-review/versions/1.0.2/test.json +115 -0
  421. package/data/craftbook-templates/re/report-pdf/versions/1.1.2/craftbook.json +185 -0
  422. package/data/craftbook-templates/re/report-pdf/versions/1.1.2/test.json +101 -0
  423. package/data/craftbook-templates/re/research-report/versions/1.0.2/craftbook.json +158 -0
  424. package/data/craftbook-templates/re/research-report/versions/1.0.2/test.json +113 -0
  425. package/data/craftbook-templates/re/research-to-document/versions/1.2.2/craftbook.json +228 -0
  426. package/data/craftbook-templates/re/research-to-document/versions/1.2.2/test.json +243 -0
  427. package/data/craftbook-templates/re/rest-api/versions/1.0.3/craftbook.json +159 -0
  428. package/data/craftbook-templates/re/rest-api/versions/1.0.3/test.json +390 -0
  429. package/data/craftbook-templates/re/resume-cv/versions/1.0.2/craftbook.json +155 -0
  430. package/data/craftbook-templates/re/resume-cv/versions/1.0.2/test.json +100 -0
  431. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.2/craftbook.json +171 -0
  432. package/data/craftbook-templates/ro/rollback-plan/versions/1.0.2/test.json +165 -0
  433. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.4/craftbook.json +425 -0
  434. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.4/test.json +157 -0
  435. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.3/craftbook.json +179 -0
  436. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.3/test.json +140 -0
  437. package/data/craftbook-templates/ru/runbook/versions/1.0.2/craftbook.json +157 -0
  438. package/data/craftbook-templates/ru/runbook/versions/1.0.2/test.json +121 -0
  439. package/data/craftbook-templates/sc/schema-migration/versions/1.0.2/craftbook.json +156 -0
  440. package/data/craftbook-templates/sc/schema-migration/versions/1.0.2/test.json +106 -0
  441. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.3/craftbook.json +152 -0
  442. package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.3/test.json +165 -0
  443. package/data/craftbook-templates/sc/script-automation/versions/1.0.2/craftbook.json +160 -0
  444. package/data/craftbook-templates/sc/script-automation/versions/1.0.2/test.json +165 -0
  445. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.3/craftbook.json +159 -0
  446. package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.3/test.json +93 -0
  447. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.2/craftbook.json +152 -0
  448. package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.2/test.json +113 -0
  449. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.4/craftbook.json +452 -0
  450. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.4/test.json +157 -0
  451. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.2/craftbook.json +117 -0
  452. package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.2/test.json +100 -0
  453. package/data/craftbook-templates/so/social-digest/versions/1.0.1/craftbook.json +140 -0
  454. package/data/craftbook-templates/so/social-digest/versions/1.0.1/test.json +169 -0
  455. package/data/craftbook-templates/so/social-thread/versions/1.0.2/craftbook.json +119 -0
  456. package/data/craftbook-templates/so/social-thread/versions/1.0.2/test.json +113 -0
  457. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.2/craftbook.json +152 -0
  458. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.2/test.json +161 -0
  459. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.2/craftbook.json +155 -0
  460. package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.2/test.json +100 -0
  461. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.4/craftbook.json +448 -0
  462. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.4/test.json +165 -0
  463. package/data/craftbook-templates/sp/spec-doc/versions/1.0.2/craftbook.json +155 -0
  464. package/data/craftbook-templates/sp/spec-doc/versions/1.0.2/test.json +107 -0
  465. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.2/craftbook.json +121 -0
  466. package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.2/test.json +163 -0
  467. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.2/craftbook.json +149 -0
  468. package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.2/test.json +106 -0
  469. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.2/craftbook.json +121 -0
  470. package/data/craftbook-templates/sq/sql-analysis/versions/1.0.2/test.json +107 -0
  471. package/data/craftbook-templates/st/standup-summary/versions/1.0.2/craftbook.json +119 -0
  472. package/data/craftbook-templates/st/standup-summary/versions/1.0.2/test.json +113 -0
  473. package/data/craftbook-templates/st/state-machine/versions/1.0.2/craftbook.json +159 -0
  474. package/data/craftbook-templates/st/state-machine/versions/1.0.2/test.json +95 -0
  475. package/data/craftbook-templates/st/status-report/versions/1.0.2/craftbook.json +158 -0
  476. package/data/craftbook-templates/st/status-report/versions/1.0.2/test.json +113 -0
  477. package/data/craftbook-templates/su/subscription-audit/versions/1.0.2/craftbook.json +152 -0
  478. package/data/craftbook-templates/su/subscription-audit/versions/1.0.2/test.json +107 -0
  479. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.2/craftbook.json +140 -0
  480. package/data/craftbook-templates/su/subtitle-generator/versions/1.0.2/test.json +106 -0
  481. package/data/craftbook-templates/su/summarize-long/versions/1.0.2/craftbook.json +119 -0
  482. package/data/craftbook-templates/su/summarize-long/versions/1.0.2/test.json +113 -0
  483. package/data/craftbook-templates/su/survey-analysis/versions/1.0.2/craftbook.json +153 -0
  484. package/data/craftbook-templates/su/survey-analysis/versions/1.0.2/test.json +107 -0
  485. package/data/craftbook-templates/sv/svg-animation/versions/1.0.2/craftbook.json +122 -0
  486. package/data/craftbook-templates/sv/svg-animation/versions/1.0.2/test.json +100 -0
  487. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.2/craftbook.json +126 -0
  488. package/data/craftbook-templates/ta/tailor-resume/versions/1.0.2/test.json +100 -0
  489. package/data/craftbook-templates/te/technical-documentation/versions/2.0.4/craftbook.json +420 -0
  490. package/data/craftbook-templates/te/technical-documentation/versions/2.0.4/test.json +177 -0
  491. package/data/craftbook-templates/te/test-coverage-review/versions/1.1.2/craftbook.json +153 -0
  492. package/data/craftbook-templates/te/test-coverage-review/versions/1.1.2/test.json +116 -0
  493. package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.2/craftbook.json +132 -0
  494. package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.2/test.json +95 -0
  495. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.2/craftbook.json +155 -0
  496. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.2/test.json +144 -0
  497. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.2/craftbook.json +155 -0
  498. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.2/test.json +145 -0
  499. package/data/craftbook-templates/th/threat-model/versions/1.0.2/craftbook.json +153 -0
  500. package/data/craftbook-templates/th/threat-model/versions/1.0.2/test.json +113 -0
  501. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.2/craftbook.json +115 -0
  502. package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.2/test.json +106 -0
  503. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.2/craftbook.json +172 -0
  504. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.2/test.json +162 -0
  505. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.2/craftbook.json +119 -0
  506. package/data/craftbook-templates/to/tone-rewrite/versions/1.0.2/test.json +113 -0
  507. package/data/craftbook-templates/to/topic-explainer/versions/1.0.2/craftbook.json +152 -0
  508. package/data/craftbook-templates/to/topic-explainer/versions/1.0.2/test.json +113 -0
  509. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.2/craftbook.json +127 -0
  510. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.2/test.json +101 -0
  511. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.2/craftbook.json +119 -0
  512. package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.2/test.json +106 -0
  513. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.2/craftbook.json +183 -0
  514. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.2/test.json +154 -0
  515. package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.2/craftbook.json +160 -0
  516. package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.2/test.json +95 -0
  517. package/data/craftbook-templates/ve/version-bump/versions/1.0.2/craftbook.json +167 -0
  518. package/data/craftbook-templates/ve/version-bump/versions/1.0.2/test.json +95 -0
  519. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.2/craftbook.json +121 -0
  520. package/data/craftbook-templates/vi/video-storyboard/versions/1.0.2/test.json +106 -0
  521. package/data/craftbook-templates/vi/visit-prep/versions/1.0.2/craftbook.json +152 -0
  522. package/data/craftbook-templates/vi/visit-prep/versions/1.0.2/test.json +100 -0
  523. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.2/craftbook.json +119 -0
  524. package/data/craftbook-templates/vo/voiceover-script/versions/1.0.2/test.json +106 -0
  525. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.2/craftbook.json +166 -0
  526. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.2/test.json +127 -0
  527. package/data/craftbook-templates/we/web-app-crud/versions/1.0.2/craftbook.json +155 -0
  528. package/data/craftbook-templates/we/web-app-crud/versions/1.0.2/test.json +100 -0
  529. package/data/craftbook-templates/we/web-component/versions/1.0.2/craftbook.json +122 -0
  530. package/data/craftbook-templates/we/web-component/versions/1.0.2/test.json +100 -0
  531. package/data/craftbook-templates/we/webhook-handler/versions/1.0.2/craftbook.json +159 -0
  532. package/data/craftbook-templates/we/webhook-handler/versions/1.0.2/test.json +165 -0
  533. package/data/craftbook-templates/we/week-plan/versions/1.0.2/craftbook.json +152 -0
  534. package/data/craftbook-templates/we/week-plan/versions/1.0.2/test.json +258 -0
  535. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.2/craftbook.json +152 -0
  536. package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.2/test.json +100 -0
  537. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.2/craftbook.json +118 -0
  538. package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.2/test.json +107 -0
  539. package/data/craftbook-templates/we/weekly-review/versions/1.0.2/craftbook.json +119 -0
  540. package/data/craftbook-templates/we/weekly-review/versions/1.0.2/test.json +113 -0
  541. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.2/craftbook.json +152 -0
  542. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.2/test.json +141 -0
  543. package/data/craftbook-templates/wh/whitepaper/versions/1.0.2/craftbook.json +153 -0
  544. package/data/craftbook-templates/wh/whitepaper/versions/1.0.2/test.json +113 -0
  545. package/data/craftbook-templates/ye/year-in-review/versions/1.0.2/craftbook.json +127 -0
  546. package/data/craftbook-templates/ye/year-in-review/versions/1.0.2/test.json +148 -0
  547. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.2/craftbook.json +146 -0
  548. package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.2/test.json +106 -0
  549. package/package.json +1 -1
  550. package/schemas/craftbook-doc.schema.json +4 -2
  551. package/schemas/craftbook-template-version.schema.json +4 -2
@@ -0,0 +1,152 @@
1
+ {
2
+ "id": "subscription-audit",
3
+ "name": "Audit Recurring Subscriptions",
4
+ "description": "Audit a set of transactions or a vendor list to find every recurring subscription, normalize each to a monthly cost, surface duplicates, price hikes, and zombie/unused services, and produce a prioritized cancel/keep recommendation report. Locks the recurrence-detection rule, the normalization (to monthly), and the recommendation criteria FIRST, then detects and analyzes the recurring charges, then writes a clear report whose every recommendation is backed by the evidence in the data. Defining what counts as 'recurring' and how to rank cancel candidates before analyzing is what makes the audit actionable rather than a list of guesses.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Scope the audit (data-analyst) — recurrence rule, monthly normalization, recommendation criteria → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Detect and analyze (data-analyst) — find recurring charges, normalize, flag, rank → gated on artifact `{{workPath}}/analyze.md` (markdown-notes)\n3. Write the report (copywriter) — evidence-backed cancel/keep recommendation report → gated on artifact `{{workPath}}/report.md` (markdown-report)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "scope",
6
+ "triggers": [
7
+ "audit my subscriptions",
8
+ "find recurring charges",
9
+ "cancel unused subscriptions",
10
+ "subscription spend report",
11
+ "where is my money going"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "scope",
16
+ "name": "Scope the audit",
17
+ "description": "recurrence rule, monthly normalization, recommendation criteria",
18
+ "prompt": "Define the audit method before analyzing. Step 1: identify the input (a transactions file, or a list of services with amount + cadence) and its columns. Step 2: define the recurrence-detection rule — what makes a charge a subscription (same/near merchant recurring at a regular interval: monthly/quarterly/annual, within an amount tolerance). Step 3: define normalization to a comparable monthly cost (annual ÷ 12, quarterly ÷ 3) so everything is apples-to-apples, and the total monthly and annual run-rate. Step 4: define the flags and recommendation criteria — duplicate/overlapping services, a price increase vs the prior occurrence, and 'zombie' candidates (high cost and/or low apparent usage) — and how to rank cancel candidates (e.g. by annual cost × redundancy). Step 5: write an acceptance-criteria checklist ('every recurring charge detected and listed', 'each normalized to monthly correctly', 'duplicates and price hikes flagged with evidence', 'a ranked cancel/keep recommendation per subscription', 'monthly and annual totals reported', 'no recommendation without supporting data'). Call write_task_note with the rule + normalization + criteria + checklist and write {{workPath}}/scope.md. No analysis yet.\n\nThe deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
19
+ "suggestedRole": "data-analyst",
20
+ "advanceWhen": {
21
+ "file": "{{workPath}}/scope.md",
22
+ "minBytes": 1,
23
+ "sniff": "nonempty",
24
+ "artifact": true
25
+ },
26
+ "gate": {
27
+ "at": "completion",
28
+ "checks": [
29
+ {
30
+ "kind": "minBytes",
31
+ "file": "{{workPath}}/scope.md",
32
+ "bytes": 120,
33
+ "artifact": true
34
+ },
35
+ {
36
+ "kind": "sniff",
37
+ "file": "{{workPath}}/scope.md",
38
+ "sniff": "nonempty",
39
+ "artifact": true
40
+ }
41
+ ],
42
+ "onReject": "scope",
43
+ "maxAttempts": 3
44
+ },
45
+ "next": "analyze"
46
+ },
47
+ {
48
+ "id": "analyze",
49
+ "name": "Detect and analyze",
50
+ "description": "find recurring charges, normalize, flag, rank",
51
+ "prompt": "Analyze the input to the locked rule. Step 1: group transactions by normalized merchant and detect recurring series matching the cadence + amount-tolerance rule. Step 2: for each detected subscription, record name, cadence, last amount, normalized monthly cost, and first/last seen. Step 3: compute flags from the evidence — duplicates/overlaps (two services in the same category), price increases (this amount > prior occurrence), and zombie candidates per the criteria. Step 4: rank cancel candidates by the agreed scoring and compute the total monthly and annual run-rate plus the potential savings if the cancel candidates are dropped. Step 5: write the structured findings (the per-subscription table + totals + flags) to a notes file so the report phase has clean inputs. Call write_task_note with the subscription count, the monthly/annual totals, and the top cancel candidates.\n\nThe deliverable `{{workPath}}/analyze.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
52
+ "suggestedRole": "data-analyst",
53
+ "advanceWhen": {
54
+ "file": "{{workPath}}/analyze.md",
55
+ "minBytes": 1,
56
+ "sniff": "nonempty",
57
+ "artifact": true
58
+ },
59
+ "gate": {
60
+ "at": "completion",
61
+ "checks": [
62
+ {
63
+ "kind": "minBytes",
64
+ "file": "{{workPath}}/analyze.md",
65
+ "bytes": 120,
66
+ "artifact": true
67
+ },
68
+ {
69
+ "kind": "sniff",
70
+ "file": "{{workPath}}/analyze.md",
71
+ "sniff": "nonempty",
72
+ "artifact": true
73
+ }
74
+ ],
75
+ "onReject": "analyze",
76
+ "maxAttempts": 3
77
+ },
78
+ "next": "report"
79
+ },
80
+ {
81
+ "id": "report",
82
+ "name": "Write the report",
83
+ "description": "evidence-backed cancel/keep recommendation report",
84
+ "prompt": "Write the subscription audit report from the analysis. Step 1: open with a headline summary — total monthly spend, annual run-rate, and the potential savings. Step 2: include a clear table of every detected subscription: name, cadence, monthly-normalized cost, annual cost, and any flags (duplicate, price hike, zombie). Step 3: give a prioritized recommendations section — cancel/keep/review per subscription, ordered by impact, each with a one-line rationale tied to the evidence (cost, redundancy, price change). Step 4: ensure every recommendation traces to a fact in the analysis — no unsupported claims. Step 5: close with the total savings if the recommended cancels are actioned. Write the report as a markdown report with section headers. Call write_task_note with the report path and the headline savings figure.\n\nThe deliverable `{{workPath}}/report.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
85
+ "suggestedRole": "copywriter",
86
+ "advanceWhen": {
87
+ "file": "{{workPath}}/report.md",
88
+ "minBytes": 1,
89
+ "sniff": "nonempty",
90
+ "artifact": true
91
+ },
92
+ "gate": {
93
+ "at": "completion",
94
+ "checks": [
95
+ {
96
+ "kind": "minBytes",
97
+ "file": "{{workPath}}/report.md",
98
+ "bytes": 1500,
99
+ "artifact": true
100
+ },
101
+ {
102
+ "kind": "contains",
103
+ "file": "{{workPath}}/report.md",
104
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
105
+ "flags": "i",
106
+ "label": "at least one markdown heading",
107
+ "artifact": true
108
+ }
109
+ ],
110
+ "onReject": "report",
111
+ "maxAttempts": 4
112
+ },
113
+ "next": "evaluate"
114
+ },
115
+ {
116
+ "id": "evaluate",
117
+ "name": "Evaluate",
118
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
119
+ "prompt": "Open {{workPath}}/report.md (and {{workPath}}/analyze.md) and verify every criterion from {{workPath}}/scope.md: every recurring charge is detected and listed, each is normalized to a monthly cost correctly (re-check 2 conversions), duplicates and price hikes are flagged with evidence, every cancel/keep recommendation is ranked by impact and backed by a fact in the data, and monthly + annual totals plus potential savings are reported. Confirm no recommendation lacks supporting evidence. Write PASS/FAIL per criterion; on any failure, name the gap and loop back to report.\n\nThe deliverable lives in the project's artifacts drawer — open `{{workPath}}/report.md` with `read_artifact`, not `read_file`.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"report\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
120
+ "suggestedRole": "reviewer",
121
+ "consumes": [
122
+ {
123
+ "file": "{{workPath}}/report.md",
124
+ "artifact": true
125
+ }
126
+ ],
127
+ "next": "report"
128
+ },
129
+ {
130
+ "id": "finish",
131
+ "name": "Finish",
132
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
133
+ "prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
134
+ "suggestedRole": "developer",
135
+ "terminal": true
136
+ }
137
+ ],
138
+ "version": "1.0.2",
139
+ "releasedAt": "2026-08-21T00:00:00Z",
140
+ "paramSchema": {
141
+ "type": "object",
142
+ "properties": {
143
+ "workPath": {
144
+ "type": "string",
145
+ "title": "Working folder",
146
+ "description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
147
+ "default": "{{task.dir}}"
148
+ }
149
+ }
150
+ },
151
+ "minGezelVersion": "1.26233"
152
+ }
@@ -0,0 +1,107 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Audit Recurring Subscriptions smoke eval",
4
+ "objective": "Self-contained smoke eval for the Audit Recurring Subscriptions craftbook using the data generic harness.",
5
+ "tags": [
6
+ "data"
7
+ ],
8
+ "prompt": "I dropped our numbers in source/records.csv. Can you look at the data, analyze it, and put togehter some results in analysis.md?",
9
+ "setup": {
10
+ "projectName": "Audit Recurring Subscriptions Eval",
11
+ "about": "Self-contained eval project for subscription-audit. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/analysis.md.",
12
+ "missionObjectives": "Use the Audit Recurring Subscriptions craftbook/template, read the seeded local fixtures, and write analysis.md without network calls, real credentials, or live services.",
13
+ "files": [
14
+ {
15
+ "path": "source/brief.md",
16
+ "content": "# Audit Recurring Subscriptions Eval Brief\n\nClient: Boreal Desk, a home-office accessories company.\nAudience: operations leads who need an artifact they can use this week.\n\nFixed source facts for grounding:\n- The returns desk pilot covered 18 SKUs.\n- Median first response improved from 18 hours to 6 hours.\n- Preventable refund leakage fell from 14.2% to 8.9%.\n- The top unresolved complaint is status silence after photo submission.\n- Required next actions are automated status emails, barcode-exception training, and a weekly Finance exception export.\n\nUse these facts when the task asks for prose, analysis, copy, UI content, or test data. Do not use live web services, real credentials, or current outside data.\n\nCraftbook under test: subscription-audit - Audit Recurring Subscriptions.\n"
17
+ },
18
+ {
19
+ "path": "source/records.csv",
20
+ "content": "customer,region,orders,revenue_usd,churn_risk\nAster,North,12,1440,low\nBoreal,South,8,720,medium\nCedar,West,15,2100,high\nDune,North,5,500,low\n"
21
+ }
22
+ ],
23
+ "worker": {
24
+ "name": "Jules",
25
+ "role": "Data Analyst"
26
+ },
27
+ "craftbookParams": {
28
+ "workPath": "tasks/eval"
29
+ }
30
+ },
31
+ "mocks": [],
32
+ "success": {
33
+ "summary": "analysis.md is a seeded-data analysis with deterministic computed facts.",
34
+ "deliverables": [
35
+ {
36
+ "path": "analysis.md",
37
+ "kind": "markdown-report",
38
+ "minBytes": 900,
39
+ "checks": [
40
+ {
41
+ "kind": "contains",
42
+ "file": "analysis.md",
43
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
44
+ "flags": "i"
45
+ },
46
+ {
47
+ "kind": "contains",
48
+ "file": "analysis.md",
49
+ "pattern": "40\\b",
50
+ "flags": "i",
51
+ "label": "include total orders of 40"
52
+ },
53
+ {
54
+ "kind": "contains",
55
+ "file": "analysis.md",
56
+ "pattern": "\\$?4,?760\\b",
57
+ "flags": "i",
58
+ "label": "include total revenue of 4760"
59
+ },
60
+ {
61
+ "kind": "contains",
62
+ "file": "analysis.md",
63
+ "pattern": "Cedar",
64
+ "flags": "i",
65
+ "label": "identify Cedar as top revenue and high risk"
66
+ },
67
+ {
68
+ "kind": "contains",
69
+ "file": "analysis.md",
70
+ "pattern": "high",
71
+ "flags": "i",
72
+ "label": "include churn-risk finding"
73
+ }
74
+ ]
75
+ }
76
+ ]
77
+ },
78
+ "rubric": {
79
+ "artifact": {
80
+ "path": "analysis.md",
81
+ "kind": "markdown"
82
+ },
83
+ "axes": [
84
+ {
85
+ "name": "accuracy",
86
+ "description": "Computed figures are correct against the seeded records."
87
+ },
88
+ {
89
+ "name": "grounding",
90
+ "description": "Every claim traces to the seeded data — nothing invented."
91
+ },
92
+ {
93
+ "name": "structure",
94
+ "description": "Tables and sections make the analysis checkable at a glance."
95
+ },
96
+ {
97
+ "name": "actionability",
98
+ "description": "Recommendations follow from the findings and are concretely doable."
99
+ }
100
+ ]
101
+ },
102
+ "qualityFocus": [
103
+ "seeded data reading",
104
+ "computed facts",
105
+ "recommendation grounding"
106
+ ]
107
+ }
@@ -0,0 +1,140 @@
1
+ {
2
+ "id": "subtitle-generator",
3
+ "name": "Subtitle & Caption Generator",
4
+ "description": "Generate time-synced subtitles/captions for a video in a standard caption format (SRT or WebVTT), so the video is accessible and watchable without sound. Scopes the caption format and timing/reading-speed rules FIRST, transcribes the audio with precise word timings, then formats those into properly cued, line-length-limited caption cues. The transcribe-then-format split is deliberate: getting accurate text and timings is a different skill from chunking them into readable, on-screen-friendly cues that respect reading speed and never overlap.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Scope the captions (planner) — format (SRT/VTT), timing rules, line limits, language → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Transcribe with timings (developer) — STT the audio into word/segment timestamps → gated on artifact `{{workPath}}/timed-segments.json` (json)\n3. Format the caption file (developer) — chunk timed text into valid SRT/VTT cues → gated on `captions.srt` (generic-file)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "scope",
6
+ "triggers": [
7
+ "generate subtitles",
8
+ "make captions for a video",
9
+ "create an srt file",
10
+ "add closed captions",
11
+ "subtitle this video"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "scope",
16
+ "name": "Scope the captions",
17
+ "description": "format (SRT/VTT), timing rules, line limits, language",
18
+ "prompt": "Lock the caption rules BEFORE generating. Step 1: record the source video (path, duration) and the language. Step 2: pick the format — SRT (`HH:MM:SS,mmm`) or WebVTT (`HH:MM:SS.mmm` with a `WEBVTT` header). Step 3: set readability rules: max ~42 chars per line, max 2 lines per cue, min ~1s and max ~7s per cue, reading speed under ~17 chars/second, and a small gap between cues so none overlap. Step 4: decide how to handle non-speech (e.g. `[music]`, `[applause]`) and speaker IDs if multiple speakers. Write an acceptance-criteria checklist (valid SRT/VTT that a player can load, sequential cue numbering, monotonic non-overlapping timecodes, lines within the char limit, last cue ends near video duration) and decisions to `{{workPath}}/scope.md` via write_task_note AND to the produces path.\n\nThe deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
19
+ "suggestedRole": "planner",
20
+ "advanceWhen": {
21
+ "file": "{{workPath}}/scope.md",
22
+ "minBytes": 1,
23
+ "sniff": "nonempty",
24
+ "artifact": true
25
+ },
26
+ "gate": {
27
+ "at": "completion",
28
+ "checks": [
29
+ {
30
+ "kind": "minBytes",
31
+ "file": "{{workPath}}/scope.md",
32
+ "bytes": 120,
33
+ "artifact": true
34
+ },
35
+ {
36
+ "kind": "sniff",
37
+ "file": "{{workPath}}/scope.md",
38
+ "sniff": "nonempty",
39
+ "artifact": true
40
+ }
41
+ ],
42
+ "onReject": "scope",
43
+ "maxAttempts": 3
44
+ },
45
+ "next": "transcribe"
46
+ },
47
+ {
48
+ "id": "transcribe",
49
+ "name": "Transcribe with timings",
50
+ "description": "STT the audio into word/segment timestamps",
51
+ "prompt": "Produce timed text the formatter can chunk. Step 1: extract/take the audio track and run speech-to-text over the WHOLE recording to get segments with start/end timestamps (word-level if the engine supports it — it makes cue splitting far cleaner). Step 2: keep timestamps monotonic across any chunk boundaries. Step 3: mark non-speech events per the scope rules. Step 4: write the raw timed segments to `{{workPath}}/timed-segments.json` (each: text, start, end) via write_task_note and the produces path so the format phase has structured input, not prose. Do not chunk into final cues yet — that is the next phase. On a loop-back from format, fix timing/coverage gaps here only if the issue is bad source timings.\n\nThe deliverable `{{workPath}}/timed-segments.json` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
52
+ "suggestedRole": "developer",
53
+ "advanceWhen": {
54
+ "file": "{{workPath}}/timed-segments.json",
55
+ "minBytes": 1,
56
+ "sniff": "json-valid",
57
+ "artifact": true
58
+ },
59
+ "gate": {
60
+ "at": "completion",
61
+ "checks": [
62
+ {
63
+ "kind": "minBytes",
64
+ "file": "{{workPath}}/timed-segments.json",
65
+ "bytes": 2,
66
+ "artifact": true
67
+ }
68
+ ],
69
+ "onReject": "transcribe",
70
+ "maxAttempts": 3
71
+ },
72
+ "next": "format"
73
+ },
74
+ {
75
+ "id": "format",
76
+ "name": "Format the caption file",
77
+ "description": "chunk timed text into valid SRT/VTT cues",
78
+ "prompt": "Turn timed segments into a valid caption file. Step 1: emit the format header (none for SRT; `WEBVTT` for VTT). Step 2: walk the timed segments and pack words into cues that respect the scope's char/line/duration/reading-speed limits — split a long segment into multiple cues at natural pauses, splitting timecodes proportionally. Step 3: number cues sequentially (SRT) and write each cue's `start --> end` timecode in the EXACT format, then 1-2 text lines. Step 4: ensure no two cues overlap and the last cue ends at/just before the video duration. Step 5: write `captions.srt` (or `.vtt`) and validate it parses (try loading it, or re-parse the structure). write_task_note the caption path and cue count. On a loop-back, fix only the flagged cues (overlap, over-long lines, bad timecode format).",
79
+ "suggestedRole": "developer",
80
+ "advanceWhen": {
81
+ "file": "captions.srt",
82
+ "minBytes": 1,
83
+ "sniff": "nonempty"
84
+ },
85
+ "gate": {
86
+ "at": "completion",
87
+ "checks": [
88
+ {
89
+ "kind": "minBytes",
90
+ "file": "captions.srt",
91
+ "bytes": 200
92
+ },
93
+ {
94
+ "kind": "sniff",
95
+ "file": "captions.srt",
96
+ "sniff": "nonempty"
97
+ }
98
+ ],
99
+ "onReject": "format",
100
+ "maxAttempts": 4
101
+ },
102
+ "next": "evaluate"
103
+ },
104
+ {
105
+ "id": "evaluate",
106
+ "name": "Evaluate",
107
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
108
+ "prompt": "Validate the caption file like a player would. Step 1: parse it — valid header (VTT), sequential numbering (SRT), and every timecode in the exact `HH:MM:SS,mmm`/`.mmm` format (PASS/FAIL). Step 2: confirm timecodes are monotonic and NO two cues overlap. Step 3: confirm cue durations and line lengths are within the scoped limits (sample several). Step 4: confirm the final cue ends within a small margin of the video duration (no dropped tail). Step 5: spot-check 3 cues against the audio if possible — text and timing align. Write PASS/FAIL per criterion.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"format\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
109
+ "suggestedRole": "reviewer",
110
+ "consumes": [
111
+ {
112
+ "file": "captions.srt"
113
+ }
114
+ ],
115
+ "next": "format"
116
+ },
117
+ {
118
+ "id": "finish",
119
+ "name": "Finish",
120
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
121
+ "prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
122
+ "suggestedRole": "developer",
123
+ "terminal": true
124
+ }
125
+ ],
126
+ "version": "1.0.2",
127
+ "releasedAt": "2026-08-21T00:00:00Z",
128
+ "paramSchema": {
129
+ "type": "object",
130
+ "properties": {
131
+ "workPath": {
132
+ "type": "string",
133
+ "title": "Working folder",
134
+ "description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
135
+ "default": "{{task.dir}}"
136
+ }
137
+ }
138
+ },
139
+ "minGezelVersion": "1.26233"
140
+ }
@@ -0,0 +1,106 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Subtitle & Caption Generator smoke eval",
4
+ "objective": "Self-contained smoke eval for the Subtitle & Caption Generator craftbook using the media generic harness.",
5
+ "tags": [
6
+ "media"
7
+ ],
8
+ "prompt": "Our media files are all listd in source/media-index.csv. Can you put together the production plan for them as media-plan.json?",
9
+ "setup": {
10
+ "projectName": "Subtitle & Caption Generator Eval",
11
+ "about": "Self-contained eval project for subtitle-generator. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/media-plan.json.",
12
+ "missionObjectives": "Use the Subtitle & Caption Generator craftbook/template, read the seeded local fixtures, and write media-plan.json without network calls, real credentials, or live services.",
13
+ "files": [
14
+ {
15
+ "path": "source/brief.md",
16
+ "content": "# Subtitle & Caption Generator Eval Brief\n\nClient: Boreal Desk, a home-office accessories company.\nAudience: operations leads who need an artifact they can use this week.\n\nFixed source facts for grounding:\n- The returns desk pilot covered 18 SKUs.\n- Median first response improved from 18 hours to 6 hours.\n- Preventable refund leakage fell from 14.2% to 8.9%.\n- The top unresolved complaint is status silence after photo submission.\n- Required next actions are automated status emails, barcode-exception training, and a weekly Finance exception export.\n\nUse these facts when the task asks for prose, analysis, copy, UI content, or test data. Do not use live web services, real credentials, or current outside data.\n\nCraftbook under test: subtitle-generator - Subtitle & Caption Generator.\n"
17
+ },
18
+ {
19
+ "path": "source/media-index.csv",
20
+ "content": "filename,type,duration_or_size,notes\npilot-interview.wav,audio,00:02:15,mentions response time and status silence\nreturns-desk.png,image,1600x900,shows intake form and photo evidence step\nlaunch-clip.mp4,video,00:01:05,shows barcode exception handling\n"
21
+ }
22
+ ],
23
+ "worker": {
24
+ "name": "Jules",
25
+ "role": "Producer"
26
+ },
27
+ "craftbookParams": {
28
+ "workPath": "tasks/eval"
29
+ }
30
+ },
31
+ "mocks": [],
32
+ "success": {
33
+ "summary": "media-plan.json is a valid JSON media-production manifest grounded in seeded fixture metadata.",
34
+ "deliverables": [
35
+ {
36
+ "path": "media-plan.json",
37
+ "kind": "json",
38
+ "minBytes": 700,
39
+ "checks": [
40
+ {
41
+ "kind": "sniff",
42
+ "file": "media-plan.json",
43
+ "sniff": "json-valid"
44
+ },
45
+ {
46
+ "kind": "contains",
47
+ "file": "media-plan.json",
48
+ "pattern": "pilot-interview\\.wav|returns-desk\\.png|launch-clip\\.mp4",
49
+ "flags": "i"
50
+ },
51
+ {
52
+ "kind": "contains",
53
+ "file": "media-plan.json",
54
+ "pattern": "outputs|assets|steps|cues|verification",
55
+ "flags": "i"
56
+ },
57
+ {
58
+ "kind": "contains",
59
+ "file": "media-plan.json",
60
+ "pattern": "accessibility|alt|caption|transcript|metadata",
61
+ "flags": "i"
62
+ }
63
+ ]
64
+ }
65
+ ]
66
+ },
67
+ "rubric": {
68
+ "artifact": {
69
+ "path": "media-plan.json",
70
+ "kind": "json"
71
+ },
72
+ "axes": [
73
+ {
74
+ "name": "completeness",
75
+ "description": "The manifest covers sources, outputs, and processing steps end to end."
76
+ },
77
+ {
78
+ "name": "grounding",
79
+ "description": "Only seeded media fixtures are referenced, with faithful metadata."
80
+ },
81
+ {
82
+ "name": "accessibility",
83
+ "description": "Alt text, captions, or transcripts are planned wherever the class requires."
84
+ },
85
+ {
86
+ "name": "precision",
87
+ "description": "Timestamps, crops, and cues are specific enough to execute."
88
+ }
89
+ ]
90
+ },
91
+ "qualityFocus": [
92
+ "media fixture handling",
93
+ "structured manifest",
94
+ "verification metadata"
95
+ ],
96
+ "extensions": {
97
+ "legacySimulators": [
98
+ {
99
+ "id": "subtitle-generator-media-fixtures",
100
+ "kind": "data-source",
101
+ "status": "implemented",
102
+ "description": "Seeded local media index replacing real audio, video, image generation, and external media metadata services."
103
+ }
104
+ ]
105
+ }
106
+ }
@@ -0,0 +1,119 @@
1
+ {
2
+ "id": "summarize-long",
3
+ "name": "Summarize a Long Document",
4
+ "description": "Distill a long document into a faithful, well-structured summary at a chosen depth: it first scopes the audience, the target length and format (TL;DR line, executive summary, or bulleted key points), and what the reader must take away, then writes the summary capturing every major point and decision in proportion, with nothing invented and nothing critical dropped. Covers summarize, TL;DR, executive summary, condense a document, key takeaways, and abstract writing. Scoping audience and depth before summarizing is the point: a small model that knows who it is for and how long it should be avoids both the bloated near-copy and the lossy summary that omits the document's actual conclusion.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Summary scope (planner) — lock audience, depth, format, and required takeaways → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Write the summary (copywriter) — write the faithful summary to the locked depth and format → gated on `summary.md` (markdown-doc)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "scope",
6
+ "triggers": [
7
+ "summarize this document",
8
+ "write a tldr",
9
+ "executive summary",
10
+ "condense this",
11
+ "key takeaways"
12
+ ],
13
+ "steps": [
14
+ {
15
+ "id": "scope",
16
+ "name": "Summary scope",
17
+ "description": "lock audience, depth, format, and required takeaways",
18
+ "prompt": "1) Identify the audience and why they need the summary (decision, briefing, study). 2) Choose the format and depth: a one-line TL;DR, a 3-5 sentence executive summary, a bulleted key-points list, or a layered combination — and set a target length (e.g. <=200 words). 3) Skim the document and list its major sections/arguments and, critically, its main conclusion or recommendation (this MUST appear in the summary). 4) Decide what is in-scope vs droppable detail. Write an acceptance-criteria checklist (e.g. 'captures the document's main conclusion'; 'covers every major point in proportion to its weight'; 'within target length'; 'no claim absent from the source'; 'matches the chosen format'; 'understandable without the original'). Use write_task_note for the scope + section map + checklist, and write the same to the produces path. No summary prose yet.\n\nThe deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
19
+ "suggestedRole": "planner",
20
+ "advanceWhen": {
21
+ "file": "{{workPath}}/scope.md",
22
+ "minBytes": 1,
23
+ "sniff": "nonempty",
24
+ "artifact": true
25
+ },
26
+ "gate": {
27
+ "at": "completion",
28
+ "checks": [
29
+ {
30
+ "kind": "minBytes",
31
+ "file": "{{workPath}}/scope.md",
32
+ "bytes": 120,
33
+ "artifact": true
34
+ },
35
+ {
36
+ "kind": "sniff",
37
+ "file": "{{workPath}}/scope.md",
38
+ "sniff": "nonempty",
39
+ "artifact": true
40
+ }
41
+ ],
42
+ "onReject": "scope",
43
+ "maxAttempts": 3
44
+ },
45
+ "next": "summarize"
46
+ },
47
+ {
48
+ "id": "summarize",
49
+ "name": "Write the summary",
50
+ "description": "write the faithful summary to the locked depth and format",
51
+ "prompt": "Write the summary to the scoped format and length. 1) Lead with the single most important point or conclusion. 2) Cover every major section/argument in proportion to its importance — do not over-weight the intro or skip the conclusion. 3) Write in your own words; do not copy long passages. 4) Include nothing not present in the source — no inference presented as the document's claim. 5) Make it stand alone: a reader who never sees the original should grasp the key content. 6) Output the chosen format in markdown (e.g. a 'TL;DR:' line then an 'Executive summary' paragraph then 'Key points' bullets, as scoped). Save to the produces path and note the final word count.",
52
+ "suggestedRole": "copywriter",
53
+ "advanceWhen": {
54
+ "file": "summary.md",
55
+ "minBytes": 1,
56
+ "sniff": "nonempty"
57
+ },
58
+ "gate": {
59
+ "at": "completion",
60
+ "checks": [
61
+ {
62
+ "kind": "minBytes",
63
+ "file": "summary.md",
64
+ "bytes": 500
65
+ }
66
+ ],
67
+ "scripts": [
68
+ {
69
+ "name": "checkContains",
70
+ "scope": "standard",
71
+ "inputs": {
72
+ "file": "summary.md",
73
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
74
+ "flags": "i"
75
+ }
76
+ }
77
+ ],
78
+ "onReject": "summarize",
79
+ "maxAttempts": 4
80
+ },
81
+ "next": "evaluate"
82
+ },
83
+ {
84
+ "id": "evaluate",
85
+ "name": "Evaluate",
86
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
87
+ "prompt": "Read summary.md against the source and the scope. Check EACH criterion and write PASS/FAIL: (a) the document's main conclusion/recommendation is present; (b) every major point is covered in proportion (no critical section dropped); (c) within the target length; (d) no claim that is absent from or misrepresents the source; (e) matches the chosen format; (f) understandable on its own. A summary that drops the conclusion or invents claims FAILS — loop back to summarize and name the gaps.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"summarize\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
88
+ "suggestedRole": "reviewer",
89
+ "consumes": [
90
+ {
91
+ "file": "summary.md"
92
+ }
93
+ ],
94
+ "next": "summarize"
95
+ },
96
+ {
97
+ "id": "finish",
98
+ "name": "Finish",
99
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
100
+ "prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
101
+ "suggestedRole": "developer",
102
+ "terminal": true
103
+ }
104
+ ],
105
+ "version": "1.0.2",
106
+ "releasedAt": "2026-08-21T00:00:00Z",
107
+ "paramSchema": {
108
+ "type": "object",
109
+ "properties": {
110
+ "workPath": {
111
+ "type": "string",
112
+ "title": "Working folder",
113
+ "description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
114
+ "default": "{{task.dir}}"
115
+ }
116
+ }
117
+ },
118
+ "minGezelVersion": "1.26233"
119
+ }