@bendyline/gilde 0.1.39 → 0.1.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/authoring/chat-models/muse-glimmer-30b-q4.json +3 -3
- package/authoring/chat-models/ornith-9b-q4.json +1 -1
- package/authoring/chat-models/ornith1.5-9b-q4.json +149 -0
- package/authoring/chat-models/qwen3.8-27b-iq1-s.json +190 -0
- package/authoring/chat-models/qwen3.8-27b-q2.json +189 -0
- package/authoring/gstack/overlays/investigate.json +1 -0
- package/authoring/gstack/overlays/qa-only.json +1 -0
- package/authoring/gstack/wave.json +12 -2
- package/authoring/tactical/books/accessibility-retrofit.json +188 -0
- package/authoring/tactical/books/apply-review-findings.json +189 -0
- package/authoring/tactical/books/bug-fix-tdd.json +237 -0
- package/authoring/tactical/books/ci-pipeline.json +168 -0
- package/authoring/tactical/books/codemod-sweep.json +182 -0
- package/authoring/tactical/books/dependency-upgrade.json +196 -0
- package/authoring/tactical/books/flaky-test-fix.json +238 -0
- package/authoring/tactical/books/hotfix-flow.json +187 -0
- package/authoring/tactical/books/perf-optimization.json +219 -0
- package/authoring/tactical/books/refactor-module.json +217 -0
- package/authoring/tactical/books/schema-migration.json +192 -0
- package/authoring/tactical/books/test-suite-backfill.json +172 -0
- package/authoring/tactical/books/type-safety-pass.json +185 -0
- package/authoring/tactical/books/ux-update.json +178 -0
- package/authoring/tactical/evals/accessibility-retrofit.json +230 -0
- package/authoring/tactical/evals/apply-review-findings.json +290 -0
- package/authoring/tactical/evals/bug-fix-tdd.json +221 -0
- package/authoring/tactical/evals/ci-pipeline.json +227 -0
- package/authoring/tactical/evals/codemod-sweep.json +252 -0
- package/authoring/tactical/evals/dependency-upgrade.json +235 -0
- package/authoring/tactical/evals/flaky-test-fix.json +239 -0
- package/authoring/tactical/evals/hotfix-flow.json +220 -0
- package/authoring/tactical/evals/perf-optimization.json +235 -0
- package/authoring/tactical/evals/refactor-module.json +241 -0
- package/authoring/tactical/evals/schema-migration.json +225 -0
- package/authoring/tactical/evals/test-suite-backfill.json +197 -0
- package/authoring/tactical/evals/type-safety-pass.json +221 -0
- package/authoring/tactical/evals/ux-update.json +206 -0
- package/authoring/tactical/wave.json +89 -0
- package/data/chat-models/de/deepseek-r1-8b-q4/manifest.json +56 -1
- package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +56 -0
- package/data/chat-models/gp/gpt-oss-120b-q4/manifest.json +73 -1
- package/data/chat-models/gp/gpt-oss-20b-q4/manifest.json +77 -1
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/ll/llama3.2-3b-q4/manifest.json +3 -1
- package/data/chat-models/mi/mistral-7b-q4/manifest.json +54 -3
- package/data/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +76 -1
- package/data/chat-models/mu/muse-glimmer-30b-q4/manifest.json +4 -3
- package/data/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.2/manifest.json +20 -0
- package/data/chat-models/or/ornith-9b-q4/manifest.json +1 -1
- package/data/chat-models/or/ornith1.5-9b-q4/manifest.json +187 -0
- package/data/chat-models/or/ornith1.5-9b-q4/versions/1.0.0/manifest.json +53 -0
- package/data/chat-models/qw/qwen3.8-27b-iq1-s/manifest.json +195 -0
- package/data/chat-models/qw/qwen3.8-27b-iq1-s/versions/1.0.0/manifest.json +19 -0
- package/data/chat-models/qw/qwen3.8-27b-q2/manifest.json +194 -0
- package/data/chat-models/qw/qwen3.8-27b-q2/versions/1.0.0/manifest.json +19 -0
- package/data/craftbook-templates/a1/a11y-audit/manifest.json +1 -0
- package/data/craftbook-templates/ab/ab-test-readout/manifest.json +1 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/manifest.json +6 -4
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/craftbook.json +451 -0
- package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.0/test.json +231 -0
- package/data/craftbook-templates/ad/ad-variations/manifest.json +1 -0
- package/data/craftbook-templates/al/album-curate/manifest.json +1 -0
- package/data/craftbook-templates/al/alert-rules/manifest.json +1 -0
- package/data/craftbook-templates/al/alt-text-pass/manifest.json +6 -1
- package/data/craftbook-templates/an/anniversary-cut/manifest.json +1 -0
- package/data/craftbook-templates/an/annotated-bibliography/manifest.json +1 -0
- package/data/craftbook-templates/an/annual-document-review/manifest.json +1 -0
- package/data/craftbook-templates/an/anomaly-scan/manifest.json +1 -0
- package/data/craftbook-templates/ap/api-contract-review/manifest.json +1 -0
- package/data/craftbook-templates/ap/apply-review-findings/art.json +12 -0
- package/data/craftbook-templates/ap/apply-review-findings/logo.webp +0 -0
- package/data/craftbook-templates/ap/apply-review-findings/manifest.json +23 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/craftbook.json +436 -0
- package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.0/test.json +291 -0
- package/data/craftbook-templates/ar/artifact-integrity-review/manifest.json +1 -0
- package/data/craftbook-templates/au/audio-ad-spot/manifest.json +1 -0
- package/data/craftbook-templates/au/audio-highlight-reel/manifest.json +1 -0
- package/data/craftbook-templates/au/audiobook-master-pack/manifest.json +1 -0
- package/data/craftbook-templates/au/auth-flow/manifest.json +1 -0
- package/data/craftbook-templates/au/automation-recipe/manifest.json +1 -0
- package/data/craftbook-templates/ba/backup-routine/manifest.json +1 -0
- package/data/craftbook-templates/bl/blog-post/manifest.json +1 -0
- package/data/craftbook-templates/bo/board-deck/manifest.json +1 -0
- package/data/craftbook-templates/bo/board-game-web/manifest.json +1 -0
- package/data/craftbook-templates/bo/booking-automation/manifest.json +1 -0
- package/data/craftbook-templates/br/branding-website/manifest.json +1 -0
- package/data/craftbook-templates/br/broadcast-announcement/manifest.json +1 -0
- package/data/craftbook-templates/br/browser-qa-audit/manifest.json +6 -1
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/craftbook.json +438 -0
- package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.5/test.json +379 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/manifest.json +4 -3
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/craftbook.json +545 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.0/test.json +222 -0
- package/data/craftbook-templates/bu/build-loop/manifest.json +1 -0
- package/data/craftbook-templates/ca/calendar-brief/manifest.json +1 -0
- package/data/craftbook-templates/ca/canvas-generative-art/manifest.json +1 -0
- package/data/craftbook-templates/ca/careful-mode/manifest.json +1 -0
- package/data/craftbook-templates/ca/case-study/manifest.json +1 -0
- package/data/craftbook-templates/ca/case-study-writeup/manifest.json +1 -0
- package/data/craftbook-templates/ch/changelog-cut/manifest.json +6 -1
- package/data/craftbook-templates/ch/changelog-writeup/manifest.json +6 -1
- package/data/craftbook-templates/ch/chapter-narration-run/manifest.json +1 -0
- package/data/craftbook-templates/ch/chapter-weave/manifest.json +1 -0
- package/data/craftbook-templates/ch/character-sheet/manifest.json +1 -0
- package/data/craftbook-templates/ch/character-turnaround/manifest.json +1 -0
- package/data/craftbook-templates/ch/chart-pack/manifest.json +1 -0
- package/data/craftbook-templates/ch/chrome-extension/manifest.json +1 -0
- package/data/craftbook-templates/ci/ci-pipeline/manifest.json +6 -3
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/craftbook.json +423 -0
- package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.0/test.json +228 -0
- package/data/craftbook-templates/ci/citation-audit/manifest.json +1 -0
- package/data/craftbook-templates/cl/cli-tool/manifest.json +1 -0
- package/data/craftbook-templates/co/code-review/manifest.json +1 -0
- package/data/craftbook-templates/co/codebase-refactoring-review/manifest.json +1 -0
- package/data/craftbook-templates/co/codebase-ux-review/manifest.json +1 -0
- package/data/craftbook-templates/co/codemod-sweep/art.json +12 -0
- package/data/craftbook-templates/co/codemod-sweep/logo.webp +0 -0
- package/data/craftbook-templates/co/codemod-sweep/manifest.json +23 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/craftbook.json +441 -0
- package/data/craftbook-templates/co/codemod-sweep/versions/1.0.0/test.json +253 -0
- package/data/craftbook-templates/co/cohort-analysis/manifest.json +1 -0
- package/data/craftbook-templates/co/company-research-brief/manifest.json +1 -0
- package/data/craftbook-templates/co/comparison-matrix/manifest.json +1 -0
- package/data/craftbook-templates/co/compat-check/manifest.json +1 -0
- package/data/craftbook-templates/co/competitive-analysis/manifest.json +1 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/art.json +12 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/logo.webp +0 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/manifest.json +27 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.0/craftbook.json +337 -0
- package/data/craftbook-templates/co/comprehensive-codebase-review/versions/1.0.0/test.json +160 -0
- package/data/craftbook-templates/co/config-scaffold/manifest.json +1 -0
- package/data/craftbook-templates/co/content-accuracy-review/manifest.json +1 -0
- package/data/craftbook-templates/co/content-deck/manifest.json +1 -0
- package/data/craftbook-templates/co/contract-template/manifest.json +1 -0
- package/data/craftbook-templates/co/cookbook-layout/manifest.json +1 -0
- package/data/craftbook-templates/co/copy-review/manifest.json +1 -0
- package/data/craftbook-templates/co/corpus-email-digest/manifest.json +1 -0
- package/data/craftbook-templates/co/corpus-synthesis/manifest.json +1 -0
- package/data/craftbook-templates/co/cover-letter/manifest.json +1 -0
- package/data/craftbook-templates/cr/crm-update-batch/manifest.json +1 -0
- package/data/craftbook-templates/cr/cron-job/manifest.json +1 -0
- package/data/craftbook-templates/cr/crossword-forge/manifest.json +1 -0
- package/data/craftbook-templates/cs/csv-transformer/manifest.json +1 -0
- package/data/craftbook-templates/da/dashboard-spec/manifest.json +1 -0
- package/data/craftbook-templates/da/data-dictionary/manifest.json +1 -0
- package/data/craftbook-templates/da/data-export-migrate/manifest.json +1 -0
- package/data/craftbook-templates/da/data-join-merge/manifest.json +1 -0
- package/data/craftbook-templates/da/data-pipeline-etl/manifest.json +1 -0
- package/data/craftbook-templates/da/data-quality-audit/manifest.json +1 -0
- package/data/craftbook-templates/da/data-to-report/manifest.json +1 -0
- package/data/craftbook-templates/da/data-viz-page/manifest.json +1 -0
- package/data/craftbook-templates/da/dataset-clean/manifest.json +1 -0
- package/data/craftbook-templates/db/db-index-tuning/manifest.json +1 -0
- package/data/craftbook-templates/de/deep-security-review/manifest.json +1 -0
- package/data/craftbook-templates/de/dependency-audit/manifest.json +1 -0
- package/data/craftbook-templates/de/dependency-upgrade/art.json +12 -0
- package/data/craftbook-templates/de/dependency-upgrade/logo.webp +0 -0
- package/data/craftbook-templates/de/dependency-upgrade/manifest.json +23 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/craftbook.json +459 -0
- package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.0/test.json +236 -0
- package/data/craftbook-templates/de/deploy-checklist/manifest.json +1 -0
- package/data/craftbook-templates/de/design-review/manifest.json +1 -0
- package/data/craftbook-templates/de/design-system-consultation/manifest.json +1 -0
- package/data/craftbook-templates/di/diagram-from-text/manifest.json +1 -0
- package/data/craftbook-templates/di/digest-from-feeds/manifest.json +1 -0
- package/data/craftbook-templates/do/doc-intake-pipeline/manifest.json +1 -0
- package/data/craftbook-templates/do/doc-rewrite/manifest.json +1 -0
- package/data/craftbook-templates/do/dockerize-app/manifest.json +1 -0
- package/data/craftbook-templates/do/docs-site/manifest.json +1 -0
- package/data/craftbook-templates/do/documentation-drift-review/manifest.json +1 -0
- package/data/craftbook-templates/dr/draft-social-post/manifest.json +1 -0
- package/data/craftbook-templates/dr/drive-wrap-up/manifest.json +1 -0
- package/data/craftbook-templates/du/due-diligence-brief/manifest.json +1 -0
- package/data/craftbook-templates/eb/ebook-compile/manifest.json +1 -0
- package/data/craftbook-templates/ed/edit-notes/manifest.json +1 -0
- package/data/craftbook-templates/em/email-sequence/manifest.json +1 -0
- package/data/craftbook-templates/em/email-template/manifest.json +1 -0
- package/data/craftbook-templates/en/engineering-retrospective/manifest.json +1 -0
- package/data/craftbook-templates/ep/episode-plan/manifest.json +1 -0
- package/data/craftbook-templates/es/escalation-playbook/manifest.json +1 -0
- package/data/craftbook-templates/ev/evidence-brief/manifest.json +1 -0
- package/data/craftbook-templates/ex/executive-level-review/manifest.json +1 -0
- package/data/craftbook-templates/ex/expense-categorize/manifest.json +1 -0
- package/data/craftbook-templates/fa/fact-check/manifest.json +1 -0
- package/data/craftbook-templates/fa/family-story-chapter/manifest.json +1 -0
- package/data/craftbook-templates/fa/faq-from-docs/manifest.json +1 -0
- package/data/craftbook-templates/fa/favicon-set/manifest.json +1 -0
- package/data/craftbook-templates/fe/feature-flag-release/manifest.json +6 -1
- package/data/craftbook-templates/fe/feature-flag-rollout/manifest.json +5 -1
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/craftbook.json +203 -0
- package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.0/test.json +165 -0
- package/data/craftbook-templates/fe/feedback-widget/manifest.json +1 -0
- package/data/craftbook-templates/fl/flaky-test-fix/art.json +12 -0
- package/data/craftbook-templates/fl/flaky-test-fix/logo.webp +0 -0
- package/data/craftbook-templates/fl/flaky-test-fix/manifest.json +24 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/craftbook.json +534 -0
- package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.0/test.json +240 -0
- package/data/craftbook-templates/fo/folder-to-audio/manifest.json +1 -0
- package/data/craftbook-templates/fo/forecast-model/manifest.json +1 -0
- package/data/craftbook-templates/fo/form-fill-batch/manifest.json +1 -0
- package/data/craftbook-templates/fo/form-wizard/manifest.json +1 -0
- package/data/craftbook-templates/fr/freeze-scope/manifest.json +1 -0
- package/data/craftbook-templates/ga/game-with-screens/manifest.json +1 -0
- package/data/craftbook-templates/gl/glossary-build/manifest.json +1 -0
- package/data/craftbook-templates/gr/graphql-api/manifest.json +1 -0
- package/data/craftbook-templates/gr/grpc-service/manifest.json +1 -0
- package/data/craftbook-templates/ha/handbook-section/manifest.json +1 -0
- package/data/craftbook-templates/he/hero-image/manifest.json +1 -0
- package/data/craftbook-templates/ho/holiday-card-run/manifest.json +1 -0
- package/data/craftbook-templates/ho/hotfix-flow/manifest.json +6 -3
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/craftbook.json +442 -0
- package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.0/test.json +221 -0
- package/data/craftbook-templates/ht/html-arcade-game/manifest.json +1 -0
- package/data/craftbook-templates/ht/html-puzzle-game/manifest.json +1 -0
- package/data/craftbook-templates/ic/icon-pack/manifest.json +1 -0
- package/data/craftbook-templates/id/idea-office-hours/manifest.json +1 -0
- package/data/craftbook-templates/id/idle-clicker-game/manifest.json +1 -0
- package/data/craftbook-templates/im/image-batch-edit/manifest.json +1 -0
- package/data/craftbook-templates/im/image-dedup-cluster/manifest.json +1 -0
- package/data/craftbook-templates/im/image-palette-extract/manifest.json +1 -0
- package/data/craftbook-templates/im/image-seo-rename/manifest.json +1 -0
- package/data/craftbook-templates/im/image-set-index/manifest.json +1 -0
- package/data/craftbook-templates/in/inbox-triage/manifest.json +1 -0
- package/data/craftbook-templates/in/incident-comms-templates/manifest.json +1 -0
- package/data/craftbook-templates/in/incident-postmortem/manifest.json +1 -0
- package/data/craftbook-templates/in/insurance-inventory/manifest.json +1 -0
- package/data/craftbook-templates/in/interactive-quiz/manifest.json +1 -0
- package/data/craftbook-templates/in/investigate/manifest.json +5 -1
- package/data/craftbook-templates/in/investigate-root-cause/manifest.json +6 -1
- package/data/craftbook-templates/in/invitation-design/manifest.json +1 -0
- package/data/craftbook-templates/in/invoice-generator/manifest.json +1 -0
- package/data/craftbook-templates/in/invoice-run/manifest.json +1 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/it/item-intake/manifest.json +1 -0
- package/data/craftbook-templates/ju/juice-pass/manifest.json +1 -0
- package/data/craftbook-templates/kn/knowledge-base-article/manifest.json +1 -0
- package/data/craftbook-templates/kp/kpi-scorecard/manifest.json +1 -0
- package/data/craftbook-templates/la/landing-copy/manifest.json +1 -0
- package/data/craftbook-templates/la/landing-page/manifest.json +1 -0
- package/data/craftbook-templates/le/lead-enrichment/manifest.json +1 -0
- package/data/craftbook-templates/li/library-package/manifest.json +1 -0
- package/data/craftbook-templates/li/literature-review/manifest.json +1 -0
- package/data/craftbook-templates/li/live-browser-qa/manifest.json +6 -1
- package/data/craftbook-templates/lo/localize-content/manifest.json +1 -0
- package/data/craftbook-templates/lo/logo-set/manifest.json +1 -0
- package/data/craftbook-templates/ma/market-scan/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-minutes/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-notes-to-actions/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-prep-brief/manifest.json +1 -0
- package/data/craftbook-templates/me/meeting-summary-audio/manifest.json +1 -0
- package/data/craftbook-templates/me/memory-prompt-session/manifest.json +1 -0
- package/data/craftbook-templates/me/message-queue-consumer/manifest.json +1 -0
- package/data/craftbook-templates/mi/micro-game-jam/manifest.json +1 -0
- package/data/craftbook-templates/mo/mock-interview/manifest.json +1 -0
- package/data/craftbook-templates/mo/mod-scaffold/manifest.json +1 -0
- package/data/craftbook-templates/mo/monitor-and-alert/manifest.json +1 -0
- package/data/craftbook-templates/mo/month-close/manifest.json +1 -0
- package/data/craftbook-templates/mo/monthly-recording-review/manifest.json +1 -0
- package/data/craftbook-templates/mo/moodboard/manifest.json +1 -0
- package/data/craftbook-templates/mo/morning-brief/manifest.json +1 -0
- package/data/craftbook-templates/mo/morning-report/manifest.json +1 -0
- package/data/craftbook-templates/mu/music-metadata-tag/manifest.json +1 -0
- package/data/craftbook-templates/na/narrated-slideshow/manifest.json +1 -0
- package/data/craftbook-templates/ne/newsletter-issue/manifest.json +1 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/art.json +12 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/logo.webp +0 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/manifest.json +23 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/craftbook.json +145 -0
- package/data/craftbook-templates/ni/nightly-fix-sweep/versions/1.0.0/test.json +121 -0
- package/data/craftbook-templates/no/notification-router/manifest.json +1 -0
- package/data/craftbook-templates/oc/ocr-extract/manifest.json +1 -0
- package/data/craftbook-templates/of/offer-compare/manifest.json +1 -0
- package/data/craftbook-templates/of/office-hours/manifest.json +1 -0
- package/data/craftbook-templates/on/onboarding-checklist/manifest.json +1 -0
- package/data/craftbook-templates/on/onboarding-flow/manifest.json +1 -0
- package/data/craftbook-templates/on/oncall-handoff/manifest.json +1 -0
- package/data/craftbook-templates/on/one-pager/manifest.json +1 -0
- package/data/craftbook-templates/op/ops-runbook/manifest.json +1 -0
- package/data/craftbook-templates/pa/page-spread/manifest.json +1 -0
- package/data/craftbook-templates/pa/parser-grammar/manifest.json +1 -0
- package/data/craftbook-templates/pe/perf-audit/manifest.json +1 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/craftbook.json +195 -0
- package/data/craftbook-templates/pe/perf-audit/versions/1.1.0/test.json +165 -0
- package/data/craftbook-templates/pe/perf-optimization/manifest.json +4 -3
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/craftbook.json +511 -0
- package/data/craftbook-templates/pe/perf-optimization/versions/2.0.0/test.json +236 -0
- package/data/craftbook-templates/pe/pest-diagnosis/manifest.json +1 -0
- package/data/craftbook-templates/ph/photo-cull/manifest.json +1 -0
- package/data/craftbook-templates/ph/physics-toy/manifest.json +1 -0
- package/data/craftbook-templates/pi/pitch-deck/manifest.json +1 -0
- package/data/craftbook-templates/pl/plan/manifest.json +1 -0
- package/data/craftbook-templates/pl/playtest-report/manifest.json +1 -0
- package/data/craftbook-templates/po/podcast-chaptering/manifest.json +1 -0
- package/data/craftbook-templates/po/portfolio-site/manifest.json +1 -0
- package/data/craftbook-templates/po/powerpoint-deck/manifest.json +1 -0
- package/data/craftbook-templates/pr/pr-security-review/manifest.json +1 -0
- package/data/craftbook-templates/pr/practice-exam/manifest.json +1 -0
- package/data/craftbook-templates/pr/practice-session/manifest.json +1 -0
- package/data/craftbook-templates/pr/pre-departure-countdown/manifest.json +1 -0
- package/data/craftbook-templates/pr/press-release/manifest.json +1 -0
- package/data/craftbook-templates/pr/price-tracker/manifest.json +1 -0
- package/data/craftbook-templates/pr/pricing-page/manifest.json +1 -0
- package/data/craftbook-templates/pr/product-descriptions/manifest.json +1 -0
- package/data/craftbook-templates/pr/proposal-sow/manifest.json +1 -0
- package/data/craftbook-templates/pu/pull-request-review/manifest.json +1 -0
- package/data/craftbook-templates/pu/puzzle-pack-layout/manifest.json +1 -0
- package/data/craftbook-templates/pw/pwa-offline/manifest.json +1 -0
- package/data/craftbook-templates/qa/qa/manifest.json +4 -1
- package/data/craftbook-templates/qu/quarterly-summary/manifest.json +1 -0
- package/data/craftbook-templates/re/reading-list/manifest.json +1 -0
- package/data/craftbook-templates/re/receipt-intake/manifest.json +1 -0
- package/data/craftbook-templates/re/receipt-ocr-ledger/manifest.json +1 -0
- package/data/craftbook-templates/re/reception-report/manifest.json +1 -0
- package/data/craftbook-templates/re/recipe-capture/manifest.json +1 -0
- package/data/craftbook-templates/re/record-a-relative/manifest.json +1 -0
- package/data/craftbook-templates/re/recurring-invoice-run/manifest.json +1 -0
- package/data/craftbook-templates/re/refactor-module/manifest.json +3 -2
- package/data/craftbook-templates/re/refactor-module/versions/1.0.4/craftbook.json +150 -0
- package/data/craftbook-templates/re/refactor-module/versions/1.0.4/test.json +95 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.0/craftbook.json +509 -0
- package/data/craftbook-templates/re/refactor-module/versions/2.0.0/test.json +242 -0
- package/data/craftbook-templates/re/regex-builder/manifest.json +1 -0
- package/data/craftbook-templates/re/release-announcement/manifest.json +1 -0
- package/data/craftbook-templates/re/release-artifact-sanity-check/manifest.json +1 -0
- package/data/craftbook-templates/re/release-notes/manifest.json +6 -1
- package/data/craftbook-templates/re/release-notes/versions/1.0.3/craftbook.json +220 -0
- package/data/craftbook-templates/re/release-notes/versions/1.0.3/test.json +114 -0
- package/data/craftbook-templates/re/release-pipeline-ci/manifest.json +6 -1
- package/data/craftbook-templates/re/release-readiness-review/manifest.json +1 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/craftbook.json +192 -0
- package/data/craftbook-templates/re/release-readiness-review/versions/1.1.0/test.json +113 -0
- package/data/craftbook-templates/re/reliability-review/manifest.json +1 -0
- package/data/craftbook-templates/re/report-pdf/manifest.json +1 -0
- package/data/craftbook-templates/re/research-report/manifest.json +1 -0
- package/data/craftbook-templates/re/research-to-document/manifest.json +1 -0
- package/data/craftbook-templates/re/rest-api/manifest.json +1 -0
- package/data/craftbook-templates/re/resume-cv/manifest.json +1 -0
- package/data/craftbook-templates/re/reviewer-loop/manifest.json +1 -0
- package/data/craftbook-templates/ro/rollback-plan/manifest.json +1 -0
- package/data/craftbook-templates/ro/root-cause-investigation/manifest.json +8 -1
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/craftbook.json +433 -0
- package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.5/test.json +157 -0
- package/data/craftbook-templates/ro/rough-cut-assembly/manifest.json +1 -0
- package/data/craftbook-templates/ru/runbook/manifest.json +1 -0
- package/data/craftbook-templates/sc/schema-migration/manifest.json +5 -4
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/craftbook.json +459 -0
- package/data/craftbook-templates/sc/schema-migration/versions/2.0.0/test.json +226 -0
- package/data/craftbook-templates/sc/scrape-to-structured/manifest.json +1 -0
- package/data/craftbook-templates/sc/script-automation/manifest.json +1 -0
- package/data/craftbook-templates/sd/sdk-wrapper/manifest.json +1 -0
- package/data/craftbook-templates/se/seasonal-maintenance-sweep/manifest.json +1 -0
- package/data/craftbook-templates/se/security-architecture-review/manifest.json +1 -0
- package/data/craftbook-templates/se/seo-meta-pack/manifest.json +1 -0
- package/data/craftbook-templates/sh/ship/manifest.json +1 -0
- package/data/craftbook-templates/so/social-digest/manifest.json +1 -0
- package/data/craftbook-templates/so/social-thread/manifest.json +1 -0
- package/data/craftbook-templates/so/source-quality-audit/manifest.json +1 -0
- package/data/craftbook-templates/sp/spa-dashboard/manifest.json +1 -0
- package/data/craftbook-templates/sp/spec-authoring/manifest.json +1 -0
- package/data/craftbook-templates/sp/spec-doc/manifest.json +1 -0
- package/data/craftbook-templates/sp/spreadsheet-model/manifest.json +1 -0
- package/data/craftbook-templates/sp/sprite-sheet/manifest.json +1 -0
- package/data/craftbook-templates/sq/sql-analysis/manifest.json +1 -0
- package/data/craftbook-templates/st/standup-summary/manifest.json +1 -0
- package/data/craftbook-templates/st/state-machine/manifest.json +1 -0
- package/data/craftbook-templates/st/status-report/manifest.json +1 -0
- package/data/craftbook-templates/su/subscription-audit/manifest.json +1 -0
- package/data/craftbook-templates/su/subtitle-generator/manifest.json +1 -0
- package/data/craftbook-templates/su/summarize-long/manifest.json +1 -0
- package/data/craftbook-templates/su/survey-analysis/manifest.json +1 -0
- package/data/craftbook-templates/sv/svg-animation/manifest.json +1 -0
- package/data/craftbook-templates/ta/tailor-resume/manifest.json +1 -0
- package/data/craftbook-templates/te/technical-documentation/manifest.json +1 -0
- package/data/craftbook-templates/te/test-coverage-review/manifest.json +1 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/craftbook.json +195 -0
- package/data/craftbook-templates/te/test-coverage-review/versions/1.2.0/test.json +116 -0
- package/data/craftbook-templates/te/test-suite-backfill/manifest.json +2 -2
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/craftbook.json +428 -0
- package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.0/test.json +198 -0
- package/data/craftbook-templates/th/thank-you-batch/manifest.json +1 -0
- package/data/craftbook-templates/th/thank-you-sweep/manifest.json +1 -0
- package/data/craftbook-templates/th/threat-model/manifest.json +1 -0
- package/data/craftbook-templates/th/thumbnail-generator/manifest.json +1 -0
- package/data/craftbook-templates/ti/tileset-batch/manifest.json +1 -0
- package/data/craftbook-templates/to/tone-rewrite/manifest.json +1 -0
- package/data/craftbook-templates/to/topic-explainer/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-and-shownotes/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-audio/manifest.json +1 -0
- package/data/craftbook-templates/tr/transcribe-index/manifest.json +1 -0
- package/data/craftbook-templates/tr/translate-content/manifest.json +1 -0
- package/data/craftbook-templates/ty/type-safety-pass/manifest.json +4 -3
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/craftbook.json +428 -0
- package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.0/test.json +222 -0
- package/data/craftbook-templates/ux/ux-update/art.json +12 -0
- package/data/craftbook-templates/ux/ux-update/logo.webp +0 -0
- package/data/craftbook-templates/ux/ux-update/manifest.json +22 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.0/craftbook.json +439 -0
- package/data/craftbook-templates/ux/ux-update/versions/1.0.0/test.json +207 -0
- package/data/craftbook-templates/ve/version-bump/manifest.json +1 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.1.0/craftbook.json +206 -0
- package/data/craftbook-templates/ve/version-bump/versions/1.1.0/test.json +95 -0
- package/data/craftbook-templates/vi/video-storyboard/manifest.json +1 -0
- package/data/craftbook-templates/vi/visit-prep/manifest.json +1 -0
- package/data/craftbook-templates/vo/voiceover-script/manifest.json +1 -0
- package/data/craftbook-templates/we/weak-spot-drill/manifest.json +1 -0
- package/data/craftbook-templates/we/web-app-crud/manifest.json +1 -0
- package/data/craftbook-templates/we/web-component/manifest.json +1 -0
- package/data/craftbook-templates/we/webhook-handler/manifest.json +1 -0
- package/data/craftbook-templates/we/week-plan/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-menu-plan/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-pipeline-review/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-review/manifest.json +1 -0
- package/data/craftbook-templates/we/weekly-walkthrough/manifest.json +1 -0
- package/data/craftbook-templates/wh/whitepaper/manifest.json +1 -0
- package/data/craftbook-templates/ye/year-in-review/manifest.json +1 -0
- package/data/craftbook-templates/yo/youtube-chapters-seo/manifest.json +1 -0
- package/data/gezel-templates/bo/boekwachter/versions/1.1.0/about.md +29 -0
- package/data/gezel-templates/bo/boekwachter/versions/1.1.0/manifest.json +16 -0
- package/data/gezel-templates/bu/builder/versions/1.5.0/about.md +34 -0
- package/data/gezel-templates/bu/builder/versions/1.5.0/manifest.json +16 -0
- package/data/gezel-templates/de/developer/versions/1.5.0/about.md +34 -0
- package/data/gezel-templates/de/developer/versions/1.5.0/manifest.json +21 -0
- package/data/gezel-templates/index.json +1 -1
- package/data/gezel-templates/re/reviewer/versions/1.4.0/about.md +49 -0
- package/data/gezel-templates/re/reviewer/versions/1.4.0/manifest.json +21 -0
- package/data/project-types/index.json +1 -1
- package/data/project-types/so/software-project/manifest.json +20 -0
- package/data/project-types/so/software-project/versions/1.0.0/about.md +3 -0
- package/data/project-types/so/software-project/versions/1.0.0/manifest.json +41 -0
- package/data/project-types/so/software-project/versions/1.0.0/mission.md +4 -0
- package/package.json +1 -1
- package/schemas/craftbook-doc.schema.json +248 -0
- package/schemas/craftbook-template-identity.schema.json +21 -0
- package/schemas/craftbook-template-version.schema.json +248 -0
- package/schemas/craftbook-test.schema.json +210 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "notification-router",
|
|
5
5
|
"role": "general",
|
|
6
|
+
"category": "code-build",
|
|
6
7
|
"name": "Notification Router",
|
|
7
8
|
"description": "Build an event-to-channel notification router: a small module that takes incoming events and routes each to the right destination (Slack channel, email, PagerDuty, webhook) based on type, severity, and quiet-hours rules — with dedupe, throttling, and a fallback channel. Scopes the routing matrix and policy FIRST (event taxonomy, channel map, severity→destination rules, dedupe key, rate limits, fallback), then a developer implements the router module to that matrix, then writes tests covering each routing branch. Scoping the matrix before coding is what guarantees every event type has a defined destination and that critical events can never be silently dropped. Use for notification routing, alert fan-out, event dispatch, webhook routing, and on-call/Slack notification systems.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "ocr-extract",
|
|
5
5
|
"role": "general",
|
|
6
|
+
"category": "media",
|
|
6
7
|
"name": "OCR a Folder of Scans",
|
|
7
8
|
"description": "Extract the text from a folder of scanned documents or photographed pages into clean, structured text — preserving reading order, paragraph breaks, and per-file provenance — then verify the extraction against the source images. Scope FIRST the languages, output structure (one file per scan vs a combined doc), and how to handle tables/columns/low-confidence regions, because OCR quality is dominated by handling layout and flagging uncertainty; then run extraction and verify a sample reads correctly. Covers OCR, text extraction, scanned documents, digitizing paper, receipt/invoice text, and image-to-text.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "offer-compare",
|
|
5
5
|
"role": "general",
|
|
6
|
+
"category": "business",
|
|
6
7
|
"name": "Offer Comparison",
|
|
7
8
|
"description": "Turn competing job offers into one honest decision sheet — every offer normalized into the same fact grid (comp, equity with vesting caveats, benefits, level, location, growth, deadlines), unknowns marked UNKNOWN instead of guessed, computed year-1 and 4-year views under stated assumptions, a weighted read against the candidate's OWN priorities, and a recommendation that separates arithmetic from judgment. Use when any second offer (or a strong counter) lands.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "office-hours",
|
|
5
5
|
"role": "general",
|
|
6
|
+
"category": "practice",
|
|
6
7
|
"name": "Office Hours",
|
|
7
8
|
"description": "YC-style office-hours diagnostic. Surfaces forcing questions, challenges premises, lands on a sharper problem statement before any code is written.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "onboarding-checklist",
|
|
5
5
|
"role": "general",
|
|
6
|
+
"category": "business",
|
|
6
7
|
"name": "Generate an Onboarding Checklist",
|
|
7
8
|
"description": "Produce a clear, role-specific onboarding checklist for a new hire, customer, or user — grouped by phase (before day one, week one, first 30 days), with each item owned, actionable, and verifiable. Scopes the audience, the phases, and a 'good item' rule FIRST so the checklist is complete and non-overlapping, then writes the actual checklist as a clean markdown document with grouped, owner-tagged, checkbox items. Scoping the phases and item-quality bar before writing is what turns a vague to-do dump into a sequenced, accountable onboarding plan.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "onboarding-flow",
|
|
5
5
|
"role": "project-starter",
|
|
6
|
+
"category": "code-build",
|
|
6
7
|
"name": "Product Onboarding Tour",
|
|
7
8
|
"description": "Build a single-file product onboarding tour or coachmark walkthrough that guides a new user through key features with sequential tooltips, a highlighted target, next/back/skip controls, and a finish state. Designs the step sequence, what each step points at, and the copy strategy first, writes the step copy, then implements the spotlight overlay and step navigation. Tours break when a step points at the wrong element or skip/finish does not dismiss, so the flow-design phase locks the step-to-target map before any code.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "oncall-handoff",
|
|
5
5
|
"role": "general",
|
|
6
|
+
"category": "code-ops",
|
|
6
7
|
"name": "On-Call Shift Handoff",
|
|
7
8
|
"description": "Produce a clean end-of-shift on-call handoff: open incidents and their state, watch-items and known-flapping alerts, deferred actions, and anything the next on-call must do in the first hour. Scopes the handoff template and the carry-over rule FIRST (sections, what counts as an open item, the must-not-drop list), then a developer gathers the shift's signals (active incidents, recent pages, deferred follow-ups) and assembles the handoff so the incoming engineer can pick up cold. Scoping the template and carry-over rule before assembling is what guarantees no live incident or hot watch-item is dropped at the shift boundary. Use for on-call handoffs, shift handover notes, pager handoff, SRE shift change, and end-of-shift summaries.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "one-pager",
|
|
5
5
|
"role": "general",
|
|
6
|
+
"category": "marketing",
|
|
6
7
|
"name": "One-Pager Brief",
|
|
7
8
|
"description": "Create a single-page brief or summary that fits one printed page and lands one message fast — a product one-pager, executive summary, project brief, or leave-behind. Scopes the single audience + the one thing they must remember FIRST, then designs a tight one-page layout (headline, scannable sections, a sidebar of facts), then writes punchy copy that fits the page — ruthless about cutting anything that pushes past one page. Use when the answer must be skimmable in 60 seconds on a single sheet.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "ops-runbook",
|
|
5
5
|
"role": "maintenance-review",
|
|
6
|
+
"category": "code-ops",
|
|
6
7
|
"name": "Execute an Ops Runbook",
|
|
7
8
|
"description": "Execute a written operational procedure step by step with verification and a stop-on-anomaly rule. Inventories the runbook and its preconditions FIRST, then executes each step in order — act, verify the step's own check, record verbatim evidence in a run log — halting immediately when observed state does not match what the procedure expects, then writes an outcome report (clean completion, or a halt report naming the failing step, expected vs. observed, and the steps deliberately not executed). Recording verbatim evidence and refusing to run past an anomaly is the wisdom that separates a trustworthy operator from one who papers over broken state.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "page-spread",
|
|
5
5
|
"role": "general",
|
|
6
|
+
"category": "media",
|
|
6
7
|
"name": "Page Spread",
|
|
7
8
|
"description": "Produce one page spread from script to panels: beats planned, panel art generated against the character sheets — never freehand from memory — lettered and laid out as the page the reader turns to. Locks the panel plan FIRST — each panel naming the sheet references that anchor it and the caption text it carries — then generates the panels from those anchors, then assembles the lettered spread. Use for producing a comic page, 'let's do page three', panel-and-letter passes, turning a script page into art, and the per-page ritual of a whole book.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "parser-grammar",
|
|
5
5
|
"role": "project-starter",
|
|
6
|
+
"category": "code-data",
|
|
6
7
|
"name": "Parser / DSL for a Small Grammar",
|
|
7
8
|
"description": "Build a parser for a small domain-specific language or data format — tokenize, parse to an AST, and report clear errors on malformed input. Designs the grammar FIRST — the token set, the grammar rules (BNF-style), operator precedence, the AST node shapes, and the error strategy — then implements lexer + parser producing the AST, then tests valid inputs parse to the right AST and invalid inputs fail with useful errors. Covers tokenization/lexing, recursive-descent parsing, grammar rules, operator precedence, AST construction, and helpful parse-error messages.",
|
|
8
9
|
"tags": [
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "perf-audit",
|
|
5
5
|
"role": "maintenance-review",
|
|
6
|
+
"category": "code-quality",
|
|
6
7
|
"name": "Performance Audit",
|
|
7
8
|
"description": "Audit an application or page for performance problems with measurements, then produce a report of the highest-impact optimizations. First scopes the workloads and locks a performance budget and checklist (load time and Core Web Vitals, bundle/asset weight, render and main-thread cost, network waterfall and request count, server/query latency, memory and re-render churn), then MEASURES each against a baseline using real profiling rather than guessing, then writes a report that ranks bottlenecks by impact-vs-effort with a specific fix and the expected gain for each. Use this for a performance audit, speed optimization, finding bottlenecks, a Lighthouse-style review, reducing load time, or profiling slowness — it grounds every recommendation in a measured number and an estimated payoff, not 'it feels slow'.",
|
|
8
9
|
"tags": [
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "perf-audit",
|
|
3
|
+
"name": "Performance Audit",
|
|
4
|
+
"description": "Audit an application or page for performance problems with measurements, then produce a report of the highest-impact optimizations. First scopes the workloads and locks a performance budget and checklist (load time and Core Web Vitals, bundle/asset weight, render and main-thread cost, network waterfall and request count, server/query latency, memory and re-render churn), then MEASURES each against a baseline using real profiling rather than guessing, then writes a report that ranks bottlenecks by impact-vs-effort with a specific fix and the expected gain for each. Use this for a performance audit, speed optimization, finding bottlenecks, a Lighthouse-style review, reducing load time, or profiling slowness — it grounds every recommendation in a measured number and an estimated payoff, not 'it feels slow'.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Scope the perf budget (reviewer) — lock workloads, a budget, and a metrics checklist → gated on artifact `{{workPath}}/scope.md` (markdown-notes)\n2. Measure the baseline (developer) — profile each workload, locate the real bottlenecks → gated on artifact `{{workPath}}/measure.md` (markdown-notes)\n3. Write the perf report (reviewer) — rank optimizations by impact vs effort → gated on artifact `{{workPath}}/perf-report.md` (markdown-report)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
|
|
5
|
+
"entryStepId": "scope",
|
|
6
|
+
"triggers": [
|
|
7
|
+
"performance audit",
|
|
8
|
+
"why is this slow",
|
|
9
|
+
"find the bottleneck",
|
|
10
|
+
"optimize load time",
|
|
11
|
+
"speed this up",
|
|
12
|
+
"profile the app"
|
|
13
|
+
],
|
|
14
|
+
"steps": [
|
|
15
|
+
{
|
|
16
|
+
"id": "scope",
|
|
17
|
+
"name": "Scope the perf budget",
|
|
18
|
+
"description": "lock workloads, a budget, and a metrics checklist",
|
|
19
|
+
"prompt": "Step 1: Identify the workloads to audit (the slow page/route/endpoint/operation and its typical usage). Step 2: Write a performance acceptance-criteria checklist with concrete budgets, drawn from the relevant metrics: page load and Core Web Vitals (LCP < 2.5s, CLS < 0.1, INP < 200ms), total JS/CSS/image transfer weight, time-to-interactive and main-thread blocking, request count and waterfall serialization, server response and DB query latency (and N+1 detection), and memory growth / excessive re-renders for SPAs. Step 3: For each metric, set the target/budget for THIS app and note the current pain. Step 4: Decide the measurement method and environment (Lighthouse/devtools/profiler/timing logs if available; otherwise read the code and reason about asymptotic and I/O costs). Write the workloads + budgeted checklist + method to `write_task_note` AND `{{workPath}}/scope.md`. No optimizing yet — define 'fast enough' first.\n\nThe deliverable `{{workPath}}/scope.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
|
|
20
|
+
"suggestedRole": "reviewer",
|
|
21
|
+
"advanceWhen": {
|
|
22
|
+
"file": "{{workPath}}/scope.md",
|
|
23
|
+
"minBytes": 1,
|
|
24
|
+
"sniff": "nonempty",
|
|
25
|
+
"artifact": true
|
|
26
|
+
},
|
|
27
|
+
"gate": {
|
|
28
|
+
"at": "completion",
|
|
29
|
+
"checks": [
|
|
30
|
+
{
|
|
31
|
+
"kind": "minBytes",
|
|
32
|
+
"file": "{{workPath}}/scope.md",
|
|
33
|
+
"bytes": 120,
|
|
34
|
+
"artifact": true
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"kind": "sniff",
|
|
38
|
+
"file": "{{workPath}}/scope.md",
|
|
39
|
+
"sniff": "nonempty",
|
|
40
|
+
"artifact": true
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"onReject": "scope",
|
|
44
|
+
"maxAttempts": 3
|
|
45
|
+
},
|
|
46
|
+
"next": "measure"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "measure",
|
|
50
|
+
"name": "Measure the baseline",
|
|
51
|
+
"description": "profile each workload, locate the real bottlenecks",
|
|
52
|
+
"prompt": "Step 1: Establish a baseline by MEASURING each metric in the checklist (run Lighthouse/devtools/a profiler, time the endpoint, inspect the network waterfall and bundle, log query times). If no live env, statically analyze: bundle composition, algorithmic complexity of hot paths, query patterns, and render triggers. Step 2: For each metric over budget, drill into WHY — which asset is heaviest, which function dominates the flame chart, which query is slow or repeated, which component re-renders needlessly. Step 3: Record the actual numbers (e.g. 'LCP 4.1s; main.js is 480KB, 60% is moment.js+lodash'; 'GET /feed: 1.2s, runs 1+N queries, N≈40'). Step 4: For each bottleneck, identify the fix and ESTIMATE the expected gain and the effort. Step 5: Separate confirmed bottlenecks from suspicions you could not measure. Good looks like: every claim has a number behind it. Stage measurements to `write_task_note`. Do not write the report yet.\n\nThe deliverable `{{workPath}}/measure.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
|
|
53
|
+
"suggestedRole": "developer",
|
|
54
|
+
"advanceWhen": {
|
|
55
|
+
"file": "{{workPath}}/measure.md",
|
|
56
|
+
"minBytes": 1,
|
|
57
|
+
"sniff": "nonempty",
|
|
58
|
+
"artifact": true
|
|
59
|
+
},
|
|
60
|
+
"gate": {
|
|
61
|
+
"at": "completion",
|
|
62
|
+
"checks": [
|
|
63
|
+
{
|
|
64
|
+
"kind": "minBytes",
|
|
65
|
+
"file": "{{workPath}}/measure.md",
|
|
66
|
+
"bytes": 120,
|
|
67
|
+
"artifact": true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"kind": "sniff",
|
|
71
|
+
"file": "{{workPath}}/measure.md",
|
|
72
|
+
"sniff": "nonempty",
|
|
73
|
+
"artifact": true
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"onReject": "measure",
|
|
77
|
+
"maxAttempts": 3
|
|
78
|
+
},
|
|
79
|
+
"next": "report"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "report",
|
|
83
|
+
"name": "Write the perf report",
|
|
84
|
+
"description": "rank optimizations by impact vs effort",
|
|
85
|
+
"prompt": "Step 1: Open `{{workPath}}/perf-report.md` and write a '## Summary' table of each metric: budget vs measured vs PASS/FAIL. Step 2: Add a '## Recommendations' section ranked by impact-vs-effort; each entry: the bottleneck (with its measured number), the specific fix (e.g. 'code-split the editor route and lazy-load it', 'replace the 1+N with a single JOIN/batch', 'serve images as WebP at 2x and add width/height'), the ESTIMATED gain, and the effort. Step 3: Add a '## Quick wins' callout for the high-impact/low-effort items to do first. Step 4: Add a '## Needs measurement' section for suspicions not yet confirmed. Every recommendation must cite a measured number and an expected payoff — no generic 'optimize images'. On a loop-back, fix only the named gaps. `write_task_note` the report path and the count of failing metrics.\n\nThe deliverable `{{workPath}}/perf-report.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
|
|
86
|
+
"suggestedRole": "reviewer",
|
|
87
|
+
"advanceWhen": {
|
|
88
|
+
"file": "{{workPath}}/perf-report.md",
|
|
89
|
+
"minBytes": 1,
|
|
90
|
+
"sniff": "nonempty",
|
|
91
|
+
"artifact": true,
|
|
92
|
+
"requireChange": true
|
|
93
|
+
},
|
|
94
|
+
"gate": {
|
|
95
|
+
"at": "completion",
|
|
96
|
+
"checks": [
|
|
97
|
+
{
|
|
98
|
+
"kind": "minBytes",
|
|
99
|
+
"file": "{{workPath}}/perf-report.md",
|
|
100
|
+
"bytes": 1500,
|
|
101
|
+
"artifact": true
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"kind": "contains",
|
|
105
|
+
"file": "{{workPath}}/perf-report.md",
|
|
106
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
107
|
+
"flags": "i",
|
|
108
|
+
"label": "at least one markdown heading",
|
|
109
|
+
"artifact": true
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"kind": "citationsResolve",
|
|
113
|
+
"file": "{{workPath}}/perf-report.md",
|
|
114
|
+
"minCitations": 2,
|
|
115
|
+
"artifact": true
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"onReject": "report",
|
|
119
|
+
"maxAttempts": 4
|
|
120
|
+
},
|
|
121
|
+
"next": "evaluate"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"id": "evaluate",
|
|
125
|
+
"name": "Evaluate",
|
|
126
|
+
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
127
|
+
"prompt": "Open `{{workPath}}/perf-report.md` with `read_artifact` first, then review it against the original scope: every claim cites a real path, the severities and priorities are defensible, and nothing important in scope was skipped. Open the underlying files for at least the top findings; do not grade from the report's own summary. If a finding cannot be verified, say so explicitly.\n\nWrite your review to the artifact `{{workPath}}/review.md` with one `write_artifact` call: what you checked, what held, what did not (as a findings table with columns `| Severity | File | Line | Problem | Fix |` when anything needs fixing), ending with exactly `Verdict: PASS` or `Verdict: REVISE`. The gate enforces the verdict: a well-formed REVISE is routed back to the `report` step automatically with your findings. On PASS, `advance_task_step` to `finish`.",
|
|
128
|
+
"suggestedRole": "reviewer",
|
|
129
|
+
"consumes": [
|
|
130
|
+
{
|
|
131
|
+
"file": "{{workPath}}/perf-report.md",
|
|
132
|
+
"artifact": true
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"next": "finish",
|
|
136
|
+
"gate": {
|
|
137
|
+
"at": "completion",
|
|
138
|
+
"checks": [
|
|
139
|
+
{
|
|
140
|
+
"kind": "minBytes",
|
|
141
|
+
"file": "{{workPath}}/review.md",
|
|
142
|
+
"bytes": 300,
|
|
143
|
+
"artifact": true
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"kind": "contains",
|
|
147
|
+
"file": "{{workPath}}/review.md",
|
|
148
|
+
"pattern": "Verdict:\\s*(?:PASS|REVISE)",
|
|
149
|
+
"flags": "i",
|
|
150
|
+
"label": "explicit PASS or REVISE verdict",
|
|
151
|
+
"artifact": true
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
"scripts": [
|
|
155
|
+
{
|
|
156
|
+
"name": "checkFixReview",
|
|
157
|
+
"scope": "standard",
|
|
158
|
+
"inputs": {
|
|
159
|
+
"taskRef": "{{task.ref}}",
|
|
160
|
+
"reviewPath": "{{workPath}}/review.md",
|
|
161
|
+
"fixStepId": "report"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"onReject": "evaluate",
|
|
166
|
+
"maxAttempts": 4
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": "finish",
|
|
171
|
+
"name": "Finish",
|
|
172
|
+
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
173
|
+
"prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
|
|
174
|
+
"suggestedRole": "developer",
|
|
175
|
+
"terminal": true
|
|
176
|
+
}
|
|
177
|
+
],
|
|
178
|
+
"version": "1.1.0",
|
|
179
|
+
"releasedAt": "2026-08-24T00:00:00.000Z",
|
|
180
|
+
"paramSchema": {
|
|
181
|
+
"type": "object",
|
|
182
|
+
"properties": {
|
|
183
|
+
"workPath": {
|
|
184
|
+
"type": "string",
|
|
185
|
+
"title": "Working folder",
|
|
186
|
+
"description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
|
|
187
|
+
"default": "{{task.dir}}"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"minGezelVersion": "1.26236",
|
|
192
|
+
"runModes": {
|
|
193
|
+
"nightShift": "supported"
|
|
194
|
+
}
|
|
195
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Performance Audit smoke eval",
|
|
4
|
+
"objective": "Self-contained smoke eval for the Performance Audit craftbook using the external generic harness.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"external"
|
|
7
|
+
],
|
|
8
|
+
"prompt": "Theres a fake ops service wired up for this so nothing real gets touched — the endpoints are in mocks/services.md, and the ready-made mock-probe script talks to them for you. Can you run the automation against it and write up how it went in automation.md?",
|
|
9
|
+
"setup": {
|
|
10
|
+
"projectName": "Performance Audit Eval",
|
|
11
|
+
"about": "Self-contained eval project for perf-audit. Seeded inputs are under workspace/source or workspace/fixtures; final deliverable is workspace/automation.md.",
|
|
12
|
+
"missionObjectives": "Use the Performance Audit craftbook/template, read the seeded local fixtures, and write automation.md without network calls, real credentials, or live services.",
|
|
13
|
+
"files": [
|
|
14
|
+
{
|
|
15
|
+
"path": "source/brief.md",
|
|
16
|
+
"content": "# Performance Audit Eval Brief\n\nClient: Boreal Desk, a home-office accessories company.\nAudience: operations leads who need an artifact they can use this week.\n\nFixed source facts for grounding:\n- The returns desk pilot covered 18 SKUs.\n- Median first response improved from 18 hours to 6 hours.\n- Preventable refund leakage fell from 14.2% to 8.9%.\n- The top unresolved complaint is status silence after photo submission.\n- Required next actions are automated status emails, barcode-exception training, and a weekly Finance exception export.\n\nUse these facts when the task asks for prose, analysis, copy, UI content, or test data. Do not use live web services, real credentials, or current outside data.\n\nCraftbook under test: perf-audit - Performance Audit.\n"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"worker": {
|
|
20
|
+
"name": "Jules",
|
|
21
|
+
"role": "Developer"
|
|
22
|
+
},
|
|
23
|
+
"craftbookParams": {
|
|
24
|
+
"workPath": "tasks/eval"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"mocks": [
|
|
28
|
+
{
|
|
29
|
+
"kind": "http",
|
|
30
|
+
"id": "ops",
|
|
31
|
+
"description": "Fake operations service for this eval. GET /api/bookings/open lists the open work items; POST /api/bookings/dry-run records a simulated submission and returns DRY_RUN_OK.",
|
|
32
|
+
"credential": {
|
|
33
|
+
"name": "mock.ops"
|
|
34
|
+
},
|
|
35
|
+
"routes": [
|
|
36
|
+
{
|
|
37
|
+
"method": "GET",
|
|
38
|
+
"path": "/api/bookings/open",
|
|
39
|
+
"body": {
|
|
40
|
+
"items": [
|
|
41
|
+
"BKG-1001",
|
|
42
|
+
"BKG-1002",
|
|
43
|
+
"BKG-1003"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"method": "POST",
|
|
49
|
+
"path": "/api/bookings/dry-run",
|
|
50
|
+
"status": 201,
|
|
51
|
+
"body": {
|
|
52
|
+
"status": "DRY_RUN_OK",
|
|
53
|
+
"recorded": 3
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"kind": "webhook",
|
|
60
|
+
"id": "notify",
|
|
61
|
+
"description": "Notification receiver. POST a JSON completion notice here when the run finishes.",
|
|
62
|
+
"path": "/hooks/notify"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"kind": "cli",
|
|
66
|
+
"id": "probe",
|
|
67
|
+
"description": "Provenance-trusted project script `mock-probe` that exercises the fake ops service through http.authed and returns the raw responses.",
|
|
68
|
+
"shim": {
|
|
69
|
+
"path": "scripts/mock-probe.ts",
|
|
70
|
+
"content": "import { defineScript, gezel } from '@bendyline/gezel-sdk';\n\nexport const meta = defineScript({\n name: 'mock-probe',\n description:\n 'Probe the live fake ops service for this eval: lists the open work items and records a dry-run submission. Outputs the raw JSON responses as evidence for the write-up.',\n inputs: {},\n outputs: {\n open: { type: 'string', description: 'Raw JSON body from the open-items listing.' },\n dryRun: { type: 'string', description: 'Raw JSON body from the dry-run submission.' },\n },\n requires: ['workspace.read', 'network', 'credential:mock.ops'],\n});\n\nconst services = JSON.parse(await gezel.fs.read('mocks/services.json'));\nconst base = (id) => {\n const service = services.find((entry) => entry.id === id);\n if (!service) throw new Error(`mock service \"${id}\" is not listed in mocks/services.json`);\n return service.baseUrl;\n};\n\nconst open = await gezel.http.authed(`${base('ops')}/api/bookings/open`, {\n credential: 'mock.ops',\n});\nif (!open.ok) throw new Error(`open-items listing failed: ${open.status} ${open.body}`);\n\nconst dryRun = await gezel.http.authed(`${base('ops')}/api/bookings/dry-run`, {\n credential: 'mock.ops',\n method: 'POST',\n body: JSON.stringify({ items: JSON.parse(open.body).items, mode: 'dry-run' }),\n});\nif (!dryRun.ok) throw new Error(`dry-run submission failed: ${dryRun.status} ${dryRun.body}`);\n\ngezel.output({ open: open.body, dryRun: dryRun.body });\n"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"success": {
|
|
75
|
+
"summary": "automation.md is grounded in live fake-service responses: the open items were actually listed and a dry-run actually recorded (request-log assertions), with safety guards and signals described.",
|
|
76
|
+
"deliverables": [
|
|
77
|
+
{
|
|
78
|
+
"path": "automation.md",
|
|
79
|
+
"kind": "markdown-report",
|
|
80
|
+
"minBytes": 900,
|
|
81
|
+
"checks": [
|
|
82
|
+
{
|
|
83
|
+
"kind": "contains",
|
|
84
|
+
"file": "automation.md",
|
|
85
|
+
"pattern": "(?:^|\\n)#{1,3}\\s+\\S",
|
|
86
|
+
"flags": "i"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"kind": "contains",
|
|
90
|
+
"file": "automation.md",
|
|
91
|
+
"pattern": "DRY_RUN_OK|dry-run|dry run",
|
|
92
|
+
"flags": "i"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"kind": "contains",
|
|
96
|
+
"file": "automation.md",
|
|
97
|
+
"pattern": "fake-ci|fake-github|/api/bookings",
|
|
98
|
+
"flags": "i"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"kind": "contains",
|
|
102
|
+
"file": "automation.md",
|
|
103
|
+
"pattern": "no real|credentials|safety|guard",
|
|
104
|
+
"flags": "i"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"kind": "contains",
|
|
108
|
+
"file": "automation.md",
|
|
109
|
+
"pattern": "success|failure|retry|abort",
|
|
110
|
+
"flags": "i"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"mocks": [
|
|
116
|
+
{
|
|
117
|
+
"service": "ops",
|
|
118
|
+
"minRequests": 2,
|
|
119
|
+
"requiredPaths": [
|
|
120
|
+
"^/api/bookings/open$",
|
|
121
|
+
"^/api/bookings/dry-run$"
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"rubric": {
|
|
127
|
+
"artifact": {
|
|
128
|
+
"path": "automation.md",
|
|
129
|
+
"kind": "markdown"
|
|
130
|
+
},
|
|
131
|
+
"axes": [
|
|
132
|
+
{
|
|
133
|
+
"name": "safety",
|
|
134
|
+
"description": "Dry-run posture is explicit: no real credentials, clear stop-before-side-effect boundary."
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"name": "mapping",
|
|
138
|
+
"description": "Fake endpoints/commands are mapped completely to the workflow steps."
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "signals",
|
|
142
|
+
"description": "Success, failure, retry, and abort conditions are all defined."
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"name": "containment",
|
|
146
|
+
"description": "The plan cannot accidentally reach a real service from a mock context."
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
"qualityFocus": [
|
|
151
|
+
"dry-run safety",
|
|
152
|
+
"fake tool mapping",
|
|
153
|
+
"side-effect containment"
|
|
154
|
+
],
|
|
155
|
+
"extensions": {
|
|
156
|
+
"legacySimulators": [
|
|
157
|
+
{
|
|
158
|
+
"id": "perf-audit-fake-service-fixture",
|
|
159
|
+
"kind": "data-source",
|
|
160
|
+
"status": "implemented",
|
|
161
|
+
"description": "Seeded local fake service contract replacing live CLIs, HTTP APIs, credentials, and side effects."
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -3,15 +3,16 @@
|
|
|
3
3
|
"kind": "craftbook-template",
|
|
4
4
|
"id": "perf-optimization",
|
|
5
5
|
"role": "maintenance-review",
|
|
6
|
+
"category": "code-quality",
|
|
6
7
|
"name": "Targeted Performance Fix",
|
|
7
|
-
"description": "Make a measured, targeted performance improvement
|
|
8
|
+
"description": "Make a measured, targeted performance improvement: baseline numbers recorded with their method before anything changes, one bottleneck fixed in reversible stages with the suite green, the same measurement re-run to prove the gain, and an enforced independent review.",
|
|
8
9
|
"tags": [
|
|
9
|
-
"gallery",
|
|
10
10
|
"performance",
|
|
11
11
|
"optimization",
|
|
12
12
|
"profiling",
|
|
13
13
|
"benchmark",
|
|
14
|
-
"speed"
|
|
14
|
+
"speed",
|
|
15
|
+
"tests"
|
|
15
16
|
],
|
|
16
17
|
"maintainer": {
|
|
17
18
|
"name": "Gezel"
|