@bendyline/gilde 0.1.50 → 0.1.52
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/nanbeige4.2-3b-q4.json +133 -0
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/na/nanbeige4.2-3b-q4/manifest.json +138 -0
- package/data/chat-models/na/nanbeige4.2-3b-q4/versions/1.0.0/manifest.json +14 -0
- package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/craftbook.json +278 -0
- package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/test.json +118 -0
- package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/ab/ab-test-readout/versions/1.0.3/test.json +189 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/test.json +14 -17
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.1/craftbook.json +616 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.1/test.json +228 -0
- package/data/craftbook-templates/ad/ad-variations/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ad/ad-variations/versions/1.0.3/craftbook.json +213 -0
- package/data/craftbook-templates/ad/ad-variations/versions/1.0.3/test.json +108 -0
- package/data/craftbook-templates/al/album-curate/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/al/album-curate/versions/1.0.3/craftbook.json +250 -0
- package/data/craftbook-templates/al/album-curate/versions/1.0.3/test.json +147 -0
- package/data/craftbook-templates/al/alert-rules/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/al/alert-rules/versions/1.0.3/craftbook.json +213 -0
- package/data/craftbook-templates/al/alert-rules/versions/1.0.3/test.json +145 -0
- package/data/craftbook-templates/an/anniversary-cut/versions/1.0.4/test.json +0 -3
- package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/craftbook.json +381 -0
- package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/test.json +157 -0
- package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/an/annotated-bibliography/versions/1.0.3/test.json +102 -0
- package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/test.json +113 -0
- package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/test.json +123 -0
- package/data/craftbook-templates/ap/api-contract-review/versions/1.1.3/craftbook.json +278 -0
- package/data/craftbook-templates/ap/api-contract-review/versions/1.1.3/test.json +192 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/test.json +21 -22
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.1/craftbook.json +600 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.1/test.json +290 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/craftbook.json +282 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/test.json +139 -0
- package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.3/craftbook.json +265 -0
- package/data/craftbook-templates/au/audio-ad-spot/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.3/craftbook.json +259 -0
- package/data/craftbook-templates/au/audio-highlight-reel/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.4/test.json +0 -3
- package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/craftbook.json +370 -0
- package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/test.json +221 -0
- package/data/craftbook-templates/au/auth-flow/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/au/auth-flow/versions/1.0.3/test.json +143 -0
- package/data/craftbook-templates/au/automation-recipe/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/craftbook.json +324 -0
- package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/test.json +296 -0
- package/data/craftbook-templates/ba/backup-routine/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ba/backup-routine/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/ba/backup-routine/versions/1.0.3/test.json +108 -0
- package/data/craftbook-templates/bl/blog-post/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/bl/blog-post/versions/1.0.3/craftbook.json +278 -0
- package/data/craftbook-templates/bl/blog-post/versions/1.0.3/test.json +118 -0
- package/data/craftbook-templates/bo/board-deck/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/bo/board-deck/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/bo/board-deck/versions/1.0.3/test.json +100 -0
- package/data/craftbook-templates/bo/board-game-web/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/bo/board-game-web/versions/1.0.3/craftbook.json +288 -0
- package/data/craftbook-templates/bo/board-game-web/versions/1.0.3/test.json +99 -0
- package/data/craftbook-templates/bo/booking-automation/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/bo/booking-automation/versions/1.0.3/craftbook.json +294 -0
- package/data/craftbook-templates/bo/booking-automation/versions/1.0.3/test.json +162 -0
- package/data/craftbook-templates/br/branding-website/versions/1.1.2/craftbook.json +329 -0
- package/data/craftbook-templates/br/branding-website/versions/1.1.2/test.json +164 -0
- package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/test.json +1 -4
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.6/craftbook.json +620 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.6/test.json +376 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/test.json +14 -15
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.1/craftbook.json +728 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.1/test.json +221 -0
- package/data/craftbook-templates/bu/build-loop/versions/1.1.1/craftbook.json +139 -0
- package/data/craftbook-templates/bu/build-loop/versions/1.1.1/test.json +121 -0
- package/data/craftbook-templates/ca/calendar-brief/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ca/calendar-brief/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/ca/calendar-brief/versions/1.0.3/test.json +102 -0
- package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.3/craftbook.json +222 -0
- package/data/craftbook-templates/ca/canvas-generative-art/versions/1.0.3/test.json +106 -0
- package/data/craftbook-templates/ca/careful-mode/versions/1.2.1/craftbook.json +64 -0
- package/data/craftbook-templates/ca/careful-mode/versions/1.2.1/test.json +110 -0
- package/data/craftbook-templates/ca/case-study/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ca/case-study/versions/1.0.3/craftbook.json +275 -0
- package/data/craftbook-templates/ca/case-study/versions/1.0.3/test.json +112 -0
- package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.3/craftbook.json +289 -0
- package/data/craftbook-templates/ca/case-study-writeup/versions/1.0.3/test.json +105 -0
- package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.3/test.json +0 -3
- package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/craftbook.json +279 -0
- package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/test.json +155 -0
- package/data/craftbook-templates/ch/chapter-weave/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ch/chapter-weave/versions/1.0.3/craftbook.json +184 -0
- package/data/craftbook-templates/ch/chapter-weave/versions/1.0.3/test.json +98 -0
- package/data/craftbook-templates/ch/character-sheet/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ch/character-sheet/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/ch/character-sheet/versions/1.0.3/test.json +143 -0
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/craftbook.json +256 -0
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +178 -0
- package/data/craftbook-templates/ch/chart-pack/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ch/chart-pack/versions/1.0.3/craftbook.json +285 -0
- package/data/craftbook-templates/ch/chart-pack/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/ch/chrome-extension/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ch/chrome-extension/versions/1.0.3/craftbook.json +286 -0
- package/data/craftbook-templates/ch/chrome-extension/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/test.json +14 -17
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.1/craftbook.json +585 -0
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.1/test.json +225 -0
- package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/craftbook.json +278 -0
- package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/test.json +152 -0
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.2/test.json +0 -3
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/craftbook.json +283 -0
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/test.json +128 -0
- package/data/craftbook-templates/co/code-review/versions/1.0.1/craftbook.json +229 -0
- package/data/craftbook-templates/co/code-review/versions/1.0.1/test.json +249 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/craftbook.json +280 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/test.json +119 -0
- package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/test.json +122 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/test.json +13 -14
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.1/craftbook.json +603 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.1/test.json +252 -0
- package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/test.json +229 -0
- package/data/craftbook-templates/co/company-research-brief/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/co/company-research-brief/versions/1.0.3/craftbook.json +272 -0
- package/data/craftbook-templates/co/company-research-brief/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/co/comparison-matrix/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/co/comparison-matrix/versions/1.0.3/craftbook.json +286 -0
- package/data/craftbook-templates/co/comparison-matrix/versions/1.0.3/test.json +109 -0
- package/data/craftbook-templates/co/compat-check/versions/1.0.3/craftbook.json +285 -0
- package/data/craftbook-templates/co/compat-check/versions/1.0.3/test.json +148 -0
- package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/craftbook.json +273 -0
- package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/test.json +119 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.1/craftbook.json +518 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.1/test.json +160 -0
- package/data/craftbook-templates/co/config-scaffold/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/co/config-scaffold/versions/1.0.3/craftbook.json +215 -0
- package/data/craftbook-templates/co/config-scaffold/versions/1.0.3/test.json +120 -0
- package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/test.json +152 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.2/craftbook.json +217 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.2/test.json +169 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.3/craftbook.json +335 -0
- package/data/craftbook-templates/co/content-deck/versions/1.2.3/test.json +169 -0
- package/data/craftbook-templates/co/contract-template/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/co/contract-template/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/co/contract-template/versions/1.0.3/test.json +102 -0
- package/data/craftbook-templates/co/cookbook-layout/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/co/cookbook-layout/versions/1.0.3/craftbook.json +233 -0
- package/data/craftbook-templates/co/cookbook-layout/versions/1.0.3/test.json +159 -0
- package/data/craftbook-templates/co/copy-review/versions/1.0.3/craftbook.json +278 -0
- package/data/craftbook-templates/co/copy-review/versions/1.0.3/test.json +105 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.2/craftbook.json +221 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.2/test.json +187 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/craftbook.json +339 -0
- package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/test.json +187 -0
- package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/test.json +159 -0
- package/data/craftbook-templates/co/cover-letter/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/co/cover-letter/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/co/cover-letter/versions/1.0.3/test.json +100 -0
- package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.3/craftbook.json +212 -0
- package/data/craftbook-templates/cr/crm-update-batch/versions/1.0.3/test.json +207 -0
- package/data/craftbook-templates/cr/cron-job/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/cr/cron-job/versions/1.0.3/craftbook.json +282 -0
- package/data/craftbook-templates/cr/cron-job/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/cr/crossword-forge/versions/1.0.3/craftbook.json +301 -0
- package/data/craftbook-templates/cr/crossword-forge/versions/1.0.3/test.json +138 -0
- package/data/craftbook-templates/cs/csv-transformer/versions/1.2.3/test.json +0 -3
- package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/craftbook.json +211 -0
- package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/test.json +102 -0
- package/data/craftbook-templates/da/dashboard-spec/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/test.json +114 -0
- package/data/craftbook-templates/da/data-dictionary/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/da/data-dictionary/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/da/data-dictionary/versions/1.0.3/test.json +101 -0
- package/data/craftbook-templates/da/data-export-migrate/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/da/data-export-migrate/versions/1.0.3/craftbook.json +282 -0
- package/data/craftbook-templates/da/data-export-migrate/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/da/data-join-merge/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/da/data-join-merge/versions/1.0.3/craftbook.json +212 -0
- package/data/craftbook-templates/da/data-join-merge/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.3/test.json +0 -3
- package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.4/craftbook.json +281 -0
- package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.4/test.json +162 -0
- package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/test.json +329 -0
- package/data/craftbook-templates/da/data-to-report/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/da/data-to-report/versions/1.0.3/test.json +98 -0
- package/data/craftbook-templates/da/data-viz-page/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/da/data-viz-page/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/da/data-viz-page/versions/1.0.3/test.json +117 -0
- package/data/craftbook-templates/da/dataset-clean/versions/1.2.3/test.json +0 -3
- package/data/craftbook-templates/da/dataset-clean/versions/1.2.4/craftbook.json +212 -0
- package/data/craftbook-templates/da/dataset-clean/versions/1.2.4/test.json +95 -0
- package/data/craftbook-templates/db/db-index-tuning/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/db/db-index-tuning/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/db/db-index-tuning/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.2/test.json +0 -3
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.3/craftbook.json +378 -0
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.3/test.json +184 -0
- package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/craftbook.json +275 -0
- package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/test.json +111 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/test.json +12 -13
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.1/craftbook.json +619 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.1/test.json +235 -0
- package/data/craftbook-templates/de/deploy-checklist/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/de/deploy-checklist/versions/1.0.3/craftbook.json +288 -0
- package/data/craftbook-templates/de/deploy-checklist/versions/1.0.3/test.json +165 -0
- package/data/craftbook-templates/de/design-review/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/de/design-review/versions/1.0.3/test.json +121 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.4/test.json +1 -4
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.5/craftbook.json +627 -0
- package/data/craftbook-templates/de/design-system-consultation/versions/2.0.5/test.json +201 -0
- package/data/craftbook-templates/di/diagram-from-text/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/di/diagram-from-text/versions/1.0.3/craftbook.json +221 -0
- package/data/craftbook-templates/di/diagram-from-text/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/di/digest-from-feeds/versions/1.0.3/test.json +162 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.3/craftbook.json +282 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/do/doc-rewrite/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/do/dockerize-app/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/do/dockerize-app/versions/1.0.3/craftbook.json +282 -0
- package/data/craftbook-templates/do/dockerize-app/versions/1.0.3/test.json +92 -0
- package/data/craftbook-templates/do/docs-site/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/do/docs-site/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/do/docs-site/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/test.json +135 -0
- package/data/craftbook-templates/dr/draft-social-post/versions/1.0.1/craftbook.json +321 -0
- package/data/craftbook-templates/dr/draft-social-post/versions/1.0.1/test.json +161 -0
- package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/dr/drive-wrap-up/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.3/craftbook.json +278 -0
- package/data/craftbook-templates/du/due-diligence-brief/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/eb/ebook-compile/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/eb/ebook-compile/versions/1.0.3/craftbook.json +280 -0
- package/data/craftbook-templates/eb/ebook-compile/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/ed/edit-notes/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/craftbook.json +312 -0
- package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +146 -0
- package/data/craftbook-templates/em/email-sequence/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/em/email-sequence/versions/1.0.3/craftbook.json +274 -0
- package/data/craftbook-templates/em/email-sequence/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/em/email-template/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/em/email-template/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/em/email-template/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.4/test.json +1 -4
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.5/craftbook.json +577 -0
- package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.5/test.json +191 -0
- package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/test.json +100 -0
- package/data/craftbook-templates/es/escalation-playbook/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/es/escalation-playbook/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/es/escalation-playbook/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/ev/evidence-brief/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ev/evidence-brief/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/ev/evidence-brief/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.5/craftbook.json +606 -0
- package/data/craftbook-templates/ex/executive-level-review/versions/2.0.5/test.json +139 -0
- package/data/craftbook-templates/ex/expense-categorize/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ex/expense-categorize/versions/1.0.3/craftbook.json +274 -0
- package/data/craftbook-templates/ex/expense-categorize/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/fa/fact-check/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/fa/fact-check/versions/1.0.3/craftbook.json +278 -0
- package/data/craftbook-templates/fa/fact-check/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.3/craftbook.json +184 -0
- package/data/craftbook-templates/fa/family-story-chapter/versions/1.0.3/test.json +111 -0
- package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.3/craftbook.json +215 -0
- package/data/craftbook-templates/fa/faq-from-docs/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/fa/favicon-set/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/fa/favicon-set/versions/1.0.3/craftbook.json +284 -0
- package/data/craftbook-templates/fa/favicon-set/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/test.json +0 -3
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.1/craftbook.json +324 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.1/test.json +162 -0
- package/data/craftbook-templates/fe/feedback-widget/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/fe/feedback-widget/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/fe/feedback-widget/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/test.json +15 -16
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.1/craftbook.json +716 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.1/test.json +239 -0
- package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.3/craftbook.json +215 -0
- package/data/craftbook-templates/fo/folder-to-audio/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/fo/forecast-model/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/fo/forecast-model/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/fo/forecast-model/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.3/craftbook.json +282 -0
- package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.3/test.json +162 -0
- package/data/craftbook-templates/fo/form-wizard/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/craftbook.json +222 -0
- package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.3.1/craftbook.json +96 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.3.1/test.json +131 -0
- package/data/craftbook-templates/ga/game-with-screens/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ga/game-with-screens/versions/1.0.3/craftbook.json +306 -0
- package/data/craftbook-templates/ga/game-with-screens/versions/1.0.3/test.json +99 -0
- package/data/craftbook-templates/gl/glossary-build/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/gl/glossary-build/versions/1.0.3/craftbook.json +274 -0
- package/data/craftbook-templates/gl/glossary-build/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/gr/graphql-api/versions/1.0.3/test.json +0 -3
- package/data/craftbook-templates/gr/graphql-api/versions/1.0.4/craftbook.json +281 -0
- package/data/craftbook-templates/gr/graphql-api/versions/1.0.4/test.json +92 -0
- package/data/craftbook-templates/gr/grpc-service/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/gr/grpc-service/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/gr/grpc-service/versions/1.0.3/test.json +92 -0
- package/data/craftbook-templates/ha/handbook-section/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ha/handbook-section/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/ha/handbook-section/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/he/hero-image/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/he/hero-image/versions/1.0.3/craftbook.json +289 -0
- package/data/craftbook-templates/he/hero-image/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/craftbook.json +365 -0
- package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +128 -0
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/test.json +12 -13
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.1/craftbook.json +605 -0
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.1/test.json +220 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.2/craftbook.json +337 -0
- package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.2/test.json +176 -0
- package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.3/craftbook.json +288 -0
- package/data/craftbook-templates/ht/html-puzzle-game/versions/1.0.3/test.json +99 -0
- package/data/craftbook-templates/ic/icon-pack/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ic/icon-pack/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/ic/icon-pack/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.4/test.json +1 -4
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.5/craftbook.json +571 -0
- package/data/craftbook-templates/id/idea-office-hours/versions/2.0.5/test.json +141 -0
- package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.3/craftbook.json +288 -0
- package/data/craftbook-templates/id/idle-clicker-game/versions/1.0.3/test.json +99 -0
- package/data/craftbook-templates/im/image-batch-edit/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/im/image-batch-edit/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/im/image-batch-edit/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.3/craftbook.json +276 -0
- package/data/craftbook-templates/im/image-dedup-cluster/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/im/image-palette-extract/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/im/image-palette-extract/versions/1.0.3/craftbook.json +221 -0
- package/data/craftbook-templates/im/image-palette-extract/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/im/image-seo-rename/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/im/image-seo-rename/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/im/image-seo-rename/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.2.2/craftbook.json +295 -0
- package/data/craftbook-templates/im/image-set-index/versions/1.2.2/test.json +180 -0
- package/data/craftbook-templates/in/inbox-triage/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/in/inbox-triage/versions/1.0.3/craftbook.json +276 -0
- package/data/craftbook-templates/in/inbox-triage/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/in/incident-comms-templates/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/in/incident-postmortem/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/in/incident-postmortem/versions/1.0.3/craftbook.json +288 -0
- package/data/craftbook-templates/in/incident-postmortem/versions/1.0.3/test.json +109 -0
- package/data/craftbook-templates/in/insurance-inventory/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/craftbook.json +288 -0
- package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +121 -0
- package/data/craftbook-templates/in/interactive-quiz/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/test.json +99 -0
- package/data/craftbook-templates/in/invitation-design/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/in/invitation-design/versions/1.0.3/craftbook.json +240 -0
- package/data/craftbook-templates/in/invitation-design/versions/1.0.3/test.json +121 -0
- package/data/craftbook-templates/in/invoice-generator/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/in/invoice-generator/versions/1.0.3/craftbook.json +222 -0
- package/data/craftbook-templates/in/invoice-generator/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/in/invoice-run/versions/1.1.2/test.json +0 -3
- package/data/craftbook-templates/in/invoice-run/versions/1.1.3/craftbook.json +354 -0
- package/data/craftbook-templates/in/invoice-run/versions/1.1.3/test.json +140 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/it/item-intake/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/it/item-intake/versions/1.0.3/craftbook.json +276 -0
- package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +145 -0
- package/data/craftbook-templates/ju/juice-pass/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ju/juice-pass/versions/1.0.3/craftbook.json +228 -0
- package/data/craftbook-templates/ju/juice-pass/versions/1.0.3/test.json +116 -0
- package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.3/craftbook.json +275 -0
- package/data/craftbook-templates/kn/knowledge-base-article/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.3/craftbook.json +285 -0
- package/data/craftbook-templates/kp/kpi-scorecard/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/la/landing-copy/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/la/landing-copy/versions/1.0.3/craftbook.json +275 -0
- package/data/craftbook-templates/la/landing-copy/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/la/landing-page/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/la/landing-page/versions/1.0.3/craftbook.json +348 -0
- package/data/craftbook-templates/la/landing-page/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/le/lead-enrichment/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/le/lead-enrichment/versions/1.0.3/craftbook.json +274 -0
- package/data/craftbook-templates/le/lead-enrichment/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/li/library-package/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/li/library-package/versions/1.0.3/craftbook.json +284 -0
- package/data/craftbook-templates/li/library-package/versions/1.0.3/test.json +92 -0
- package/data/craftbook-templates/li/literature-review/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/li/literature-review/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/li/literature-review/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/lo/localize-content/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/lo/localize-content/versions/1.0.3/craftbook.json +275 -0
- package/data/craftbook-templates/lo/localize-content/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/lo/logo-set/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/lo/logo-set/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/lo/logo-set/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/ma/market-scan/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/ma/market-scan/versions/1.0.3/test.json +213 -0
- package/data/craftbook-templates/me/meeting-minutes/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/me/meeting-minutes/versions/1.0.3/craftbook.json +220 -0
- package/data/craftbook-templates/me/meeting-minutes/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/craftbook.json +218 -0
- package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/test.json +187 -0
- package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.3/craftbook.json +220 -0
- package/data/craftbook-templates/me/meeting-summary-audio/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/craftbook.json +250 -0
- package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +112 -0
- package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.3/test.json +92 -0
- package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.3/craftbook.json +229 -0
- package/data/craftbook-templates/mi/micro-game-jam/versions/1.0.3/test.json +99 -0
- package/data/craftbook-templates/mo/mock-interview/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/mo/mock-interview/versions/1.0.3/craftbook.json +270 -0
- package/data/craftbook-templates/mo/mock-interview/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.3/craftbook.json +293 -0
- package/data/craftbook-templates/mo/mod-scaffold/versions/1.0.3/test.json +136 -0
- package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.3/craftbook.json +294 -0
- package/data/craftbook-templates/mo/monitor-and-alert/versions/1.0.3/test.json +197 -0
- package/data/craftbook-templates/mo/month-close/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/mo/month-close/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/mo/month-close/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/mo/monthly-recording-review/versions/1.0.3/test.json +120 -0
- package/data/craftbook-templates/mo/moodboard/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/mo/moodboard/versions/1.0.3/craftbook.json +221 -0
- package/data/craftbook-templates/mo/moodboard/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/mo/morning-brief/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/mo/morning-brief/versions/1.0.3/craftbook.json +241 -0
- package/data/craftbook-templates/mo/morning-brief/versions/1.0.3/test.json +225 -0
- package/data/craftbook-templates/mo/morning-report/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/mo/morning-report/versions/1.0.3/craftbook.json +289 -0
- package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +250 -0
- package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.3/craftbook.json +212 -0
- package/data/craftbook-templates/mu/music-metadata-tag/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.2/test.json +0 -3
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.3/craftbook.json +324 -0
- package/data/craftbook-templates/na/narrated-slideshow/versions/1.1.3/test.json +86 -0
- package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/ne/newsletter-issue/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/test.json +3 -4
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.1/craftbook.json +242 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.1/test.json +120 -0
- package/data/craftbook-templates/no/notification-router/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/no/notification-router/versions/1.0.3/craftbook.json +293 -0
- package/data/craftbook-templates/no/notification-router/versions/1.0.3/test.json +162 -0
- package/data/craftbook-templates/oc/ocr-extract/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/oc/ocr-extract/versions/1.0.3/craftbook.json +275 -0
- package/data/craftbook-templates/oc/ocr-extract/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/of/offer-compare/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/of/offer-compare/versions/1.0.3/craftbook.json +214 -0
- package/data/craftbook-templates/of/offer-compare/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/of/office-hours/versions/1.1.1/craftbook.json +150 -0
- package/data/craftbook-templates/of/office-hours/versions/1.1.1/test.json +118 -0
- package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/on/onboarding-checklist/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/on/onboarding-flow/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/on/onboarding-flow/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/on/onboarding-flow/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/on/oncall-handoff/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/on/oncall-handoff/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/on/oncall-handoff/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/on/one-pager/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/on/one-pager/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/on/one-pager/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/op/ops-runbook/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/op/ops-runbook/versions/1.0.3/craftbook.json +197 -0
- package/data/craftbook-templates/op/ops-runbook/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/pa/page-spread/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pa/page-spread/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/pa/page-spread/versions/1.0.3/test.json +132 -0
- package/data/craftbook-templates/pa/parser-grammar/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pa/parser-grammar/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/pa/parser-grammar/versions/1.0.3/test.json +92 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/test.json +0 -3
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.1/craftbook.json +320 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.1/test.json +162 -0
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/test.json +16 -17
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.1/craftbook.json +695 -0
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.1/test.json +235 -0
- package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/craftbook.json +276 -0
- package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +122 -0
- package/data/craftbook-templates/ph/photo-cull/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ph/photo-cull/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/ph/photo-cull/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/ph/physics-toy/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ph/physics-toy/versions/1.0.3/craftbook.json +222 -0
- package/data/craftbook-templates/ph/physics-toy/versions/1.0.3/test.json +99 -0
- package/data/craftbook-templates/pi/pitch-deck/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pi/pitch-deck/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/pi/pitch-deck/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/pl/plan/versions/1.0.1/craftbook.json +222 -0
- package/data/craftbook-templates/pl/plan/versions/1.0.1/test.json +91 -0
- package/data/craftbook-templates/pl/playtest-report/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +111 -0
- package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.3/craftbook.json +276 -0
- package/data/craftbook-templates/po/podcast-chaptering/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/po/portfolio-site/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/po/portfolio-site/versions/1.0.3/craftbook.json +289 -0
- package/data/craftbook-templates/po/portfolio-site/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.8/craftbook.json +404 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.8/test.json +240 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.9/craftbook.json +589 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.7.9/test.json +240 -0
- package/data/craftbook-templates/pr/pr-security-review/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/pr-security-review/versions/1.0.3/craftbook.json +273 -0
- package/data/craftbook-templates/pr/pr-security-review/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/pr/practice-exam/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/craftbook.json +296 -0
- package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +117 -0
- package/data/craftbook-templates/pr/practice-session/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/practice-session/versions/1.0.3/craftbook.json +250 -0
- package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +114 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/pr/press-release/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/press-release/versions/1.0.3/craftbook.json +275 -0
- package/data/craftbook-templates/pr/press-release/versions/1.0.3/test.json +356 -0
- package/data/craftbook-templates/pr/price-tracker/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/price-tracker/versions/1.0.3/craftbook.json +220 -0
- package/data/craftbook-templates/pr/price-tracker/versions/1.0.3/test.json +150 -0
- package/data/craftbook-templates/pr/pricing-page/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/pricing-page/versions/1.0.3/craftbook.json +348 -0
- package/data/craftbook-templates/pr/pricing-page/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/pr/product-descriptions/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/product-descriptions/versions/1.0.3/craftbook.json +213 -0
- package/data/craftbook-templates/pr/product-descriptions/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/pr/proposal-sow/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pr/proposal-sow/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/pr/proposal-sow/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.9.0/test.json +0 -3
- package/data/craftbook-templates/pu/pull-request-review/versions/1.9.1/craftbook.json +432 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.9.1/test.json +141 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.3/craftbook.json +233 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/versions/1.0.3/test.json +123 -0
- package/data/craftbook-templates/pw/pwa-offline/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/pw/pwa-offline/versions/1.0.3/craftbook.json +293 -0
- package/data/craftbook-templates/pw/pwa-offline/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/test.json +116 -0
- package/data/craftbook-templates/re/reading-list/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/reading-list/versions/1.0.3/craftbook.json +218 -0
- package/data/craftbook-templates/re/reading-list/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/re/receipt-intake/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +149 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.3/craftbook.json +274 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/re/reception-report/versions/1.0.1/test.json +8 -9
- package/data/craftbook-templates/re/reception-report/versions/1.0.2/craftbook.json +295 -0
- package/data/craftbook-templates/re/reception-report/versions/1.0.2/test.json +168 -0
- package/data/craftbook-templates/re/recipe-capture/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +128 -0
- package/data/craftbook-templates/re/record-a-relative/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/craftbook.json +250 -0
- package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.3/craftbook.json +282 -0
- package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.0/test.json +15 -16
- package/data/craftbook-templates/re/refactor-module/versions/2.0.1/craftbook.json +693 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.1/test.json +241 -0
- package/data/craftbook-templates/re/regex-builder/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/regex-builder/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/re/regex-builder/versions/1.0.3/test.json +92 -0
- package/data/craftbook-templates/re/release-announcement/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/release-announcement/versions/1.0.3/craftbook.json +290 -0
- package/data/craftbook-templates/re/release-announcement/versions/1.0.3/test.json +202 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.3/craftbook.json +358 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.3/test.json +138 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.3/test.json +0 -3
- package/data/craftbook-templates/re/release-notes/versions/1.0.4/craftbook.json +336 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.4/test.json +111 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/test.json +0 -3
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.1/craftbook.json +317 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.1/test.json +110 -0
- package/data/craftbook-templates/re/reliability-review/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/re/reliability-review/versions/1.0.3/test.json +115 -0
- package/data/craftbook-templates/re/report-pdf/versions/1.1.2/test.json +0 -3
- package/data/craftbook-templates/re/report-pdf/versions/1.1.3/craftbook.json +317 -0
- package/data/craftbook-templates/re/report-pdf/versions/1.1.3/test.json +98 -0
- package/data/craftbook-templates/re/research-report/versions/1.0.3/craftbook.json +279 -0
- package/data/craftbook-templates/re/research-report/versions/1.0.3/test.json +113 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.2.3/craftbook.json +388 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.2.3/test.json +243 -0
- package/data/craftbook-templates/re/rest-api/versions/1.0.3/test.json +0 -3
- package/data/craftbook-templates/re/rest-api/versions/1.0.4/craftbook.json +282 -0
- package/data/craftbook-templates/re/rest-api/versions/1.0.4/test.json +387 -0
- package/data/craftbook-templates/re/resume-cv/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/re/resume-cv/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/re/resume-cv/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/re/reviewer-loop/versions/1.0.1/craftbook.json +144 -0
- package/data/craftbook-templates/re/reviewer-loop/versions/1.0.1/test.json +135 -0
- package/data/craftbook-templates/ro/rollback-plan/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ro/rollback-plan/versions/1.0.3/craftbook.json +290 -0
- package/data/craftbook-templates/ro/rollback-plan/versions/1.0.3/test.json +162 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.6/craftbook.json +595 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.6/test.json +157 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.3/test.json +0 -3
- package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/craftbook.json +302 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +137 -0
- package/data/craftbook-templates/ru/runbook/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ru/runbook/versions/1.0.3/craftbook.json +282 -0
- package/data/craftbook-templates/ru/runbook/versions/1.0.3/test.json +118 -0
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/test.json +12 -13
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.1/craftbook.json +619 -0
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.1/test.json +225 -0
- package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.3/test.json +0 -3
- package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.4/craftbook.json +274 -0
- package/data/craftbook-templates/sc/scrape-to-structured/versions/1.0.4/test.json +162 -0
- package/data/craftbook-templates/sc/script-automation/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/sc/script-automation/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/sc/script-automation/versions/1.0.3/test.json +162 -0
- package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.3/test.json +0 -3
- package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.4/craftbook.json +282 -0
- package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.4/test.json +90 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.5/craftbook.json +608 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/2.0.5/test.json +157 -0
- package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.3/craftbook.json +213 -0
- package/data/craftbook-templates/se/seo-meta-pack/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/sh/ship/versions/1.1.1/craftbook.json +301 -0
- package/data/craftbook-templates/sh/ship/versions/1.1.1/test.json +225 -0
- package/data/craftbook-templates/so/social-digest/versions/1.0.1/test.json +7 -8
- package/data/craftbook-templates/so/social-digest/versions/1.0.2/craftbook.json +233 -0
- package/data/craftbook-templates/so/social-digest/versions/1.0.2/test.json +168 -0
- package/data/craftbook-templates/so/social-thread/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/so/social-thread/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/so/social-thread/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/so/source-quality-audit/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +158 -0
- package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.3/craftbook.json +280 -0
- package/data/craftbook-templates/sp/spa-dashboard/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.4/test.json +1 -4
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.5/craftbook.json +610 -0
- package/data/craftbook-templates/sp/spec-authoring/versions/2.0.5/test.json +162 -0
- package/data/craftbook-templates/sp/spec-doc/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/sp/spec-doc/versions/1.0.3/craftbook.json +280 -0
- package/data/craftbook-templates/sp/spec-doc/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.3/craftbook.json +221 -0
- package/data/craftbook-templates/sp/spreadsheet-model/versions/1.0.3/test.json +160 -0
- package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.3/craftbook.json +271 -0
- package/data/craftbook-templates/sp/sprite-sheet/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/sq/sql-analysis/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/sq/sql-analysis/versions/1.0.3/craftbook.json +218 -0
- package/data/craftbook-templates/sq/sql-analysis/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/st/standup-summary/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/st/standup-summary/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/st/standup-summary/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/st/state-machine/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/st/state-machine/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/st/state-machine/versions/1.0.3/test.json +92 -0
- package/data/craftbook-templates/st/status-report/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/st/status-report/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/st/status-report/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/su/subscription-audit/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/su/subscription-audit/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/su/subscription-audit/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/su/subtitle-generator/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/su/subtitle-generator/versions/1.0.3/craftbook.json +264 -0
- package/data/craftbook-templates/su/subtitle-generator/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/su/summarize-long/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/su/summarize-long/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/su/summarize-long/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/su/survey-analysis/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/su/survey-analysis/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/su/survey-analysis/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/sv/svg-animation/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/sv/svg-animation/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/sv/svg-animation/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/ta/tailor-resume/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ta/tailor-resume/versions/1.0.3/craftbook.json +226 -0
- package/data/craftbook-templates/ta/tailor-resume/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.4/test.json +1 -4
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.5/craftbook.json +582 -0
- package/data/craftbook-templates/te/technical-documentation/versions/2.0.5/test.json +174 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/craftbook.json +320 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/test.json +116 -0
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/test.json +13 -16
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.1/craftbook.json +590 -0
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.1/test.json +195 -0
- package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/craftbook.json +280 -0
- package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/test.json +144 -0
- package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/craftbook.json +280 -0
- package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +142 -0
- package/data/craftbook-templates/th/threat-model/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/th/threat-model/versions/1.0.3/craftbook.json +274 -0
- package/data/craftbook-templates/th/threat-model/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.3/craftbook.json +214 -0
- package/data/craftbook-templates/th/thumbnail-generator/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/craftbook.json +321 -0
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +159 -0
- package/data/craftbook-templates/to/tone-rewrite/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/to/tone-rewrite/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/to/tone-rewrite/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/to/topic-explainer/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/to/topic-explainer/versions/1.0.3/craftbook.json +274 -0
- package/data/craftbook-templates/to/topic-explainer/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/craftbook.json +250 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/test.json +101 -0
- package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.3/craftbook.json +218 -0
- package/data/craftbook-templates/tr/transcribe-audio/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/craftbook.json +329 -0
- package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/test.json +154 -0
- package/data/craftbook-templates/tr/translate-content/versions/1.1.1/craftbook.json +90 -0
- package/data/craftbook-templates/tr/translate-content/versions/1.1.1/test.json +141 -0
- package/data/craftbook-templates/tr/translate-content/versions/1.1.2/craftbook.json +139 -0
- package/data/craftbook-templates/tr/translate-content/versions/1.1.2/test.json +141 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/test.json +13 -14
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.1/craftbook.json +589 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.1/test.json +221 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.0/test.json +12 -13
- package/data/craftbook-templates/ux/ux-update/versions/1.0.1/craftbook.json +604 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.1/test.json +206 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.1.0/test.json +0 -3
- package/data/craftbook-templates/ve/version-bump/versions/1.1.1/craftbook.json +322 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.1.1/test.json +92 -0
- package/data/craftbook-templates/vi/video-storyboard/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/vi/video-storyboard/versions/1.0.3/craftbook.json +221 -0
- package/data/craftbook-templates/vi/video-storyboard/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/vi/visit-prep/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/vi/visit-prep/versions/1.0.3/craftbook.json +274 -0
- package/data/craftbook-templates/vi/visit-prep/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/vo/voiceover-script/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/vo/voiceover-script/versions/1.0.3/craftbook.json +216 -0
- package/data/craftbook-templates/vo/voiceover-script/versions/1.0.3/test.json +103 -0
- package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/craftbook.json +291 -0
- package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +124 -0
- package/data/craftbook-templates/we/web-app-crud/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/we/web-app-crud/versions/1.0.3/craftbook.json +281 -0
- package/data/craftbook-templates/we/web-app-crud/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/we/web-component/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/we/web-component/versions/1.0.3/craftbook.json +222 -0
- package/data/craftbook-templates/we/web-component/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/we/webhook-handler/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/we/webhook-handler/versions/1.0.3/craftbook.json +283 -0
- package/data/craftbook-templates/we/webhook-handler/versions/1.0.3/test.json +162 -0
- package/data/craftbook-templates/we/week-plan/versions/1.0.3/craftbook.json +276 -0
- package/data/craftbook-templates/we/week-plan/versions/1.0.3/test.json +258 -0
- package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/we/weekly-menu-plan/versions/1.0.3/test.json +97 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.3/craftbook.json +214 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/versions/1.0.3/test.json +104 -0
- package/data/craftbook-templates/we/weekly-review/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/we/weekly-review/versions/1.0.3/craftbook.json +219 -0
- package/data/craftbook-templates/we/weekly-review/versions/1.0.3/test.json +110 -0
- package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +138 -0
- package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/craftbook.json +277 -0
- package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/test.json +113 -0
- package/data/craftbook-templates/ye/year-in-review/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/craftbook.json +250 -0
- package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/test.json +145 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.2/test.json +0 -3
- package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.3/craftbook.json +271 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/versions/1.0.3/test.json +103 -0
- package/package.json +1 -1
- package/schemas/craftbook-doc.schema.json +86 -0
- package/schemas/craftbook-template-version.schema.json +86 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Anomaly scan over seeded orders data",
|
|
4
|
+
"objective": "Measure whether the anomaly-scan craftbook defines reproducible criteria, emits machine-readable flags, and writes a triage-ready report.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"data"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "In the `Anomaly Scan Eval` project, read `data/orders.csv`, define concrete anomaly thresholds, write `data/anomalies.json`, and then write `tasks/eval/report.md` ranking the findings. The report must separate likely real problems from probable noise.",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "Anomaly Scan Eval",
|
|
11
|
+
"about": "Self-contained eval project for anomaly-scan. The source dataset is workspace/data/orders.csv.",
|
|
12
|
+
"missionObjectives": "Find and explain anomalous order rows with explicit rules, JSON flags, severities, and a triage report.",
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "data/orders.csv",
|
|
16
|
+
"content": "order_id,order_date,sku,quantity,revenue,region\nO-1001,2026-05-01,CHAIR-1,2,240,West\nO-1002,2026-05-01,LAMP-2,1,80,East\nO-1003,2026-05-02,DESK-5,1,620,West\nO-1004,2026-05-02,CHAIR-1,3,360,South\nO-1005,2026-05-03,LAMP-2,2,160,East\nO-1006,2026-05-03,DESK-5,1,610,West\nO-1007,2026-05-04,CHAIR-1,4,-480,West\nO-1008,2026-05-04,LAMP-2,1,82,North\nO-1009,2026-05-05,DESK-5,50,30500,West\nO-1010,2028-01-01,LAMP-2,1,80,East\nO-1011,2026-05-06,CHAIR-1,2,242,South\nO-1012,2026-05-06,DESK-5,1,615,West\nO-1013,2026-05-07,LAMP-2,0,0,East\n"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"worker": {
|
|
20
|
+
"name": "Cato",
|
|
21
|
+
"role": "Data Analyst"
|
|
22
|
+
},
|
|
23
|
+
"craftbookParams": {
|
|
24
|
+
"workPath": "tasks/eval"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"mocks": [],
|
|
28
|
+
"success": {
|
|
29
|
+
"summary": "workspace/report.md and data/anomalies.json identify the seeded anomalous rows with rules, thresholds, severity, and triage guidance.",
|
|
30
|
+
"deliverables": [
|
|
31
|
+
{
|
|
32
|
+
"path": "tasks/eval/report.md",
|
|
33
|
+
"kind": "markdown-report",
|
|
34
|
+
"minBytes": 1800,
|
|
35
|
+
"checks": [
|
|
36
|
+
{
|
|
37
|
+
"kind": "contains",
|
|
38
|
+
"file": "tasks/eval/report.md",
|
|
39
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
40
|
+
"flags": "i"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"kind": "contains",
|
|
44
|
+
"file": "tasks/eval/report.md",
|
|
45
|
+
"pattern": "O-1007|O-1009|O-1010|O-1013",
|
|
46
|
+
"flags": "i"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"kind": "contains",
|
|
50
|
+
"file": "tasks/eval/report.md",
|
|
51
|
+
"pattern": "negative|future|quantity|outlier|threshold|severity",
|
|
52
|
+
"flags": "i"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"kind": "contains",
|
|
56
|
+
"file": "tasks/eval/report.md",
|
|
57
|
+
"pattern": "likely real|probable noise|false positive",
|
|
58
|
+
"flags": "i"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"kind": "contains",
|
|
62
|
+
"file": "tasks/eval/report.md",
|
|
63
|
+
"pattern": "recommended next steps|triage|action",
|
|
64
|
+
"flags": "i"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"path": "data/anomalies.json",
|
|
70
|
+
"kind": "json",
|
|
71
|
+
"minBytes": 300,
|
|
72
|
+
"checks": [
|
|
73
|
+
{
|
|
74
|
+
"kind": "sniff",
|
|
75
|
+
"file": "data/anomalies.json",
|
|
76
|
+
"sniff": "json-valid"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"kind": "contains",
|
|
80
|
+
"file": "data/anomalies.json",
|
|
81
|
+
"pattern": "O-1007|O-1009|O-1010|O-1013",
|
|
82
|
+
"flags": "i"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"kind": "contains",
|
|
86
|
+
"file": "data/anomalies.json",
|
|
87
|
+
"pattern": "severity|rule|threshold|summary",
|
|
88
|
+
"flags": "i"
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"rubric": {
|
|
95
|
+
"artifact": {
|
|
96
|
+
"path": "tasks/eval/report.md",
|
|
97
|
+
"kind": "markdown"
|
|
98
|
+
},
|
|
99
|
+
"axes": [
|
|
100
|
+
{
|
|
101
|
+
"name": "accuracy",
|
|
102
|
+
"description": "Computed figures are correct against the seeded records."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "grounding",
|
|
106
|
+
"description": "Every claim traces to the seeded data — nothing invented."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "structure",
|
|
110
|
+
"description": "Tables and sections make the analysis checkable at a glance."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "actionability",
|
|
114
|
+
"description": "Recommendations follow from the findings and are concretely doable."
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
"qualityFocus": [
|
|
119
|
+
"criteria first",
|
|
120
|
+
"JSON flags",
|
|
121
|
+
"ranked triage report"
|
|
122
|
+
]
|
|
123
|
+
}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "api-contract-review",
|
|
3
|
+
"name": "API Contract Review",
|
|
4
|
+
"description": "Review an API contract or specification (OpenAPI/REST/GraphQL) for correctness, consistency, and developer ergonomics, then produce a findings report. First scopes the surface and locks an API design checklist (resource naming and HTTP semantics, status codes, pagination and filtering, error schema consistency, auth, versioning and backward compatibility, idempotency, and schema/type rigor), then reviews each endpoint and type against those rules and REST/GraphQL best practices, then writes a findings report rating each issue and giving the corrected contract snippet. Use this for an API design review, reviewing an OpenAPI/Swagger spec, a REST or GraphQL contract review, endpoint/schema critique, or checking an API for consistency and backward compatibility before it ships — it returns specific, spec-anchored fixes rather than 'make the API cleaner'.\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 contract review (reviewer) — map the surface, lock an API design checklist → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Review the endpoints (developer) — check each operation + type against the rules → gated on artifact `{{workPath}}/review.md` (markdown-notes)\n3. Write the contract report (reviewer) — findings with corrected snippets + compat verdict → gated on artifact `{{workPath}}/api-review.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
|
+
"api contract review",
|
|
8
|
+
"review my openapi spec",
|
|
9
|
+
"review this REST API",
|
|
10
|
+
"graphql schema review",
|
|
11
|
+
"is this api backward compatible",
|
|
12
|
+
"api design review"
|
|
13
|
+
],
|
|
14
|
+
"paramSchema": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"workPath": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"title": "Working folder",
|
|
20
|
+
"description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
|
|
21
|
+
"default": "{{task.dir}}"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"steps": [
|
|
26
|
+
{
|
|
27
|
+
"id": "scope",
|
|
28
|
+
"name": "Scope the contract review",
|
|
29
|
+
"description": "map the surface, lock an API design checklist",
|
|
30
|
+
"prompt": "Step 1: Read the contract (OpenAPI/Swagger YAML/JSON, a GraphQL SDL, or the route/handler definitions) and inventory every endpoint/operation/type with its method, path, params, request/response schema, and auth. Step 2: Note whether this is a NEW API or a CHANGE to an existing one (if a change, backward compatibility is a first-class criterion). Step 3: Write an API acceptance-criteria checklist covering: resource naming (nouns, plural collections, consistent casing) and correct HTTP-method semantics; correct and consistent status codes (201 on create, 204 on empty, 4xx vs 5xx); a single consistent error schema across all endpoints; pagination/filtering/sorting conventions applied uniformly; auth declared per operation; explicit versioning and no breaking changes (no removed/renamed fields, no narrowed types, no new required inputs) for changes; idempotency for unsafe-but-retried operations; and schema rigor (required vs optional correct, enums constrained, types precise, examples present). Step 4: State the pass condition for each. Write the surface inventory + checklist to `write_task_note` AND `{{workPath}}/scope.md`. No findings yet.\n\nThe deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
|
|
31
|
+
"suggestedRole": "reviewer",
|
|
32
|
+
"advanceWhen": {
|
|
33
|
+
"file": "{{workPath}}/scope.md",
|
|
34
|
+
"minBytes": 1,
|
|
35
|
+
"sniff": "nonempty",
|
|
36
|
+
"artifact": true
|
|
37
|
+
},
|
|
38
|
+
"gate": {
|
|
39
|
+
"at": "completion",
|
|
40
|
+
"checks": [
|
|
41
|
+
{
|
|
42
|
+
"kind": "minBytes",
|
|
43
|
+
"file": "{{workPath}}/scope.md",
|
|
44
|
+
"bytes": 120,
|
|
45
|
+
"artifact": true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"kind": "sniff",
|
|
49
|
+
"file": "{{workPath}}/scope.md",
|
|
50
|
+
"sniff": "nonempty",
|
|
51
|
+
"artifact": true
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"onReject": "scope",
|
|
55
|
+
"maxAttempts": 3
|
|
56
|
+
},
|
|
57
|
+
"next": "review",
|
|
58
|
+
"toolPolicy": {
|
|
59
|
+
"disallowBuiltinToolsets": [
|
|
60
|
+
"ai-apps",
|
|
61
|
+
"archives",
|
|
62
|
+
"audio",
|
|
63
|
+
"browser-automation",
|
|
64
|
+
"code-execution",
|
|
65
|
+
"craftbooks",
|
|
66
|
+
"data-tables",
|
|
67
|
+
"entity-intel",
|
|
68
|
+
"git",
|
|
69
|
+
"image-intel",
|
|
70
|
+
"images",
|
|
71
|
+
"role-delegation",
|
|
72
|
+
"role-delegation-escalation",
|
|
73
|
+
"security-intel",
|
|
74
|
+
"team-management",
|
|
75
|
+
"videos",
|
|
76
|
+
"web",
|
|
77
|
+
"workspace-fs-write"
|
|
78
|
+
],
|
|
79
|
+
"outputMedium": "artifact",
|
|
80
|
+
"additionalOutputMedia": [
|
|
81
|
+
"task-note"
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "review",
|
|
87
|
+
"name": "Review the endpoints",
|
|
88
|
+
"description": "check each operation + type against the rules",
|
|
89
|
+
"prompt": "Step 1: Walk EACH endpoint/operation against the checklist: verify the method matches the action, the path is a sensible resource, the status codes are correct and complete (including error codes), the request/response schemas are precise, and auth is declared. Step 2: Walk EACH type/schema: required vs optional fields are right, enums and formats constrain values, nullability is intentional, and naming is consistent. Step 3: Cross-cut the whole surface for consistency: do all errors share one schema, is pagination uniform, is casing consistent, are similar resources modeled the same way. Step 4: For a CHANGE, diff against the prior contract and flag every breaking change. Step 5: For each finding capture: the operation/type, the rule violated, the impact on a client developer, severity, and the CORRECTED snippet (the fixed YAML/SDL/schema fragment). Good looks like: a finding with a before/after contract snippet, not 'improve error handling'. Stage findings to `write_task_note`. Do not write the report yet.\n\nThe deliverable `{{workPath}}/review.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.",
|
|
90
|
+
"suggestedRole": "developer",
|
|
91
|
+
"advanceWhen": {
|
|
92
|
+
"file": "{{workPath}}/review.md",
|
|
93
|
+
"minBytes": 1,
|
|
94
|
+
"sniff": "nonempty",
|
|
95
|
+
"artifact": true
|
|
96
|
+
},
|
|
97
|
+
"gate": {
|
|
98
|
+
"at": "completion",
|
|
99
|
+
"checks": [
|
|
100
|
+
{
|
|
101
|
+
"kind": "minBytes",
|
|
102
|
+
"file": "{{workPath}}/review.md",
|
|
103
|
+
"bytes": 120,
|
|
104
|
+
"artifact": true
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"kind": "sniff",
|
|
108
|
+
"file": "{{workPath}}/review.md",
|
|
109
|
+
"sniff": "nonempty",
|
|
110
|
+
"artifact": true
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"onReject": "review",
|
|
114
|
+
"maxAttempts": 3
|
|
115
|
+
},
|
|
116
|
+
"next": "report",
|
|
117
|
+
"toolPolicy": {
|
|
118
|
+
"disallowBuiltinToolsets": [
|
|
119
|
+
"ai-apps",
|
|
120
|
+
"archives",
|
|
121
|
+
"audio",
|
|
122
|
+
"browser-automation",
|
|
123
|
+
"code-execution",
|
|
124
|
+
"craftbooks",
|
|
125
|
+
"data-tables",
|
|
126
|
+
"entity-intel",
|
|
127
|
+
"git",
|
|
128
|
+
"image-intel",
|
|
129
|
+
"images",
|
|
130
|
+
"role-delegation",
|
|
131
|
+
"role-delegation-escalation",
|
|
132
|
+
"security-intel",
|
|
133
|
+
"team-management",
|
|
134
|
+
"videos",
|
|
135
|
+
"web",
|
|
136
|
+
"workspace-fs-write"
|
|
137
|
+
],
|
|
138
|
+
"outputMedium": "artifact",
|
|
139
|
+
"additionalOutputMedia": [
|
|
140
|
+
"task-note"
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "report",
|
|
146
|
+
"name": "Write the contract report",
|
|
147
|
+
"description": "findings with corrected snippets + compat verdict",
|
|
148
|
+
"prompt": "Step 1: Open `{{workPath}}/api-review.md` and write a verdict: Approve / Approve-with-changes / Request-changes, and for a change an explicit Backward-compatible: yes/no. Step 2: Add a '## Breaking changes' section first if any (each with the operation and the corrected approach), then '## Blocking' and '## Non-blocking' findings, each as `operation/type — rule — impact — corrected snippet`. Step 3: Add a '## Consistency' section for cross-cutting issues (error schema, pagination, casing). Step 4: Add a '## Strengths' note on what the contract gets right. Every finding must cite the operation/type and include a concrete corrected snippet — no generic advice. On a loop-back, fix only the named gaps. `write_task_note` the report path, the compatibility verdict, and the count of blocking findings.\n\nThe deliverable `{{workPath}}/api-review.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.",
|
|
149
|
+
"suggestedRole": "reviewer",
|
|
150
|
+
"advanceWhen": {
|
|
151
|
+
"file": "{{workPath}}/api-review.md",
|
|
152
|
+
"minBytes": 1,
|
|
153
|
+
"sniff": "nonempty",
|
|
154
|
+
"artifact": true
|
|
155
|
+
},
|
|
156
|
+
"gate": {
|
|
157
|
+
"at": "completion",
|
|
158
|
+
"checks": [
|
|
159
|
+
{
|
|
160
|
+
"kind": "minBytes",
|
|
161
|
+
"file": "{{workPath}}/api-review.md",
|
|
162
|
+
"bytes": 1500,
|
|
163
|
+
"artifact": true
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"kind": "contains",
|
|
167
|
+
"file": "{{workPath}}/api-review.md",
|
|
168
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
169
|
+
"flags": "i",
|
|
170
|
+
"label": "at least one markdown heading",
|
|
171
|
+
"artifact": true
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
"onReject": "report",
|
|
175
|
+
"maxAttempts": 4
|
|
176
|
+
},
|
|
177
|
+
"next": "evaluate",
|
|
178
|
+
"toolPolicy": {
|
|
179
|
+
"disallowBuiltinToolsets": [
|
|
180
|
+
"ai-apps",
|
|
181
|
+
"archives",
|
|
182
|
+
"audio",
|
|
183
|
+
"browser-automation",
|
|
184
|
+
"code-execution",
|
|
185
|
+
"craftbooks",
|
|
186
|
+
"data-tables",
|
|
187
|
+
"entity-intel",
|
|
188
|
+
"git",
|
|
189
|
+
"image-intel",
|
|
190
|
+
"images",
|
|
191
|
+
"role-delegation",
|
|
192
|
+
"role-delegation-escalation",
|
|
193
|
+
"security-intel",
|
|
194
|
+
"team-management",
|
|
195
|
+
"videos",
|
|
196
|
+
"web",
|
|
197
|
+
"workspace-fs-write"
|
|
198
|
+
],
|
|
199
|
+
"outputMedium": "artifact",
|
|
200
|
+
"additionalOutputMedia": [
|
|
201
|
+
"task-note"
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "evaluate",
|
|
207
|
+
"name": "Evaluate",
|
|
208
|
+
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
209
|
+
"prompt": "Open `{{workPath}}/api-review.md` and grade it against the scope checklist. Check EACH criterion and write PASS/FAIL with a one-line reason: (1) every endpoint/operation and type was reviewed; (2) HTTP-method/status-code semantics were checked; (3) error schema, pagination, and naming consistency were assessed across the surface; (4) for a change, backward compatibility is explicitly stated and any breaking change is flagged; (5) each finding includes a concrete corrected contract snippet; (6) findings are prioritized (breaking/blocking/non-blocking); (7) the verdict matches the findings. If any criterion fails, name the exact gap and loop back.\n\nThe deliverable lives in the project's artifacts drawer — open `{{workPath}}/api-review.md` with `read_artifact`, not `read_file`.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"report\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
|
|
210
|
+
"suggestedRole": "reviewer",
|
|
211
|
+
"consumes": [
|
|
212
|
+
{
|
|
213
|
+
"file": "{{workPath}}/api-review.md",
|
|
214
|
+
"artifact": true
|
|
215
|
+
}
|
|
216
|
+
],
|
|
217
|
+
"next": "report",
|
|
218
|
+
"toolPolicy": {
|
|
219
|
+
"disallowBuiltinToolsets": [
|
|
220
|
+
"ai-apps",
|
|
221
|
+
"archives",
|
|
222
|
+
"audio",
|
|
223
|
+
"browser-automation",
|
|
224
|
+
"code-execution",
|
|
225
|
+
"craftbooks",
|
|
226
|
+
"data-tables",
|
|
227
|
+
"entity-intel",
|
|
228
|
+
"git",
|
|
229
|
+
"image-intel",
|
|
230
|
+
"images",
|
|
231
|
+
"role-delegation",
|
|
232
|
+
"role-delegation-escalation",
|
|
233
|
+
"security-intel",
|
|
234
|
+
"team-management",
|
|
235
|
+
"videos",
|
|
236
|
+
"web",
|
|
237
|
+
"workspace-fs-write"
|
|
238
|
+
],
|
|
239
|
+
"outputMedium": "task-note"
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"id": "finish",
|
|
244
|
+
"name": "Finish",
|
|
245
|
+
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
246
|
+
"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.",
|
|
247
|
+
"suggestedRole": "developer",
|
|
248
|
+
"terminal": true,
|
|
249
|
+
"toolPolicy": {
|
|
250
|
+
"disallowBuiltinToolsets": [
|
|
251
|
+
"ai-apps",
|
|
252
|
+
"archives",
|
|
253
|
+
"artifacts",
|
|
254
|
+
"audio",
|
|
255
|
+
"browser-automation",
|
|
256
|
+
"code-execution",
|
|
257
|
+
"craftbooks",
|
|
258
|
+
"data-tables",
|
|
259
|
+
"entity-intel",
|
|
260
|
+
"git",
|
|
261
|
+
"image-intel",
|
|
262
|
+
"images",
|
|
263
|
+
"role-delegation",
|
|
264
|
+
"role-delegation-escalation",
|
|
265
|
+
"security-intel",
|
|
266
|
+
"team-management",
|
|
267
|
+
"videos",
|
|
268
|
+
"web",
|
|
269
|
+
"workspace-fs-write"
|
|
270
|
+
],
|
|
271
|
+
"outputMedium": "task-note"
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
],
|
|
275
|
+
"version": "1.1.3",
|
|
276
|
+
"releasedAt": "2026-09-01T20:00:00Z",
|
|
277
|
+
"minGezelVersion": "1.26233"
|
|
278
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "API Contract Review codebase eval",
|
|
4
|
+
"objective": "Measure whether the review reconciles an OpenAPI contract with the implemented route inventory and catches consistency, semantics, auth, pagination, and drift defects without inventing drift.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"corpus"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "Use the API Contract Review craftbook for a codebase-wide API design pass. Reconcile openapi.yaml against the implemented routes and write tasks/eval/api-review.md with corrected snippets, plus a machine-readable list of the contract/implementation drifts you found at tasks/eval/drift.json (one record per drift, each with its path, method, issue, and fix). Do not edit the contract or the handlers.",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "API Design Maintenance Eval",
|
|
11
|
+
"about": "A small REST API whose OpenAPI contract and route files contain deliberate design defects and contract/implementation drift.",
|
|
12
|
+
"missionObjectives": "Produce an evidence-backed API design report covering every documented operation and every implemented route, plus a structured drift list.",
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "openapi.yaml",
|
|
16
|
+
"content": "openapi: 3.0.3\ninfo: { title: Widget API, version: 1.0.0 }\npaths:\n /getWidgets:\n get:\n summary: List widgets\n responses:\n '200':\n description: widgets\n content:\n application/json:\n schema: { type: array, items: { $ref: '#/components/schemas/Widget' } }\n /widgets:\n post:\n requestBody:\n required: true\n content:\n application/json:\n schema: { $ref: '#/components/schemas/Widget' }\n responses:\n '200': { description: created }\n /widgets/{widgetId}/history:\n get:\n summary: Revision history for one widget\n parameters:\n - { name: widgetId, in: path, required: true, schema: { type: string } }\n responses:\n '200':\n description: revisions\n content:\n application/json:\n schema: { type: array, items: { $ref: '#/components/schemas/Revision' } }\n /widgets/{widgetId}/status:\n get:\n summary: Processing status for one widget\n parameters:\n - { name: widgetId, in: path, required: true, schema: { type: string } }\n responses:\n '200':\n description: status\n content:\n application/json:\n schema:\n type: object\n required: [state, retryCount]\n properties:\n state: { type: string, enum: [queued, running, done] }\n retryCount: { type: string }\n /widgets/{widgetId}/owner:\n get:\n summary: Owner of one widget\n parameters:\n - { name: widgetId, in: path, required: true, schema: { type: string } }\n responses:\n '200':\n description: owner\n content:\n application/json:\n schema:\n type: object\n required: [id]\n properties:\n id: { type: string }\n email: { type: string, nullable: true }\n /users/{userId}:\n get:\n summary: One user\n parameters:\n - { name: userId, in: path, required: true, schema: { type: string } }\n responses:\n '200':\n description: user\n content:\n application/json:\n schema: { $ref: '#/components/schemas/User' }\n /users/{userId}/sessions:\n get:\n summary: Sessions for one user\n parameters:\n - { name: userId, in: path, required: true, schema: { type: string } }\n responses:\n '200':\n description: sessions\n content:\n application/json:\n schema: { type: array, items: { $ref: '#/components/schemas/Session' } }\ncomponents:\n schemas:\n Widget:\n type: object\n properties:\n id: { type: string }\n display_name: { type: string }\n Revision:\n type: object\n properties:\n id: { type: string }\n changedAt: { type: string, format: date-time }\n User:\n type: object\n properties:\n id: { type: string }\n email: { type: string }\n Session:\n type: object\n properties:\n id: { type: string }\n startedAt: { type: string, format: date-time }\n"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "src/routes.ts",
|
|
20
|
+
"content": "import { registerSessionRoutes } from './session-routes';\n\nexport function registerRoutes(app, db) {\n app.get('/getWidgets', async (_req, res) => {\n res.json(await db.widgets.all());\n });\n\n app.post('/widgets', async (req, res) => {\n const widget = await db.widgets.create(req.body);\n res.status(200).json(widget);\n });\n\n app.get('/widgets/:id', async (req, res) => {\n const item = await db.widgets.get(req.params.id);\n if (!item) return res.status(404).json({ message: 'missing' });\n res.json(item);\n });\n\n app.get('/widgets/:widgetId/status', async (req, res) => {\n const row = await db.widgets.status(req.params.widgetId);\n res.json({ state: row.state, retryCount: row.attempts.length });\n });\n\n app.get('/widgets/:widgetId/owner', async (req, res) => {\n const owner = await db.widgets.owner(req.params.widgetId);\n const body = { id: owner.id };\n if (owner.email !== null && owner.email !== undefined) body.email = owner.email;\n res.json(body);\n });\n\n app.get('/users/:userId', async (req, res) => {\n res.json(await db.users.get(req.params.userId));\n });\n\n registerSessionRoutes(app, db);\n}\n"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"path": "src/session-routes.ts",
|
|
24
|
+
"content": "export function registerSessionRoutes(app, db) {\n app.get('/users/:userId/sessions', async (req, res) => {\n res.json(await db.sessions.forUser(req.params.userId));\n });\n}\n"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"path": "docs/api-contract.md",
|
|
28
|
+
"content": "# Contract conventions\n\n`openapi.yaml` is the contract. The route inventory is `src/routes.ts` **and**\n`src/session-routes.ts` together: `registerRoutes` imports and calls\n`registerSessionRoutes`, so an operation is implemented when a handler for it exists in\neither file.\n\n## Path parameters\n\nPath templating differs by convention and is never drift on its own. The contract writes a\npath parameter as `{name}`; the router writes the same parameter as `:name`. `GET\n/users/{userId}` and `app.get('/users/:userId', ...)` are the same operation.\n\n## Response bodies\n\nA response property listed under `required` must always be present with its declared type.\nA property that is NOT listed under `required` and is marked `nullable: true` may be\nomitted or sent as null: a handler that leaves it out when it has no value is correct as\nwritten, not a contract violation.\n"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"path": "tests/api-contract-oracle.mjs",
|
|
32
|
+
"content": "// Precision/recall oracle for the API contract review.\n//\n// Run by the harness with the reviewed workspace as cwd. It grades the two\n// halves of a real reconciliation separately, because recall alone is passed\n// by a report that flags every operation it could not instantly match:\n//\n// RECALL - each of the three REAL drifts between openapi.yaml and the\n// route inventory is reported, matched by path AND class.\n// PRECISION - none of the three SAFE operations is CLAIMED to drift. Each\n// is a deliberate look-alike of a real drift, and each is\n// documented as correct in docs/api-contract.md.\n//\n// Classes are matched by their ordinary names - documented but not\n// implemented, implemented but not documented, response schema mismatch - and\n// never by wording this fixture invented, so the bar is \"a real contract\n// reconciliation\" rather than this scenario's vocabulary.\n//\n// Three rules keep the precision half off correct work, because a gate that\n// punishes a good review is worse than no gate at all:\n//\n// 1. A record is judged by what it is ABOUT - its path/endpoint field - not\n// by every string it contains. Citing a neighbouring operation as the\n// model for a fix (\"add a path item like /widgets/{widgetId}/owner\") is\n// normal review prose, not a claim against that neighbour.\n// 2. Precision fires only on a reconciliation CLAIM: missing handler,\n// undocumented operation, schema or parameter disagreement. Saying a\n// safe operation has no pagination, no security scheme or no documented\n// 404 is TRUE of this fixture and is fair review - those design smells\n// are graded by the api-review.md checks, never punished here. HARD\n// claims name the operation itself and always count; SOFT claims leave\n// the subject implicit (\"missing from the spec\") and are read as design\n// remarks when they sit in a clause about a design feature.\n// 3. A \"this one is fine\" verdict is a non-claim only when it asserts no\n// drift class. That keeps ordinary remediation wording - \"change the\n// type so the schema matches the handler\" - from erasing a real finding,\n// and stops a false positive from being excused by appending \"no drift\".\n//\n// The recall classes are built from the same families as the precision\n// claims, so a record that satisfies recall can never be discarded as a\n// verdict, and the two halves cannot drift apart as the vocabulary grows.\nimport { readFileSync } from 'node:fs';\n\n/**\n * Fail with the message ALONE on stderr.\n *\n * A thrown Error would work, but the harness feeds this script's stderr\n * into the model's repair nudge verbatim, and an uncaught throw pads that\n * nudge with a Node stack trace and a version banner. The actionable\n * sentence is what the next attempt needs; the stack is noise that pushes\n * it out of view on a small model.\n */\nfunction fail(message) {\n console.error(message);\n process.exit(1);\n}\n\n\nconst DRIFT = 'tasks/eval/drift.json';\n\nlet raw;\ntry {\n raw = readFileSync(DRIFT, 'utf8');\n} catch {\n fail(DRIFT + ' does not exist - the machine-readable drift list is required');\n}\n\nlet records;\ntry {\n records = JSON.parse(raw.replace(/^\\uFEFF/, ''));\n} catch (err) {\n fail(DRIFT + ' is not valid JSON: ' + err.message);\n}\nif (!Array.isArray(records)) {\n const arrays =\n records && typeof records === 'object' ? Object.values(records).filter(Array.isArray) : [];\n if (arrays.length === 0) fail(DRIFT + ' must be an array of drift records');\n records = arrays.flat();\n}\n\nfunction strings(value, out) {\n if (typeof value === 'string') out.push(value);\n else if (Array.isArray(value)) for (const entry of value) strings(entry, out);\n else if (value && typeof value === 'object')\n for (const entry of Object.values(value)) strings(entry, out);\n return out;\n}\n\nconst union = (...parts) => new RegExp(parts.map((part) => part.source).join('|'));\n\n// `{widgetId}` and `:widgetId` are the same parameter; the contract and the\n// router spell it differently and a review may quote either form.\nconst normalize = (text) =>\n text\n .toLowerCase()\n .replace(/\\{\\s*([a-z0-9_]+)\\s*\\}/g, ':$1')\n // Mark sentence ends with `;` so the clause-scoped spans below cannot\n // borrow words from the next sentence - but leave the dot inside\n // `src/routes.ts` and `row.attempts.length` alone, or every clause would\n // stop at the first filename a review cites as evidence.\n .replace(/\\.(?=\\s|$)/g, ' ; ');\n\nconst textOf = (record) => normalize(strings(record, []).join(' | '));\n\n// What a record is ABOUT. The drift list is one record per operation and the\n// record schema requires a `path`, so the identifying fields are the honest\n// subject; `issue` and `fix` prose routinely names other operations.\nconst SUBJECT_KEY = /^(api)?(path|endpoint|operation|operationid|route|url|uri|resource)s?$/;\nfunction subjectOf(record) {\n const parts = [];\n for (const [key, value] of Object.entries(record)) {\n if (SUBJECT_KEY.test(key.toLowerCase().replace(/[^a-z]/g, ''))) strings(value, parts);\n }\n return parts.length > 0 ? normalize(parts.join(' | ')) : null;\n}\n\n// ---------------------------------------------------------------------------\n// The ordinary vocabulary for \"the contract and the code disagree\". Prose is\n// joined with ` | ` and clause spans never cross `;` or `|`, so one sentence\n// cannot borrow words from the next.\n// ---------------------------------------------------------------------------\n\n// HARD: the operation itself is named as the thing that is wrong.\nconst NO_HANDLER = union(\n /no (matching |registered |corresponding )?(route|handler|endpoint)\\b/,\n /missing (route|handler|endpoint)\\b/,\n /(handler|route|endpoint)[^;|]{0,40}(is |are )?(missing|absent|not found|not registered|does not exist|doesn'?t exist)/,\n /(missing|absent) from (the )?(route|router|code|src|handler)/,\n /not (present|found|registered|defined) in (the )?(route|router|code|src)/,\n /not (registered|implemented|defined|handled) (by|in) (either|any|both)/,\n /neither[^;|]{0,80}(register|implement|defin|handl)/,\n /(none of|not one of)[^;|]{0,60}(route|file|handler)[^;|]{0,40}(register|implement|defin|handl)/,\n /does not appear in (either|any|both|the) ?(of the )?(route|router|code|file)/,\n /(nothing|no code|no file|nowhere)[^;|]{0,30}implement/,\n /(code|implementation|router?|server|service|app)[^;|]{0,30}(does not|doesn'?t) implement/,\n /(could not|couldn'?t|cannot|can'?t|unable to) (find|locate|see)[^;|]{0,40}(handler|route|endpoint|implementation)/,\n /lacks (a |an )?(handler|route|implementation)\\b/,\n /ghost (route|endpoint|operation|path)/,\n /orphan(ed)? (spec|contract|path|operation|entry)/,\n /spec[- ]only/,\n /dead (spec|contract) entry/,\n);\n\nconst NO_PATH_ITEM = union(\n /undocumented (operation|endpoint|route|path|handler)/,\n /(operation|endpoint|route|path|handler)[^;|]{0,40}(is |are )?(not documented|undocumented)/,\n /no path item/,\n /no (matching |corresponding )?(spec|contract|openapi(\\.yaml)?) (entry|path item)/,\n /shadow (route|endpoint)/,\n /(spec|contract|openapi(\\.yaml)?)[^;|]{0,50}(does not|doesn'?t|fails to) (document|include|list|cover|mention)[^;|]{0,15}\\b(it|this|that|the (operation|endpoint|route|path))\\b/,\n /(spec|contract|openapi(\\.yaml)?)[^;|]{0,40}(omits|lacks|has no|says nothing about)[^;|]{0,15}\\b(it|this|that|entry|path item|the (operation|endpoint|route|path))\\b/,\n);\n\nconst SCHEMA_DISAGREEMENT = union(\n /schema mismatch|response mismatch|type mismatch/,\n /type (conflict|disagreement|drift)/,\n /wrong type|incorrect type/,\n /(does not|doesn'?t) match the (schema|contract|spec|declared)/,\n /(violates|contradicts) the (schema|contract|spec)/,\n /(declar\\w+|documented)[^;|]{0,40}\\b(string|number|integer|boolean|array|object)\\b[^;|]{0,80}(returns|sends|responds|actually|but)/,\n /required (field|property|member)[^;|]{0,40}(missing|omitted|absent|not returned)/,\n /(omits|drops|does not return|doesn'?t return|never returns)[^;|]{0,40}(email|required)/,\n);\n\nconst PARAM_DISAGREEMENT = union(\n /param\\w*[^;|]{0,60}(mismatch|mismatched|differ|do(es)? not match|doesn'?t match|inconsistent|drift)/,\n /(templat|naming)\\w*[^;|]{0,60}(mismatch|differ|drift|inconsistent)/,\n);\n\n// SOFT: the subject is implicit, so these are also how a reviewer says a\n// design feature is absent. They count against precision only outside a\n// clause about such a feature.\nconst NOT_IMPLEMENTED_LOOSE = union(\n /not implemented|no implementation|missing implementation|unimplemented|never implemented/,\n /implemented nowhere/,\n /(missing|absent) from (the )?implementation/,\n);\n\nconst NOT_DOCUMENTED_LOOSE = union(\n /not documented|undocumented|documented nowhere/,\n /(missing|absent) from (the )?(spec|contract|openapi)/,\n /not in (the )?(spec|contract|openapi)/,\n);\n\nconst HARD_CLAIM = union(NO_HANDLER, NO_PATH_ITEM, SCHEMA_DISAGREEMENT, PARAM_DISAGREEMENT);\nconst SOFT_CLAIM = union(NOT_IMPLEMENTED_LOOSE, NOT_DOCUMENTED_LOOSE);\n\n// A clause whose subject is a design feature rather than the operation. Every\n// one of these is genuinely absent from this fixture, so a reviewer naming it\n// is right and must not be charged with inventing drift.\nconst DESIGN_CLAUSE =\n /[^;|]*\\b(pagination|paginat\\w+|cursor|offset|page size|security|securityschemes?|scopes?|auth\\w*|oauth|401|403|404|4xx|5xx|error responses?|status codes?|examples?|descriptions?|summar\\w+|naming|verb in (the )?path|rate[- ]limit\\w*|versioning|idempoten\\w+|cach\\w+|etag|headers?|content[- ]type)\\b[^;|]*/g;\n\nconst claimsDrift = (text) =>\n HARD_CLAIM.test(text) || SOFT_CLAIM.test(text.replace(DESIGN_CLAUSE, ' '));\n\n// Recall is deliberately more generous than precision: extra tolerance here\n// only risks passing a sloppy review, while a miss fails a correct one.\nconst TYPE_EVIDENCE =\n /(?<!\\bno )mismatch|(?<!\\bno )not match|doesn'?t match|typed as|should be (a |an )?(number|integer)|declar\\w*[\\s\\S]{0,60}\\b(string|number|integer)\\b|\\bstring\\b[\\s\\S]{0,120}\\b(number|integer)\\b|\\b(number|integer)\\b[\\s\\S]{0,120}\\bstring\\b/;\n\nconst REAL = [\n {\n label:\n 'GET /widgets/{widgetId}/history is documented in openapi.yaml but no handler implements it',\n path: /\\/widgets\\/:[a-z0-9_]+\\/history/,\n klass: union(\n NO_HANDLER,\n NOT_IMPLEMENTED_LOOSE,\n /documented but/,\n /only (exists )?in the (spec|contract|openapi)/,\n ),\n },\n {\n label:\n 'GET /widgets/{widgetId}/status returns retryCount as a number while the contract declares it a string',\n path: /\\/widgets\\/:[a-z0-9_]+\\/status/,\n klass: union(SCHEMA_DISAGREEMENT, TYPE_EVIDENCE),\n },\n {\n label: 'GET /widgets/:id is implemented in src/routes.ts but absent from openapi.yaml',\n path: /\\/widgets\\/:[a-z0-9_]+(?![a-z0-9_/])/,\n klass: union(\n NO_PATH_ITEM,\n NOT_DOCUMENTED_LOOSE,\n /add[^;|]{0,50}\\b(path item|operation|entry|endpoint|route|definition|it)\\b[^;|]{0,20}\\bto\\b[^;|]{0,15}(spec|contract|openapi)/,\n /document it/,\n ),\n },\n];\n\n// A record that states the operation conforms is a verdict, not a drift\n// claim - but only when it asserts no drift class of its own.\nconst NO_DRIFT_VERDICT =\n /no drift|not a drift|not drift|matches the (spec|contract|implementation|handler|schema)|conforms to the (spec|contract)|correct as written|as designed|verified (safe|correct|ok)|no mismatch|no issue|no violation|not a (real )?(issue|violation|finding)|false positive|(permitted|allowed) by the (spec|contract)/;\n\nconst assertsDrift = (text) => claimsDrift(text) || REAL.some((real) => real.klass.test(text));\n\nconst entries = records\n .filter((record) => record && typeof record === 'object')\n .map((record) => ({ record, text: textOf(record), subject: subjectOf(record) }));\n\nconst claims = entries.filter(\n (entry) => assertsDrift(entry.text) || !NO_DRIFT_VERDICT.test(entry.text),\n);\n\nconst missing = REAL.filter(\n (real) => !claims.some((entry) => real.path.test(entry.text) && real.klass.test(entry.text)),\n);\nif (missing.length > 0) {\n fail(\n 'RECALL FAILURE - openapi.yaml and the route inventory disagree in three places and these ' +\n 'were not reported: ' +\n missing.map((real) => real.label).join('; ') +\n '. Reported paths: ' +\n (entries\n .map((entry) => String(entry.record.path ?? entry.record.operation ?? '?'))\n .join(', ') || '(nothing)'),\n );\n}\n\nconst SAFE = [\n {\n label: 'GET /users/{userId}',\n path: /\\/users\\/:[a-z0-9_]+(?![a-z0-9_/])/,\n why: 'it is documented AND implemented in src/routes.ts - `{userId}` in the contract and `:userId` in the router are the same path parameter',\n },\n {\n label: 'GET /users/{userId}/sessions',\n path: /\\/users\\/:[a-z0-9_]+\\/sessions/,\n why: 'its handler is registered in src/session-routes.ts, which src/routes.ts imports and calls - reading only one route file is what makes it look missing',\n },\n {\n label: 'GET /widgets/{widgetId}/owner',\n path: /\\/widgets\\/:[a-z0-9_]+\\/owner/,\n why: 'the contract marks `email` nullable and leaves it out of `required`, so a handler that omits it when the owner has no address is permitted',\n },\n];\n\nconst falsePositives = [];\nfor (const safe of SAFE) {\n for (const entry of claims) {\n // Judge the record by its subject, so a fix that cites this operation as\n // the model for another one is not counted against the review.\n if (!safe.path.test(entry.subject ?? entry.text)) continue;\n // And only when it actually claims a contract/implementation\n // disagreement - a design remark about a safe operation is fair review.\n if (!claimsDrift(entry.text)) continue;\n falsePositives.push(\n safe.label +\n ' reported as \"' +\n String(entry.record.issue ?? entry.record.kind ?? entry.record.type ?? 'drift') +\n '\" - ' +\n safe.why,\n );\n }\n}\nif (falsePositives.length > 0) {\n fail(\n 'PRECISION FAILURE - these operations agree with the contract and must not be listed as ' +\n 'drift: ' +\n falsePositives.join('; ') +\n '. A reconciliation that invents drift is not usable; re-read docs/api-contract.md and ' +\n 'both route files before deciding an operation is missing.',\n );\n}\n\nconsole.log(\n 'API contract precision/recall oracle passed: all 3 real drifts reported, 0 false drifts on ' +\n 'the 3 safe operations.',\n);\n",
|
|
33
|
+
"surface": "workspace",
|
|
34
|
+
"modelInput": false
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"worker": {
|
|
38
|
+
"name": "Rae",
|
|
39
|
+
"role": "Reviewer"
|
|
40
|
+
},
|
|
41
|
+
"craftbookParams": {
|
|
42
|
+
"workPath": "tasks/eval"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"mocks": [],
|
|
46
|
+
"success": {
|
|
47
|
+
"summary": "tasks/eval/api-review.md covers every seeded operation with corrected contract snippets, and tasks/eval/drift.json lists every real contract/implementation drift and nothing else.",
|
|
48
|
+
"deliverables": [
|
|
49
|
+
{
|
|
50
|
+
"path": "tasks/eval/api-review.md",
|
|
51
|
+
"kind": "markdown-report",
|
|
52
|
+
"minBytes": 1400,
|
|
53
|
+
"checks": [
|
|
54
|
+
{
|
|
55
|
+
"kind": "contains",
|
|
56
|
+
"file": "tasks/eval/api-review.md",
|
|
57
|
+
"pattern": "openapi\\.yaml|src/routes\\.ts",
|
|
58
|
+
"flags": "i",
|
|
59
|
+
"label": "real evidence"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"kind": "contains",
|
|
63
|
+
"file": "tasks/eval/api-review.md",
|
|
64
|
+
"pattern": "/getWidgets|resource naming|noun",
|
|
65
|
+
"flags": "i",
|
|
66
|
+
"label": "resource naming"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"kind": "contains",
|
|
70
|
+
"file": "tasks/eval/api-review.md",
|
|
71
|
+
"pattern": "201|created",
|
|
72
|
+
"flags": "i",
|
|
73
|
+
"label": "create response semantics"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"kind": "contains",
|
|
77
|
+
"file": "tasks/eval/api-review.md",
|
|
78
|
+
"pattern": "pagination|cursor|limit",
|
|
79
|
+
"flags": "i",
|
|
80
|
+
"label": "collection pagination"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"kind": "contains",
|
|
84
|
+
"file": "tasks/eval/api-review.md",
|
|
85
|
+
"pattern": "auth|security",
|
|
86
|
+
"flags": "i",
|
|
87
|
+
"label": "auth coverage"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"kind": "contains",
|
|
91
|
+
"file": "tasks/eval/api-review.md",
|
|
92
|
+
"pattern": "/widgets/:id|not documented|drift",
|
|
93
|
+
"flags": "i",
|
|
94
|
+
"label": "implementation drift"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"kind": "contains",
|
|
98
|
+
"file": "tasks/eval/api-review.md",
|
|
99
|
+
"pattern": "retryCount|schema mismatch|type mismatch|response schema",
|
|
100
|
+
"flags": "i",
|
|
101
|
+
"label": "response schema drift"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"kind": "contains",
|
|
105
|
+
"file": "tasks/eval/api-review.md",
|
|
106
|
+
"pattern": "```(?:ya?ml|json)?[\\s\\S]{20,}```",
|
|
107
|
+
"flags": "i",
|
|
108
|
+
"label": "corrected snippet"
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"path": "tasks/eval/drift.json",
|
|
114
|
+
"kind": "json",
|
|
115
|
+
"minBytes": 200,
|
|
116
|
+
"checks": [
|
|
117
|
+
{
|
|
118
|
+
"kind": "sniff",
|
|
119
|
+
"file": "tasks/eval/drift.json",
|
|
120
|
+
"sniff": "json-valid"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"kind": "recordSchema",
|
|
124
|
+
"file": "tasks/eval/drift.json",
|
|
125
|
+
"format": "json",
|
|
126
|
+
"minRows": 3,
|
|
127
|
+
"fields": [
|
|
128
|
+
{
|
|
129
|
+
"name": "path",
|
|
130
|
+
"type": "nonempty",
|
|
131
|
+
"required": true
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "method",
|
|
135
|
+
"type": "nonempty",
|
|
136
|
+
"required": true
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"name": "issue",
|
|
140
|
+
"type": "nonempty",
|
|
141
|
+
"required": true
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "fix",
|
|
145
|
+
"type": "nonempty",
|
|
146
|
+
"required": true
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
"allowExtraFields": true
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"kind": "nodeScriptPasses",
|
|
153
|
+
"script": "tests/api-contract-oracle.mjs",
|
|
154
|
+
"timeoutMs": 30000,
|
|
155
|
+
"requiredOutput": [
|
|
156
|
+
{
|
|
157
|
+
"pattern": "API contract precision/recall oracle passed",
|
|
158
|
+
"label": "every real drift reported, and no safe operation reported"
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
"rubric": {
|
|
167
|
+
"artifact": {
|
|
168
|
+
"path": "tasks/eval/api-review.md",
|
|
169
|
+
"kind": "markdown"
|
|
170
|
+
},
|
|
171
|
+
"axes": [
|
|
172
|
+
{
|
|
173
|
+
"name": "surface coverage",
|
|
174
|
+
"description": "The contract and all implemented operations are reconciled."
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"name": "design rigor",
|
|
178
|
+
"description": "Semantics, consistency, auth, pagination, and schema quality are reviewed."
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "actionability",
|
|
182
|
+
"description": "Findings include concrete corrected snippets and compatibility impact."
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
"qualityFocus": [
|
|
187
|
+
"contract-implementation reconciliation",
|
|
188
|
+
"API semantics",
|
|
189
|
+
"corrected snippets",
|
|
190
|
+
"drift precision"
|
|
191
|
+
]
|
|
192
|
+
}
|