@bendyline/gilde 0.1.51 → 0.1.53
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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 +1 -1
- 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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
- package/schemas/knowledge-catalog-identity.schema.json +122 -0
- package/schemas/knowledge-catalog-version.schema.json +169 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "REST API contract and implementation",
|
|
4
|
+
"objective": "Measure the REST API craftbook shape with a deterministic bookstore API brief requiring OpenAPI, a dependency-free Node server, contract tests, pagination, auth, and error handling.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"code"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "In the `REST API Eval` project, read `source/api-brief.md` and write `openapi.yaml`, `server.mjs`, `contract-test.mjs`, and `README.md`. Keep the implementation offline and dependency-free using Node ESM and `node:http` in the server only; do not use `require`, `node-fetch`, Express, Fastify, `/api/v1` prefixes, or package installs. Implement the exact paths GET /books, GET /books/{id}, and POST /books. `openapi.yaml` must use OpenAPI `3.1.0`, define `components.securitySchemes.bearerAuth`, apply that bearer auth to POST /books, define an `ErrorEnvelope` schema, and mention error codes `VALIDATION_ERROR` and `BOOK_NOT_FOUND`. `server.mjs` must export `createBookstoreServer()` without starting the listener itself, must enforce exact `Authorization: Bearer eval-token` on POST /books with 401 for missing/wrong tokens, must not import from `./server` or `./server.mjs`, and must not replace the native `server.close` method. In `server.mjs`, import the HTTP module normally at top level with `import http from 'node:http'` or `import { createServer } from 'node:http'`; do not use `await import('node:http')`. The ban on `node:http` imports applies only to `contract-test.mjs`. In every `server.mjs` route branch, send exactly one response per request: after any `sendResponse`, `sendJson`, `res.writeHead`, or `res.end` for auth, validation, not-found, or success, immediately `return` so the code never falls through into another response. `contract-test.mjs` must be a complete runnable file with no placeholder elisions like `... rest of file`. It must import `createBookstoreServer` from exactly `./server.mjs`, import assertions from `node:assert/strict`, must not import `node:http`, must call `createBookstoreServer()` and run the tests at top level when invoked with `node contract-test.mjs`, call `server.listen(0)` itself, resolve the assigned port inside the `listen(0)` callback using `server.address().port`, build every request URL from that resolved `baseUrl` including the assigned port, and never use `new URL(path, 'http://localhost')` because it drops the port. Use Node's built-in global `fetch()` directly or through a helper that calls `globalThis.fetch(url, options)`, declare any helper that awaits `fetch()` as `async`, pass POST `method`, `headers`, and `body` options through to `fetch`, and make the helper return status plus parsed JSON for all HTTP statuses instead of throwing on expected 400/401/404 responses. Run and log pagination/not-found/auth failure/validation failure/create success checks, include an explicit pagination request using `/books?limit=2` or equivalent URLSearchParams limit=2, run non-mutating checks before the create-success mutation or otherwise isolate state, and close the server cleanly. Do not wait for a `listening` event after `listen()` has already fired. Do not define or export tests that are never called. If you catch a test failure, log `error.stack ?? error` before rethrowing or setting a non-zero exit code; do not print only a generic failure banner. `README.md` must include a Usage section with these exact command lines: `node server.mjs` and `node contract-test.mjs`. It must also list GET /books, GET /books/{id}, POST /books, and show `Authorization: Bearer eval-token` for POST.",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "REST API Eval",
|
|
11
|
+
"about": "Self-contained eval project for REST API craftbook behavior. The API brief is in workspace/source/api-brief.md and no live service or package install is needed.",
|
|
12
|
+
"missionObjectives": "Build a dependency-free API contract, server stub, tests, and run notes from the seeded brief. Do not use external services or credentials.",
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "source/api-brief.md",
|
|
16
|
+
"content": "# Bookstore API brief\n\nResource: books for a small local bookstore.\nOpenAPI version: 3.1.0.\nSeed books: bk-1 The Left Hand of Darkness by au-1; bk-2 Parable of the Sower by au-2; bk-3 A Wizard of Earthsea by au-1.\nEndpoints:\n- GET /books?limit=&offset= returns `{ items, pagination: { limit, offset, total, hasMore } }`.\n- GET /books/{id} returns one book or 404 `{ error: { code: \"BOOK_NOT_FOUND\", message } }`.\n- POST /books creates a book and requires `Authorization: Bearer eval-token`.\n- POST body requires title and authorId. Missing fields return 400 `{ error: { code: \"VALIDATION_ERROR\", message } }`.\nOpenAPI auth requirement: define `components.securitySchemes.bearerAuth` with HTTP bearer auth and add `security: [{ bearerAuth: [] }]` to POST /books.\nOpenAPI must define an `ErrorEnvelope` schema shaped like `{ error: { code, message } }` and must mention `VALIDATION_ERROR` and `BOOK_NOT_FOUND` as concrete error codes.\nImplementation constraints: Node ESM, built-in modules only, no Express/Fastify/package install, server exports a `createBookstoreServer()` helper for tests and does not call listen() inside that helper. `server.mjs` must import the HTTP module normally at top level, such as `import http from \"node:http\"` or `import { createServer } from \"node:http\"`; do not use `await import(\"node:http\")`. `server.mjs` must enforce exact `Authorization: Bearer eval-token` on POST /books and return 401 for missing or wrong tokens. Every route branch in `server.mjs` must send exactly one response per request; after an auth, validation, not-found, or success response, immediately `return` so later code cannot write headers again. `server.mjs` must not import itself or import from `./server` or `./server.mjs`, and must not assign or replace `server.close`.\nTests must be complete runnable files with no placeholder elisions. They must import from exactly ./server.mjs, use node:assert/strict, call createBookstoreServer(), and run the tests at top level when `node contract-test.mjs` executes. Use the built-in global fetch() directly or through a helper that calls globalThis.fetch(url, options), call server.listen(0), resolve the assigned port inside the listen callback with server.address().port, and build request URLs from that resolved baseUrl before making requests. Do not use `new URL(path, \"http://localhost\")` in contract-test.mjs because it drops the assigned port. Do not wait for a `listening` event after `listen()` has already fired. Do not import node:http, node-fetch, or replace the global fetch function. If a helper uses `await fetch(...)`, declare that helper with `async function` or as an async arrow function, and pass POST method/headers/body options through to fetch. The helper must not throw on expected 400/401/404 HTTP responses; return status plus parsed JSON so negative tests can assert error codes. Do not catch assertion failures unless you log `error.stack ?? error` and then rethrow them or set a non-zero exit code. Run and log pagination, not-found, auth failure, validation failure, and create-success checks; the pagination check must explicitly request limit=2. Do not define or export tests that are never called. Run non-mutating checks before create success, or isolate/reset server state so pagination totals do not assume the seeded count after a create. Close the server cleanly.\nREADME must include a Usage section that shows these exact command lines: `node server.mjs` and `node contract-test.mjs`. It must also list GET /books, GET /books/{id}, POST /books, and the POST header `Authorization: Bearer eval-token`."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"worker": {
|
|
20
|
+
"name": "Ravi",
|
|
21
|
+
"role": "Developer"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mocks": [],
|
|
25
|
+
"success": {
|
|
26
|
+
"summary": "The run writes a contract, dependency-free server, contract tests, and run notes covering pagination, auth, validation, and error semantics.",
|
|
27
|
+
"deliverables": [
|
|
28
|
+
{
|
|
29
|
+
"path": "openapi.yaml",
|
|
30
|
+
"kind": "yaml-spec",
|
|
31
|
+
"minBytes": 1600,
|
|
32
|
+
"checks": [
|
|
33
|
+
{
|
|
34
|
+
"kind": "contains",
|
|
35
|
+
"file": "openapi.yaml",
|
|
36
|
+
"pattern": "openapi:\\s*3\\.1"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"kind": "contains",
|
|
40
|
+
"file": "openapi.yaml",
|
|
41
|
+
"pattern": "/books:"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"kind": "contains",
|
|
45
|
+
"file": "openapi.yaml",
|
|
46
|
+
"pattern": "/books/\\{id\\}:"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"kind": "contains",
|
|
50
|
+
"file": "openapi.yaml",
|
|
51
|
+
"pattern": "post:|POST",
|
|
52
|
+
"flags": "i"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"kind": "contains",
|
|
56
|
+
"file": "openapi.yaml",
|
|
57
|
+
"pattern": "bearerAuth|Authorization",
|
|
58
|
+
"flags": "i"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"kind": "contains",
|
|
62
|
+
"file": "openapi.yaml",
|
|
63
|
+
"pattern": "hasMore|pagination"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"kind": "contains",
|
|
67
|
+
"file": "openapi.yaml",
|
|
68
|
+
"pattern": "ErrorEnvelope"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"kind": "contains",
|
|
72
|
+
"file": "openapi.yaml",
|
|
73
|
+
"pattern": "VALIDATION_ERROR",
|
|
74
|
+
"label": "document VALIDATION_ERROR as a concrete error code"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"kind": "contains",
|
|
78
|
+
"file": "openapi.yaml",
|
|
79
|
+
"pattern": "BOOK_NOT_FOUND",
|
|
80
|
+
"label": "document BOOK_NOT_FOUND as a concrete error code"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"kind": "notContains",
|
|
84
|
+
"file": "openapi.yaml",
|
|
85
|
+
"pattern": "/api/v1",
|
|
86
|
+
"label": "use the exact bare paths /books and /books/{id}; do not add /api/v1"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"path": "server.mjs",
|
|
92
|
+
"kind": "code-module",
|
|
93
|
+
"minBytes": 2200,
|
|
94
|
+
"checks": [
|
|
95
|
+
{
|
|
96
|
+
"kind": "esmImports",
|
|
97
|
+
"file": "server.mjs"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"kind": "contains",
|
|
101
|
+
"file": "server.mjs",
|
|
102
|
+
"pattern": "node:http|createServer"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"kind": "contains",
|
|
106
|
+
"file": "server.mjs",
|
|
107
|
+
"pattern": "GET.*\\/books|\\/books",
|
|
108
|
+
"flags": "is"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"kind": "contains",
|
|
112
|
+
"file": "server.mjs",
|
|
113
|
+
"pattern": "POST.*\\/books|method.*POST",
|
|
114
|
+
"flags": "is"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"kind": "contains",
|
|
118
|
+
"file": "server.mjs",
|
|
119
|
+
"pattern": "(?:authorization|authHeader)[\\s\\S]{0,1200}(?:Bearer\\s+eval-token|AUTH_TOKEN|BEARER_TOKEN|eval-token)|(?:Bearer\\s+eval-token|AUTH_TOKEN|BEARER_TOKEN|eval-token)[\\s\\S]{0,1200}(?:authorization|authHeader)",
|
|
120
|
+
"flags": "i",
|
|
121
|
+
"label": "enforce POST auth by comparing the authorization header to `Bearer eval-token`; if using a token constant, declare it once"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"kind": "contains",
|
|
125
|
+
"file": "server.mjs",
|
|
126
|
+
"pattern": "401|UNAUTHORIZED"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"kind": "contains",
|
|
130
|
+
"file": "server.mjs",
|
|
131
|
+
"pattern": "limit|offset|hasMore"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"kind": "contains",
|
|
135
|
+
"file": "server.mjs",
|
|
136
|
+
"pattern": "BOOK_NOT_FOUND|VALIDATION_ERROR"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"kind": "notContains",
|
|
140
|
+
"file": "server.mjs",
|
|
141
|
+
"pattern": "from ['\"](express|fastify)['\"]|require\\(['\"](express|fastify)['\"]",
|
|
142
|
+
"flags": "i"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"kind": "notContains",
|
|
146
|
+
"file": "server.mjs",
|
|
147
|
+
"pattern": "from ['\"]\\./server(?:\\.mjs)?['\"]",
|
|
148
|
+
"label": "server.mjs must not import itself; remove imports from ./server or ./server.mjs and export createBookstoreServer exactly once"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"kind": "notContains",
|
|
152
|
+
"file": "server.mjs",
|
|
153
|
+
"pattern": "await\\s+import\\(['\"]node:http['\"]\\)",
|
|
154
|
+
"label": "server.mjs may import node:http at top level; do not use await import(\"node:http\") inside createBookstoreServer"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"kind": "notContains",
|
|
158
|
+
"file": "server.mjs",
|
|
159
|
+
"pattern": "server\\.close\\s*=",
|
|
160
|
+
"label": "do not replace the native HTTP server close method; close the server from contract-test.mjs"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"kind": "notContains",
|
|
164
|
+
"file": "server.mjs",
|
|
165
|
+
"pattern": "/api/v1",
|
|
166
|
+
"label": "route exact bare paths /books and /books/{id}; do not add /api/v1"
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"path": "contract-test.mjs",
|
|
172
|
+
"kind": "code-with-tests",
|
|
173
|
+
"minBytes": 1500,
|
|
174
|
+
"checks": [
|
|
175
|
+
{
|
|
176
|
+
"kind": "esmImports",
|
|
177
|
+
"file": "contract-test.mjs"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"kind": "contains",
|
|
181
|
+
"file": "contract-test.mjs",
|
|
182
|
+
"pattern": "import\\s+(?:assert|\\*\\s+as\\s+assert)\\s+from\\s*['\"]node:assert/strict['\"]|import\\s*\\{\\s*strict\\s+as\\s+assert\\s*\\}\\s*from\\s*['\"]node:assert(?:/strict)?['\"]",
|
|
183
|
+
"label": "import assertions from node:assert/strict before using assert"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"kind": "contains",
|
|
187
|
+
"file": "contract-test.mjs",
|
|
188
|
+
"pattern": "import\\s*\\{[^}]*\\bcreateBookstoreServer\\b[^}]*\\}\\s*from\\s*['\"]\\./server\\.mjs['\"]",
|
|
189
|
+
"label": "import createBookstoreServer with `import { createBookstoreServer } from \"./server.mjs\"`"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"kind": "notContains",
|
|
193
|
+
"file": "contract-test.mjs",
|
|
194
|
+
"pattern": "from ['\"]\\./server['\"]|require\\("
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"kind": "notContains",
|
|
198
|
+
"file": "contract-test.mjs",
|
|
199
|
+
"pattern": "\\.\\.\\.\\s*\\(rest of the file content\\)|rest of the file content",
|
|
200
|
+
"flags": "i",
|
|
201
|
+
"label": "contract-test.mjs must be a complete runnable file; do not include placeholder elisions"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"kind": "contains",
|
|
205
|
+
"file": "contract-test.mjs",
|
|
206
|
+
"pattern": "createBookstoreServer\\s*\\(",
|
|
207
|
+
"label": "execute the imported server factory from contract-test.mjs; do not only export test helpers"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"kind": "notContains",
|
|
211
|
+
"file": "contract-test.mjs",
|
|
212
|
+
"pattern": "export\\s+\\{\\s*runTests\\s*\\}|export\\s+(?:async\\s+)?function\\s+runTests\\b",
|
|
213
|
+
"label": "contract-test.mjs must run tests when invoked with node, not only export runTests"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"kind": "contains",
|
|
217
|
+
"file": "contract-test.mjs",
|
|
218
|
+
"pattern": "limit=2|limit\\s*=\\s*2|limit\\s*:\\s*['\"]?2|limit['\"],\\s*['\"]2['\"]|limit[\"],\\s*[\"]2[\"]",
|
|
219
|
+
"label": "exercise GET /books pagination with an explicit limit=2 request"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"kind": "contains",
|
|
223
|
+
"file": "contract-test.mjs",
|
|
224
|
+
"pattern": "Bearer eval-token|Authorization"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"kind": "contains",
|
|
228
|
+
"file": "contract-test.mjs",
|
|
229
|
+
"pattern": "listen\\(0"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"kind": "contains",
|
|
233
|
+
"file": "contract-test.mjs",
|
|
234
|
+
"pattern": "globalThis\\.fetch|fetch\\(",
|
|
235
|
+
"label": "use Node built-in global fetch in contract requests"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"kind": "contains",
|
|
239
|
+
"file": "contract-test.mjs",
|
|
240
|
+
"pattern": "(?:globalThis\\.)?fetch\\s*\\([^\\n,]+,\\s*(?:\\{|[A-Za-z_$])",
|
|
241
|
+
"label": "pass fetch options for POST requests so method, headers, and body reach the server"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"kind": "notContains",
|
|
245
|
+
"file": "contract-test.mjs",
|
|
246
|
+
"pattern": "from\\s+['\"](?:node:)?http['\"]|import\\s+[^;]*['\"](?:node:)?http['\"]|require\\(['\"](?:node:)?http['\"]\\)|from\\s+['\"]node-fetch['\"]|import\\s*\\(['\"]node-fetch['\"]\\)|require\\(['\"]node-fetch['\"]\\)",
|
|
247
|
+
"label": "contract tests must not import node:http or node-fetch; remove those imports and use globalThis.fetch"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"kind": "notContains",
|
|
251
|
+
"file": "contract-test.mjs",
|
|
252
|
+
"pattern": "new\\s+URL\\([^,\\n]+,\\s*['\"]http://localhost['\"]\\s*\\)",
|
|
253
|
+
"label": "contract request helpers must include the assigned listen(0) port; build URLs from the resolved baseUrl, not plain http://localhost"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"kind": "notContains",
|
|
257
|
+
"file": "contract-test.mjs",
|
|
258
|
+
"pattern": "http\\.request|http\\.get",
|
|
259
|
+
"label": "contract tests must not use node:http request helpers; use globalThis.fetch"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"kind": "notContains",
|
|
263
|
+
"file": "contract-test.mjs",
|
|
264
|
+
"pattern": "\\bfunction\\s+fetch\\s*\\(|\\b(?:const|let|var)\\s+fetch\\s*=",
|
|
265
|
+
"label": "contract tests must not replace the global fetch function; use globalThis.fetch or a differently named helper"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"kind": "notContains",
|
|
269
|
+
"file": "contract-test.mjs",
|
|
270
|
+
"pattern": "/api/v1",
|
|
271
|
+
"label": "call the generated server with exact bare paths /books and /books/{id}; remove any /api/v1 prefix"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"kind": "contains",
|
|
275
|
+
"file": "contract-test.mjs",
|
|
276
|
+
"pattern": "401|403|400|404"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"kind": "contains",
|
|
280
|
+
"file": "contract-test.mjs",
|
|
281
|
+
"pattern": "close\\(|server\\.close"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"kind": "nodeScriptPasses",
|
|
285
|
+
"script": "contract-test.mjs",
|
|
286
|
+
"timeoutMs": 20000,
|
|
287
|
+
"requiredOutput": [
|
|
288
|
+
{
|
|
289
|
+
"pattern": "Pagination|GET /books|List Books",
|
|
290
|
+
"flags": "i",
|
|
291
|
+
"label": "pagination test ran"
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"pattern": "Auth|Authentication|401|403",
|
|
295
|
+
"flags": "i",
|
|
296
|
+
"label": "auth failure test ran"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"pattern": "Validation|VALIDATION_ERROR|400",
|
|
300
|
+
"flags": "i",
|
|
301
|
+
"label": "validation test ran"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"pattern": "GET\\s+/books/\\{id\\}|Not Found|BOOK_NOT_FOUND|404",
|
|
305
|
+
"flags": "i",
|
|
306
|
+
"label": "not-found test ran"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"pattern": "Create|201|POST",
|
|
310
|
+
"flags": "i",
|
|
311
|
+
"label": "create-success test ran"
|
|
312
|
+
}
|
|
313
|
+
]
|
|
314
|
+
}
|
|
315
|
+
]
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"path": "README.md",
|
|
319
|
+
"kind": "markdown-doc",
|
|
320
|
+
"minBytes": 500,
|
|
321
|
+
"checks": [
|
|
322
|
+
{
|
|
323
|
+
"kind": "contains",
|
|
324
|
+
"file": "README.md",
|
|
325
|
+
"pattern": "node server\\.mjs",
|
|
326
|
+
"label": "include the exact server command `node server.mjs`"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"kind": "contains",
|
|
330
|
+
"file": "README.md",
|
|
331
|
+
"pattern": "node contract-test\\.mjs",
|
|
332
|
+
"label": "include the exact contract-test command `node contract-test.mjs`"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"kind": "contains",
|
|
336
|
+
"file": "README.md",
|
|
337
|
+
"pattern": "GET /books"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"kind": "contains",
|
|
341
|
+
"file": "README.md",
|
|
342
|
+
"pattern": "GET /books/\\{id\\}|GET /books/:id|GET /books/<id>"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"kind": "contains",
|
|
346
|
+
"file": "README.md",
|
|
347
|
+
"pattern": "POST /books"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"kind": "contains",
|
|
351
|
+
"file": "README.md",
|
|
352
|
+
"pattern": "eval-token|Authorization"
|
|
353
|
+
}
|
|
354
|
+
]
|
|
355
|
+
}
|
|
356
|
+
]
|
|
357
|
+
},
|
|
358
|
+
"rubric": {
|
|
359
|
+
"artifact": {
|
|
360
|
+
"path": "openapi.yaml",
|
|
361
|
+
"kind": "yaml"
|
|
362
|
+
},
|
|
363
|
+
"axes": [
|
|
364
|
+
{
|
|
365
|
+
"name": "correctness",
|
|
366
|
+
"description": "The module does what the requirements ask, with sensible edge handling."
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
"name": "verification",
|
|
370
|
+
"description": "Self-tests exercise real behavior, not trivial truths."
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"name": "clarity",
|
|
374
|
+
"description": "Exports, naming, and structure make the module usable without reading every line."
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"name": "robustness",
|
|
378
|
+
"description": "Invalid input and boundary cases fail loudly rather than silently."
|
|
379
|
+
}
|
|
380
|
+
]
|
|
381
|
+
},
|
|
382
|
+
"qualityFocus": [
|
|
383
|
+
"contract-first API design",
|
|
384
|
+
"server implementation",
|
|
385
|
+
"integration tests"
|
|
386
|
+
]
|
|
387
|
+
}
|