@bendyline/gilde 0.1.27 → 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/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/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
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Secure auth-flow module",
|
|
4
|
+
"objective": "Measure whether the auth-flow craftbook scopes threats before writing a password/session flow with basic security controls.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"code"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "In the `Auth Flow Eval` project, write `src/auth.js`: a small dependency-free ESM module for a session-based email/password login flow. Include registration, login, logout, session creation/validation, password hashing with Node crypto pbkdf2 or scrypt, CSRF token generation/validation, rate-limit bookkeeping, and safe error messages. Also write `notes/review.md` with a concise security review that covers password storage, session expiry, CSRF, rate limiting, and what is intentionally out of scope. Do not use live network services or real credentials.",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "Auth Flow Eval",
|
|
11
|
+
"about": "Self-contained eval project for auth-flow. Deliverables are workspace/src/auth.js and workspace/notes/review.md.",
|
|
12
|
+
"missionObjectives": "Build a small local auth module and a threat/security review covering storage, sessions, CSRF, and rate limiting.",
|
|
13
|
+
"files": [],
|
|
14
|
+
"worker": {
|
|
15
|
+
"name": "Sander",
|
|
16
|
+
"role": "Developer"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"mocks": [],
|
|
20
|
+
"success": {
|
|
21
|
+
"summary": "src/auth.js implements a local auth module and notes/review.md covers the required security controls.",
|
|
22
|
+
"deliverables": [
|
|
23
|
+
{
|
|
24
|
+
"path": "src/auth.js",
|
|
25
|
+
"kind": "code-module",
|
|
26
|
+
"minBytes": 1800,
|
|
27
|
+
"checks": [
|
|
28
|
+
{
|
|
29
|
+
"kind": "contains",
|
|
30
|
+
"file": "src/auth.js",
|
|
31
|
+
"pattern": "pbkdf2|scrypt|crypto",
|
|
32
|
+
"flags": "i"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"kind": "contains",
|
|
36
|
+
"file": "src/auth.js",
|
|
37
|
+
"pattern": "register",
|
|
38
|
+
"flags": "i"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"kind": "contains",
|
|
42
|
+
"file": "src/auth.js",
|
|
43
|
+
"pattern": "login",
|
|
44
|
+
"flags": "i"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"kind": "contains",
|
|
48
|
+
"file": "src/auth.js",
|
|
49
|
+
"pattern": "logout",
|
|
50
|
+
"flags": "i"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"kind": "contains",
|
|
54
|
+
"file": "src/auth.js",
|
|
55
|
+
"pattern": "session",
|
|
56
|
+
"flags": "i"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"kind": "contains",
|
|
60
|
+
"file": "src/auth.js",
|
|
61
|
+
"pattern": "csrf",
|
|
62
|
+
"flags": "i"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"kind": "contains",
|
|
66
|
+
"file": "src/auth.js",
|
|
67
|
+
"pattern": "rate|attempt",
|
|
68
|
+
"flags": "i"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"path": "notes/review.md",
|
|
74
|
+
"kind": "markdown-notes",
|
|
75
|
+
"minBytes": 350,
|
|
76
|
+
"checks": [
|
|
77
|
+
{
|
|
78
|
+
"kind": "contains",
|
|
79
|
+
"file": "notes/review.md",
|
|
80
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
81
|
+
"flags": "i"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"kind": "contains",
|
|
85
|
+
"file": "notes/review.md",
|
|
86
|
+
"pattern": "password|hash",
|
|
87
|
+
"flags": "i"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"kind": "contains",
|
|
91
|
+
"file": "notes/review.md",
|
|
92
|
+
"pattern": "session|expiry|expiration",
|
|
93
|
+
"flags": "i"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"kind": "contains",
|
|
97
|
+
"file": "notes/review.md",
|
|
98
|
+
"pattern": "csrf",
|
|
99
|
+
"flags": "i"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"kind": "contains",
|
|
103
|
+
"file": "notes/review.md",
|
|
104
|
+
"pattern": "rate limit|rate-limit|attempt",
|
|
105
|
+
"flags": "i"
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"rubric": {
|
|
112
|
+
"artifact": {
|
|
113
|
+
"path": "src/auth.js",
|
|
114
|
+
"kind": "typescript"
|
|
115
|
+
},
|
|
116
|
+
"axes": [
|
|
117
|
+
{
|
|
118
|
+
"name": "correctness",
|
|
119
|
+
"description": "The module does what the requirements ask, with sensible edge handling."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "verification",
|
|
123
|
+
"description": "Self-tests exercise real behavior, not trivial truths."
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"name": "clarity",
|
|
127
|
+
"description": "Exports, naming, and structure make the module usable without reading every line."
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "robustness",
|
|
131
|
+
"description": "Invalid input and boundary cases fail loudly rather than silently."
|
|
132
|
+
}
|
|
133
|
+
]
|
|
134
|
+
},
|
|
135
|
+
"qualityFocus": [
|
|
136
|
+
"security scoping",
|
|
137
|
+
"session flow",
|
|
138
|
+
"review notes"
|
|
139
|
+
]
|
|
140
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "automation-recipe",
|
|
3
|
+
"name": "Write an Automation Recipe",
|
|
4
|
+
"description": "Turn 'I wish the house would...' into an inspectable, versioned automation: triggers and actions that name real devices from the house's own inventory, a dry run through the device tools before anything is armed, and a manual override always written in. Locks the owner's intent and the safety rules FIRST (nothing that heats or locks runs unattended without a failsafe, an override path is mandatory, dry-run before arm), then drafts the recipe, then proves it against the devices — so the house only ever does what was actually asked, and never anything it cannot be talked out of. Use for home automations, 'make the lights do X', schedules and scenes, sensor-triggered routines, and wiring up a new smart-home behavior.\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 wish (huisautomaat) — the owner's intent, the real device inventory, and the safety rules locked → gated on artifact `notes/scope.md` (markdown-notes)\n2. Draft the recipe (developer) — the automation as one inspectable JSON file under automations/\n3. Dry-run the recipe (developer) — every trigger and action exercised against the devices, evidence on file → gated on artifact `notes/dry-run.md` (markdown-notes)\n4. Write the install notes (copywriter) — what it does, how to arm it, how to stop it, what the dry run proved → 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
|
+
"set up an automation",
|
|
8
|
+
"make the house do",
|
|
9
|
+
"automate the lights",
|
|
10
|
+
"write an automation recipe",
|
|
11
|
+
"when I get home, turn on"
|
|
12
|
+
],
|
|
13
|
+
"steps": [
|
|
14
|
+
{
|
|
15
|
+
"id": "scope",
|
|
16
|
+
"name": "Scope the wish",
|
|
17
|
+
"description": "the owner's intent, the real device inventory, and the safety rules locked",
|
|
18
|
+
"prompt": "Understand the wish and the house before writing a single trigger. Step 1: restate the owner's intent in one plain sentence — when should what happen, and when should it NOT — and confirm it with them if anything is ambiguous. Step 2: pull the device inventory through the project's home capabilities and list the devices this automation actually needs: the sensors that will trigger it, the devices it will act on, each with its exact inventory id and current state. If a device the wish assumes does not exist in the inventory, say so now — never plan around an invented device. Step 3: lock the safety rules — nothing that heats, locks, or opens runs unattended without a stated failsafe; every automation carries a manual override the owner can flip without ceremony; and no recipe is armed before a dry run has exercised it against the devices. Step 4: write an acceptance-criteria checklist ('every device in the recipe exists in the inventory, by exact id', 'trigger, conditions, and actions are all present and specific', 'a manual override is written into the recipe', 'the dry run exercised every action with the tool responses recorded', 'the install notes say how to arm it and how to stop it'). Call write_task_note with the intent sentence + the devices involved + the 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": "huisautomaat",
|
|
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": "draft"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "draft",
|
|
49
|
+
"name": "Draft the recipe",
|
|
50
|
+
"description": "the automation as one inspectable JSON file under automations/",
|
|
51
|
+
"prompt": "Write the automation down as a file someone can read, diff, and version. Step 1: derive a short lowercase-kebab slug from the automation's name and write the recipe to automations/<slug>.json — one JSON object with a name, a plain-language summary, the trigger (what starts it), the conditions (what must also be true), the actions (what happens, in order), and the override (how a human stops or bypasses it, always present). Step 2: reference every device by its exact inventory id from notes/scope.md — the id the house actually answers to, not a nickname. Step 3: keep every field concrete: a trigger names its sensor and the state change, a condition names what it checks, an action names the device and the state it sets. Step 4: re-read the file once as JSON — valid, complete, no placeholder values left. Call write_task_note with the recipe path and a one-line description of trigger, conditions, actions, and override.\n\nBefore working, open the artifact input `notes/scope.md` with `read_artifact`; do not look for it in the workspace.",
|
|
52
|
+
"suggestedRole": "developer",
|
|
53
|
+
"consumes": [
|
|
54
|
+
{
|
|
55
|
+
"file": "notes/scope.md",
|
|
56
|
+
"artifact": true
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"next": "dryrun"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "dryrun",
|
|
63
|
+
"name": "Dry-run the recipe",
|
|
64
|
+
"description": "every trigger and action exercised against the devices, evidence on file",
|
|
65
|
+
"prompt": "Prove the recipe against the real device inventory before anyone arms it. Step 1: for every device the recipe references, read its current state through the project's home capabilities and confirm the device answers — a device that does not exist or does not respond sends you back to the draft, not onward. Step 2: exercise each action through the device tools' dry-run path, so the intended state change is checked without actually switching anything in the house. Step 3: record the evidence in notes/dry-run.md — for each device: its id, the state you read, the dry-run response you got, verbatim — plus a short verdict per action (would fire as intended, or what was off). Step 4: if any action came back wrong, fix the recipe first and dry-run again; the notes must describe the run that matches the final recipe. Call write_task_note with the device count exercised and the verdict.\n\nThe deliverable `notes/dry-run.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.",
|
|
66
|
+
"suggestedRole": "developer",
|
|
67
|
+
"advanceWhen": {
|
|
68
|
+
"file": "notes/dry-run.md",
|
|
69
|
+
"minBytes": 1,
|
|
70
|
+
"sniff": "nonempty",
|
|
71
|
+
"artifact": true
|
|
72
|
+
},
|
|
73
|
+
"gate": {
|
|
74
|
+
"at": "completion",
|
|
75
|
+
"checks": [
|
|
76
|
+
{
|
|
77
|
+
"kind": "minBytes",
|
|
78
|
+
"file": "notes/dry-run.md",
|
|
79
|
+
"bytes": 120,
|
|
80
|
+
"artifact": true
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"kind": "sniff",
|
|
84
|
+
"file": "notes/dry-run.md",
|
|
85
|
+
"sniff": "nonempty",
|
|
86
|
+
"artifact": true
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"onReject": "dryrun",
|
|
90
|
+
"maxAttempts": 3
|
|
91
|
+
},
|
|
92
|
+
"next": "report"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "report",
|
|
96
|
+
"name": "Write the install notes",
|
|
97
|
+
"description": "what it does, how to arm it, how to stop it, what the dry run proved",
|
|
98
|
+
"prompt": "Write the install notes the owner will actually read. Step 1: open with one warm paragraph saying what the automation does and when — the intent sentence from notes/scope.md, in the owner's language. Step 2: list the devices it touches, each with its friendly name and inventory id, and where the recipe file lives. Step 3: say how to arm it and — just as prominently — how to stop or override it: the manual override path from the recipe, spelled out so it works at 2am. Step 4: summarize what the dry run proved, citing the evidence in notes/dry-run.md — which devices answered, which actions were exercised, and that nothing was actually switched. Step 5: close with what to watch the first week and the one or two ways this automation could misbehave (the safety rules from scope, made concrete). Write report.md and call write_task_note with a one-line DONE summary.\n\nBefore working, open the artifact inputs `notes/scope.md`, `notes/dry-run.md` with `read_artifact`; do not look for them in the workspace.\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.",
|
|
99
|
+
"suggestedRole": "copywriter",
|
|
100
|
+
"consumes": [
|
|
101
|
+
{
|
|
102
|
+
"file": "notes/scope.md",
|
|
103
|
+
"artifact": true
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"file": "notes/dry-run.md",
|
|
107
|
+
"artifact": true
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"advanceWhen": {
|
|
111
|
+
"file": "report.md",
|
|
112
|
+
"minBytes": 1,
|
|
113
|
+
"sniff": "nonempty",
|
|
114
|
+
"artifact": true
|
|
115
|
+
},
|
|
116
|
+
"gate": {
|
|
117
|
+
"at": "completion",
|
|
118
|
+
"checks": [
|
|
119
|
+
{
|
|
120
|
+
"kind": "minBytes",
|
|
121
|
+
"file": "report.md",
|
|
122
|
+
"bytes": 800,
|
|
123
|
+
"artifact": true
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"kind": "contains",
|
|
127
|
+
"file": "report.md",
|
|
128
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
129
|
+
"flags": "i",
|
|
130
|
+
"label": "at least one markdown heading",
|
|
131
|
+
"artifact": true
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"onReject": "report",
|
|
135
|
+
"maxAttempts": 4
|
|
136
|
+
},
|
|
137
|
+
"next": "evaluate"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "evaluate",
|
|
141
|
+
"name": "Evaluate",
|
|
142
|
+
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
143
|
+
"prompt": "Open automations/, notes/dry-run.md, report.md, and notes/scope.md and verify every criterion from the checklist: the recipe file parses as JSON and carries a trigger, conditions, actions, and a manual override; every device id in the recipe appears in the inventory evidence gathered during scope and dry-run — no invented devices; the dry-run notes show every action exercised with real tool responses recorded, not paraphrased; and the install notes say how to arm the automation, how to stop it, and what the dry run proved. Write PASS/FAIL per criterion; on any failure, name the field or device that is wrong and loop back to draft.\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: \"draft\" })` 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.",
|
|
144
|
+
"suggestedRole": "reviewer",
|
|
145
|
+
"consumes": [
|
|
146
|
+
{
|
|
147
|
+
"file": "report.md",
|
|
148
|
+
"artifact": true
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
"next": "draft"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"id": "finish",
|
|
155
|
+
"name": "Finish",
|
|
156
|
+
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
157
|
+
"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.",
|
|
158
|
+
"suggestedRole": "developer",
|
|
159
|
+
"terminal": true
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"version": "1.0.1",
|
|
163
|
+
"releasedAt": "2026-08-14T00:00:00Z"
|
|
164
|
+
}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Write an Automation Recipe smoke eval",
|
|
4
|
+
"objective": "Task-specific eval for the Write an Automation Recipe craftbook: a porch-light-at-sunset wish becomes a versioned JSON recipe grounded in the live fake-house inventory, dry-run through the wired device tools before anything would be armed, with a manual override written in and install notes that say how to stop it.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"external"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "can you set up an automation so the porch light comes on at sunset when someones home? dry run it first plaese - i dont want anything actually switching yet",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "Smart Home — Automation Recipe Eval",
|
|
11
|
+
"about": "Self-contained eval project for automation-recipe. The fake house's device tools are wired into the project's tool roster — the live inventory and device states come from them, and their state-setting path runs dry-run only in this eval, so nothing actually switches. A cached inventory snapshot from last night is on file at home/devices.json for reference; the live tools are authoritative. The recipe goes to automations/porch-light.json, the dry-run evidence to notes/dry-run.md, and the install notes to report.md.",
|
|
12
|
+
"missionObjectives": "Use the Write an Automation Recipe craftbook/template, ground every device reference in the live inventory read through the wired device tools, exercise the recipe in dry-run before anything would be armed, and deliver automations/porch-light.json plus report.md. No real smart-home services, hubs, or credentials — only the wired fake house.",
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "home/devices.json",
|
|
16
|
+
"content": "{\n \"note\": \"cached inventory snapshot - the live device tools are authoritative\",\n \"generatedAt\": \"2026-07-18T22:30:00Z\",\n \"devices\": [\n { \"id\": \"dev-01\", \"name\": \"porch light\", \"zone\": \"outside\", \"type\": \"light\", \"state\": \"off\" },\n { \"id\": \"dev-02\", \"name\": \"front hall presence sensor\", \"zone\": \"hall\", \"type\": \"presence\", \"state\": \"home\" },\n { \"id\": \"dev-03\", \"name\": \"living room thermostat\", \"zone\": \"living room\", \"type\": \"thermostat\", \"state\": \"heat 19.5C\" },\n { \"id\": \"dev-04\", \"name\": \"garage door\", \"zone\": \"garage\", \"type\": \"cover\", \"state\": \"closed\" },\n { \"id\": \"dev-05\", \"name\": \"kitchen ceiling light\", \"zone\": \"kitchen\", \"type\": \"light\", \"state\": \"off\" },\n { \"id\": \"dev-06\", \"name\": \"bedroom lamp\", \"zone\": \"bedroom\", \"type\": \"light\", \"state\": \"off\" },\n { \"id\": \"dev-07\", \"name\": \"front door lock\", \"zone\": \"hall\", \"type\": \"lock\", \"state\": \"locked\" },\n { \"id\": \"dev-08\", \"name\": \"backyard motion sensor\", \"zone\": \"outside\", \"type\": \"motion\", \"state\": \"clear\", \"battery\": 82 }\n ]\n}\n"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"worker": {
|
|
20
|
+
"name": "Daan",
|
|
21
|
+
"role": "Huisautomaat"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mocks": [
|
|
25
|
+
{
|
|
26
|
+
"kind": "mcp",
|
|
27
|
+
"id": "home",
|
|
28
|
+
"description": "Fake smart-home MCP for this eval. Its tools surface directly on the tool roster: list the house's device inventory, read the current device states, and request a state change — state changes always run as a dry run here, validated and echoed back but never applied.",
|
|
29
|
+
"tools": [
|
|
30
|
+
{
|
|
31
|
+
"name": "list_devices",
|
|
32
|
+
"description": "List every device in the house with its id, name, zone, type, and current state",
|
|
33
|
+
"resultTemplate": {
|
|
34
|
+
"devices": [
|
|
35
|
+
{
|
|
36
|
+
"id": "dev-01",
|
|
37
|
+
"name": "porch light",
|
|
38
|
+
"zone": "outside",
|
|
39
|
+
"type": "light",
|
|
40
|
+
"state": "off"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "dev-02",
|
|
44
|
+
"name": "front hall presence sensor",
|
|
45
|
+
"zone": "hall",
|
|
46
|
+
"type": "presence",
|
|
47
|
+
"state": "home"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "dev-03",
|
|
51
|
+
"name": "living room thermostat",
|
|
52
|
+
"zone": "living room",
|
|
53
|
+
"type": "thermostat",
|
|
54
|
+
"state": "heat 19.5C"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "dev-04",
|
|
58
|
+
"name": "garage door",
|
|
59
|
+
"zone": "garage",
|
|
60
|
+
"type": "cover",
|
|
61
|
+
"state": "closed"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "dev-05",
|
|
65
|
+
"name": "kitchen ceiling light",
|
|
66
|
+
"zone": "kitchen",
|
|
67
|
+
"type": "light",
|
|
68
|
+
"state": "off"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": "dev-06",
|
|
72
|
+
"name": "bedroom lamp",
|
|
73
|
+
"zone": "bedroom",
|
|
74
|
+
"type": "light",
|
|
75
|
+
"state": "off"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "dev-07",
|
|
79
|
+
"name": "front door lock",
|
|
80
|
+
"zone": "hall",
|
|
81
|
+
"type": "lock",
|
|
82
|
+
"state": "locked"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "dev-08",
|
|
86
|
+
"name": "backyard motion sensor",
|
|
87
|
+
"zone": "outside",
|
|
88
|
+
"type": "motion",
|
|
89
|
+
"state": "clear",
|
|
90
|
+
"battery": 82
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "get_state",
|
|
97
|
+
"description": "Read the current state snapshot of the house's devices",
|
|
98
|
+
"resultTemplate": {
|
|
99
|
+
"asOf": "2026-07-19T17:55:00Z",
|
|
100
|
+
"states": [
|
|
101
|
+
{
|
|
102
|
+
"id": "dev-01",
|
|
103
|
+
"name": "porch light",
|
|
104
|
+
"state": "off",
|
|
105
|
+
"reachable": true
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "dev-02",
|
|
109
|
+
"name": "front hall presence sensor",
|
|
110
|
+
"state": "home",
|
|
111
|
+
"reachable": true
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "dev-03",
|
|
115
|
+
"name": "living room thermostat",
|
|
116
|
+
"state": "heat 19.5C",
|
|
117
|
+
"reachable": true
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "dev-04",
|
|
121
|
+
"name": "garage door",
|
|
122
|
+
"state": "closed",
|
|
123
|
+
"reachable": true
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"id": "dev-05",
|
|
127
|
+
"name": "kitchen ceiling light",
|
|
128
|
+
"state": "off",
|
|
129
|
+
"reachable": true
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "dev-06",
|
|
133
|
+
"name": "bedroom lamp",
|
|
134
|
+
"state": "off",
|
|
135
|
+
"reachable": true
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "dev-07",
|
|
139
|
+
"name": "front door lock",
|
|
140
|
+
"state": "locked",
|
|
141
|
+
"reachable": true
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "dev-08",
|
|
145
|
+
"name": "backyard motion sensor",
|
|
146
|
+
"state": "clear",
|
|
147
|
+
"battery": 82,
|
|
148
|
+
"reachable": true
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "set_state",
|
|
155
|
+
"description": "Request a device state change; in this eval every request runs as a dry run — validated and echoed back, never applied",
|
|
156
|
+
"resultTemplate": {
|
|
157
|
+
"ok": true,
|
|
158
|
+
"mode": "dry-run",
|
|
159
|
+
"applied": false,
|
|
160
|
+
"note": "dry run only: the request was validated and recorded; no device state was changed"
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
],
|
|
166
|
+
"success": {
|
|
167
|
+
"summary": "automations/porch-light.json is a valid recipe whose trigger, conditions, actions, and manual override name only devices from the live inventory (the inventory was actually listed and the action path actually exercised in dry-run — request-log assertions), and report.md says how to arm it, how to stop it, and what the dry run proved.",
|
|
168
|
+
"deliverables": [
|
|
169
|
+
{
|
|
170
|
+
"path": "automations/porch-light.json",
|
|
171
|
+
"kind": "json",
|
|
172
|
+
"checks": [
|
|
173
|
+
{
|
|
174
|
+
"kind": "sniff",
|
|
175
|
+
"file": "automations/porch-light.json",
|
|
176
|
+
"sniff": "json-valid"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"kind": "contains",
|
|
180
|
+
"file": "automations/porch-light.json",
|
|
181
|
+
"pattern": "trigger",
|
|
182
|
+
"flags": "i",
|
|
183
|
+
"label": "the recipe declares its trigger"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"kind": "contains",
|
|
187
|
+
"file": "automations/porch-light.json",
|
|
188
|
+
"pattern": "action",
|
|
189
|
+
"flags": "i",
|
|
190
|
+
"label": "the recipe declares its actions"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"kind": "contains",
|
|
194
|
+
"file": "automations/porch-light.json",
|
|
195
|
+
"pattern": "override|manual",
|
|
196
|
+
"flags": "i",
|
|
197
|
+
"label": "a manual override is written in"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"kind": "valuesSubsetOf",
|
|
201
|
+
"file": "automations/porch-light.json",
|
|
202
|
+
"sourceFiles": [
|
|
203
|
+
"home/devices.json"
|
|
204
|
+
],
|
|
205
|
+
"pattern": "\"(dev-\\d{2})\"",
|
|
206
|
+
"minMatches": 2,
|
|
207
|
+
"label": "every device id in the recipe exists in the house inventory"
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"path": "report.md",
|
|
213
|
+
"kind": "markdown-report",
|
|
214
|
+
"minBytes": 600,
|
|
215
|
+
"checks": [
|
|
216
|
+
{
|
|
217
|
+
"kind": "contains",
|
|
218
|
+
"file": "report.md",
|
|
219
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
220
|
+
"flags": "i"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"kind": "contains",
|
|
224
|
+
"file": "report.md",
|
|
225
|
+
"pattern": "dry[ -]?run",
|
|
226
|
+
"flags": "i",
|
|
227
|
+
"label": "the dry run is reported"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"kind": "contains",
|
|
231
|
+
"file": "report.md",
|
|
232
|
+
"pattern": "override|manual|stop",
|
|
233
|
+
"flags": "i",
|
|
234
|
+
"label": "the install notes say how to stop it"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"kind": "citationsResolve",
|
|
238
|
+
"file": "report.md",
|
|
239
|
+
"pattern": "(automations/[a-z0-9-]+\\.json)",
|
|
240
|
+
"minCitations": 1,
|
|
241
|
+
"label": "the install notes point at a recipe file that exists on disk"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"kind": "judge",
|
|
245
|
+
"file": "report.md",
|
|
246
|
+
"rubric": "The install notes explain how to arm the automation and how to stop or override it in plain language, the dry-run summary matches the recorded evidence rather than overclaiming, and no device outside the house inventory is mentioned.",
|
|
247
|
+
"sourceFiles": [
|
|
248
|
+
"notes/dry-run.md",
|
|
249
|
+
"home/devices.json"
|
|
250
|
+
],
|
|
251
|
+
"label": "honest, grounded install notes"
|
|
252
|
+
}
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
],
|
|
256
|
+
"mocks": [
|
|
257
|
+
{
|
|
258
|
+
"service": "home",
|
|
259
|
+
"minRequests": 2,
|
|
260
|
+
"requiredTools": [
|
|
261
|
+
"list_devices",
|
|
262
|
+
"set_state"
|
|
263
|
+
]
|
|
264
|
+
}
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
"rubric": {
|
|
268
|
+
"artifact": {
|
|
269
|
+
"path": "automations/porch-light.json",
|
|
270
|
+
"kind": "json"
|
|
271
|
+
},
|
|
272
|
+
"axes": [
|
|
273
|
+
{
|
|
274
|
+
"name": "safety",
|
|
275
|
+
"description": "Dry-run before arm is respected, a manual override is written into the recipe, and nothing claims to have actually switched a device."
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"name": "groundedness",
|
|
279
|
+
"description": "Trigger, conditions, and actions reference real inventory device ids — the presence sensor and the porch light — never invented devices."
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"name": "clarity",
|
|
283
|
+
"description": "The recipe reads as an inspectable record: concrete trigger, conditions, ordered actions, and a plain-language summary."
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"name": "maintainability",
|
|
287
|
+
"description": "A stranger could arm, stop, or edit this automation from the recipe file and the install notes alone."
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
},
|
|
291
|
+
"qualityFocus": [
|
|
292
|
+
"dry-run before arm",
|
|
293
|
+
"inventory-grounded device ids",
|
|
294
|
+
"manual override always present"
|
|
295
|
+
]
|
|
296
|
+
}
|