@bendyline/gilde 0.1.3 → 0.1.5
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/README.md +1 -0
- package/data/chat-models/ge/gemma4-12b-q4/manifest.json +22 -8
- package/data/chat-models/ge/gemma4-12b-q4/versions/1.1.2/manifest.json +78 -0
- package/data/chat-models/ge/gemma4-12b-q8/manifest.json +25 -11
- package/data/chat-models/ge/gemma4-12b-q8/versions/1.0.2/manifest.json +78 -0
- package/data/chat-models/ge/gemma4-26b-q4/manifest.json +66 -44
- package/data/chat-models/ge/gemma4-26b-q4/versions/1.2.1/manifest.json +81 -0
- package/data/chat-models/ge/gemma4-31b-q4/manifest.json +47 -25
- package/data/chat-models/ge/gemma4-31b-q4/versions/1.2.1/manifest.json +87 -0
- package/data/chat-models/ge/gemma4-e2b-q8/manifest.json +76 -64
- package/data/chat-models/ge/gemma4-e2b-q8/versions/1.1.2/manifest.json +71 -0
- package/data/chat-models/ge/gemma4-e4b-q8/manifest.json +71 -73
- package/data/chat-models/ge/gemma4-e4b-q8/versions/1.1.2/manifest.json +71 -0
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/la/laguna-s-2.1-118b-q4/manifest.json +17 -17
- package/data/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.1/manifest.json +124 -0
- package/data/chat-models/la/laguna-s-2.1-118b-q8/manifest.json +7 -7
- package/data/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.1/manifest.json +174 -0
- package/data/chat-models/ne/nemotron3-nano-30b-q4/manifest.json +5 -0
- package/data/chat-models/qw/qwen3.5-122b-a10b-q4/manifest.json +27 -19
- package/data/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.1/manifest.json +164 -0
- package/data/chat-models/qw/qwen3.5-2b-q4/manifest.json +79 -72
- package/data/chat-models/qw/qwen3.5-2b-q4/versions/1.1.2/manifest.json +76 -0
- package/data/chat-models/qw/qwen3.5-4b-q4/manifest.json +79 -72
- package/data/chat-models/qw/qwen3.5-4b-q4/versions/1.1.2/manifest.json +76 -0
- package/data/chat-models/qw/qwen3.5-9b-q4/manifest.json +87 -80
- package/data/chat-models/qw/qwen3.5-9b-q4/versions/1.1.2/manifest.json +81 -0
- package/data/chat-models/qw/qwen3.6-27b-q4/manifest.json +99 -92
- package/data/chat-models/qw/qwen3.6-27b-q4/versions/1.1.4/manifest.json +91 -0
- package/data/chat-models/qw/qwen3.6-27b-q8/manifest.json +17 -8
- package/data/chat-models/qw/qwen3.6-27b-q8/versions/1.0.2/manifest.json +103 -0
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/manifest.json +27 -10
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.1/manifest.json +93 -0
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/manifest.json +26 -9
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.1/manifest.json +113 -0
- package/data/craftbook-templates/a1/a11y-audit/art.json +12 -0
- package/data/craftbook-templates/a1/a11y-audit/logo.webp +0 -0
- package/data/craftbook-templates/a1/a11y-audit/manifest.json +1 -0
- package/data/craftbook-templates/ab/ab-test-readout/art.json +13 -0
- package/data/craftbook-templates/ab/ab-test-readout/logo.webp +0 -0
- package/data/craftbook-templates/ab/ab-test-readout/manifest.json +1 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/art.json +12 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/logo.webp +0 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/manifest.json +1 -0
- package/data/craftbook-templates/ad/ad-variations/art.json +13 -0
- package/data/craftbook-templates/ad/ad-variations/logo.webp +0 -0
- package/data/craftbook-templates/ad/ad-variations/manifest.json +1 -0
- package/data/craftbook-templates/al/album-curate/art.json +13 -0
- package/data/craftbook-templates/al/album-curate/logo.webp +0 -0
- package/data/craftbook-templates/al/album-curate/manifest.json +1 -0
- package/data/craftbook-templates/al/alert-rules/art.json +12 -0
- package/data/craftbook-templates/al/alert-rules/logo.webp +0 -0
- package/data/craftbook-templates/al/alert-rules/manifest.json +1 -0
- package/data/craftbook-templates/al/alt-text-pass/art.json +12 -0
- package/data/craftbook-templates/al/alt-text-pass/logo.webp +0 -0
- package/data/craftbook-templates/al/alt-text-pass/manifest.json +1 -0
- package/data/craftbook-templates/an/anniversary-cut/art.json +13 -0
- package/data/craftbook-templates/an/anniversary-cut/logo.webp +0 -0
- package/data/craftbook-templates/an/anniversary-cut/manifest.json +1 -0
- package/data/craftbook-templates/an/annotated-bibliography/art.json +13 -0
- package/data/craftbook-templates/an/annotated-bibliography/logo.webp +0 -0
- package/data/craftbook-templates/an/annotated-bibliography/manifest.json +1 -0
- package/data/craftbook-templates/an/annual-document-review/art.json +13 -0
- package/data/craftbook-templates/an/annual-document-review/logo.webp +0 -0
- package/data/craftbook-templates/an/annual-document-review/manifest.json +1 -0
- package/data/craftbook-templates/an/anomaly-scan/art.json +12 -0
- package/data/craftbook-templates/an/anomaly-scan/logo.webp +0 -0
- package/data/craftbook-templates/an/anomaly-scan/manifest.json +1 -0
- package/data/craftbook-templates/ap/api-contract-review/art.json +13 -0
- package/data/craftbook-templates/ap/api-contract-review/logo.webp +0 -0
- package/data/craftbook-templates/ap/api-contract-review/manifest.json +1 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/art.json +13 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/logo.webp +0 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/manifest.json +1 -0
- package/data/craftbook-templates/au/audio-ad-spot/art.json +13 -0
- package/data/craftbook-templates/au/audio-ad-spot/logo.webp +0 -0
- package/data/craftbook-templates/au/audio-ad-spot/manifest.json +1 -0
- package/data/craftbook-templates/au/audio-highlight-reel/art.json +13 -0
- package/data/craftbook-templates/au/audio-highlight-reel/logo.webp +0 -0
- package/data/craftbook-templates/au/audio-highlight-reel/manifest.json +1 -0
- package/data/craftbook-templates/au/audiobook-master-pack/art.json +13 -0
- package/data/craftbook-templates/au/audiobook-master-pack/logo.webp +0 -0
- package/data/craftbook-templates/au/audiobook-master-pack/manifest.json +1 -0
- package/data/craftbook-templates/au/auth-flow/art.json +12 -0
- package/data/craftbook-templates/au/auth-flow/logo.webp +0 -0
- package/data/craftbook-templates/au/auth-flow/manifest.json +1 -0
- package/data/craftbook-templates/au/automation-recipe/art.json +13 -0
- package/data/craftbook-templates/au/automation-recipe/logo.webp +0 -0
- package/data/craftbook-templates/au/automation-recipe/manifest.json +1 -0
- package/data/craftbook-templates/ba/backup-routine/art.json +13 -0
- package/data/craftbook-templates/ba/backup-routine/logo.webp +0 -0
- package/data/craftbook-templates/ba/backup-routine/manifest.json +1 -0
- package/data/craftbook-templates/bl/blog-post/art.json +13 -0
- package/data/craftbook-templates/bl/blog-post/logo.webp +0 -0
- package/data/craftbook-templates/bl/blog-post/manifest.json +1 -0
- package/data/craftbook-templates/bo/board-deck/art.json +13 -0
- package/data/craftbook-templates/bo/board-deck/logo.webp +0 -0
- package/data/craftbook-templates/bo/board-deck/manifest.json +1 -0
- package/data/craftbook-templates/bo/board-game-web/art.json +13 -0
- package/data/craftbook-templates/bo/board-game-web/logo.webp +0 -0
- package/data/craftbook-templates/bo/board-game-web/manifest.json +1 -0
- package/data/craftbook-templates/bo/booking-automation/art.json +12 -0
- package/data/craftbook-templates/bo/booking-automation/logo.webp +0 -0
- package/data/craftbook-templates/bo/booking-automation/manifest.json +1 -0
- package/data/craftbook-templates/br/branding-website/art.json +13 -0
- package/data/craftbook-templates/br/branding-website/logo.webp +0 -0
- package/data/craftbook-templates/br/branding-website/manifest.json +1 -0
- package/data/craftbook-templates/br/broadcast-announcement/art.json +13 -0
- package/data/craftbook-templates/br/broadcast-announcement/logo.webp +0 -0
- package/data/craftbook-templates/br/broadcast-announcement/manifest.json +1 -0
- package/data/craftbook-templates/br/browser-qa-audit/art.json +12 -0
- package/data/craftbook-templates/br/browser-qa-audit/logo.webp +0 -0
- package/data/craftbook-templates/br/browser-qa-audit/manifest.json +1 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/art.json +12 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/logo.webp +0 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/manifest.json +1 -0
- package/data/craftbook-templates/bu/build-loop/art.json +13 -0
- package/data/craftbook-templates/bu/build-loop/logo.webp +0 -0
- package/data/craftbook-templates/bu/build-loop/manifest.json +1 -0
- package/data/craftbook-templates/bu/build-loop/versions/1.1.0/craftbook.json +65 -0
- package/data/craftbook-templates/bu/build-loop/versions/1.1.0/test.json +121 -0
- package/data/craftbook-templates/ca/calendar-brief/art.json +13 -0
- package/data/craftbook-templates/ca/calendar-brief/logo.webp +0 -0
- package/data/craftbook-templates/ca/calendar-brief/manifest.json +1 -0
- package/data/craftbook-templates/ca/canvas-generative-art/art.json +13 -0
- package/data/craftbook-templates/ca/canvas-generative-art/logo.webp +0 -0
- package/data/craftbook-templates/ca/canvas-generative-art/manifest.json +1 -0
- package/data/craftbook-templates/ca/careful-mode/art.json +13 -0
- package/data/craftbook-templates/ca/careful-mode/logo.webp +0 -0
- package/data/craftbook-templates/ca/careful-mode/manifest.json +1 -0
- package/data/craftbook-templates/ca/case-study/art.json +13 -0
- package/data/craftbook-templates/ca/case-study/logo.webp +0 -0
- package/data/craftbook-templates/ca/case-study/manifest.json +1 -0
- package/data/craftbook-templates/ca/case-study-writeup/art.json +13 -0
- package/data/craftbook-templates/ca/case-study-writeup/logo.webp +0 -0
- package/data/craftbook-templates/ca/case-study-writeup/manifest.json +1 -0
- package/data/craftbook-templates/ch/changelog-cut/art.json +12 -0
- package/data/craftbook-templates/ch/changelog-cut/logo.webp +0 -0
- package/data/craftbook-templates/ch/changelog-cut/manifest.json +1 -0
- package/data/craftbook-templates/ch/changelog-writeup/art.json +13 -0
- package/data/craftbook-templates/ch/changelog-writeup/logo.webp +0 -0
- package/data/craftbook-templates/ch/changelog-writeup/manifest.json +1 -0
- package/data/craftbook-templates/ch/chapter-narration-run/art.json +13 -0
- package/data/craftbook-templates/ch/chapter-narration-run/logo.webp +0 -0
- package/data/craftbook-templates/ch/chapter-narration-run/manifest.json +1 -0
- package/data/craftbook-templates/ch/chapter-weave/art.json +13 -0
- package/data/craftbook-templates/ch/chapter-weave/logo.webp +0 -0
- package/data/craftbook-templates/ch/chapter-weave/manifest.json +1 -0
- package/data/craftbook-templates/ch/character-sheet/art.json +13 -0
- package/data/craftbook-templates/ch/character-sheet/logo.webp +0 -0
- package/data/craftbook-templates/ch/character-sheet/manifest.json +1 -0
- package/data/craftbook-templates/ch/character-turnaround/art.json +13 -0
- package/data/craftbook-templates/ch/character-turnaround/logo.webp +0 -0
- package/data/craftbook-templates/ch/character-turnaround/manifest.json +1 -0
- package/data/craftbook-templates/ch/chart-pack/art.json +13 -0
- package/data/craftbook-templates/ch/chart-pack/logo.webp +0 -0
- package/data/craftbook-templates/ch/chart-pack/manifest.json +1 -0
- package/data/craftbook-templates/ch/chrome-extension/art.json +13 -0
- package/data/craftbook-templates/ch/chrome-extension/logo.webp +0 -0
- package/data/craftbook-templates/ch/chrome-extension/manifest.json +1 -0
- package/data/craftbook-templates/ci/ci-pipeline/art.json +12 -0
- package/data/craftbook-templates/ci/ci-pipeline/logo.webp +0 -0
- package/data/craftbook-templates/ci/ci-pipeline/manifest.json +1 -0
- package/data/craftbook-templates/ci/citation-audit/art.json +12 -0
- package/data/craftbook-templates/ci/citation-audit/logo.webp +0 -0
- package/data/craftbook-templates/ci/citation-audit/manifest.json +1 -0
- package/data/craftbook-templates/cl/cli-tool/art.json +13 -0
- package/data/craftbook-templates/cl/cli-tool/logo.webp +0 -0
- package/data/craftbook-templates/cl/cli-tool/manifest.json +1 -0
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.0/craftbook.json +139 -0
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.0/test.json +128 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/art.json +12 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/logo.webp +0 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/manifest.json +1 -0
- package/data/craftbook-templates/co/codebase-ux-review/art.json +13 -0
- package/data/craftbook-templates/co/codebase-ux-review/logo.webp +0 -0
- package/data/craftbook-templates/co/codebase-ux-review/manifest.json +1 -0
- package/data/craftbook-templates/co/cohort-analysis/art.json +13 -0
- package/data/craftbook-templates/co/cohort-analysis/logo.webp +0 -0
- package/data/craftbook-templates/co/cohort-analysis/manifest.json +1 -0
- package/data/craftbook-templates/co/company-research-brief/art.json +13 -0
- package/data/craftbook-templates/co/company-research-brief/logo.webp +0 -0
- package/data/craftbook-templates/co/company-research-brief/manifest.json +1 -0
- package/data/craftbook-templates/co/comparison-matrix/art.json +13 -0
- package/data/craftbook-templates/co/comparison-matrix/logo.webp +0 -0
- package/data/craftbook-templates/co/comparison-matrix/manifest.json +1 -0
- package/data/craftbook-templates/co/compat-check/art.json +13 -0
- package/data/craftbook-templates/co/compat-check/logo.webp +0 -0
- package/data/craftbook-templates/co/compat-check/manifest.json +1 -0
- package/data/craftbook-templates/co/competitive-analysis/art.json +13 -0
- package/data/craftbook-templates/co/competitive-analysis/logo.webp +0 -0
- package/data/craftbook-templates/co/competitive-analysis/manifest.json +1 -0
- package/data/craftbook-templates/co/config-scaffold/art.json +13 -0
- package/data/craftbook-templates/co/config-scaffold/logo.webp +0 -0
- package/data/craftbook-templates/co/config-scaffold/manifest.json +1 -0
- package/data/craftbook-templates/co/content-accuracy-review/art.json +12 -0
- package/data/craftbook-templates/co/content-accuracy-review/logo.webp +0 -0
- package/data/craftbook-templates/co/content-accuracy-review/manifest.json +1 -0
- package/data/craftbook-templates/co/content-deck/art.json +13 -0
- package/data/craftbook-templates/co/content-deck/logo.webp +0 -0
- package/data/craftbook-templates/co/content-deck/manifest.json +1 -0
- package/data/craftbook-templates/co/contract-template/art.json +12 -0
- package/data/craftbook-templates/co/contract-template/logo.webp +0 -0
- package/data/craftbook-templates/co/contract-template/manifest.json +1 -0
- package/data/craftbook-templates/co/cookbook-layout/art.json +13 -0
- package/data/craftbook-templates/co/cookbook-layout/logo.webp +0 -0
- package/data/craftbook-templates/co/cookbook-layout/manifest.json +1 -0
- package/data/craftbook-templates/co/copy-review/art.json +13 -0
- package/data/craftbook-templates/co/copy-review/logo.webp +0 -0
- package/data/craftbook-templates/co/copy-review/manifest.json +1 -0
- package/data/craftbook-templates/co/corpus-email-digest/art.json +13 -0
- package/data/craftbook-templates/co/corpus-email-digest/logo.webp +0 -0
- package/data/craftbook-templates/co/corpus-email-digest/manifest.json +1 -0
- package/data/craftbook-templates/co/corpus-synthesis/art.json +13 -0
- package/data/craftbook-templates/co/corpus-synthesis/logo.webp +0 -0
- package/data/craftbook-templates/co/corpus-synthesis/manifest.json +1 -0
- package/data/craftbook-templates/co/cover-letter/art.json +13 -0
- package/data/craftbook-templates/co/cover-letter/logo.webp +0 -0
- package/data/craftbook-templates/co/cover-letter/manifest.json +1 -0
- package/data/craftbook-templates/cr/crm-update-batch/art.json +12 -0
- package/data/craftbook-templates/cr/crm-update-batch/logo.webp +0 -0
- package/data/craftbook-templates/cr/crm-update-batch/manifest.json +1 -0
- package/data/craftbook-templates/cr/cron-job/art.json +13 -0
- package/data/craftbook-templates/cr/cron-job/logo.webp +0 -0
- package/data/craftbook-templates/cr/cron-job/manifest.json +1 -0
- package/data/craftbook-templates/cr/crossword-forge/art.json +13 -0
- package/data/craftbook-templates/cr/crossword-forge/logo.webp +0 -0
- package/data/craftbook-templates/cr/crossword-forge/manifest.json +1 -0
- package/data/craftbook-templates/cs/csv-transformer/art.json +13 -0
- package/data/craftbook-templates/cs/csv-transformer/logo.webp +0 -0
- package/data/craftbook-templates/cs/csv-transformer/manifest.json +1 -0
- package/data/craftbook-templates/da/dashboard-spec/art.json +13 -0
- package/data/craftbook-templates/da/dashboard-spec/logo.webp +0 -0
- package/data/craftbook-templates/da/dashboard-spec/manifest.json +1 -0
- package/data/craftbook-templates/da/data-dictionary/art.json +13 -0
- package/data/craftbook-templates/da/data-dictionary/logo.webp +0 -0
- package/data/craftbook-templates/da/data-dictionary/manifest.json +1 -0
- package/data/craftbook-templates/da/data-export-migrate/art.json +13 -0
- package/data/craftbook-templates/da/data-export-migrate/logo.webp +0 -0
- package/data/craftbook-templates/da/data-export-migrate/manifest.json +1 -0
- package/data/craftbook-templates/da/data-join-merge/art.json +13 -0
- package/data/craftbook-templates/da/data-join-merge/logo.webp +0 -0
- package/data/craftbook-templates/da/data-join-merge/manifest.json +1 -0
- package/data/craftbook-templates/da/data-pipeline-etl/art.json +12 -0
- package/data/craftbook-templates/da/data-pipeline-etl/logo.webp +0 -0
- package/data/craftbook-templates/da/data-pipeline-etl/manifest.json +1 -0
- package/data/craftbook-templates/da/data-quality-audit/art.json +12 -0
- package/data/craftbook-templates/da/data-quality-audit/logo.webp +0 -0
- package/data/craftbook-templates/da/data-quality-audit/manifest.json +1 -0
- package/data/craftbook-templates/da/data-to-report/art.json +13 -0
- package/data/craftbook-templates/da/data-to-report/logo.webp +0 -0
- package/data/craftbook-templates/da/data-to-report/manifest.json +1 -0
- package/data/craftbook-templates/da/data-viz-page/art.json +13 -0
- package/data/craftbook-templates/da/data-viz-page/logo.webp +0 -0
- package/data/craftbook-templates/da/data-viz-page/manifest.json +1 -0
- package/data/craftbook-templates/da/dataset-clean/art.json +13 -0
- package/data/craftbook-templates/da/dataset-clean/logo.webp +0 -0
- package/data/craftbook-templates/da/dataset-clean/manifest.json +1 -0
- package/data/craftbook-templates/db/db-index-tuning/art.json +13 -0
- package/data/craftbook-templates/db/db-index-tuning/logo.webp +0 -0
- package/data/craftbook-templates/db/db-index-tuning/manifest.json +1 -0
- package/data/craftbook-templates/de/deep-security-review/art.json +12 -0
- package/data/craftbook-templates/de/deep-security-review/logo.webp +0 -0
- package/data/craftbook-templates/de/deep-security-review/manifest.json +1 -0
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.0/craftbook.json +201 -0
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.0/test.json +157 -0
- package/data/craftbook-templates/de/dependency-audit/art.json +12 -0
- package/data/craftbook-templates/de/dependency-audit/logo.webp +0 -0
- package/data/craftbook-templates/de/dependency-audit/manifest.json +1 -0
- package/data/craftbook-templates/de/deploy-checklist/art.json +13 -0
- package/data/craftbook-templates/de/deploy-checklist/logo.webp +0 -0
- package/data/craftbook-templates/de/deploy-checklist/manifest.json +1 -0
- package/data/craftbook-templates/de/design-review/art.json +13 -0
- package/data/craftbook-templates/de/design-review/logo.webp +0 -0
- package/data/craftbook-templates/de/design-review/manifest.json +1 -0
- package/data/craftbook-templates/de/design-system-consultation/art.json +13 -0
- package/data/craftbook-templates/de/design-system-consultation/logo.webp +0 -0
- package/data/craftbook-templates/de/design-system-consultation/manifest.json +1 -0
- package/data/craftbook-templates/di/diagram-from-text/art.json +13 -0
- package/data/craftbook-templates/di/diagram-from-text/logo.webp +0 -0
- package/data/craftbook-templates/di/diagram-from-text/manifest.json +1 -0
- package/data/craftbook-templates/di/digest-from-feeds/art.json +13 -0
- package/data/craftbook-templates/di/digest-from-feeds/logo.webp +0 -0
- package/data/craftbook-templates/di/digest-from-feeds/manifest.json +1 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/art.json +13 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/logo.webp +0 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/manifest.json +1 -0
- package/data/craftbook-templates/do/doc-rewrite/art.json +13 -0
- package/data/craftbook-templates/do/doc-rewrite/logo.webp +0 -0
- package/data/craftbook-templates/do/doc-rewrite/manifest.json +1 -0
- package/data/craftbook-templates/do/dockerize-app/art.json +12 -0
- package/data/craftbook-templates/do/dockerize-app/logo.webp +0 -0
- package/data/craftbook-templates/do/dockerize-app/manifest.json +1 -0
- package/data/craftbook-templates/do/docs-site/art.json +13 -0
- package/data/craftbook-templates/do/docs-site/logo.webp +0 -0
- package/data/craftbook-templates/do/docs-site/manifest.json +1 -0
- package/data/craftbook-templates/do/documentation-drift-review/art.json +13 -0
- package/data/craftbook-templates/do/documentation-drift-review/logo.webp +0 -0
- package/data/craftbook-templates/do/documentation-drift-review/manifest.json +1 -0
- package/data/craftbook-templates/dr/drive-wrap-up/art.json +13 -0
- package/data/craftbook-templates/dr/drive-wrap-up/logo.webp +0 -0
- package/data/craftbook-templates/dr/drive-wrap-up/manifest.json +1 -0
- package/data/craftbook-templates/du/due-diligence-brief/art.json +13 -0
- package/data/craftbook-templates/du/due-diligence-brief/logo.webp +0 -0
- package/data/craftbook-templates/du/due-diligence-brief/manifest.json +1 -0
- package/data/craftbook-templates/eb/ebook-compile/art.json +13 -0
- package/data/craftbook-templates/eb/ebook-compile/logo.webp +0 -0
- package/data/craftbook-templates/eb/ebook-compile/manifest.json +1 -0
- package/data/craftbook-templates/ed/edit-notes/art.json +13 -0
- package/data/craftbook-templates/ed/edit-notes/logo.webp +0 -0
- package/data/craftbook-templates/ed/edit-notes/manifest.json +1 -0
- package/data/craftbook-templates/em/email-sequence/art.json +13 -0
- package/data/craftbook-templates/em/email-sequence/logo.webp +0 -0
- package/data/craftbook-templates/em/email-sequence/manifest.json +1 -0
- package/data/craftbook-templates/em/email-template/art.json +13 -0
- package/data/craftbook-templates/em/email-template/logo.webp +0 -0
- package/data/craftbook-templates/em/email-template/manifest.json +1 -0
- package/data/craftbook-templates/en/engineering-retrospective/art.json +12 -0
- package/data/craftbook-templates/en/engineering-retrospective/logo.webp +0 -0
- package/data/craftbook-templates/en/engineering-retrospective/manifest.json +1 -0
- package/data/craftbook-templates/ep/episode-plan/art.json +13 -0
- package/data/craftbook-templates/ep/episode-plan/logo.webp +0 -0
- package/data/craftbook-templates/ep/episode-plan/manifest.json +1 -0
- package/data/craftbook-templates/es/escalation-playbook/art.json +12 -0
- package/data/craftbook-templates/es/escalation-playbook/logo.webp +0 -0
- package/data/craftbook-templates/es/escalation-playbook/manifest.json +1 -0
- package/data/craftbook-templates/ev/evidence-brief/art.json +13 -0
- package/data/craftbook-templates/ev/evidence-brief/logo.webp +0 -0
- package/data/craftbook-templates/ev/evidence-brief/manifest.json +1 -0
- package/data/craftbook-templates/ex/executive-level-review/art.json +13 -0
- package/data/craftbook-templates/ex/executive-level-review/logo.webp +0 -0
- package/data/craftbook-templates/ex/executive-level-review/manifest.json +1 -0
- package/data/craftbook-templates/ex/expense-categorize/art.json +12 -0
- package/data/craftbook-templates/ex/expense-categorize/logo.webp +0 -0
- package/data/craftbook-templates/ex/expense-categorize/manifest.json +1 -0
- package/data/craftbook-templates/fa/fact-check/art.json +12 -0
- package/data/craftbook-templates/fa/fact-check/logo.webp +0 -0
- package/data/craftbook-templates/fa/fact-check/manifest.json +1 -0
- package/data/craftbook-templates/fa/family-story-chapter/art.json +13 -0
- package/data/craftbook-templates/fa/family-story-chapter/logo.webp +0 -0
- package/data/craftbook-templates/fa/family-story-chapter/manifest.json +1 -0
- package/data/craftbook-templates/fa/faq-from-docs/art.json +13 -0
- package/data/craftbook-templates/fa/faq-from-docs/logo.webp +0 -0
- package/data/craftbook-templates/fa/faq-from-docs/manifest.json +1 -0
- package/data/craftbook-templates/fa/favicon-set/art.json +13 -0
- package/data/craftbook-templates/fa/favicon-set/logo.webp +0 -0
- package/data/craftbook-templates/fa/favicon-set/manifest.json +1 -0
- package/data/craftbook-templates/fe/feature-flag-release/art.json +13 -0
- package/data/craftbook-templates/fe/feature-flag-release/logo.webp +0 -0
- package/data/craftbook-templates/fe/feature-flag-release/manifest.json +1 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/art.json +13 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/logo.webp +0 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/manifest.json +1 -0
- package/data/craftbook-templates/fe/feedback-widget/art.json +13 -0
- package/data/craftbook-templates/fe/feedback-widget/logo.webp +0 -0
- package/data/craftbook-templates/fe/feedback-widget/manifest.json +1 -0
- package/data/craftbook-templates/fo/folder-to-audio/art.json +13 -0
- package/data/craftbook-templates/fo/folder-to-audio/logo.webp +0 -0
- package/data/craftbook-templates/fo/folder-to-audio/manifest.json +1 -0
- package/data/craftbook-templates/fo/forecast-model/art.json +13 -0
- package/data/craftbook-templates/fo/forecast-model/logo.webp +0 -0
- package/data/craftbook-templates/fo/forecast-model/manifest.json +1 -0
- package/data/craftbook-templates/fo/form-fill-batch/art.json +13 -0
- package/data/craftbook-templates/fo/form-fill-batch/logo.webp +0 -0
- package/data/craftbook-templates/fo/form-fill-batch/manifest.json +1 -0
- package/data/craftbook-templates/fo/form-wizard/art.json +13 -0
- package/data/craftbook-templates/fo/form-wizard/logo.webp +0 -0
- package/data/craftbook-templates/fo/form-wizard/manifest.json +1 -0
- package/data/craftbook-templates/fr/freeze-scope/art.json +13 -0
- package/data/craftbook-templates/fr/freeze-scope/logo.webp +0 -0
- package/data/craftbook-templates/fr/freeze-scope/manifest.json +1 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.1.0/craftbook.json +48 -0
- package/data/craftbook-templates/fr/freeze-scope/versions/1.1.0/test.json +110 -0
- package/data/craftbook-templates/ga/game-with-screens/art.json +13 -0
- package/data/craftbook-templates/ga/game-with-screens/logo.webp +0 -0
- package/data/craftbook-templates/ga/game-with-screens/manifest.json +1 -0
- package/data/craftbook-templates/gl/glossary-build/art.json +13 -0
- package/data/craftbook-templates/gl/glossary-build/logo.webp +0 -0
- package/data/craftbook-templates/gl/glossary-build/manifest.json +1 -0
- package/data/craftbook-templates/gr/graphql-api/art.json +13 -0
- package/data/craftbook-templates/gr/graphql-api/logo.webp +0 -0
- package/data/craftbook-templates/gr/graphql-api/manifest.json +1 -0
- package/data/craftbook-templates/gr/grpc-service/art.json +13 -0
- package/data/craftbook-templates/gr/grpc-service/logo.webp +0 -0
- package/data/craftbook-templates/gr/grpc-service/manifest.json +1 -0
- package/data/craftbook-templates/ha/handbook-section/art.json +13 -0
- package/data/craftbook-templates/ha/handbook-section/logo.webp +0 -0
- package/data/craftbook-templates/ha/handbook-section/manifest.json +1 -0
- package/data/craftbook-templates/he/hero-image/art.json +13 -0
- package/data/craftbook-templates/he/hero-image/logo.webp +0 -0
- package/data/craftbook-templates/he/hero-image/manifest.json +1 -0
- package/data/craftbook-templates/ho/holiday-card-run/art.json +13 -0
- package/data/craftbook-templates/ho/holiday-card-run/logo.webp +0 -0
- package/data/craftbook-templates/ho/holiday-card-run/manifest.json +1 -0
- package/data/craftbook-templates/ho/hotfix-flow/art.json +13 -0
- package/data/craftbook-templates/ho/hotfix-flow/logo.webp +0 -0
- package/data/craftbook-templates/ho/hotfix-flow/manifest.json +1 -0
- package/data/craftbook-templates/ht/html-arcade-game/art.json +13 -0
- package/data/craftbook-templates/ht/html-arcade-game/logo.webp +0 -0
- package/data/craftbook-templates/ht/html-arcade-game/manifest.json +1 -0
- package/data/craftbook-templates/ht/html-puzzle-game/art.json +13 -0
- package/data/craftbook-templates/ht/html-puzzle-game/logo.webp +0 -0
- package/data/craftbook-templates/ht/html-puzzle-game/manifest.json +1 -0
- package/data/craftbook-templates/ic/icon-pack/art.json +13 -0
- package/data/craftbook-templates/ic/icon-pack/logo.webp +0 -0
- package/data/craftbook-templates/ic/icon-pack/manifest.json +1 -0
- package/data/craftbook-templates/id/idea-office-hours/art.json +12 -0
- package/data/craftbook-templates/id/idea-office-hours/logo.webp +0 -0
- package/data/craftbook-templates/id/idea-office-hours/manifest.json +1 -0
- package/data/craftbook-templates/id/idle-clicker-game/art.json +13 -0
- package/data/craftbook-templates/id/idle-clicker-game/logo.webp +0 -0
- package/data/craftbook-templates/id/idle-clicker-game/manifest.json +1 -0
- package/data/craftbook-templates/im/image-batch-edit/art.json +12 -0
- package/data/craftbook-templates/im/image-batch-edit/logo.webp +0 -0
- package/data/craftbook-templates/im/image-batch-edit/manifest.json +1 -0
- package/data/craftbook-templates/im/image-dedup-cluster/art.json +13 -0
- package/data/craftbook-templates/im/image-dedup-cluster/logo.webp +0 -0
- package/data/craftbook-templates/im/image-dedup-cluster/manifest.json +1 -0
- package/data/craftbook-templates/im/image-palette-extract/art.json +13 -0
- package/data/craftbook-templates/im/image-palette-extract/logo.webp +0 -0
- package/data/craftbook-templates/im/image-palette-extract/manifest.json +1 -0
- package/data/craftbook-templates/im/image-seo-rename/art.json +13 -0
- package/data/craftbook-templates/im/image-seo-rename/logo.webp +0 -0
- package/data/craftbook-templates/im/image-seo-rename/manifest.json +1 -0
- package/data/craftbook-templates/im/image-set-index/art.json +13 -0
- package/data/craftbook-templates/im/image-set-index/logo.webp +0 -0
- package/data/craftbook-templates/im/image-set-index/manifest.json +1 -0
- package/data/craftbook-templates/in/inbox-triage/art.json +13 -0
- package/data/craftbook-templates/in/inbox-triage/logo.webp +0 -0
- package/data/craftbook-templates/in/inbox-triage/manifest.json +1 -0
- package/data/craftbook-templates/in/incident-comms-templates/art.json +12 -0
- package/data/craftbook-templates/in/incident-comms-templates/logo.webp +0 -0
- package/data/craftbook-templates/in/incident-comms-templates/manifest.json +1 -0
- package/data/craftbook-templates/in/incident-postmortem/art.json +12 -0
- package/data/craftbook-templates/in/incident-postmortem/logo.webp +0 -0
- package/data/craftbook-templates/in/incident-postmortem/manifest.json +1 -0
- package/data/craftbook-templates/in/insurance-inventory/art.json +13 -0
- package/data/craftbook-templates/in/insurance-inventory/logo.webp +0 -0
- package/data/craftbook-templates/in/insurance-inventory/manifest.json +1 -0
- package/data/craftbook-templates/in/interactive-quiz/art.json +13 -0
- package/data/craftbook-templates/in/interactive-quiz/logo.webp +0 -0
- package/data/craftbook-templates/in/interactive-quiz/manifest.json +1 -0
- package/data/craftbook-templates/in/investigate/art.json +12 -0
- package/data/craftbook-templates/in/investigate/logo.webp +0 -0
- package/data/craftbook-templates/in/investigate/manifest.json +1 -0
- package/data/craftbook-templates/in/investigate/versions/1.1.0/craftbook.json +81 -0
- package/data/craftbook-templates/in/investigate/versions/1.1.0/test.json +122 -0
- package/data/craftbook-templates/in/investigate-root-cause/art.json +12 -0
- package/data/craftbook-templates/in/investigate-root-cause/logo.webp +0 -0
- package/data/craftbook-templates/in/investigate-root-cause/manifest.json +1 -0
- package/data/craftbook-templates/in/invitation-design/art.json +13 -0
- package/data/craftbook-templates/in/invitation-design/logo.webp +0 -0
- package/data/craftbook-templates/in/invitation-design/manifest.json +1 -0
- package/data/craftbook-templates/in/invoice-generator/art.json +13 -0
- package/data/craftbook-templates/in/invoice-generator/logo.webp +0 -0
- package/data/craftbook-templates/in/invoice-generator/manifest.json +1 -0
- package/data/craftbook-templates/in/invoice-run/art.json +13 -0
- package/data/craftbook-templates/in/invoice-run/logo.webp +0 -0
- package/data/craftbook-templates/in/invoice-run/manifest.json +1 -0
- package/data/craftbook-templates/in/invoice-run/versions/1.1.0/craftbook.json +168 -0
- package/data/craftbook-templates/in/invoice-run/versions/1.1.0/test.json +140 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/it/item-intake/art.json +13 -0
- package/data/craftbook-templates/it/item-intake/logo.webp +0 -0
- package/data/craftbook-templates/it/item-intake/manifest.json +1 -0
- package/data/craftbook-templates/ju/juice-pass/art.json +13 -0
- package/data/craftbook-templates/ju/juice-pass/logo.webp +0 -0
- package/data/craftbook-templates/ju/juice-pass/manifest.json +1 -0
- package/data/craftbook-templates/kn/knowledge-base-article/art.json +13 -0
- package/data/craftbook-templates/kn/knowledge-base-article/logo.webp +0 -0
- package/data/craftbook-templates/kn/knowledge-base-article/manifest.json +1 -0
- package/data/craftbook-templates/kp/kpi-scorecard/art.json +13 -0
- package/data/craftbook-templates/kp/kpi-scorecard/logo.webp +0 -0
- package/data/craftbook-templates/kp/kpi-scorecard/manifest.json +1 -0
- package/data/craftbook-templates/la/landing-copy/art.json +13 -0
- package/data/craftbook-templates/la/landing-copy/logo.webp +0 -0
- package/data/craftbook-templates/la/landing-copy/manifest.json +1 -0
- package/data/craftbook-templates/la/landing-page/art.json +13 -0
- package/data/craftbook-templates/la/landing-page/logo.webp +0 -0
- package/data/craftbook-templates/la/landing-page/manifest.json +1 -0
- package/data/craftbook-templates/le/lead-enrichment/art.json +12 -0
- package/data/craftbook-templates/le/lead-enrichment/logo.webp +0 -0
- package/data/craftbook-templates/le/lead-enrichment/manifest.json +1 -0
- package/data/craftbook-templates/li/library-package/art.json +13 -0
- package/data/craftbook-templates/li/library-package/logo.webp +0 -0
- package/data/craftbook-templates/li/library-package/manifest.json +1 -0
- package/data/craftbook-templates/li/literature-review/art.json +13 -0
- package/data/craftbook-templates/li/literature-review/logo.webp +0 -0
- package/data/craftbook-templates/li/literature-review/manifest.json +1 -0
- package/data/craftbook-templates/li/live-browser-qa/art.json +12 -0
- package/data/craftbook-templates/li/live-browser-qa/logo.webp +0 -0
- package/data/craftbook-templates/li/live-browser-qa/manifest.json +1 -0
- package/data/craftbook-templates/lo/localize-content/art.json +12 -0
- package/data/craftbook-templates/lo/localize-content/logo.webp +0 -0
- package/data/craftbook-templates/lo/localize-content/manifest.json +1 -0
- package/data/craftbook-templates/lo/logo-set/art.json +13 -0
- package/data/craftbook-templates/lo/logo-set/logo.webp +0 -0
- package/data/craftbook-templates/lo/logo-set/manifest.json +1 -0
- package/data/craftbook-templates/ma/market-scan/art.json +13 -0
- package/data/craftbook-templates/ma/market-scan/logo.webp +0 -0
- package/data/craftbook-templates/ma/market-scan/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-minutes/art.json +13 -0
- package/data/craftbook-templates/me/meeting-minutes/logo.webp +0 -0
- package/data/craftbook-templates/me/meeting-minutes/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/art.json +13 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/logo.webp +0 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-prep-brief/art.json +13 -0
- package/data/craftbook-templates/me/meeting-prep-brief/logo.webp +0 -0
- package/data/craftbook-templates/me/meeting-prep-brief/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-summary-audio/art.json +13 -0
- package/data/craftbook-templates/me/meeting-summary-audio/logo.webp +0 -0
- package/data/craftbook-templates/me/meeting-summary-audio/manifest.json +1 -0
- package/data/craftbook-templates/me/memory-prompt-session/art.json +13 -0
- package/data/craftbook-templates/me/memory-prompt-session/logo.webp +0 -0
- package/data/craftbook-templates/me/memory-prompt-session/manifest.json +1 -0
- package/data/craftbook-templates/me/message-queue-consumer/art.json +13 -0
- package/data/craftbook-templates/me/message-queue-consumer/logo.webp +0 -0
- package/data/craftbook-templates/me/message-queue-consumer/manifest.json +1 -0
- package/data/craftbook-templates/mi/micro-game-jam/art.json +13 -0
- package/data/craftbook-templates/mi/micro-game-jam/logo.webp +0 -0
- package/data/craftbook-templates/mi/micro-game-jam/manifest.json +1 -0
- package/data/craftbook-templates/mo/mock-interview/art.json +13 -0
- package/data/craftbook-templates/mo/mock-interview/logo.webp +0 -0
- package/data/craftbook-templates/mo/mock-interview/manifest.json +1 -0
- package/data/craftbook-templates/mo/mod-scaffold/art.json +13 -0
- package/data/craftbook-templates/mo/mod-scaffold/logo.webp +0 -0
- package/data/craftbook-templates/mo/mod-scaffold/manifest.json +1 -0
- package/data/craftbook-templates/mo/monitor-and-alert/art.json +13 -0
- package/data/craftbook-templates/mo/monitor-and-alert/logo.webp +0 -0
- package/data/craftbook-templates/mo/monitor-and-alert/manifest.json +1 -0
- package/data/craftbook-templates/mo/month-close/art.json +13 -0
- package/data/craftbook-templates/mo/month-close/logo.webp +0 -0
- package/data/craftbook-templates/mo/month-close/manifest.json +1 -0
- package/data/craftbook-templates/mo/monthly-recording-review/art.json +12 -0
- package/data/craftbook-templates/mo/monthly-recording-review/logo.webp +0 -0
- package/data/craftbook-templates/mo/monthly-recording-review/manifest.json +1 -0
- package/data/craftbook-templates/mo/moodboard/art.json +13 -0
- package/data/craftbook-templates/mo/moodboard/logo.webp +0 -0
- package/data/craftbook-templates/mo/moodboard/manifest.json +1 -0
- package/data/craftbook-templates/mo/morning-brief/art.json +13 -0
- package/data/craftbook-templates/mo/morning-brief/logo.webp +0 -0
- package/data/craftbook-templates/mo/morning-brief/manifest.json +1 -0
- package/data/craftbook-templates/mo/morning-report/art.json +13 -0
- package/data/craftbook-templates/mo/morning-report/logo.webp +0 -0
- package/data/craftbook-templates/mo/morning-report/manifest.json +1 -0
- package/data/craftbook-templates/mu/music-metadata-tag/art.json +13 -0
- package/data/craftbook-templates/mu/music-metadata-tag/logo.webp +0 -0
- package/data/craftbook-templates/mu/music-metadata-tag/manifest.json +1 -0
- package/data/craftbook-templates/na/narrated-slideshow/art.json +13 -0
- package/data/craftbook-templates/na/narrated-slideshow/logo.webp +0 -0
- package/data/craftbook-templates/na/narrated-slideshow/manifest.json +1 -0
- package/data/craftbook-templates/ne/newsletter-issue/art.json +13 -0
- package/data/craftbook-templates/ne/newsletter-issue/logo.webp +0 -0
- package/data/craftbook-templates/ne/newsletter-issue/manifest.json +1 -0
- package/data/craftbook-templates/no/notification-router/art.json +13 -0
- package/data/craftbook-templates/no/notification-router/logo.webp +0 -0
- package/data/craftbook-templates/no/notification-router/manifest.json +1 -0
- package/data/craftbook-templates/oc/ocr-extract/art.json +13 -0
- package/data/craftbook-templates/oc/ocr-extract/logo.webp +0 -0
- package/data/craftbook-templates/oc/ocr-extract/manifest.json +1 -0
- package/data/craftbook-templates/of/offer-compare/art.json +13 -0
- package/data/craftbook-templates/of/offer-compare/logo.webp +0 -0
- package/data/craftbook-templates/of/offer-compare/manifest.json +1 -0
- package/data/craftbook-templates/of/office-hours/art.json +12 -0
- package/data/craftbook-templates/of/office-hours/logo.webp +0 -0
- package/data/craftbook-templates/of/office-hours/manifest.json +1 -0
- package/data/craftbook-templates/of/office-hours/versions/1.1.0/craftbook.json +48 -0
- package/data/craftbook-templates/of/office-hours/versions/1.1.0/test.json +118 -0
- package/data/craftbook-templates/on/onboarding-checklist/art.json +13 -0
- package/data/craftbook-templates/on/onboarding-checklist/logo.webp +0 -0
- package/data/craftbook-templates/on/onboarding-checklist/manifest.json +1 -0
- package/data/craftbook-templates/on/onboarding-flow/art.json +13 -0
- package/data/craftbook-templates/on/onboarding-flow/logo.webp +0 -0
- package/data/craftbook-templates/on/onboarding-flow/manifest.json +1 -0
- package/data/craftbook-templates/on/oncall-handoff/art.json +12 -0
- package/data/craftbook-templates/on/oncall-handoff/logo.webp +0 -0
- package/data/craftbook-templates/on/oncall-handoff/manifest.json +1 -0
- package/data/craftbook-templates/on/one-pager/art.json +13 -0
- package/data/craftbook-templates/on/one-pager/logo.webp +0 -0
- package/data/craftbook-templates/on/one-pager/manifest.json +1 -0
- package/data/craftbook-templates/op/ops-runbook/art.json +13 -0
- package/data/craftbook-templates/op/ops-runbook/logo.webp +0 -0
- package/data/craftbook-templates/op/ops-runbook/manifest.json +1 -0
- package/data/craftbook-templates/pa/page-spread/art.json +13 -0
- package/data/craftbook-templates/pa/page-spread/logo.webp +0 -0
- package/data/craftbook-templates/pa/page-spread/manifest.json +1 -0
- package/data/craftbook-templates/pa/parser-grammar/art.json +13 -0
- package/data/craftbook-templates/pa/parser-grammar/logo.webp +0 -0
- package/data/craftbook-templates/pa/parser-grammar/manifest.json +1 -0
- package/data/craftbook-templates/pe/perf-audit/art.json +12 -0
- package/data/craftbook-templates/pe/perf-audit/logo.webp +0 -0
- package/data/craftbook-templates/pe/perf-audit/manifest.json +1 -0
- package/data/craftbook-templates/pe/perf-optimization/art.json +12 -0
- package/data/craftbook-templates/pe/perf-optimization/logo.webp +0 -0
- package/data/craftbook-templates/pe/perf-optimization/manifest.json +1 -0
- package/data/craftbook-templates/pe/pest-diagnosis/art.json +13 -0
- package/data/craftbook-templates/pe/pest-diagnosis/logo.webp +0 -0
- package/data/craftbook-templates/pe/pest-diagnosis/manifest.json +1 -0
- package/data/craftbook-templates/ph/photo-cull/art.json +13 -0
- package/data/craftbook-templates/ph/photo-cull/logo.webp +0 -0
- package/data/craftbook-templates/ph/photo-cull/manifest.json +1 -0
- package/data/craftbook-templates/ph/physics-toy/art.json +13 -0
- package/data/craftbook-templates/ph/physics-toy/logo.webp +0 -0
- package/data/craftbook-templates/ph/physics-toy/manifest.json +1 -0
- package/data/craftbook-templates/pi/pitch-deck/art.json +13 -0
- package/data/craftbook-templates/pi/pitch-deck/logo.webp +0 -0
- package/data/craftbook-templates/pi/pitch-deck/manifest.json +1 -0
- package/data/craftbook-templates/pl/plan/art.json +12 -0
- package/data/craftbook-templates/pl/plan/logo.webp +0 -0
- package/data/craftbook-templates/pl/plan/manifest.json +1 -0
- package/data/craftbook-templates/pl/playtest-report/art.json +12 -0
- package/data/craftbook-templates/pl/playtest-report/logo.webp +0 -0
- package/data/craftbook-templates/pl/playtest-report/manifest.json +1 -0
- package/data/craftbook-templates/po/podcast-chaptering/art.json +13 -0
- package/data/craftbook-templates/po/podcast-chaptering/logo.webp +0 -0
- package/data/craftbook-templates/po/podcast-chaptering/manifest.json +1 -0
- package/data/craftbook-templates/po/portfolio-site/art.json +13 -0
- package/data/craftbook-templates/po/portfolio-site/logo.webp +0 -0
- package/data/craftbook-templates/po/portfolio-site/manifest.json +1 -0
- package/data/craftbook-templates/po/powerpoint-deck/art.json +13 -0
- package/data/craftbook-templates/po/powerpoint-deck/logo.webp +0 -0
- package/data/craftbook-templates/po/powerpoint-deck/manifest.json +1 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.1.0/craftbook.json +128 -0
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.1.0/test.json +97 -0
- package/data/craftbook-templates/pr/pr-security-review/art.json +12 -0
- package/data/craftbook-templates/pr/pr-security-review/logo.webp +0 -0
- package/data/craftbook-templates/pr/pr-security-review/manifest.json +1 -0
- package/data/craftbook-templates/pr/practice-exam/art.json +12 -0
- package/data/craftbook-templates/pr/practice-exam/logo.webp +0 -0
- package/data/craftbook-templates/pr/practice-exam/manifest.json +1 -0
- package/data/craftbook-templates/pr/practice-session/art.json +13 -0
- package/data/craftbook-templates/pr/practice-session/logo.webp +0 -0
- package/data/craftbook-templates/pr/practice-session/manifest.json +1 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/art.json +13 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/logo.webp +0 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/manifest.json +1 -0
- package/data/craftbook-templates/pr/press-release/art.json +13 -0
- package/data/craftbook-templates/pr/press-release/logo.webp +0 -0
- package/data/craftbook-templates/pr/press-release/manifest.json +1 -0
- package/data/craftbook-templates/pr/price-tracker/art.json +13 -0
- package/data/craftbook-templates/pr/price-tracker/logo.webp +0 -0
- package/data/craftbook-templates/pr/price-tracker/manifest.json +1 -0
- package/data/craftbook-templates/pr/pricing-page/art.json +13 -0
- package/data/craftbook-templates/pr/pricing-page/logo.webp +0 -0
- package/data/craftbook-templates/pr/pricing-page/manifest.json +1 -0
- package/data/craftbook-templates/pr/product-descriptions/art.json +13 -0
- package/data/craftbook-templates/pr/product-descriptions/logo.webp +0 -0
- package/data/craftbook-templates/pr/product-descriptions/manifest.json +1 -0
- package/data/craftbook-templates/pr/proposal-sow/art.json +13 -0
- package/data/craftbook-templates/pr/proposal-sow/logo.webp +0 -0
- package/data/craftbook-templates/pr/proposal-sow/manifest.json +1 -0
- package/data/craftbook-templates/pu/pull-request-review/art.json +12 -0
- package/data/craftbook-templates/pu/pull-request-review/logo.webp +0 -0
- package/data/craftbook-templates/pu/pull-request-review/manifest.json +1 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.1.0/craftbook.json +118 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.1.0/test.json +160 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/art.json +13 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/logo.webp +0 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/manifest.json +1 -0
- package/data/craftbook-templates/pw/pwa-offline/art.json +13 -0
- package/data/craftbook-templates/pw/pwa-offline/logo.webp +0 -0
- package/data/craftbook-templates/pw/pwa-offline/manifest.json +1 -0
- package/data/craftbook-templates/qa/qa/art.json +12 -0
- package/data/craftbook-templates/qa/qa/logo.webp +0 -0
- package/data/craftbook-templates/qa/qa/manifest.json +1 -0
- package/data/craftbook-templates/qu/quarterly-summary/art.json +13 -0
- package/data/craftbook-templates/qu/quarterly-summary/logo.webp +0 -0
- package/data/craftbook-templates/qu/quarterly-summary/manifest.json +1 -0
- package/data/craftbook-templates/re/reading-list/art.json +13 -0
- package/data/craftbook-templates/re/reading-list/logo.webp +0 -0
- package/data/craftbook-templates/re/reading-list/manifest.json +1 -0
- package/data/craftbook-templates/re/receipt-intake/art.json +13 -0
- package/data/craftbook-templates/re/receipt-intake/logo.webp +0 -0
- package/data/craftbook-templates/re/receipt-intake/manifest.json +1 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/art.json +13 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/logo.webp +0 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/manifest.json +1 -0
- package/data/craftbook-templates/re/recipe-capture/art.json +12 -0
- package/data/craftbook-templates/re/recipe-capture/logo.webp +0 -0
- package/data/craftbook-templates/re/recipe-capture/manifest.json +1 -0
- package/data/craftbook-templates/re/record-a-relative/art.json +13 -0
- package/data/craftbook-templates/re/record-a-relative/logo.webp +0 -0
- package/data/craftbook-templates/re/record-a-relative/manifest.json +1 -0
- package/data/craftbook-templates/re/recurring-invoice-run/art.json +13 -0
- package/data/craftbook-templates/re/recurring-invoice-run/logo.webp +0 -0
- package/data/craftbook-templates/re/recurring-invoice-run/manifest.json +1 -0
- package/data/craftbook-templates/re/refactor-module/art.json +12 -0
- package/data/craftbook-templates/re/refactor-module/logo.webp +0 -0
- package/data/craftbook-templates/re/refactor-module/manifest.json +1 -0
- package/data/craftbook-templates/re/regex-builder/art.json +12 -0
- package/data/craftbook-templates/re/regex-builder/logo.webp +0 -0
- package/data/craftbook-templates/re/regex-builder/manifest.json +1 -0
- package/data/craftbook-templates/re/release-announcement/art.json +13 -0
- package/data/craftbook-templates/re/release-announcement/logo.webp +0 -0
- package/data/craftbook-templates/re/release-announcement/manifest.json +1 -0
- package/data/craftbook-templates/re/release-notes/art.json +13 -0
- package/data/craftbook-templates/re/release-notes/logo.webp +0 -0
- package/data/craftbook-templates/re/release-notes/manifest.json +1 -0
- package/data/craftbook-templates/re/release-pipeline-ci/art.json +13 -0
- package/data/craftbook-templates/re/release-pipeline-ci/logo.webp +0 -0
- package/data/craftbook-templates/re/release-pipeline-ci/manifest.json +1 -0
- package/data/craftbook-templates/re/release-readiness-review/art.json +13 -0
- package/data/craftbook-templates/re/release-readiness-review/logo.webp +0 -0
- package/data/craftbook-templates/re/release-readiness-review/manifest.json +1 -0
- package/data/craftbook-templates/re/reliability-review/art.json +12 -0
- package/data/craftbook-templates/re/reliability-review/logo.webp +0 -0
- package/data/craftbook-templates/re/reliability-review/manifest.json +1 -0
- package/data/craftbook-templates/re/report-pdf/art.json +13 -0
- package/data/craftbook-templates/re/report-pdf/logo.webp +0 -0
- package/data/craftbook-templates/re/report-pdf/manifest.json +1 -0
- package/data/craftbook-templates/re/research-report/art.json +13 -0
- package/data/craftbook-templates/re/research-report/logo.webp +0 -0
- package/data/craftbook-templates/re/research-report/manifest.json +1 -0
- package/data/craftbook-templates/re/research-to-document/art.json +13 -0
- package/data/craftbook-templates/re/research-to-document/logo.webp +0 -0
- package/data/craftbook-templates/re/research-to-document/manifest.json +1 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.1.0/craftbook.json +158 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.1.0/test.json +97 -0
- package/data/craftbook-templates/re/rest-api/art.json +13 -0
- package/data/craftbook-templates/re/rest-api/logo.webp +0 -0
- package/data/craftbook-templates/re/rest-api/manifest.json +1 -0
- package/data/craftbook-templates/re/resume-cv/art.json +13 -0
- package/data/craftbook-templates/re/resume-cv/logo.webp +0 -0
- package/data/craftbook-templates/re/resume-cv/manifest.json +1 -0
- package/data/craftbook-templates/re/reviewer-loop/art.json +12 -0
- package/data/craftbook-templates/re/reviewer-loop/logo.webp +0 -0
- package/data/craftbook-templates/re/reviewer-loop/manifest.json +1 -0
- package/data/craftbook-templates/ro/rollback-plan/art.json +13 -0
- package/data/craftbook-templates/ro/rollback-plan/logo.webp +0 -0
- package/data/craftbook-templates/ro/rollback-plan/manifest.json +1 -0
- package/data/craftbook-templates/ro/root-cause-investigation/art.json +12 -0
- package/data/craftbook-templates/ro/root-cause-investigation/logo.webp +0 -0
- package/data/craftbook-templates/ro/root-cause-investigation/manifest.json +1 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/art.json +13 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/logo.webp +0 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/manifest.json +1 -0
- package/data/craftbook-templates/ru/runbook/art.json +12 -0
- package/data/craftbook-templates/ru/runbook/logo.webp +0 -0
- package/data/craftbook-templates/ru/runbook/manifest.json +1 -0
- package/data/craftbook-templates/sc/schema-migration/art.json +13 -0
- package/data/craftbook-templates/sc/schema-migration/logo.webp +0 -0
- package/data/craftbook-templates/sc/schema-migration/manifest.json +1 -0
- package/data/craftbook-templates/sc/scrape-to-structured/art.json +13 -0
- package/data/craftbook-templates/sc/scrape-to-structured/logo.webp +0 -0
- package/data/craftbook-templates/sc/scrape-to-structured/manifest.json +1 -0
- package/data/craftbook-templates/sc/script-automation/art.json +12 -0
- package/data/craftbook-templates/sc/script-automation/logo.webp +0 -0
- package/data/craftbook-templates/sc/script-automation/manifest.json +1 -0
- package/data/craftbook-templates/sd/sdk-wrapper/art.json +13 -0
- package/data/craftbook-templates/sd/sdk-wrapper/logo.webp +0 -0
- package/data/craftbook-templates/sd/sdk-wrapper/manifest.json +1 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/art.json +13 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/logo.webp +0 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/manifest.json +1 -0
- package/data/craftbook-templates/se/security-architecture-review/art.json +12 -0
- package/data/craftbook-templates/se/security-architecture-review/logo.webp +0 -0
- package/data/craftbook-templates/se/security-architecture-review/manifest.json +1 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/1.1.0/craftbook.json +28 -0
- package/data/craftbook-templates/se/security-architecture-review/versions/1.1.0/test.json +110 -0
- package/data/craftbook-templates/se/seo-meta-pack/art.json +13 -0
- package/data/craftbook-templates/se/seo-meta-pack/logo.webp +0 -0
- package/data/craftbook-templates/se/seo-meta-pack/manifest.json +1 -0
- package/data/craftbook-templates/sh/ship/art.json +12 -0
- package/data/craftbook-templates/sh/ship/logo.webp +0 -0
- package/data/craftbook-templates/sh/ship/manifest.json +1 -0
- package/data/craftbook-templates/sh/ship/versions/1.1.0/craftbook.json +137 -0
- package/data/craftbook-templates/sh/ship/versions/1.1.0/test.json +225 -0
- package/data/craftbook-templates/so/social-thread/art.json +13 -0
- package/data/craftbook-templates/so/social-thread/logo.webp +0 -0
- package/data/craftbook-templates/so/social-thread/manifest.json +1 -0
- package/data/craftbook-templates/so/source-quality-audit/art.json +12 -0
- package/data/craftbook-templates/so/source-quality-audit/logo.webp +0 -0
- package/data/craftbook-templates/so/source-quality-audit/manifest.json +1 -0
- package/data/craftbook-templates/sp/spa-dashboard/art.json +13 -0
- package/data/craftbook-templates/sp/spa-dashboard/logo.webp +0 -0
- package/data/craftbook-templates/sp/spa-dashboard/manifest.json +1 -0
- package/data/craftbook-templates/sp/spec-authoring/art.json +13 -0
- package/data/craftbook-templates/sp/spec-authoring/logo.webp +0 -0
- package/data/craftbook-templates/sp/spec-authoring/manifest.json +1 -0
- package/data/craftbook-templates/sp/spec-doc/art.json +13 -0
- package/data/craftbook-templates/sp/spec-doc/logo.webp +0 -0
- package/data/craftbook-templates/sp/spec-doc/manifest.json +1 -0
- package/data/craftbook-templates/sp/spreadsheet-model/art.json +13 -0
- package/data/craftbook-templates/sp/spreadsheet-model/logo.webp +0 -0
- package/data/craftbook-templates/sp/spreadsheet-model/manifest.json +1 -0
- package/data/craftbook-templates/sp/sprite-sheet/art.json +13 -0
- package/data/craftbook-templates/sp/sprite-sheet/logo.webp +0 -0
- package/data/craftbook-templates/sp/sprite-sheet/manifest.json +1 -0
- package/data/craftbook-templates/sq/sql-analysis/art.json +13 -0
- package/data/craftbook-templates/sq/sql-analysis/logo.webp +0 -0
- package/data/craftbook-templates/sq/sql-analysis/manifest.json +1 -0
- package/data/craftbook-templates/st/standup-summary/art.json +13 -0
- package/data/craftbook-templates/st/standup-summary/logo.webp +0 -0
- package/data/craftbook-templates/st/standup-summary/manifest.json +1 -0
- package/data/craftbook-templates/st/state-machine/art.json +12 -0
- package/data/craftbook-templates/st/state-machine/logo.webp +0 -0
- package/data/craftbook-templates/st/state-machine/manifest.json +1 -0
- package/data/craftbook-templates/st/status-report/art.json +13 -0
- package/data/craftbook-templates/st/status-report/logo.webp +0 -0
- package/data/craftbook-templates/st/status-report/manifest.json +1 -0
- package/data/craftbook-templates/su/subscription-audit/art.json +12 -0
- package/data/craftbook-templates/su/subscription-audit/logo.webp +0 -0
- package/data/craftbook-templates/su/subscription-audit/manifest.json +1 -0
- package/data/craftbook-templates/su/subtitle-generator/art.json +13 -0
- package/data/craftbook-templates/su/subtitle-generator/logo.webp +0 -0
- package/data/craftbook-templates/su/subtitle-generator/manifest.json +1 -0
- package/data/craftbook-templates/su/summarize-long/art.json +13 -0
- package/data/craftbook-templates/su/summarize-long/logo.webp +0 -0
- package/data/craftbook-templates/su/summarize-long/manifest.json +1 -0
- package/data/craftbook-templates/su/survey-analysis/art.json +13 -0
- package/data/craftbook-templates/su/survey-analysis/logo.webp +0 -0
- package/data/craftbook-templates/su/survey-analysis/manifest.json +1 -0
- package/data/craftbook-templates/sv/svg-animation/art.json +13 -0
- package/data/craftbook-templates/sv/svg-animation/logo.webp +0 -0
- package/data/craftbook-templates/sv/svg-animation/manifest.json +1 -0
- package/data/craftbook-templates/ta/tailor-resume/art.json +13 -0
- package/data/craftbook-templates/ta/tailor-resume/logo.webp +0 -0
- package/data/craftbook-templates/ta/tailor-resume/manifest.json +1 -0
- package/data/craftbook-templates/te/technical-documentation/art.json +13 -0
- package/data/craftbook-templates/te/technical-documentation/logo.webp +0 -0
- package/data/craftbook-templates/te/technical-documentation/manifest.json +1 -0
- package/data/craftbook-templates/te/test-coverage-review/art.json +12 -0
- package/data/craftbook-templates/te/test-coverage-review/logo.webp +0 -0
- package/data/craftbook-templates/te/test-coverage-review/manifest.json +1 -0
- package/data/craftbook-templates/te/test-suite-backfill/art.json +12 -0
- package/data/craftbook-templates/te/test-suite-backfill/logo.webp +0 -0
- package/data/craftbook-templates/te/test-suite-backfill/manifest.json +1 -0
- package/data/craftbook-templates/th/thank-you-batch/art.json +13 -0
- package/data/craftbook-templates/th/thank-you-batch/logo.webp +0 -0
- package/data/craftbook-templates/th/thank-you-batch/manifest.json +1 -0
- package/data/craftbook-templates/th/thank-you-sweep/art.json +13 -0
- package/data/craftbook-templates/th/thank-you-sweep/logo.webp +0 -0
- package/data/craftbook-templates/th/thank-you-sweep/manifest.json +1 -0
- package/data/craftbook-templates/th/threat-model/art.json +13 -0
- package/data/craftbook-templates/th/threat-model/logo.webp +0 -0
- package/data/craftbook-templates/th/threat-model/manifest.json +1 -0
- package/data/craftbook-templates/th/thumbnail-generator/art.json +13 -0
- package/data/craftbook-templates/th/thumbnail-generator/logo.webp +0 -0
- package/data/craftbook-templates/th/thumbnail-generator/manifest.json +1 -0
- package/data/craftbook-templates/ti/tileset-batch/art.json +13 -0
- package/data/craftbook-templates/ti/tileset-batch/logo.webp +0 -0
- package/data/craftbook-templates/ti/tileset-batch/manifest.json +1 -0
- package/data/craftbook-templates/to/tone-rewrite/art.json +13 -0
- package/data/craftbook-templates/to/tone-rewrite/logo.webp +0 -0
- package/data/craftbook-templates/to/tone-rewrite/manifest.json +1 -0
- package/data/craftbook-templates/to/topic-explainer/art.json +13 -0
- package/data/craftbook-templates/to/topic-explainer/logo.webp +0 -0
- package/data/craftbook-templates/to/topic-explainer/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/art.json +13 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/logo.webp +0 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-audio/art.json +13 -0
- package/data/craftbook-templates/tr/transcribe-audio/logo.webp +0 -0
- package/data/craftbook-templates/tr/transcribe-audio/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-index/art.json +13 -0
- package/data/craftbook-templates/tr/transcribe-index/logo.webp +0 -0
- package/data/craftbook-templates/tr/transcribe-index/manifest.json +1 -0
- package/data/craftbook-templates/ty/type-safety-pass/art.json +12 -0
- package/data/craftbook-templates/ty/type-safety-pass/logo.webp +0 -0
- package/data/craftbook-templates/ty/type-safety-pass/manifest.json +1 -0
- package/data/craftbook-templates/ve/version-bump/art.json +13 -0
- package/data/craftbook-templates/ve/version-bump/logo.webp +0 -0
- package/data/craftbook-templates/ve/version-bump/manifest.json +1 -0
- package/data/craftbook-templates/vi/video-storyboard/art.json +13 -0
- package/data/craftbook-templates/vi/video-storyboard/logo.webp +0 -0
- package/data/craftbook-templates/vi/video-storyboard/manifest.json +1 -0
- package/data/craftbook-templates/vi/visit-prep/art.json +13 -0
- package/data/craftbook-templates/vi/visit-prep/logo.webp +0 -0
- package/data/craftbook-templates/vi/visit-prep/manifest.json +1 -0
- package/data/craftbook-templates/vo/voiceover-script/art.json +13 -0
- package/data/craftbook-templates/vo/voiceover-script/logo.webp +0 -0
- package/data/craftbook-templates/vo/voiceover-script/manifest.json +1 -0
- package/data/craftbook-templates/we/weak-spot-drill/art.json +13 -0
- package/data/craftbook-templates/we/weak-spot-drill/logo.webp +0 -0
- package/data/craftbook-templates/we/weak-spot-drill/manifest.json +1 -0
- package/data/craftbook-templates/we/web-app-crud/art.json +13 -0
- package/data/craftbook-templates/we/web-app-crud/logo.webp +0 -0
- package/data/craftbook-templates/we/web-app-crud/manifest.json +1 -0
- package/data/craftbook-templates/we/web-component/art.json +13 -0
- package/data/craftbook-templates/we/web-component/logo.webp +0 -0
- package/data/craftbook-templates/we/web-component/manifest.json +1 -0
- package/data/craftbook-templates/we/webhook-handler/art.json +13 -0
- package/data/craftbook-templates/we/webhook-handler/logo.webp +0 -0
- package/data/craftbook-templates/we/webhook-handler/manifest.json +1 -0
- package/data/craftbook-templates/we/week-plan/art.json +13 -0
- package/data/craftbook-templates/we/week-plan/logo.webp +0 -0
- package/data/craftbook-templates/we/week-plan/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-menu-plan/art.json +13 -0
- package/data/craftbook-templates/we/weekly-menu-plan/logo.webp +0 -0
- package/data/craftbook-templates/we/weekly-menu-plan/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/art.json +13 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/logo.webp +0 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-review/art.json +13 -0
- package/data/craftbook-templates/we/weekly-review/logo.webp +0 -0
- package/data/craftbook-templates/we/weekly-review/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-walkthrough/art.json +13 -0
- package/data/craftbook-templates/we/weekly-walkthrough/logo.webp +0 -0
- package/data/craftbook-templates/we/weekly-walkthrough/manifest.json +1 -0
- package/data/craftbook-templates/wh/whitepaper/art.json +13 -0
- package/data/craftbook-templates/wh/whitepaper/logo.webp +0 -0
- package/data/craftbook-templates/wh/whitepaper/manifest.json +1 -0
- package/data/craftbook-templates/ye/year-in-review/art.json +13 -0
- package/data/craftbook-templates/ye/year-in-review/logo.webp +0 -0
- package/data/craftbook-templates/ye/year-in-review/manifest.json +1 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/art.json +13 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/logo.webp +0 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/manifest.json +1 -0
- package/data/gezel-templates/ch/chess-player/manifest.json +20 -0
- package/data/gezel-templates/ch/chess-player/versions/1.0.0/about.md +21 -0
- package/data/gezel-templates/ch/chess-player/versions/1.0.0/manifest.json +10 -0
- package/data/gezel-templates/go/go-player/manifest.json +22 -0
- package/data/gezel-templates/go/go-player/versions/1.0.0/about.md +22 -0
- package/data/gezel-templates/go/go-player/versions/1.0.0/manifest.json +10 -0
- package/data/gezel-templates/index.json +1 -1
- package/data/project-types/ch/chess/manifest.json +20 -0
- package/data/project-types/ch/chess/versions/1.0.0/about.md +9 -0
- package/data/project-types/ch/chess/versions/1.0.0/game.json +127 -0
- package/data/project-types/ch/chess/versions/1.0.0/manifest.json +180 -0
- package/data/project-types/ch/chess/versions/1.0.0/mission.md +8 -0
- package/data/project-types/ch/chess/versions/1.0.0/pages/board/index.html +574 -0
- package/data/project-types/go/go/manifest.json +22 -0
- package/data/project-types/go/go/versions/1.0.0/about.md +9 -0
- package/data/project-types/go/go/versions/1.0.0/game.json +103 -0
- package/data/project-types/go/go/versions/1.0.0/manifest.json +166 -0
- package/data/project-types/go/go/versions/1.0.0/mission.md +8 -0
- package/data/project-types/go/go/versions/1.0.0/pages/board/index.html +637 -0
- package/data/project-types/index.json +1 -1
- package/package.json +2 -1
- package/schemas/chat-model-version.schema.json +27 -0
- package/schemas/craftbook-doc.schema.json +12 -0
- package/schemas/craftbook-template-version.schema.json +12 -0
- package/schemas/craftbook-test.schema.json +12 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
A standing chess table. You play white on the board in the **Output** tab;
|
|
2
|
+
your Schaakspeler plays black — reading the exact position, replying on the
|
|
3
|
+
board, and keeping up a light line of {{personality}} table talk.
|
|
4
|
+
|
|
5
|
+
The Schaakspeler plays as an **{{playStyle}}**: opponents keep plans and tactics
|
|
6
|
+
to themselves, while instructors offer one small teaching observation at a
|
|
7
|
+
time. Click a white piece, then a highlighted square. The board enforces the
|
|
8
|
+
whole game — check, castling, en passant, promotion, mate, stalemate, repetition,
|
|
9
|
+
and the fifty-move rule — so neither player has to referee the other.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"squares": "rnbqkbnrpppppppp................................PPPPPPPPRNBQKBNR",
|
|
4
|
+
"turn": "user",
|
|
5
|
+
"status": "playing",
|
|
6
|
+
"castling": "KQkq",
|
|
7
|
+
"enPassant": null,
|
|
8
|
+
"halfmoveClock": 0,
|
|
9
|
+
"fullmoveNumber": 1,
|
|
10
|
+
"positionHistory": [
|
|
11
|
+
"rnbqkbnrpppppppp................................PPPPPPPPRNBQKBNR|user|KQkq|-"
|
|
12
|
+
],
|
|
13
|
+
"legalMoves": [
|
|
14
|
+
{
|
|
15
|
+
"from": "a2",
|
|
16
|
+
"to": "a3",
|
|
17
|
+
"capture": false
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"from": "a2",
|
|
21
|
+
"to": "a4",
|
|
22
|
+
"capture": false,
|
|
23
|
+
"doublePawn": true
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"from": "b2",
|
|
27
|
+
"to": "b3",
|
|
28
|
+
"capture": false
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"from": "b2",
|
|
32
|
+
"to": "b4",
|
|
33
|
+
"capture": false,
|
|
34
|
+
"doublePawn": true
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"from": "c2",
|
|
38
|
+
"to": "c3",
|
|
39
|
+
"capture": false
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"from": "c2",
|
|
43
|
+
"to": "c4",
|
|
44
|
+
"capture": false,
|
|
45
|
+
"doublePawn": true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"from": "d2",
|
|
49
|
+
"to": "d3",
|
|
50
|
+
"capture": false
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"from": "d2",
|
|
54
|
+
"to": "d4",
|
|
55
|
+
"capture": false,
|
|
56
|
+
"doublePawn": true
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"from": "e2",
|
|
60
|
+
"to": "e3",
|
|
61
|
+
"capture": false
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"from": "e2",
|
|
65
|
+
"to": "e4",
|
|
66
|
+
"capture": false,
|
|
67
|
+
"doublePawn": true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"from": "f2",
|
|
71
|
+
"to": "f3",
|
|
72
|
+
"capture": false
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"from": "f2",
|
|
76
|
+
"to": "f4",
|
|
77
|
+
"capture": false,
|
|
78
|
+
"doublePawn": true
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"from": "g2",
|
|
82
|
+
"to": "g3",
|
|
83
|
+
"capture": false
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"from": "g2",
|
|
87
|
+
"to": "g4",
|
|
88
|
+
"capture": false,
|
|
89
|
+
"doublePawn": true
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"from": "h2",
|
|
93
|
+
"to": "h3",
|
|
94
|
+
"capture": false
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"from": "h2",
|
|
98
|
+
"to": "h4",
|
|
99
|
+
"capture": false,
|
|
100
|
+
"doublePawn": true
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"from": "b1",
|
|
104
|
+
"to": "a3",
|
|
105
|
+
"capture": false
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"from": "b1",
|
|
109
|
+
"to": "c3",
|
|
110
|
+
"capture": false
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"from": "g1",
|
|
114
|
+
"to": "f3",
|
|
115
|
+
"capture": false
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"from": "g1",
|
|
119
|
+
"to": "h3",
|
|
120
|
+
"capture": false
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"moveLog": [],
|
|
124
|
+
"lastMove": null,
|
|
125
|
+
"lastMoveThought": "",
|
|
126
|
+
"updatedAt": "2026-07-28T00:00:00.000Z"
|
|
127
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"releasedAt": "2026-07-28T00:00:00Z",
|
|
5
|
+
"meesterManaged": false,
|
|
6
|
+
"mode": "solo",
|
|
7
|
+
"leadLabel": "Opponent",
|
|
8
|
+
"leanProfile": true,
|
|
9
|
+
"tabVisibility": {
|
|
10
|
+
"overview": false,
|
|
11
|
+
"tasks": false,
|
|
12
|
+
"approvals": false,
|
|
13
|
+
"workspace": false,
|
|
14
|
+
"artifacts": false,
|
|
15
|
+
"map": false
|
|
16
|
+
},
|
|
17
|
+
"params": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"properties": {
|
|
20
|
+
"personality": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"title": "Table-talk style",
|
|
23
|
+
"description": "How your opponent talks between moves.",
|
|
24
|
+
"enum": [
|
|
25
|
+
"peppy",
|
|
26
|
+
"cheeky",
|
|
27
|
+
"zen",
|
|
28
|
+
"gracious"
|
|
29
|
+
],
|
|
30
|
+
"default": "peppy"
|
|
31
|
+
},
|
|
32
|
+
"playStyle": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"title": "How should the Schaakspeler play?",
|
|
35
|
+
"description": "An opponent keeps their strategy to themselves; an instructor offers light teaching notes.",
|
|
36
|
+
"enum": [
|
|
37
|
+
"Opponent",
|
|
38
|
+
"Instructor"
|
|
39
|
+
],
|
|
40
|
+
"default": "Opponent"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"required": [
|
|
44
|
+
"personality",
|
|
45
|
+
"playStyle"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"nameTemplate": "Chess vs the Schaakspeler",
|
|
49
|
+
"aboutTemplate": "about.md",
|
|
50
|
+
"missionTemplate": "mission.md",
|
|
51
|
+
"gezels": [
|
|
52
|
+
{
|
|
53
|
+
"templateId": "chess-player",
|
|
54
|
+
"voorman": true
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"scripts": {
|
|
58
|
+
"game-store": "import { type InferredInput, defineScript, gezel } from '@bendyline/gezel-sdk';\n\nexport const meta = defineScript({\n name: 'game-store',\n description:\n \"Read and update the chess game (game.json). Call action:'board' to see the position and every legal move; action:'ai_move' to play your move (from/to, optional promotion and moveThought); action:'state' for a light summary; action:'new_game' to reset. Illegal moves fail with the engine's legal-move list.\",\n inputs: {\n action: {\n type: 'string',\n description: \"One of 'state', 'board', 'user_move', 'ai_move', or 'new_game'.\",\n required: true,\n },\n from: { type: 'string', description: \"Origin square, e.g. 'e7'.\" },\n to: { type: 'string', description: \"Destination square, e.g. 'e5'.\" },\n promotion: {\n type: 'string',\n description: \"Promotion piece: 'q', 'r', 'b', or 'n'. Defaults to queen.\",\n },\n moveThought: {\n type: 'string',\n description: 'A short line of table talk to show on the board (max 140 chars).',\n },\n },\n outputs: {\n board: { type: 'string', description: 'ASCII board with coordinates.' },\n turn: { type: 'string', description: \"Whose move: 'user' (white) or 'ai' (black).\" },\n status: {\n type: 'string',\n description: 'playing, user_won, ai_won, or draw.',\n },\n lastMove: { type: 'string', description: \"The move just played, e.g. 'e2-e4'.\" },\n legalMoves: { type: 'string', description: 'Rendered legal moves for the side to move.' },\n summary: { type: 'string', description: 'Human-readable game summary.' },\n },\n requires: ['workspace.read', 'workspace.write'],\n} as const);\n\nconst input = gezel.input as InferredInput<typeof meta>;\n\n// ── chess-rules-start ──\n// Pure, annotation-free chess engine. Squares are a 64-character row-major\n// string: y0 is rank 8, x0 is file a. Uppercase pieces are white (the user);\n// lowercase pieces are black (the AI).\n\nvar FILES = 'abcdefgh';\nvar PROMOTIONS = ['q', 'r', 'b', 'n'];\n\nfunction sqName(x, y) {\n return FILES[x] + String(8 - y);\n}\n\nfunction parseSq(name) {\n if (typeof name !== 'string' || name.length !== 2) return null;\n var x = FILES.indexOf(name[0].toLowerCase());\n var rank = Number(name[1]);\n if (x < 0 || !(rank >= 1 && rank <= 8)) return null;\n return { x: x, y: 8 - rank };\n}\n\nfunction inBounds(x, y) {\n return x >= 0 && x < 8 && y >= 0 && y < 8;\n}\n\nfunction pieceAt(squares, x, y) {\n return squares[y * 8 + x];\n}\n\nfunction withPiece(squares, x, y, ch) {\n var i = y * 8 + x;\n return squares.slice(0, i) + ch + squares.slice(i + 1);\n}\n\nfunction sideOf(ch) {\n if (!ch || ch === '.') return null;\n return ch === ch.toUpperCase() ? 'user' : 'ai';\n}\n\nfunction otherSide(side) {\n return side === 'user' ? 'ai' : 'user';\n}\n\nfunction kindOf(ch) {\n return ch && ch !== '.' ? ch.toLowerCase() : '';\n}\n\nfunction buildInitial() {\n return 'rnbqkbnr' + 'pppppppp' + '.'.repeat(32) + 'PPPPPPPP' + 'RNBQKBNR';\n}\n\nfunction findKing(squares, side) {\n var needle = side === 'user' ? 'K' : 'k';\n var i = squares.indexOf(needle);\n return i < 0 ? null : { x: i % 8, y: Math.floor(i / 8) };\n}\n\nfunction isAttacked(squares, x, y, bySide) {\n var pawn = bySide === 'user' ? 'P' : 'p';\n var pawnY = y - (bySide === 'user' ? -1 : 1);\n for (var pdx of [-1, 1]) {\n var px = x - pdx;\n if (inBounds(px, pawnY) && pieceAt(squares, px, pawnY) === pawn) return true;\n }\n\n var knight = bySide === 'user' ? 'N' : 'n';\n var knightSteps = [\n [-2, -1],\n [-2, 1],\n [-1, -2],\n [-1, 2],\n [1, -2],\n [1, 2],\n [2, -1],\n [2, 1],\n ];\n for (var n of knightSteps) {\n if (inBounds(x + n[0], y + n[1]) && pieceAt(squares, x + n[0], y + n[1]) === knight) {\n return true;\n }\n }\n\n var rays = [\n [-1, 0, 'rq'],\n [1, 0, 'rq'],\n [0, -1, 'rq'],\n [0, 1, 'rq'],\n [-1, -1, 'bq'],\n [-1, 1, 'bq'],\n [1, -1, 'bq'],\n [1, 1, 'bq'],\n ];\n for (var ray of rays) {\n var rx = x + ray[0];\n var ry = y + ray[1];\n while (inBounds(rx, ry)) {\n var seen = pieceAt(squares, rx, ry);\n if (seen !== '.') {\n if (sideOf(seen) === bySide && ray[2].indexOf(kindOf(seen)) >= 0) return true;\n break;\n }\n rx += ray[0];\n ry += ray[1];\n }\n }\n\n var king = bySide === 'user' ? 'K' : 'k';\n for (var ky = -1; ky <= 1; ky += 1) {\n for (var kx = -1; kx <= 1; kx += 1) {\n if (\n (kx !== 0 || ky !== 0) &&\n inBounds(x + kx, y + ky) &&\n pieceAt(squares, x + kx, y + ky) === king\n ) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction inCheck(squares, side) {\n var king = findKing(squares, side);\n return !king || isAttacked(squares, king.x, king.y, otherSide(side));\n}\n\nfunction pushMove(out, fromX, fromY, toX, toY, extra) {\n out.push(\n Object.assign(\n {\n from: sqName(fromX, fromY),\n to: sqName(toX, toY),\n capture: false,\n },\n extra || {},\n ),\n );\n}\n\nfunction pseudoMovesFor(squares, side, castling, enPassant) {\n var out = [];\n for (var y = 0; y < 8; y += 1) {\n for (var x = 0; x < 8; x += 1) {\n var ch = pieceAt(squares, x, y);\n if (sideOf(ch) !== side) continue;\n var kind = kindOf(ch);\n\n if (kind === 'p') {\n var dir = side === 'user' ? -1 : 1;\n var startY = side === 'user' ? 6 : 1;\n var promotionY = side === 'user' ? 0 : 7;\n var oneY = y + dir;\n if (inBounds(x, oneY) && pieceAt(squares, x, oneY) === '.') {\n if (oneY === promotionY) {\n for (var promotion of PROMOTIONS) {\n pushMove(out, x, y, x, oneY, { promotion: promotion });\n }\n } else {\n pushMove(out, x, y, x, oneY);\n var twoY = y + dir * 2;\n if (y === startY && pieceAt(squares, x, twoY) === '.') {\n pushMove(out, x, y, x, twoY, { doublePawn: true });\n }\n }\n }\n for (var dx of [-1, 1]) {\n var cx = x + dx;\n var cy = y + dir;\n if (!inBounds(cx, cy)) continue;\n var target = pieceAt(squares, cx, cy);\n var targetName = sqName(cx, cy);\n var isEp = targetName === enPassant && target === '.';\n if ((target !== '.' && sideOf(target) === otherSide(side)) || isEp) {\n if (cy === promotionY) {\n for (var capturePromotion of PROMOTIONS) {\n pushMove(out, x, y, cx, cy, {\n capture: true,\n promotion: capturePromotion,\n enPassant: isEp,\n });\n }\n } else {\n pushMove(out, x, y, cx, cy, { capture: true, enPassant: isEp });\n }\n }\n }\n continue;\n }\n\n if (kind === 'n') {\n var jumps = [\n [-2, -1],\n [-2, 1],\n [-1, -2],\n [-1, 2],\n [1, -2],\n [1, 2],\n [2, -1],\n [2, 1],\n ];\n for (var jump of jumps) {\n var nx = x + jump[0];\n var ny = y + jump[1];\n if (!inBounds(nx, ny) || sideOf(pieceAt(squares, nx, ny)) === side) continue;\n pushMove(out, x, y, nx, ny, { capture: pieceAt(squares, nx, ny) !== '.' });\n }\n continue;\n }\n\n if (kind === 'b' || kind === 'r' || kind === 'q') {\n var dirs = [];\n if (kind === 'b' || kind === 'q') dirs.push([-1, -1], [-1, 1], [1, -1], [1, 1]);\n if (kind === 'r' || kind === 'q') dirs.push([-1, 0], [1, 0], [0, -1], [0, 1]);\n for (var d of dirs) {\n var sx = x + d[0];\n var sy = y + d[1];\n while (inBounds(sx, sy)) {\n var occupant = pieceAt(squares, sx, sy);\n if (sideOf(occupant) === side) break;\n pushMove(out, x, y, sx, sy, { capture: occupant !== '.' });\n if (occupant !== '.') break;\n sx += d[0];\n sy += d[1];\n }\n }\n continue;\n }\n\n if (kind === 'k') {\n for (var kdy = -1; kdy <= 1; kdy += 1) {\n for (var kdx = -1; kdx <= 1; kdx += 1) {\n if (kdx === 0 && kdy === 0) continue;\n var ktx = x + kdx;\n var kty = y + kdy;\n if (!inBounds(ktx, kty) || sideOf(pieceAt(squares, ktx, kty)) === side) continue;\n pushMove(out, x, y, ktx, kty, { capture: pieceAt(squares, ktx, kty) !== '.' });\n }\n }\n\n var homeY = side === 'user' ? 7 : 0;\n var kingChar = side === 'user' ? 'K' : 'k';\n var rookChar = side === 'user' ? 'R' : 'r';\n var enemy = otherSide(side);\n if (x === 4 && y === homeY && ch === kingChar && !isAttacked(squares, 4, homeY, enemy)) {\n var kingRight = side === 'user' ? castling.indexOf('K') >= 0 : castling.indexOf('k') >= 0;\n if (\n kingRight &&\n pieceAt(squares, 7, homeY) === rookChar &&\n pieceAt(squares, 5, homeY) === '.' &&\n pieceAt(squares, 6, homeY) === '.' &&\n !isAttacked(squares, 5, homeY, enemy) &&\n !isAttacked(squares, 6, homeY, enemy)\n ) {\n pushMove(out, x, y, 6, homeY, { castle: 'king' });\n }\n var queenRight = side === 'user' ? castling.indexOf('Q') >= 0 : castling.indexOf('q') >= 0;\n if (\n queenRight &&\n pieceAt(squares, 0, homeY) === rookChar &&\n pieceAt(squares, 1, homeY) === '.' &&\n pieceAt(squares, 2, homeY) === '.' &&\n pieceAt(squares, 3, homeY) === '.' &&\n !isAttacked(squares, 3, homeY, enemy) &&\n !isAttacked(squares, 2, homeY, enemy)\n ) {\n pushMove(out, x, y, 2, homeY, { castle: 'queen' });\n }\n }\n }\n }\n }\n return out;\n}\n\nfunction applyUnchecked(squares, move, side) {\n var from = parseSq(move.from);\n var to = parseSq(move.to);\n var ch = pieceAt(squares, from.x, from.y);\n var next = withPiece(squares, from.x, from.y, '.');\n if (move.enPassant) {\n next = withPiece(next, to.x, from.y, '.');\n }\n if (move.castle === 'king') {\n next = withPiece(next, 7, from.y, '.');\n next = withPiece(next, 5, from.y, side === 'user' ? 'R' : 'r');\n } else if (move.castle === 'queen') {\n next = withPiece(next, 0, from.y, '.');\n next = withPiece(next, 3, from.y, side === 'user' ? 'R' : 'r');\n }\n if (move.promotion) ch = side === 'user' ? move.promotion.toUpperCase() : move.promotion;\n return withPiece(next, to.x, to.y, ch);\n}\n\nfunction legalMovesFor(squares, side, castling, enPassant) {\n return pseudoMovesFor(squares, side, castling || '', enPassant || null).filter(function (move) {\n return !inCheck(applyUnchecked(squares, move, side), side);\n });\n}\n\nfunction nextCastling(castling, squares, move) {\n var rights = castling || '';\n var ch = pieceAt(squares, parseSq(move.from).x, parseSq(move.from).y);\n if (ch === 'K') rights = rights.replace(/K|Q/g, '');\n if (ch === 'k') rights = rights.replace(/k|q/g, '');\n if (move.from === 'a1' || move.to === 'a1') rights = rights.replace('Q', '');\n if (move.from === 'h1' || move.to === 'h1') rights = rights.replace('K', '');\n if (move.from === 'a8' || move.to === 'a8') rights = rights.replace('q', '');\n if (move.from === 'h8' || move.to === 'h8') rights = rights.replace('k', '');\n return rights;\n}\n\nfunction nextEnPassant(move, side) {\n if (!move.doublePawn) return null;\n var from = parseSq(move.from);\n var to = parseSq(move.to);\n return sqName(from.x, (from.y + to.y) / 2);\n}\n\nfunction isInsufficientMaterial(squares) {\n var pieces = [];\n for (var i = 0; i < squares.length; i += 1) {\n var ch = squares[i];\n if (ch !== '.' && kindOf(ch) !== 'k') pieces.push({ ch: ch, x: i % 8, y: Math.floor(i / 8) });\n }\n if (pieces.length === 0) return true;\n if (pieces.length === 1 && (kindOf(pieces[0].ch) === 'b' || kindOf(pieces[0].ch) === 'n')) {\n return true;\n }\n if (\n pieces.length > 0 &&\n pieces.every(function (p) {\n return kindOf(p.ch) === 'b';\n })\n ) {\n var color = (pieces[0].x + pieces[0].y) % 2;\n return pieces.every(function (p) {\n return (p.x + p.y) % 2 === color;\n });\n }\n return false;\n}\n\nfunction positionKey(squares, side, castling, enPassant) {\n var effectiveEnPassant =\n enPassant &&\n legalMovesFor(squares, side, castling, enPassant).some(function (move) {\n return move.enPassant;\n })\n ? enPassant\n : '-';\n return [squares, side, castling || '-', effectiveEnPassant].join('|');\n}\n\nfunction statusAfter(squares, sideToMove, castling, enPassant) {\n if (isInsufficientMaterial(squares)) return 'draw';\n var moves = legalMovesFor(squares, sideToMove, castling, enPassant);\n if (moves.length > 0) return 'playing';\n if (!inCheck(squares, sideToMove)) return 'draw';\n return sideToMove === 'user' ? 'ai_won' : 'user_won';\n}\n\nfunction describeMove(move) {\n if (move.castle === 'king') return move.from + '-' + move.to + ' (O-O)';\n if (move.castle === 'queen') return move.from + '-' + move.to + ' (O-O-O)';\n var text = move.from + (move.capture ? 'x' : '-') + move.to;\n if (move.promotion) text += '=' + move.promotion.toUpperCase();\n if (move.enPassant) text += ' e.p.';\n return text;\n}\n\nfunction renderAscii(squares) {\n var lines = [' a b c d e f g h'];\n for (var y = 0; y < 8; y += 1) {\n var row = String(8 - y);\n for (var x = 0; x < 8; x += 1) row += ' ' + pieceAt(squares, x, y);\n lines.push(row + ' ' + String(8 - y));\n }\n lines.push(' a b c d e f g h');\n lines.push('Uppercase = white (user). Lowercase = black (you).');\n return lines.join('\\n');\n}\n// ── chess-rules-end ──\n\nconst STATE_FILE = 'game.json';\nconst SIDE_NAMES = { user: 'white', ai: 'black' };\n\ninterface ChessMove {\n from: string;\n to: string;\n capture: boolean;\n promotion?: string;\n doublePawn?: boolean;\n enPassant?: boolean;\n castle?: string;\n}\n\ninterface GameState {\n version: number;\n squares: string;\n turn: 'user' | 'ai';\n status: 'playing' | 'user_won' | 'ai_won' | 'draw';\n castling: string;\n enPassant: string | null;\n halfmoveClock: number;\n fullmoveNumber: number;\n positionHistory: string[];\n legalMoves: ChessMove[];\n moveLog: Array<{\n by: 'user' | 'ai';\n from: string;\n to: string;\n promotion?: string;\n notation: string;\n at: string;\n moveThought?: string;\n }>;\n lastMove: {\n by: 'user' | 'ai';\n from: string;\n to: string;\n promotion?: string;\n notation: string;\n } | null;\n lastMoveThought: string;\n updatedAt: string;\n}\n\nfunction freshState(): GameState {\n const squares = buildInitial();\n const castling = 'KQkq';\n return {\n version: 1,\n squares,\n turn: 'user',\n status: 'playing',\n castling,\n enPassant: null,\n halfmoveClock: 0,\n fullmoveNumber: 1,\n positionHistory: [positionKey(squares, 'user', castling, null)],\n legalMoves: legalMovesFor(squares, 'user', castling, null),\n moveLog: [],\n lastMove: null,\n lastMoveThought: '',\n updatedAt: new Date().toISOString(),\n };\n}\n\nasync function load(): Promise<GameState> {\n let raw: string;\n try {\n raw = await gezel.fs.read(STATE_FILE);\n } catch {\n return freshState();\n }\n const parsed = JSON.parse(raw) as Partial<GameState>;\n if (typeof parsed.squares !== 'string' || parsed.squares.length !== 64) {\n throw new Error(`${STATE_FILE} is corrupt; call action:'new_game' to reset.`);\n }\n return {\n ...freshState(),\n ...parsed,\n castling: typeof parsed.castling === 'string' ? parsed.castling : '',\n enPassant: parsed.enPassant ?? null,\n } as GameState;\n}\n\nasync function persist(state: GameState): Promise<GameState> {\n state.legalMoves =\n state.status === 'playing'\n ? legalMovesFor(state.squares, state.turn, state.castling, state.enPassant)\n : [];\n state.updatedAt = new Date().toISOString();\n await gezel.fs.write(STATE_FILE, `${JSON.stringify(state, null, 2)}\\n`);\n return state;\n}\n\nfunction renderLegal(state: GameState): string {\n if (state.status !== 'playing') return '(game over)';\n return state.legalMoves.map(describeMove).join(', ') || '(none)';\n}\n\nfunction summarize(state: GameState): string {\n if (state.status === 'user_won') return 'Checkmate — the user (white) won.';\n if (state.status === 'ai_won') return 'Checkmate — you (black) won.';\n if (state.status === 'draw') return 'Game over — draw.';\n const check = inCheck(state.squares, state.turn) ? ' The king is in check.' : '';\n return `Move ${state.fullmoveNumber}: ${SIDE_NAMES[state.turn]} (${state.turn}) to move.${check}`;\n}\n\nfunction applyTurn(\n state: GameState,\n by: 'user' | 'ai',\n moveThought?: string,\n): { state: GameState; move: ChessMove } {\n if (state.status !== 'playing') {\n throw new Error(`The game is over (${state.status}). Call action:'new_game' to start another.`);\n }\n if (state.turn !== by) {\n throw new Error(by === 'ai' ? \"It's not your turn yet.\" : 'The opponent is still to move.');\n }\n if (!input.from || !input.to) throw new Error(\"Pass 'from' and 'to' squares.\");\n const wantedPromotion = (input.promotion || 'q').toLowerCase();\n const candidates = state.legalMoves.filter(\n (move) =>\n move.from === input.from!.toLowerCase() &&\n move.to === input.to!.toLowerCase(),\n );\n const move =\n candidates.find((candidate) => (candidate.promotion || 'q') === wantedPromotion) ??\n candidates.find((candidate) => !candidate.promotion);\n if (!move) {\n throw new Error(\n `Illegal move ${input.from}-${input.to}. Legal moves for ${SIDE_NAMES[by]}: ${renderLegal(state)}`,\n );\n }\n\n const movingPiece = pieceAt(\n state.squares,\n parseSq(move.from)!.x,\n parseSq(move.from)!.y,\n );\n const oldSquares = state.squares;\n state.castling = nextCastling(state.castling, oldSquares, move);\n state.squares = applyUnchecked(oldSquares, move, by);\n state.enPassant = nextEnPassant(move, by);\n state.halfmoveClock =\n kindOf(movingPiece) === 'p' || move.capture ? 0 : state.halfmoveClock + 1;\n if (by === 'ai') state.fullmoveNumber += 1;\n state.turn = otherSide(by) as 'user' | 'ai';\n const key = positionKey(state.squares, state.turn, state.castling, state.enPassant);\n state.positionHistory.push(key);\n state.status = statusAfter(\n state.squares,\n state.turn,\n state.castling,\n state.enPassant,\n ) as GameState['status'];\n if (\n state.status === 'playing' &&\n (state.halfmoveClock >= 100 ||\n state.positionHistory.filter((candidate) => candidate === key).length >= 3)\n ) {\n state.status = 'draw';\n }\n\n const notation = describeMove(move);\n const entry = {\n by,\n from: move.from,\n to: move.to,\n ...(move.promotion ? { promotion: move.promotion } : {}),\n notation,\n at: new Date().toISOString(),\n ...(moveThought ? { moveThought } : {}),\n };\n state.moveLog.push(entry);\n state.lastMove = {\n by,\n from: move.from,\n to: move.to,\n ...(move.promotion ? { promotion: move.promotion } : {}),\n notation,\n };\n if (by === 'ai' && moveThought) state.lastMoveThought = moveThought;\n return { state, move };\n}\n\nlet state = await load();\nlet lastMoveText = state.lastMove?.notation ?? '(none)';\n\nif (input.action === 'new_game') {\n state = await persist(freshState());\n lastMoveText = '(none)';\n} else if (input.action === 'user_move' || input.action === 'ai_move') {\n const by = input.action === 'user_move' ? 'user' : 'ai';\n const moveThought = input.moveThought?.trim().slice(0, 140);\n const applied = applyTurn(state, by, moveThought);\n state = await persist(applied.state);\n lastMoveText = describeMove(applied.move);\n} else if (input.action !== 'state' && input.action !== 'board') {\n throw new Error(`Unknown action '${input.action}'. Use state, board, user_move, ai_move, or new_game.`);\n}\n\ngezel.output({\n board:\n `${renderAscii(state.squares)}\\nTurn: ${SIDE_NAMES[state.turn]} (${state.turn}).` +\n `${inCheck(state.squares, state.turn) && state.status === 'playing' ? ' CHECK.' : ''}\\n` +\n `Legal moves: ${renderLegal(state)}`,\n turn: state.turn,\n status: state.status,\n lastMove: lastMoveText,\n legalMoves: renderLegal(state),\n summary: summarize(state),\n});\n"
|
|
59
|
+
},
|
|
60
|
+
"tools": [
|
|
61
|
+
{
|
|
62
|
+
"name": "get_board",
|
|
63
|
+
"description": "See the authoritative chess position, whose turn it is, and every legal move.",
|
|
64
|
+
"script": "game-store",
|
|
65
|
+
"inputs": {
|
|
66
|
+
"type": "object",
|
|
67
|
+
"properties": {}
|
|
68
|
+
},
|
|
69
|
+
"bind": {
|
|
70
|
+
"action": "board"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "make_move",
|
|
75
|
+
"description": "Play your black move. Pass from/to; for promotion optionally choose 'q', 'r', 'b', or 'n'. Include a short moveThought for the board.",
|
|
76
|
+
"script": "game-store",
|
|
77
|
+
"inputs": {
|
|
78
|
+
"type": "object",
|
|
79
|
+
"properties": {
|
|
80
|
+
"from": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"description": "Origin square, e.g. 'e7'."
|
|
83
|
+
},
|
|
84
|
+
"to": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "Destination square, e.g. 'e5'."
|
|
87
|
+
},
|
|
88
|
+
"promotion": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"enum": [
|
|
91
|
+
"q",
|
|
92
|
+
"r",
|
|
93
|
+
"b",
|
|
94
|
+
"n"
|
|
95
|
+
],
|
|
96
|
+
"description": "Promotion piece. Defaults to queen."
|
|
97
|
+
},
|
|
98
|
+
"moveThought": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"description": "A short line of table talk (max 140 chars)."
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"required": [
|
|
104
|
+
"from",
|
|
105
|
+
"to"
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
"bind": {
|
|
109
|
+
"action": "ai_move"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "user_move",
|
|
114
|
+
"description": "The user's white move, played from the chess board.",
|
|
115
|
+
"script": "game-store",
|
|
116
|
+
"inputs": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"properties": {
|
|
119
|
+
"from": {
|
|
120
|
+
"type": "string"
|
|
121
|
+
},
|
|
122
|
+
"to": {
|
|
123
|
+
"type": "string"
|
|
124
|
+
},
|
|
125
|
+
"promotion": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"enum": [
|
|
128
|
+
"q",
|
|
129
|
+
"r",
|
|
130
|
+
"b",
|
|
131
|
+
"n"
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"required": [
|
|
136
|
+
"from",
|
|
137
|
+
"to"
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"bind": {
|
|
141
|
+
"action": "user_move"
|
|
142
|
+
},
|
|
143
|
+
"reaction": {
|
|
144
|
+
"gezel": "chess-player",
|
|
145
|
+
"hideSeed": true,
|
|
146
|
+
"prompt": "Your opponent played {{output.lastMove}}. Status: {{output.status}}. Board now:\n{{output.board}}\nThe board and Legal moves line come directly from the chess engine and are always correct. Do not re-derive the position, dispute a listed move, or invent a move outside that list. Spend your thought on choosing among the listed legal moves.\nStyle: {{playStyle}}. In Opponent style, do not volunteer advice or reveal the user’s available moves, threats, tactics, or your plan; comment only about your own move or the atmosphere. In Instructor style, offer at most one brief teaching observation without choosing the user’s move. Answer strategy questions when asked.\nAct on this latest position. If the game is over, do not move — give one gracious line and offer a new game. Otherwise choose a strong legal move and play it with make_move, including a short {{personality}} moveThought that follows the selected style. If make_move rejects it, choose one move verbatim from the legal list in the error and retry. After moving, reply with ONE short line of table talk."
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "new_game",
|
|
151
|
+
"description": "Reset the chess board to the standard opening position.",
|
|
152
|
+
"script": "game-store",
|
|
153
|
+
"inputs": {
|
|
154
|
+
"type": "object",
|
|
155
|
+
"properties": {}
|
|
156
|
+
},
|
|
157
|
+
"bind": {
|
|
158
|
+
"action": "new_game"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"craftbooks": [],
|
|
163
|
+
"schedules": [],
|
|
164
|
+
"pages": {
|
|
165
|
+
"entry": "board/index.html",
|
|
166
|
+
"reads": [
|
|
167
|
+
{
|
|
168
|
+
"source": "workspace",
|
|
169
|
+
"path": "game.json"
|
|
170
|
+
}
|
|
171
|
+
],
|
|
172
|
+
"tools": [
|
|
173
|
+
"user_move",
|
|
174
|
+
"new_game"
|
|
175
|
+
]
|
|
176
|
+
},
|
|
177
|
+
"workspaceSeed": [
|
|
178
|
+
"game.json"
|
|
179
|
+
]
|
|
180
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
- Keep a standard chess position ready, with white moving first and a rematch one
|
|
2
|
+
press away.
|
|
3
|
+
- The Schaakspeler answers every user move with a legal black move of their own.
|
|
4
|
+
- Let the engine settle check, mate, stalemate, promotion, castling, en passant,
|
|
5
|
+
repetition, and fifty-move draws.
|
|
6
|
+
- Keep table talk {{personality}} and kind, matching the chosen {{playStyle}}:
|
|
7
|
+
Opponents do not leak plans or hints; Instructors teach lightly.
|
|
8
|
+
- End wins, losses, and draws graciously, with an easy offer of another game.
|