@bendyline/gilde 0.1.26 → 0.1.28
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.
- package/authoring/chat-models/README.md +5 -0
- package/authoring/chat-models/deepseek-v4-flash-284b-mxfp4.json +4 -0
- package/authoring/chat-models/deepseek-v4-flash-284b-q2.json +4 -0
- package/authoring/chat-models/deepseek-v4-flash-284b-q2q4.json +4 -0
- package/authoring/chat-models/glm-5.2-754b-q2.json +4 -0
- package/authoring/gstack/evals/investigate.json +1 -0
- package/authoring/gstack/evals/plan-ceo-review.json +1 -0
- package/authoring/gstack/wave.json +2 -2
- package/data/chat-models/de/deepseek-v4-flash-284b-mxfp4/manifest.json +4 -0
- package/data/chat-models/de/deepseek-v4-flash-284b-q2/manifest.json +4 -0
- package/data/chat-models/de/deepseek-v4-flash-284b-q2q4/manifest.json +4 -0
- package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +4 -0
- package/data/chat-models/index.json +1 -1
- package/data/craftbook-templates/a1/a11y-audit/versions/1.1.1/craftbook.json +141 -0
- package/data/craftbook-templates/a1/a11y-audit/versions/1.1.1/test.json +115 -0
- package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.1/test.json +186 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/1.0.1/craftbook.json +110 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/ad/ad-variations/versions/1.0.1/craftbook.json +105 -0
- package/data/craftbook-templates/ad/ad-variations/versions/1.0.1/test.json +108 -0
- package/data/craftbook-templates/al/album-curate/versions/1.0.1/craftbook.json +115 -0
- package/data/craftbook-templates/al/album-curate/versions/1.0.1/test.json +147 -0
- package/data/craftbook-templates/al/alert-rules/versions/1.0.1/craftbook.json +101 -0
- package/data/craftbook-templates/al/alert-rules/versions/1.0.1/test.json +145 -0
- package/data/craftbook-templates/al/alt-text-pass/versions/1.0.1/craftbook.json +142 -0
- package/data/craftbook-templates/al/alt-text-pass/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/an/anniversary-cut/versions/1.0.3/craftbook.json +226 -0
- package/data/craftbook-templates/an/anniversary-cut/versions/1.0.3/test.json +157 -0
- package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.1/test.json +102 -0
- package/data/craftbook-templates/an/annual-document-review/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/an/annual-document-review/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/an/anomaly-scan/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/an/anomaly-scan/versions/1.0.1/test.json +120 -0
- package/data/craftbook-templates/ap/api-contract-review/versions/1.1.1/craftbook.json +141 -0
- package/data/craftbook-templates/ap/api-contract-review/versions/1.1.1/test.json +115 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.1/craftbook.json +158 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.1/test.json +136 -0
- package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.1/craftbook.json +129 -0
- package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.1/craftbook.json +123 -0
- package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.3/craftbook.json +210 -0
- package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.3/test.json +221 -0
- package/data/craftbook-templates/au/auth-flow/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/au/auth-flow/versions/1.0.1/test.json +140 -0
- package/data/craftbook-templates/au/automation-recipe/versions/1.0.1/craftbook.json +164 -0
- package/data/craftbook-templates/au/automation-recipe/versions/1.0.1/test.json +296 -0
- package/data/craftbook-templates/ba/backup-routine/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/ba/backup-routine/versions/1.0.1/test.json +108 -0
- package/data/craftbook-templates/bl/blog-post/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/bl/blog-post/versions/1.0.1/test.json +118 -0
- package/data/craftbook-templates/bo/board-deck/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/bo/board-deck/versions/1.0.1/test.json +100 -0
- package/data/craftbook-templates/bo/board-game-web/versions/1.0.1/craftbook.json +150 -0
- package/data/craftbook-templates/bo/board-game-web/versions/1.0.1/test.json +99 -0
- package/data/craftbook-templates/bo/booking-automation/versions/1.0.1/craftbook.json +158 -0
- package/data/craftbook-templates/bo/booking-automation/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/br/branding-website/versions/1.1.1/craftbook.json +211 -0
- package/data/craftbook-templates/br/branding-website/versions/1.1.1/test.json +164 -0
- package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.3/craftbook.json +417 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.3/test.json +376 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.2/craftbook.json +164 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.2/test.json +92 -0
- package/data/craftbook-templates/ca/calendar-brief/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/ca/calendar-brief/versions/1.0.1/test.json +102 -0
- package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.1/craftbook.json +110 -0
- package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.1/test.json +106 -0
- package/data/craftbook-templates/ca/case-study/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/ca/case-study/versions/1.0.1/test.json +112 -0
- package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.1/craftbook.json +151 -0
- package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.1/test.json +105 -0
- package/data/craftbook-templates/ch/changelog-cut/versions/1.0.1/craftbook.json +113 -0
- package/data/craftbook-templates/ch/changelog-cut/versions/1.0.1/test.json +106 -0
- package/data/craftbook-templates/ch/changelog-writeup/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/ch/changelog-writeup/versions/1.0.1/test.json +129 -0
- package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.2/craftbook.json +123 -0
- package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.2/test.json +155 -0
- package/data/craftbook-templates/ch/chapter-weave/versions/1.0.1/craftbook.json +74 -0
- package/data/craftbook-templates/ch/chapter-weave/versions/1.0.1/test.json +98 -0
- package/data/craftbook-templates/ch/character-sheet/versions/1.0.1/craftbook.json +82 -0
- package/data/craftbook-templates/ch/character-sheet/versions/1.0.1/test.json +143 -0
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.1/craftbook.json +121 -0
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.1/test.json +178 -0
- package/data/craftbook-templates/ch/chart-pack/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/ch/chart-pack/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/ch/chrome-extension/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/ch/chrome-extension/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/ci/ci-pipeline/versions/1.0.1/craftbook.json +132 -0
- package/data/craftbook-templates/ci/ci-pipeline/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/ci/citation-audit/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/ci/citation-audit/versions/1.0.1/test.json +149 -0
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.1/craftbook.json +147 -0
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.1/test.json +128 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.1/craftbook.json +153 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.1/test.json +116 -0
- package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.1/craftbook.json +153 -0
- package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.1/test.json +119 -0
- package/data/craftbook-templates/co/cohort-analysis/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/co/cohort-analysis/versions/1.0.1/test.json +226 -0
- package/data/craftbook-templates/co/company-research-brief/versions/1.0.1/craftbook.json +139 -0
- package/data/craftbook-templates/co/company-research-brief/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/co/comparison-matrix/versions/1.0.1/craftbook.json +153 -0
- package/data/craftbook-templates/co/comparison-matrix/versions/1.0.1/test.json +109 -0
- package/data/craftbook-templates/co/compat-check/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/co/compat-check/versions/1.0.1/test.json +145 -0
- package/data/craftbook-templates/co/competitive-analysis/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/co/competitive-analysis/versions/1.0.1/test.json +116 -0
- package/data/craftbook-templates/co/config-scaffold/versions/1.0.1/craftbook.json +105 -0
- package/data/craftbook-templates/co/config-scaffold/versions/1.0.1/test.json +120 -0
- package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.1/test.json +149 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.1/craftbook.json +206 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.1/test.json +169 -0
- package/data/craftbook-templates/co/contract-template/versions/1.0.1/craftbook.json +145 -0
- package/data/craftbook-templates/co/contract-template/versions/1.0.1/test.json +102 -0
- package/data/craftbook-templates/co/cookbook-layout/versions/1.0.1/craftbook.json +121 -0
- package/data/craftbook-templates/co/cookbook-layout/versions/1.0.1/test.json +159 -0
- package/data/craftbook-templates/co/copy-review/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/co/copy-review/versions/1.0.1/test.json +102 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.1/craftbook.json +210 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.1/test.json +187 -0
- package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.1/test.json +156 -0
- package/data/craftbook-templates/co/cover-letter/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/co/cover-letter/versions/1.0.1/test.json +100 -0
- package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.1/craftbook.json +101 -0
- package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.1/test.json +207 -0
- package/data/craftbook-templates/cr/cron-job/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/cr/cron-job/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/cr/crossword-forge/versions/1.0.1/craftbook.json +164 -0
- package/data/craftbook-templates/cr/crossword-forge/versions/1.0.1/test.json +135 -0
- package/data/craftbook-templates/cs/csv-transformer/versions/1.2.2/craftbook.json +101 -0
- package/data/craftbook-templates/cs/csv-transformer/versions/1.2.2/test.json +102 -0
- package/data/craftbook-templates/da/dashboard-spec/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/da/dashboard-spec/versions/1.0.1/test.json +114 -0
- package/data/craftbook-templates/da/data-dictionary/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/da/data-dictionary/versions/1.0.1/test.json +101 -0
- package/data/craftbook-templates/da/data-export-migrate/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/da/data-export-migrate/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/da/data-join-merge/versions/1.0.1/craftbook.json +101 -0
- package/data/craftbook-templates/da/data-join-merge/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.2/craftbook.json +148 -0
- package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.2/test.json +162 -0
- package/data/craftbook-templates/da/data-quality-audit/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/da/data-quality-audit/versions/1.0.1/test.json +326 -0
- package/data/craftbook-templates/da/data-to-report/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/da/data-to-report/versions/1.0.1/test.json +95 -0
- package/data/craftbook-templates/da/data-viz-page/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/da/data-viz-page/versions/1.0.1/test.json +117 -0
- package/data/craftbook-templates/da/dataset-clean/versions/1.2.2/craftbook.json +101 -0
- package/data/craftbook-templates/da/dataset-clean/versions/1.2.2/test.json +95 -0
- package/data/craftbook-templates/db/db-index-tuning/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/db/db-index-tuning/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.1/craftbook.json +211 -0
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.1/test.json +157 -0
- package/data/craftbook-templates/de/dependency-audit/versions/1.1.1/craftbook.json +141 -0
- package/data/craftbook-templates/de/dependency-audit/versions/1.1.1/test.json +108 -0
- package/data/craftbook-templates/de/deploy-checklist/versions/1.0.1/craftbook.json +159 -0
- package/data/craftbook-templates/de/deploy-checklist/versions/1.0.1/test.json +165 -0
- package/data/craftbook-templates/de/design-review/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/de/design-review/versions/1.0.1/test.json +118 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.3/craftbook.json +431 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.3/test.json +201 -0
- package/data/craftbook-templates/di/diagram-from-text/versions/1.0.1/craftbook.json +109 -0
- package/data/craftbook-templates/di/diagram-from-text/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/do/doc-rewrite/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/do/doc-rewrite/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/do/dockerize-app/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/do/dockerize-app/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/do/docs-site/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/do/docs-site/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.1/craftbook.json +153 -0
- package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.1/test.json +132 -0
- package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/eb/ebook-compile/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/eb/ebook-compile/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/ed/edit-notes/versions/1.0.1/craftbook.json +176 -0
- package/data/craftbook-templates/ed/edit-notes/versions/1.0.1/test.json +146 -0
- package/data/craftbook-templates/em/email-sequence/versions/1.0.1/craftbook.json +142 -0
- package/data/craftbook-templates/em/email-sequence/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/em/email-template/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/em/email-template/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.3/craftbook.json +403 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.3/test.json +191 -0
- package/data/craftbook-templates/ep/episode-plan/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/ep/episode-plan/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/es/escalation-playbook/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/es/escalation-playbook/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/ev/evidence-brief/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/ev/evidence-brief/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.3/craftbook.json +433 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.3/test.json +136 -0
- package/data/craftbook-templates/ex/expense-categorize/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/ex/expense-categorize/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/fa/fact-check/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/fa/fact-check/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.1/craftbook.json +74 -0
- package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.1/test.json +108 -0
- package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/fa/favicon-set/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/fa/favicon-set/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/fe/feature-flag-release/versions/1.0.1/craftbook.json +159 -0
- package/data/craftbook-templates/fe/feature-flag-release/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/fe/feedback-widget/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/fe/feedback-widget/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.1/craftbook.json +103 -0
- package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/fo/forecast-model/versions/1.0.1/craftbook.json +105 -0
- package/data/craftbook-templates/fo/forecast-model/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/fo/form-wizard/versions/1.0.1/craftbook.json +110 -0
- package/data/craftbook-templates/fo/form-wizard/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/ga/game-with-screens/versions/1.0.1/craftbook.json +168 -0
- package/data/craftbook-templates/ga/game-with-screens/versions/1.0.1/test.json +99 -0
- package/data/craftbook-templates/gl/glossary-build/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/gl/glossary-build/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/gr/graphql-api/versions/1.0.2/craftbook.json +146 -0
- package/data/craftbook-templates/gr/graphql-api/versions/1.0.2/test.json +92 -0
- package/data/craftbook-templates/gr/grpc-service/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/gr/grpc-service/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/ha/handbook-section/versions/1.0.1/craftbook.json +145 -0
- package/data/craftbook-templates/ha/handbook-section/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/he/hero-image/versions/1.0.1/craftbook.json +154 -0
- package/data/craftbook-templates/he/hero-image/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.1/craftbook.json +202 -0
- package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.1/test.json +128 -0
- package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.1/craftbook.json +182 -0
- package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.1/craftbook.json +218 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.1/test.json +176 -0
- package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.1/craftbook.json +150 -0
- package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.1/test.json +99 -0
- package/data/craftbook-templates/ic/icon-pack/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/ic/icon-pack/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.3/craftbook.json +397 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.3/test.json +141 -0
- package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.1/craftbook.json +150 -0
- package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.1/test.json +99 -0
- package/data/craftbook-templates/im/image-batch-edit/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/im/image-batch-edit/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/im/image-palette-extract/versions/1.0.1/craftbook.json +109 -0
- package/data/craftbook-templates/im/image-palette-extract/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/im/image-seo-rename/versions/1.0.1/craftbook.json +105 -0
- package/data/craftbook-templates/im/image-seo-rename/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.2.1/craftbook.json +179 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.2.1/test.json +180 -0
- package/data/craftbook-templates/in/inbox-triage/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/in/inbox-triage/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/in/incident-postmortem/versions/1.0.1/craftbook.json +158 -0
- package/data/craftbook-templates/in/incident-postmortem/versions/1.0.1/test.json +109 -0
- package/data/craftbook-templates/in/insurance-inventory/versions/1.0.1/craftbook.json +153 -0
- package/data/craftbook-templates/in/insurance-inventory/versions/1.0.1/test.json +121 -0
- package/data/craftbook-templates/in/interactive-quiz/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/in/interactive-quiz/versions/1.0.1/test.json +99 -0
- package/data/craftbook-templates/in/investigate-root-cause/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/in/investigate-root-cause/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/in/invitation-design/versions/1.0.1/craftbook.json +128 -0
- package/data/craftbook-templates/in/invitation-design/versions/1.0.1/test.json +121 -0
- package/data/craftbook-templates/in/invoice-generator/versions/1.0.1/craftbook.json +110 -0
- package/data/craftbook-templates/in/invoice-generator/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/in/invoice-run/versions/1.1.1/craftbook.json +199 -0
- package/data/craftbook-templates/in/invoice-run/versions/1.1.1/test.json +140 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/it/item-intake/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/it/item-intake/versions/1.0.1/test.json +145 -0
- package/data/craftbook-templates/ju/juice-pass/versions/1.0.1/craftbook.json +116 -0
- package/data/craftbook-templates/ju/juice-pass/versions/1.0.1/test.json +116 -0
- package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/la/landing-copy/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/la/landing-copy/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/la/landing-page/versions/1.0.1/craftbook.json +184 -0
- package/data/craftbook-templates/la/landing-page/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/le/lead-enrichment/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/le/lead-enrichment/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/li/library-package/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/li/library-package/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/li/literature-review/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/li/literature-review/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/li/live-browser-qa/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/li/live-browser-qa/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/lo/localize-content/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/lo/localize-content/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/lo/logo-set/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/lo/logo-set/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/ma/market-scan/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/ma/market-scan/versions/1.0.1/test.json +210 -0
- package/data/craftbook-templates/me/meeting-minutes/versions/1.0.1/craftbook.json +108 -0
- package/data/craftbook-templates/me/meeting-minutes/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.1/test.json +184 -0
- package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.1/craftbook.json +109 -0
- package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.1/craftbook.json +115 -0
- package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.1/test.json +112 -0
- package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.1/craftbook.json +117 -0
- package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.1/test.json +99 -0
- package/data/craftbook-templates/mo/mock-interview/versions/1.0.1/craftbook.json +139 -0
- package/data/craftbook-templates/mo/mock-interview/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.1/craftbook.json +156 -0
- package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.1/test.json +133 -0
- package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.1/craftbook.json +158 -0
- package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.1/test.json +197 -0
- package/data/craftbook-templates/mo/month-close/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/mo/month-close/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.1/test.json +117 -0
- package/data/craftbook-templates/mo/moodboard/versions/1.0.1/craftbook.json +109 -0
- package/data/craftbook-templates/mo/moodboard/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/mo/morning-brief/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/mo/morning-brief/versions/1.0.1/test.json +225 -0
- package/data/craftbook-templates/mo/morning-report/versions/1.0.1/craftbook.json +152 -0
- package/data/craftbook-templates/mo/morning-report/versions/1.0.1/test.json +250 -0
- package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.1/craftbook.json +101 -0
- package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.1/craftbook.json +181 -0
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.1/test.json +86 -0
- package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/no/notification-router/versions/1.0.1/craftbook.json +158 -0
- package/data/craftbook-templates/no/notification-router/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/oc/ocr-extract/versions/1.0.1/craftbook.json +137 -0
- package/data/craftbook-templates/oc/ocr-extract/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/of/offer-compare/versions/1.0.1/craftbook.json +106 -0
- package/data/craftbook-templates/of/offer-compare/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/on/onboarding-flow/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/on/onboarding-flow/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/on/oncall-handoff/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/on/oncall-handoff/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/on/one-pager/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/on/one-pager/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/op/ops-runbook/versions/1.0.1/craftbook.json +112 -0
- package/data/craftbook-templates/op/ops-runbook/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/pa/page-spread/versions/1.0.1/craftbook.json +82 -0
- package/data/craftbook-templates/pa/page-spread/versions/1.0.1/test.json +132 -0
- package/data/craftbook-templates/pa/parser-grammar/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/pa/parser-grammar/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/pe/perf-optimization/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/pe/perf-optimization/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.1/test.json +122 -0
- package/data/craftbook-templates/ph/photo-cull/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/ph/photo-cull/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/ph/physics-toy/versions/1.0.1/craftbook.json +110 -0
- package/data/craftbook-templates/ph/physics-toy/versions/1.0.1/test.json +99 -0
- package/data/craftbook-templates/pi/pitch-deck/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/pi/pitch-deck/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/pl/playtest-report/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/pl/playtest-report/versions/1.0.1/test.json +111 -0
- package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/po/portfolio-site/versions/1.0.1/craftbook.json +151 -0
- package/data/craftbook-templates/po/portfolio-site/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.0/craftbook.json +257 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.0/test.json +228 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.1/craftbook.json +347 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.1/test.json +228 -0
- package/data/craftbook-templates/pr/pr-security-review/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/pr/pr-security-review/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/pr/practice-exam/versions/1.0.1/craftbook.json +159 -0
- package/data/craftbook-templates/pr/practice-exam/versions/1.0.1/test.json +117 -0
- package/data/craftbook-templates/pr/practice-session/versions/1.0.1/craftbook.json +115 -0
- package/data/craftbook-templates/pr/practice-session/versions/1.0.1/test.json +114 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/pr/press-release/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/pr/press-release/versions/1.0.1/test.json +356 -0
- package/data/craftbook-templates/pr/price-tracker/versions/1.0.1/craftbook.json +109 -0
- package/data/craftbook-templates/pr/price-tracker/versions/1.0.1/test.json +150 -0
- package/data/craftbook-templates/pr/pricing-page/versions/1.0.1/craftbook.json +184 -0
- package/data/craftbook-templates/pr/pricing-page/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/pr/product-descriptions/versions/1.0.1/craftbook.json +105 -0
- package/data/craftbook-templates/pr/product-descriptions/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/pr/proposal-sow/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/pr/proposal-sow/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/pu/pull-request-review/manifest.json +3 -1
- package/data/craftbook-templates/pu/pull-request-review/versions/1.4.1/craftbook.json +180 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.4.1/test.json +123 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.1/craftbook.json +121 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.1/test.json +123 -0
- package/data/craftbook-templates/pw/pwa-offline/versions/1.0.1/craftbook.json +155 -0
- package/data/craftbook-templates/pw/pwa-offline/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.1/test.json +113 -0
- package/data/craftbook-templates/re/reading-list/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/re/reading-list/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/re/receipt-intake/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/re/receipt-intake/versions/1.0.1/test.json +149 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/re/recipe-capture/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/re/recipe-capture/versions/1.0.1/test.json +128 -0
- package/data/craftbook-templates/re/record-a-relative/versions/1.0.1/craftbook.json +115 -0
- package/data/craftbook-templates/re/record-a-relative/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/re/refactor-module/versions/1.0.2/craftbook.json +148 -0
- package/data/craftbook-templates/re/refactor-module/versions/1.0.2/test.json +92 -0
- package/data/craftbook-templates/re/regex-builder/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/re/regex-builder/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/re/release-announcement/versions/1.0.1/craftbook.json +159 -0
- package/data/craftbook-templates/re/release-announcement/versions/1.0.1/test.json +202 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.1/craftbook.json +214 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.1/test.json +138 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.1/craftbook.json +159 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.1/test.json +111 -0
- package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/re/release-pipeline-ci/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/re/reliability-review/versions/1.0.1/craftbook.json +153 -0
- package/data/craftbook-templates/re/reliability-review/versions/1.0.1/test.json +112 -0
- package/data/craftbook-templates/re/report-pdf/versions/1.1.1/craftbook.json +173 -0
- package/data/craftbook-templates/re/report-pdf/versions/1.1.1/test.json +98 -0
- package/data/craftbook-templates/re/research-report/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/re/research-report/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.2.1/craftbook.json +216 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.2.1/test.json +240 -0
- package/data/craftbook-templates/re/rest-api/versions/1.0.2/craftbook.json +147 -0
- package/data/craftbook-templates/re/rest-api/versions/1.0.2/test.json +387 -0
- package/data/craftbook-templates/re/resume-cv/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/re/resume-cv/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/ro/rollback-plan/versions/1.0.1/craftbook.json +159 -0
- package/data/craftbook-templates/ro/rollback-plan/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.3/craftbook.json +413 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.3/test.json +154 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.2/craftbook.json +167 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.2/test.json +137 -0
- package/data/craftbook-templates/ru/runbook/versions/1.0.1/craftbook.json +145 -0
- package/data/craftbook-templates/ru/runbook/versions/1.0.1/test.json +118 -0
- package/data/craftbook-templates/sc/schema-migration/versions/1.0.1/craftbook.json +144 -0
- package/data/craftbook-templates/sc/schema-migration/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.2/craftbook.json +140 -0
- package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.2/test.json +162 -0
- package/data/craftbook-templates/sc/script-automation/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/sc/script-automation/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.2/craftbook.json +147 -0
- package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.2/test.json +90 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.3/craftbook.json +440 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.3/test.json +154 -0
- package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.1/craftbook.json +105 -0
- package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/so/social-thread/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/so/social-thread/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/so/source-quality-audit/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/so/source-quality-audit/versions/1.0.1/test.json +158 -0
- package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.3/craftbook.json +436 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.3/test.json +162 -0
- package/data/craftbook-templates/sp/spec-doc/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/sp/spec-doc/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.1/craftbook.json +109 -0
- package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.1/test.json +160 -0
- package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.1/craftbook.json +137 -0
- package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/sq/sql-analysis/versions/1.0.1/craftbook.json +109 -0
- package/data/craftbook-templates/sq/sql-analysis/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/st/standup-summary/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/st/standup-summary/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/st/state-machine/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/st/state-machine/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/st/status-report/versions/1.0.1/craftbook.json +146 -0
- package/data/craftbook-templates/st/status-report/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/su/subscription-audit/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/su/subscription-audit/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/su/subtitle-generator/versions/1.0.1/craftbook.json +128 -0
- package/data/craftbook-templates/su/subtitle-generator/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/su/summarize-long/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/su/summarize-long/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/su/survey-analysis/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/su/survey-analysis/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/sv/svg-animation/versions/1.0.1/craftbook.json +110 -0
- package/data/craftbook-templates/sv/svg-animation/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/ta/tailor-resume/versions/1.0.1/craftbook.json +114 -0
- package/data/craftbook-templates/ta/tailor-resume/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.3/craftbook.json +408 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.3/test.json +174 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.1.1/craftbook.json +141 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.1.1/test.json +113 -0
- package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.1/craftbook.json +120 -0
- package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/th/thank-you-batch/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/th/thank-you-batch/versions/1.0.1/test.json +141 -0
- package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.1/test.json +142 -0
- package/data/craftbook-templates/th/threat-model/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/th/threat-model/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.1/craftbook.json +103 -0
- package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.1/craftbook.json +160 -0
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.1/test.json +159 -0
- package/data/craftbook-templates/to/tone-rewrite/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/to/tone-rewrite/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/to/topic-explainer/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/to/topic-explainer/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.1/craftbook.json +115 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.1/test.json +98 -0
- package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/tr/transcribe-index/versions/1.0.1/craftbook.json +171 -0
- package/data/craftbook-templates/tr/transcribe-index/versions/1.0.1/test.json +151 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.1/craftbook.json +148 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.0.1/craftbook.json +155 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.0.1/test.json +92 -0
- package/data/craftbook-templates/vi/video-storyboard/versions/1.0.1/craftbook.json +109 -0
- package/data/craftbook-templates/vi/video-storyboard/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/vi/visit-prep/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/vi/visit-prep/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/vo/voiceover-script/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/vo/voiceover-script/versions/1.0.1/test.json +103 -0
- package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.1/craftbook.json +154 -0
- package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.1/test.json +124 -0
- package/data/craftbook-templates/we/web-app-crud/versions/1.0.1/craftbook.json +143 -0
- package/data/craftbook-templates/we/web-app-crud/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/we/web-component/versions/1.0.1/craftbook.json +110 -0
- package/data/craftbook-templates/we/web-component/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/we/webhook-handler/versions/1.0.1/craftbook.json +147 -0
- package/data/craftbook-templates/we/webhook-handler/versions/1.0.1/test.json +162 -0
- package/data/craftbook-templates/we/week-plan/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/we/week-plan/versions/1.0.1/test.json +255 -0
- package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.1/test.json +97 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.1/craftbook.json +106 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.1/test.json +104 -0
- package/data/craftbook-templates/we/weekly-review/versions/1.0.1/craftbook.json +107 -0
- package/data/craftbook-templates/we/weekly-review/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.1/craftbook.json +140 -0
- package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.1/test.json +138 -0
- package/data/craftbook-templates/wh/whitepaper/versions/1.0.1/craftbook.json +141 -0
- package/data/craftbook-templates/wh/whitepaper/versions/1.0.1/test.json +110 -0
- package/data/craftbook-templates/ye/year-in-review/versions/1.0.1/craftbook.json +115 -0
- package/data/craftbook-templates/ye/year-in-review/versions/1.0.1/test.json +145 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.1/craftbook.json +134 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.1/test.json +103 -0
- package/package.json +1 -1
- package/schemas/chat-model-identity.schema.json +16 -0
- package/schemas/craftbook-doc.schema.json +8 -2
- package/schemas/craftbook-template-version.schema.json +8 -2
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "transcribe-and-shownotes",
|
|
3
|
+
"name": "Transcript to Shownotes",
|
|
4
|
+
"description": "Take a finished recording from raw transcript to publishable shownotes: a clean transcript on file, timestamped chapters, a summary listeners actually read, and the links mentioned — the per-episode ritual that turns audio into an archive. Locks the shownotes checklist FIRST (chapters timestamped, every link captured, names spelled right), then gets the transcript on file, then writes the shownotes from it. Use for episode shownotes, transcribing an episode, chapter timestamps, and 'turn this recording into shownotes'.\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 shownotes (planner) — locate the recording or transcript, lock the shownotes checklist → gated on artifact `notes/scope.md` (markdown-notes)\n2. Get the transcript on file (transcriber) — clean, speaker-labeled, timestamped transcript under transcripts/\n3. Write the shownotes (copywriter) — summary, timestamped chapters, links and mentions, pull quotes → gated on artifact `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
|
+
"turn the recording into shownotes",
|
|
8
|
+
"shownotes for the episode",
|
|
9
|
+
"transcribe the episode",
|
|
10
|
+
"episode chapters and shownotes",
|
|
11
|
+
"write the shownotes"
|
|
12
|
+
],
|
|
13
|
+
"steps": [
|
|
14
|
+
{
|
|
15
|
+
"id": "scope",
|
|
16
|
+
"name": "Scope the shownotes",
|
|
17
|
+
"description": "locate the recording or transcript, lock the shownotes checklist",
|
|
18
|
+
"prompt": "Define the job before touching the audio. Step 1: find the episode's recording or transcript — check the recordings folder and episodes.json for which episode is being shipped and what already exists on file. Step 2: confirm with the owner anything the transcript alone won't give you — guest name spellings, links they promised listeners, and where the shownotes get published. Step 3: write an acceptance-criteria checklist ('a clean, complete transcript is on file under transcripts/', 'every chapter has a timestamp that exists in the transcript', 'every link mentioned in the episode is captured', 'names spelled right throughout', 'the summary reads like the episode, not a form'). Call write_task_note with the episode + checklist and write notes/scope.md.\n\nThe deliverable `notes/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": "notes/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": "notes/scope.md",
|
|
32
|
+
"bytes": 120,
|
|
33
|
+
"artifact": true
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"kind": "sniff",
|
|
37
|
+
"file": "notes/scope.md",
|
|
38
|
+
"sniff": "nonempty",
|
|
39
|
+
"artifact": true
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"onReject": "scope",
|
|
43
|
+
"maxAttempts": 3
|
|
44
|
+
},
|
|
45
|
+
"next": "transcript"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "transcript",
|
|
49
|
+
"name": "Get the transcript on file",
|
|
50
|
+
"description": "clean, speaker-labeled, timestamped transcript under transcripts/",
|
|
51
|
+
"prompt": "Get the transcript on file. Step 1: if a transcript already exists (a provided file in the recordings folder), start from that; otherwise produce one from the recording through the project's transcription capabilities. Step 2: clean it — fix obvious mis-hearings, label the speakers, keep the timestamps. Step 3: save the cleaned transcript in the transcripts/ folder named for the episode (for example transcripts/ep12.md). A real transcript is substantial — never a stub or a summary. Step 4: call write_task_note with the transcript path and an approximate word count.",
|
|
52
|
+
"suggestedRole": "transcriber",
|
|
53
|
+
"next": "shownotes"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "shownotes",
|
|
57
|
+
"name": "Write the shownotes",
|
|
58
|
+
"description": "summary, timestamped chapters, links and mentions, pull quotes",
|
|
59
|
+
"prompt": "Write the shownotes from the transcript. Step 1: a short summary a listener actually reads — what the episode is about and why it's worth their hour, in the show's voice. Step 2: the chapter list — timestamped, one line per chapter, every timestamp taken from the transcript, never invented. Step 3: links and mentions — everything referenced in the episode, with where each one points. Step 4: two or three pull quotes worth sharing, verbatim from the transcript with their speaker. Step 5: write report.md and call write_task_note with the chapter count and the link count.\n\nThe deliverable `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.",
|
|
60
|
+
"suggestedRole": "copywriter",
|
|
61
|
+
"advanceWhen": {
|
|
62
|
+
"file": "report.md",
|
|
63
|
+
"minBytes": 1,
|
|
64
|
+
"sniff": "nonempty",
|
|
65
|
+
"artifact": true
|
|
66
|
+
},
|
|
67
|
+
"gate": {
|
|
68
|
+
"at": "completion",
|
|
69
|
+
"checks": [
|
|
70
|
+
{
|
|
71
|
+
"kind": "minBytes",
|
|
72
|
+
"file": "report.md",
|
|
73
|
+
"bytes": 1500,
|
|
74
|
+
"artifact": true
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"kind": "contains",
|
|
78
|
+
"file": "report.md",
|
|
79
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
80
|
+
"flags": "i",
|
|
81
|
+
"label": "at least one markdown heading",
|
|
82
|
+
"artifact": true
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"onReject": "shownotes",
|
|
86
|
+
"maxAttempts": 4
|
|
87
|
+
},
|
|
88
|
+
"next": "evaluate"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "evaluate",
|
|
92
|
+
"name": "Evaluate",
|
|
93
|
+
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
94
|
+
"prompt": "Open report.md and the transcript under transcripts/ and verify every criterion from notes/scope.md: the transcript on file is complete and speaker-labeled, every chapter timestamp appears in the transcript (spot-check each one — a chapter that points at nothing is fabrication), every link mentioned in the episode is captured, names are spelled the way the owner confirmed, and the pull quotes are verbatim. Write PASS/FAIL per criterion; on any failure, name the gap and loop back to shownotes.\n\nThe deliverable lives in the project's artifacts drawer — open `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: \"shownotes\" })` 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.",
|
|
95
|
+
"suggestedRole": "reviewer",
|
|
96
|
+
"consumes": [
|
|
97
|
+
{
|
|
98
|
+
"file": "report.md",
|
|
99
|
+
"artifact": true
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"next": "shownotes"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "finish",
|
|
106
|
+
"name": "Finish",
|
|
107
|
+
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
108
|
+
"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.",
|
|
109
|
+
"suggestedRole": "developer",
|
|
110
|
+
"terminal": true
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"version": "1.0.1",
|
|
114
|
+
"releasedAt": "2026-08-14T00:00:00Z"
|
|
115
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Transcript to Shownotes — episode 12",
|
|
4
|
+
"objective": "Measure whether the transcribe-and-shownotes craftbook files a clean transcript and produces shownotes whose chapter timestamps, links, and quotes all trace to the transcript.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"corpus"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "weve got the raw transcript for episode 12 in recordings/ep12-transcript.txt — can you turn it into shownotes with chapters? report.md is fine",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "Shelf Life Podcast",
|
|
11
|
+
"about": "Podcast studio project for Shelf Life, a weekly show about books and the people who make them. Raw recordings and transcripts land under workspace/recordings; the episode store is workspace/episodes.json.",
|
|
12
|
+
"missionObjectives": "Turn shipped episodes into a publishable archive: clean transcript on file, timestamped chapters, links captured. Grounded in the seeded transcript — no live services, no real credentials.",
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "recordings/ep12-transcript.txt",
|
|
16
|
+
"content": "Shelf Life — Episode 12 raw transcript (auto-generated, unedited)\nRecorded 2026-07-09. Host: Noor. Guests: Marta Velde (bookbinder), Daan Pols (apprentice).\n\n[00:00] NOOR: Welcome back to Shelf Life. Today we are in an actual bindery, which smells like glue and paper dust and, honestly, like heaven.\n[00:42] NOOR: Marta Velde has been binding books by hand for thirty-one years. Marta, welcome.\n[01:15] MARTA: Thank you. You are the first person to bring a microphone in here. Usually they bring broken books.\n[02:30] NOOR: Let's start there. What arrives on your bench in an average week?\n[03:48] MARTA: Family bibles, mostly. And cookbooks. People cry over cookbooks more than bibles, if you want the truth. The stains are the memories.\n[05:10] NOOR: How did you learn the trade?\n[06:55] MARTA: My teacher took me on in 1995. Four years sweeping floors before he let me sew a spine. I tell people that and they think it is cruelty. It was patience.\n[08:20] NOOR: And now you have an apprentice of your own. Daan, you are twenty-three. Why this trade?\n[09:45] DAAN: I was studying logistics and I hated every minute of it. I saw Marta repair a 1911 atlas on a video and I emailed her that night.\n[11:02] MARTA: He emailed me eleven times.\n[12:30] NOOR: Persistence is the trade, from what I am hearing. Marta, walk me through the atlas repair. What does a book like that need?\n[14:05] MARTA: First you take it apart completely. People are shocked by that. To save a book you must be willing to reduce it to sheets and thread.\n[15:40] MARTA: The spine linings come off with wheat starch paste and a bone folder. Slow. If you rush the paste you tear the paper and then you are not a binder, you are a butcher.\n[17:12] NOOR: How long does a full rebind take?\n[18:50] MARTA: Twenty hours for a simple case binding. The atlas took ninety. We charge less than the hours, always. Nobody pays what the hours cost. You do it because the book deserves it.\n[20:15] NOOR: Daan, what is the hardest skill so far?\n[21:48] DAAN: Sewing headbands. Marta makes it look like knitting. Mine look like a fishing accident.\n[23:30] NOOR: For listeners who want to try this — where do they start?\n[25:05] MARTA: We teach beginner classes at the bindery, first Saturday of every month. The schedule is at bindery-lane.example.com/classes.\n[26:40] NOOR: I will put that in the shownotes. What about materials? People always ask where to buy proper paper.\n[28:15] DAAN: Paper Road. It is a small mill shop, they ship everywhere. paperroad.example.org. Their 90-gram laid paper is what we sew practice blocks with.\n[29:50] NOOR: And if someone has a family book that needs repair but you are booked out?\n[31:20] MARTA: The guild keeps a directory of certified binders by region — guild-of-binders.example.net/directory. Anyone listed there will treat your book honestly.\n[33:00] NOOR: What is a book you refused to repair?\n[34:35] MARTA: A first edition someone wanted rebound in neon leather. I sent them away. Restoration is listening to the book, not shouting over it.\n[36:10] NOOR: Daan, where do you want to be in ten years?\n[37:45] DAAN: Running my own bench. Maybe here. Marta says the bindery outlives the binder, and I want that to be true.\n[39:20] MARTA: It is true. This bench was my teacher's bench. The scars in the wood are his.\n[40:55] NOOR: That gave me chills. Before we close — the mailbag question. A listener asks: are e-readers killing your trade?\n[42:30] MARTA: The opposite. The rarer the physical book becomes, the more the surviving ones matter. My waiting list has never been longer.\n[44:05] NOOR: Marta Velde, Daan Pols, thank you both. Come back with the apprentice's first solo binding.\n[45:40] DAAN: Deal. Give me a year.\n[46:52] NOOR: Shelf Life is back Monday. Bring us your broken cookbooks.\n[47:30] END OF RECORDING\n"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "episodes.json",
|
|
20
|
+
"content": "{\n \"show\": \"Shelf Life\",\n \"cadence\": \"weekly — records Thursday, publishes Monday\",\n \"targetMinutes\": 45,\n \"episodes\": [\n {\n \"number\": 10,\n \"title\": \"The Library Cart Economy\",\n \"publishedAt\": \"2026-06-29\"\n },\n {\n \"number\": 11,\n \"title\": \"Why Paperbacks Survive\",\n \"publishedAt\": \"2026-07-06\"\n },\n {\n \"number\": 12,\n \"title\": \"Interview: The Last Bookbinder\",\n \"publishedAt\": \"2026-07-13\",\n \"guests\": [\"Marta Velde\", \"Daan Pols\"]\n }\n ]\n}\n"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"worker": {
|
|
24
|
+
"name": "Sanne",
|
|
25
|
+
"role": "Copywriter"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"mocks": [],
|
|
29
|
+
"success": {
|
|
30
|
+
"summary": "report.md is publishable shownotes — summary, timestamped chapters, links, pull quotes — and every timestamp in it exists in the seeded transcript (no fabricated chapters).",
|
|
31
|
+
"deliverables": [
|
|
32
|
+
{
|
|
33
|
+
"path": "report.md",
|
|
34
|
+
"kind": "markdown-report",
|
|
35
|
+
"minBytes": 1500,
|
|
36
|
+
"checks": [
|
|
37
|
+
{
|
|
38
|
+
"kind": "contains",
|
|
39
|
+
"file": "report.md",
|
|
40
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
41
|
+
"flags": "i"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"kind": "contains",
|
|
45
|
+
"file": "report.md",
|
|
46
|
+
"pattern": "\\d{1,2}:\\d{2}",
|
|
47
|
+
"label": "timestamped chapters"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"kind": "contains",
|
|
51
|
+
"file": "report.md",
|
|
52
|
+
"pattern": "chapter",
|
|
53
|
+
"flags": "i"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"kind": "valuesSubsetOf",
|
|
57
|
+
"file": "report.md",
|
|
58
|
+
"sourceFiles": [
|
|
59
|
+
"recordings/*.txt"
|
|
60
|
+
],
|
|
61
|
+
"pattern": "(\\d{1,2}:\\d{2})",
|
|
62
|
+
"minMatches": 4,
|
|
63
|
+
"label": "every timestamp traces to the transcript"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
"rubric": {
|
|
70
|
+
"artifact": {
|
|
71
|
+
"path": "report.md",
|
|
72
|
+
"kind": "markdown"
|
|
73
|
+
},
|
|
74
|
+
"axes": [
|
|
75
|
+
{
|
|
76
|
+
"name": "fidelity",
|
|
77
|
+
"description": "Chapters, links, names, and quotes come from the transcript — nothing invented, names spelled as recorded."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "chapter quality",
|
|
81
|
+
"description": "Chapter breaks land where the conversation actually turns, with titles that tell a listener what they will hear."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "scannability",
|
|
85
|
+
"description": "A listener can skim the summary, chapters, and links in under a minute and decide to hit play."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "tone",
|
|
89
|
+
"description": "The summary reads like the show's voice, not a form letter."
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
"qualityFocus": [
|
|
94
|
+
"timestamp fidelity",
|
|
95
|
+
"link capture",
|
|
96
|
+
"chapter craft"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "transcribe-audio",
|
|
3
|
+
"name": "Transcribe Audio or Video",
|
|
4
|
+
"description": "Convert an audio or video recording into an accurate, readable transcript using speech-to-text, with speaker labels and timestamps. Scopes the output format, speaker-labeling, and timestamp granularity FIRST so the transcript is usable downstream (search, subtitles, minutes), then transcribes the full recording end-to-end, then verifies coverage against the recording's duration and checks for dropped segments. The scope-first ordering matters because deciding timestamp cadence and speaker handling up front is what separates a clean, searchable transcript from a wall of unattributed text.\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 transcript (planner) — format, speaker labels, timestamp cadence, glossary → gated on artifact `notes/scope.md` (markdown-notes)\n2. Transcribe the recording (developer) — run STT over the full file, label speakers, timestamp → gated on `transcript.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
|
+
"transcribe this audio",
|
|
8
|
+
"transcribe a video",
|
|
9
|
+
"speech to text",
|
|
10
|
+
"get a transcript",
|
|
11
|
+
"convert recording to text"
|
|
12
|
+
],
|
|
13
|
+
"steps": [
|
|
14
|
+
{
|
|
15
|
+
"id": "scope",
|
|
16
|
+
"name": "Scope the transcript",
|
|
17
|
+
"description": "format, speaker labels, timestamp cadence, glossary",
|
|
18
|
+
"prompt": "Define what a good transcript looks like BEFORE transcribing. Step 1: record the source file (path, format, duration in seconds). Step 2: pick the output format (plain markdown, or timestamped blocks like `[00:01:23] Speaker 1: ...`) and the timestamp cadence (per-utterance, every N seconds, or per-paragraph). Step 3: decide speaker handling (diarize into Speaker 1/2…, or single-speaker) and how to label them. Step 4: build a small glossary of names/terms/acronyms likely in the audio so they transcribe correctly. Step 5: decide cleanup level (verbatim with ums, or lightly edited for readability). Write an acceptance-criteria checklist (transcript spans the full duration with a final timestamp near the end, every block is timestamped, speakers are labeled consistently, glossary terms spelled correctly, output parses as the chosen format) and decisions to `notes/scope.md` via write_task_note AND to the produces path.\n\nThe deliverable `notes/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": "notes/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": "notes/scope.md",
|
|
32
|
+
"bytes": 120,
|
|
33
|
+
"artifact": true
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"kind": "sniff",
|
|
37
|
+
"file": "notes/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 the recording",
|
|
50
|
+
"description": "run STT over the full file, label speakers, timestamp",
|
|
51
|
+
"prompt": "Produce the transcript to the locked format. Step 1: run the speech-to-text capability over the WHOLE file (chunk long files on silence boundaries and stitch, keeping running timestamps so they stay monotonic across chunks). Step 2: apply speaker labels and the chosen timestamp cadence. Step 3: apply the glossary — correct names/terms the recognizer got wrong. Step 4: apply the chosen cleanup level. Step 5: write the result to `transcript.md` in the locked format and confirm it parses. write_task_note the transcript path, its final timestamp, and the recording duration so coverage is checkable. On a loop-back, fix only the flagged gaps (missing tail, mislabeled speakers, glossary misspellings).",
|
|
52
|
+
"suggestedRole": "developer",
|
|
53
|
+
"advanceWhen": {
|
|
54
|
+
"file": "transcript.md",
|
|
55
|
+
"minBytes": 1,
|
|
56
|
+
"sniff": "nonempty"
|
|
57
|
+
},
|
|
58
|
+
"gate": {
|
|
59
|
+
"at": "completion",
|
|
60
|
+
"checks": [
|
|
61
|
+
{
|
|
62
|
+
"kind": "minBytes",
|
|
63
|
+
"file": "transcript.md",
|
|
64
|
+
"bytes": 500
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"scripts": [
|
|
68
|
+
{
|
|
69
|
+
"name": "checkContains",
|
|
70
|
+
"scope": "standard",
|
|
71
|
+
"inputs": {
|
|
72
|
+
"file": "transcript.md",
|
|
73
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
74
|
+
"flags": "i"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"onReject": "transcribe",
|
|
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": "Check accuracy and coverage. Step 1: confirm the LAST timestamp is within a small margin of the recording's duration (no dropped tail) — PASS/FAIL coverage. Step 2: confirm every block is timestamped and speakers are labeled consistently throughout. Step 3: spot-check 3 timestamps against the audio (if an audio capability exists) — does the text match what is said there? Step 4: confirm glossary terms/names are spelled correctly. Step 5: confirm the file parses as the chosen format. 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: \"transcribe\" })` 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": "transcript.md"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"next": "transcribe"
|
|
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.1",
|
|
106
|
+
"releasedAt": "2026-08-14T00:00:00Z"
|
|
107
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Transcribe Audio or Video smoke eval",
|
|
4
|
+
"objective": "Self-contained smoke eval for the Transcribe Audio or Video 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": "Transcribe Audio or Video Eval",
|
|
11
|
+
"about": "Self-contained eval project for transcribe-audio. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/media-plan.json.",
|
|
12
|
+
"missionObjectives": "Use the Transcribe Audio or Video 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": "# Transcribe Audio or Video 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: transcribe-audio - Transcribe Audio or Video.\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
|
+
},
|
|
28
|
+
"mocks": [],
|
|
29
|
+
"success": {
|
|
30
|
+
"summary": "media-plan.json is a valid JSON media-production manifest grounded in seeded fixture metadata.",
|
|
31
|
+
"deliverables": [
|
|
32
|
+
{
|
|
33
|
+
"path": "media-plan.json",
|
|
34
|
+
"kind": "json",
|
|
35
|
+
"minBytes": 700,
|
|
36
|
+
"checks": [
|
|
37
|
+
{
|
|
38
|
+
"kind": "sniff",
|
|
39
|
+
"file": "media-plan.json",
|
|
40
|
+
"sniff": "json-valid"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"kind": "contains",
|
|
44
|
+
"file": "media-plan.json",
|
|
45
|
+
"pattern": "pilot-interview\\.wav|returns-desk\\.png|launch-clip\\.mp4",
|
|
46
|
+
"flags": "i"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"kind": "contains",
|
|
50
|
+
"file": "media-plan.json",
|
|
51
|
+
"pattern": "outputs|assets|steps|cues|verification",
|
|
52
|
+
"flags": "i"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"kind": "contains",
|
|
56
|
+
"file": "media-plan.json",
|
|
57
|
+
"pattern": "accessibility|alt|caption|transcript|metadata",
|
|
58
|
+
"flags": "i"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"rubric": {
|
|
65
|
+
"artifact": {
|
|
66
|
+
"path": "media-plan.json",
|
|
67
|
+
"kind": "json"
|
|
68
|
+
},
|
|
69
|
+
"axes": [
|
|
70
|
+
{
|
|
71
|
+
"name": "completeness",
|
|
72
|
+
"description": "The manifest covers sources, outputs, and processing steps end to end."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "grounding",
|
|
76
|
+
"description": "Only seeded media fixtures are referenced, with faithful metadata."
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "accessibility",
|
|
80
|
+
"description": "Alt text, captions, or transcripts are planned wherever the class requires."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "precision",
|
|
84
|
+
"description": "Timestamps, crops, and cues are specific enough to execute."
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"qualityFocus": [
|
|
89
|
+
"media fixture handling",
|
|
90
|
+
"structured manifest",
|
|
91
|
+
"verification metadata"
|
|
92
|
+
],
|
|
93
|
+
"extensions": {
|
|
94
|
+
"legacySimulators": [
|
|
95
|
+
{
|
|
96
|
+
"id": "transcribe-audio-media-fixtures",
|
|
97
|
+
"kind": "data-source",
|
|
98
|
+
"status": "implemented",
|
|
99
|
+
"description": "Seeded local media index replacing real audio, video, image generation, and external media metadata services."
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "transcribe-index",
|
|
3
|
+
"name": "Transcribe and Index a Tape",
|
|
4
|
+
"description": "Give one tape the ten-second-findability treatment: transcript on file, then every moment worth finding indexed with its timecode and people tags — so 'the clip of Opa's 80th toast' becomes a query, not an afternoon of scrubbing. Locks the tape's metadata and the indexing rules FIRST (timecoded moments, people tags drawn from the family roster, searchable descriptions), then lands the transcript, then the clip records, then a tape summary with the highlights. Use for indexing a digitized tape, making home videos searchable, cataloging family footage, and 'what is on this tape'.\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 tape (filmarchivaris) — tape metadata, the family roster, indexing rules locked → gated on artifact `notes/scope.md` (markdown-notes)\n2. Land the transcript (transcriber) — the tape's transcript on file, timestamped and speaker-marked\n3. Index the moments (archivist) — clip records appended: tape, timecode, people, description → gated on `clips.json` (json)\n4. Write the tape summary (copywriter) — what is on the tape, the highlights, who appears → gated on artifact `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
|
+
"index the tape",
|
|
8
|
+
"transcribe the tape",
|
|
9
|
+
"what is on this tape",
|
|
10
|
+
"make the tape searchable",
|
|
11
|
+
"catalog the footage"
|
|
12
|
+
],
|
|
13
|
+
"steps": [
|
|
14
|
+
{
|
|
15
|
+
"id": "scope",
|
|
16
|
+
"name": "Scope the tape",
|
|
17
|
+
"description": "tape metadata, the family roster, indexing rules locked",
|
|
18
|
+
"prompt": "Define the indexing job before touching the tape. Step 1: identify the tape being indexed — its label or number, roughly when it was shot, and where its transcript lands under transcripts/ (when a transcript is already on file there, this run verifies and indexes it rather than re-transcribing). Step 2: read family.md from the workspace — the roster of names is the controlled vocabulary for people tags; a tag that is not on the roster is a typo waiting to break search. Step 3: read clips.json to see how prior tapes were indexed, and lock the indexing rules — every moment worth finding gets a record with the tape, the timecode where it starts, the people in it tagged from the roster, and a description written the way someone would actually search for it ('Opa's toast at the 80th', not 'man speaking'). Step 4: write an acceptance-criteria checklist ('transcript on file under transcripts/', 'every notable moment indexed with its timecode', 'every people tag matches the roster', 'descriptions are searchable phrases', 'existing clip records untouched'). Call write_task_note with the tape id + roster size + checklist and write notes/scope.md.\n\nThe deliverable `notes/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": "filmarchivaris",
|
|
20
|
+
"advanceWhen": {
|
|
21
|
+
"file": "notes/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": "notes/scope.md",
|
|
32
|
+
"bytes": 120,
|
|
33
|
+
"artifact": true
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"kind": "sniff",
|
|
37
|
+
"file": "notes/scope.md",
|
|
38
|
+
"sniff": "nonempty",
|
|
39
|
+
"artifact": true
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"onReject": "scope",
|
|
43
|
+
"maxAttempts": 3
|
|
44
|
+
},
|
|
45
|
+
"next": "transcript"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "transcript",
|
|
49
|
+
"name": "Land the transcript",
|
|
50
|
+
"description": "the tape's transcript on file, timestamped and speaker-marked",
|
|
51
|
+
"prompt": "Get the tape's transcript on file. Step 1: produce the transcript through the project's transcription capabilities — or, when a transcript for this tape is already provided under transcripts/, read it end to end and treat it as the source. Step 2: make sure it carries what indexing needs — timestamps through the recording and speaker names where voices are identifiable from the family roster; normalize obvious mis-hearings of family names against family.md. Step 3: save the result under transcripts/ named for the tape, and skim once for the moments that will matter — celebrations, first words, arrivals, the stories people tell — noting rough timecodes as you go. Call write_task_note with the transcript path, its rough duration, and the count of candidate moments spotted.",
|
|
52
|
+
"suggestedRole": "transcriber",
|
|
53
|
+
"next": "index"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "index",
|
|
57
|
+
"name": "Index the moments",
|
|
58
|
+
"description": "clip records appended: tape, timecode, people, description",
|
|
59
|
+
"prompt": "Index every moment worth finding. Step 1: walk the transcript and pick the moments someone will one day search for — the toast, the song, the argument about the recipe, the baby's first steps in the background. Aim for completeness over polish: a missed moment is invisible forever. Step 2: for each moment, append a record to clips.json through the project's archive capabilities — the tape id, the timecode where the moment starts (matching a timestamp in the transcript), the people in it as an array of roster names from family.md, and a searchable description. Step 3: never edit or drop the existing records from prior tapes — this is an append, and the archive's history is the point. Step 4: re-read clips.json once — valid JSON, new records complete, timecodes real. Call write_task_note with the count of new records and the single best moment found.",
|
|
60
|
+
"suggestedRole": "archivist",
|
|
61
|
+
"advanceWhen": {
|
|
62
|
+
"file": "clips.json",
|
|
63
|
+
"minBytes": 1,
|
|
64
|
+
"sniff": "json-valid"
|
|
65
|
+
},
|
|
66
|
+
"gate": {
|
|
67
|
+
"at": "completion",
|
|
68
|
+
"checks": [
|
|
69
|
+
{
|
|
70
|
+
"kind": "minBytes",
|
|
71
|
+
"file": "clips.json",
|
|
72
|
+
"bytes": 2
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"kind": "recordSchema",
|
|
76
|
+
"file": "clips.json",
|
|
77
|
+
"fields": [
|
|
78
|
+
{
|
|
79
|
+
"name": "tape",
|
|
80
|
+
"type": "nonempty"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "timecode",
|
|
84
|
+
"type": "nonempty"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "people"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "description",
|
|
91
|
+
"type": "nonempty"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"minRows": 5
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"scripts": [
|
|
98
|
+
{
|
|
99
|
+
"name": "checkJsonValid",
|
|
100
|
+
"scope": "standard",
|
|
101
|
+
"inputs": {
|
|
102
|
+
"file": "clips.json"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"onReject": "index",
|
|
107
|
+
"maxAttempts": 3
|
|
108
|
+
},
|
|
109
|
+
"next": "report"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "report",
|
|
113
|
+
"name": "Write the tape summary",
|
|
114
|
+
"description": "what is on the tape, the highlights, who appears",
|
|
115
|
+
"prompt": "Write the tape summary the family actually reads. Step 1: open with what the tape is — when it was shot, the occasions it covers, roughly how long it runs. Step 2: give the highlights — the five or so best moments with their timecodes, written warmly enough that someone wants to go watch them. Step 3: list who appears on the tape, drawn from the people tags just indexed. Step 4: close with how to find things — a line noting that every indexed moment is searchable in the archive by person or description. Keep it to a page; this is a family document, not a catalog printout. Write report.md and call write_task_note with the report path and the indexed-moment count.\n\nThe deliverable `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.",
|
|
116
|
+
"suggestedRole": "copywriter",
|
|
117
|
+
"advanceWhen": {
|
|
118
|
+
"file": "report.md",
|
|
119
|
+
"minBytes": 1,
|
|
120
|
+
"sniff": "nonempty",
|
|
121
|
+
"artifact": true
|
|
122
|
+
},
|
|
123
|
+
"gate": {
|
|
124
|
+
"at": "completion",
|
|
125
|
+
"checks": [
|
|
126
|
+
{
|
|
127
|
+
"kind": "minBytes",
|
|
128
|
+
"file": "report.md",
|
|
129
|
+
"bytes": 800,
|
|
130
|
+
"artifact": true
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"kind": "contains",
|
|
134
|
+
"file": "report.md",
|
|
135
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
136
|
+
"flags": "i",
|
|
137
|
+
"label": "at least one markdown heading",
|
|
138
|
+
"artifact": true
|
|
139
|
+
}
|
|
140
|
+
],
|
|
141
|
+
"onReject": "report",
|
|
142
|
+
"maxAttempts": 4
|
|
143
|
+
},
|
|
144
|
+
"next": "evaluate"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "evaluate",
|
|
148
|
+
"name": "Evaluate",
|
|
149
|
+
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
150
|
+
"prompt": "Open report.md, clips.json, the transcript under transcripts/, and family.md and verify every criterion from notes/scope.md: the transcript is on file and timestamped, every new clip record carries a timecode that appears in the transcript, every people tag matches a roster name exactly, descriptions read as searchable phrases rather than shrugs, prior tapes' records are untouched, and the summary's highlights point at real indexed moments. Write PASS/FAIL per criterion; on any failure, name the offending record and loop back to index.\n\nThe deliverable lives in the project's artifacts drawer — open `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: \"index\" })` 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.",
|
|
151
|
+
"suggestedRole": "reviewer",
|
|
152
|
+
"consumes": [
|
|
153
|
+
{
|
|
154
|
+
"file": "report.md",
|
|
155
|
+
"artifact": true
|
|
156
|
+
}
|
|
157
|
+
],
|
|
158
|
+
"next": "index"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"id": "finish",
|
|
162
|
+
"name": "Finish",
|
|
163
|
+
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
164
|
+
"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.",
|
|
165
|
+
"suggestedRole": "developer",
|
|
166
|
+
"terminal": true
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
"version": "1.0.1",
|
|
170
|
+
"releasedAt": "2026-08-14T00:00:00Z"
|
|
171
|
+
}
|