@dsalazardev/ai-hub-cli 0.0.0-stage → 0.2.0
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/LICENSE +21 -0
- package/NOTICE.md +34 -0
- package/README.md +64 -2
- package/agents/cpp-build-resolver.md +25 -0
- package/agents/cpp-reviewer.md +28 -0
- package/agents/csharp-reviewer.md +28 -0
- package/agents/django-build-resolver.md +25 -0
- package/agents/django-reviewer.md +28 -0
- package/agents/explorer-domain.md +28 -0
- package/agents/fastapi-reviewer.md +28 -0
- package/agents/flutter-build-resolver.md +25 -0
- package/agents/flutter-reviewer.md +28 -0
- package/agents/go-build-resolver.md +25 -0
- package/agents/go-reviewer.md +28 -0
- package/agents/implementer-backend.md +30 -0
- package/agents/implementer-frontend.md +30 -0
- package/agents/java-build-resolver.md +26 -0
- package/agents/java-reviewer.md +29 -0
- package/agents/kotlin-build-resolver.md +25 -0
- package/agents/kotlin-reviewer.md +28 -0
- package/agents/mle-reviewer.md +28 -0
- package/agents/php-reviewer.md +29 -0
- package/agents/postgres-reviewer.md +28 -0
- package/agents/python-reviewer.md +28 -0
- package/agents/pytorch-build-resolver.md +25 -0
- package/agents/rag-reviewer.md +28 -0
- package/agents/react-build-resolver.md +26 -0
- package/agents/react-reviewer.md +29 -0
- package/agents/reviewer-architecture.md +32 -0
- package/agents/reviewer-tests.md +31 -0
- package/agents/rust-build-resolver.md +25 -0
- package/agents/rust-reviewer.md +28 -0
- package/agents/spec-author.md +36 -0
- package/agents/spec-miner.md +14 -0
- package/agents/swift-build-resolver.md +25 -0
- package/agents/swift-reviewer.md +28 -0
- package/agents/typescript-reviewer.md +28 -0
- package/agents/vue-reviewer.md +28 -0
- package/dist/backup/snapshots.d.ts +24 -0
- package/dist/backup/snapshots.js +171 -0
- package/dist/bin/ai-hub.d.ts +2 -0
- package/dist/bin/ai-hub.js +11 -0
- package/dist/catalog.d.ts +76 -0
- package/dist/catalog.js +321 -0
- package/dist/cli/args.d.ts +4 -0
- package/dist/cli/args.js +63 -0
- package/dist/cli/context.d.ts +7 -0
- package/dist/cli/context.js +79 -0
- package/dist/cli/doctor.d.ts +14 -0
- package/dist/cli/doctor.js +282 -0
- package/dist/cli/drift.d.ts +2 -0
- package/dist/cli/drift.js +34 -0
- package/dist/cli/items.d.ts +5 -0
- package/dist/cli/items.js +10 -0
- package/dist/cli/legacy.d.ts +3 -0
- package/dist/cli/legacy.js +18 -0
- package/dist/cli/maintenance.d.ts +8 -0
- package/dist/cli/maintenance.js +334 -0
- package/dist/cli/memory.d.ts +2 -0
- package/dist/cli/memory.js +89 -0
- package/dist/cli/onboarding.d.ts +36 -0
- package/dist/cli/onboarding.js +516 -0
- package/dist/cli/run.d.ts +15 -0
- package/dist/cli/run.js +185 -0
- package/dist/cli/source.d.ts +5 -0
- package/dist/cli/source.js +22 -0
- package/dist/cli/trunk.d.ts +8 -0
- package/dist/cli/trunk.js +54 -0
- package/dist/cli/types.d.ts +17 -0
- package/dist/cli/types.js +4 -0
- package/dist/cli/worktrees.d.ts +11 -0
- package/dist/cli/worktrees.js +141 -0
- package/dist/concurrency.d.ts +5 -0
- package/dist/concurrency.js +23 -0
- package/dist/engine/engine.d.ts +48 -0
- package/dist/engine/engine.js +114 -0
- package/dist/engine/gates.d.ts +2 -0
- package/dist/engine/gates.js +131 -0
- package/dist/frontmatter.d.ts +11 -0
- package/dist/frontmatter.js +30 -0
- package/dist/harness/guards/adapters/context.d.ts +19 -0
- package/dist/harness/guards/adapters/context.js +153 -0
- package/dist/harness/guards/adapters/hermes.d.ts +13 -0
- package/dist/harness/guards/adapters/hermes.js +18 -0
- package/dist/harness/guards/adapters/hooks.d.ts +25 -0
- package/dist/harness/guards/adapters/hooks.js +52 -0
- package/dist/harness/guards/branch.d.ts +5 -0
- package/dist/harness/guards/branch.js +43 -0
- package/dist/harness/guards/danger.d.ts +13 -0
- package/dist/harness/guards/danger.js +157 -0
- package/dist/harness/guards/index.d.ts +6 -0
- package/dist/harness/guards/index.js +6 -0
- package/dist/harness/guards/preflight.d.ts +14 -0
- package/dist/harness/guards/preflight.js +37 -0
- package/dist/harness/guards/ship.d.ts +2 -0
- package/dist/harness/guards/ship.js +35 -0
- package/dist/harness/guards/trunk.d.ts +5 -0
- package/dist/harness/guards/trunk.js +41 -0
- package/dist/harness/guards/types.d.ts +50 -0
- package/dist/harness/guards/types.js +1 -0
- package/dist/harness/memory/ledger.d.ts +53 -0
- package/dist/harness/memory/ledger.js +136 -0
- package/dist/harness/memory/state.d.ts +35 -0
- package/dist/harness/memory/state.js +121 -0
- package/dist/harness/worktree/reaper.d.ts +32 -0
- package/dist/harness/worktree/reaper.js +54 -0
- package/dist/manifest/build.d.ts +1 -0
- package/dist/manifest/build.js +1 -0
- package/dist/manifest/cli.d.ts +2 -0
- package/dist/manifest/cli.js +44 -0
- package/dist/manifest/dispatch.d.ts +13 -0
- package/dist/manifest/dispatch.js +36 -0
- package/dist/manifest/labels.d.ts +15 -0
- package/dist/manifest/labels.js +70 -0
- package/dist/manifest/manifest.d.ts +130 -0
- package/dist/manifest/manifest.js +220 -0
- package/dist/package-info.d.ts +4 -0
- package/dist/package-info.js +7 -0
- package/dist/paths.d.ts +33 -0
- package/dist/paths.js +123 -0
- package/dist/presets/detect.d.ts +24 -0
- package/dist/presets/detect.js +116 -0
- package/dist/presets/materialize.d.ts +26 -0
- package/dist/presets/materialize.js +192 -0
- package/dist/presets/resolve.d.ts +37 -0
- package/dist/presets/resolve.js +83 -0
- package/dist/presets/schema.d.ts +57 -0
- package/dist/presets/schema.js +68 -0
- package/dist/source-checkout.d.ts +8 -0
- package/dist/source-checkout.js +19 -0
- package/dist/sync/config.d.ts +47 -0
- package/dist/sync/config.js +85 -0
- package/dist/sync/lock.d.ts +16 -0
- package/dist/sync/lock.js +43 -0
- package/dist/sync/render.d.ts +18 -0
- package/dist/sync/render.js +259 -0
- package/dist/sync/sync.d.ts +38 -0
- package/dist/sync/sync.js +288 -0
- package/dist/sync/targets.d.ts +24 -0
- package/dist/sync/targets.js +78 -0
- package/engine/coupling.json +4 -0
- package/engine/engine.yaml +250 -0
- package/engine/legacy-paths.json +4 -0
- package/engine/preflight.md +11 -0
- package/manifest.json +402 -0
- package/package.json +62 -4
- package/presets/angular-express/harness/rules/01-zero-any.sh +25 -0
- package/presets/angular-express/harness/rules/02-no-ng-module.sh +21 -0
- package/presets/angular-express/harness/rules/03-no-constructor-injection.sh +21 -0
- package/presets/angular-express/harness/rules/04-no-legacy-directives.sh +21 -0
- package/presets/angular-express/harness/rules/05-no-dolibarrdal-inheritance.sh +25 -0
- package/presets/angular-express/harness/rules/06-no-todos.sh +22 -0
- package/presets/angular-express/harness/run-all.sh +13 -0
- package/presets/angular-express/preset.yaml +53 -0
- package/presets/angular-express/references/common-imports-catalog.md +146 -0
- package/presets/angular-express/references/fichajes-migration-notes.md +57 -0
- package/presets/angular-express/references/module-implementation-flow.md +260 -0
- package/presets/angular-express/references/products-coding-standard.md +143 -0
- package/presets/angular-express/references/products-module-blueprint.md +860 -0
- package/presets/angular-express/references/replicate-module-checklist.md +72 -0
- package/presets/angular-express/references/users-migration-notes.md +172 -0
- package/presets/angular-express/rules/architecture.md +8 -0
- package/presets/angular-express/rules/backend.md +4 -0
- package/presets/angular-express/rules/frontend.md +53 -0
- package/presets/angular-express/skills/angular-developer/SKILL.md +130 -0
- package/presets/angular-express/skills/angular-developer/references/angular-animations.md +160 -0
- package/presets/angular-express/skills/angular-developer/references/angular-aria.md +410 -0
- package/presets/angular-express/skills/angular-developer/references/cli.md +86 -0
- package/presets/angular-express/skills/angular-developer/references/component-harnesses.md +59 -0
- package/presets/angular-express/skills/angular-developer/references/component-styling.md +91 -0
- package/presets/angular-express/skills/angular-developer/references/components.md +117 -0
- package/presets/angular-express/skills/angular-developer/references/creating-services.md +97 -0
- package/presets/angular-express/skills/angular-developer/references/data-resolvers.md +69 -0
- package/presets/angular-express/skills/angular-developer/references/define-routes.md +67 -0
- package/presets/angular-express/skills/angular-developer/references/defining-providers.md +72 -0
- package/presets/angular-express/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/presets/angular-express/skills/angular-developer/references/e2e-testing.md +66 -0
- package/presets/angular-express/skills/angular-developer/references/effects.md +83 -0
- package/presets/angular-express/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/presets/angular-express/skills/angular-developer/references/host-elements.md +80 -0
- package/presets/angular-express/skills/angular-developer/references/injection-context.md +63 -0
- package/presets/angular-express/skills/angular-developer/references/inputs.md +101 -0
- package/presets/angular-express/skills/angular-developer/references/linked-signal.md +59 -0
- package/presets/angular-express/skills/angular-developer/references/loading-strategies.md +61 -0
- package/presets/angular-express/skills/angular-developer/references/mcp.md +106 -0
- package/presets/angular-express/skills/angular-developer/references/migrations.md +30 -0
- package/presets/angular-express/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/presets/angular-express/skills/angular-developer/references/outputs.md +86 -0
- package/presets/angular-express/skills/angular-developer/references/reactive-forms.md +122 -0
- package/presets/angular-express/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/presets/angular-express/skills/angular-developer/references/resource.md +74 -0
- package/presets/angular-express/skills/angular-developer/references/route-animations.md +56 -0
- package/presets/angular-express/skills/angular-developer/references/route-guards.md +52 -0
- package/presets/angular-express/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/presets/angular-express/skills/angular-developer/references/router-testing.md +87 -0
- package/presets/angular-express/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/presets/angular-express/skills/angular-developer/references/signal-forms.md +897 -0
- package/presets/angular-express/skills/angular-developer/references/signals-overview.md +94 -0
- package/presets/angular-express/skills/angular-developer/references/tailwind-css.md +69 -0
- package/presets/angular-express/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/presets/angular-express/skills/angular-developer/references/testing-fundamentals.md +66 -0
- package/presets/angular-express/skills/angular-new-app/SKILL.md +62 -0
- package/presets/angular-express/skills/frontend-design/LICENSE.txt +177 -0
- package/presets/angular-express/skills/frontend-design/SKILL.md +55 -0
- package/presets/angular-express/skills/onna-architecture-angular/SKILL.md +229 -0
- package/presets/angular-express/skills/onna-architecture-bff/SKILL.md +446 -0
- package/presets/angular-express/skills/onna-architecture-common/SKILL.md +313 -0
- package/presets/angular-express/skills/onna-design-system/SKILL.md +615 -0
- package/presets/base/preset.yaml +25 -0
- package/presets/base/rules/core.md +35 -0
- package/presets/generic-ts/preset.yaml +44 -0
- package/presets/python/preset.yaml +45 -0
- package/presets/python/rules/python.md +10 -0
- package/rules/skill-quality/skill-behavior-rubric.md +63 -0
- package/rules/skill-quality/skill-harden-rubric.md +102 -0
- package/rules/skill-quality/skill-migration-brief.md +200 -0
- package/rules/skill-quality/skill-rubric.md +40 -0
- package/schema/engine.schema.json +73 -0
- package/schema/manifest.schema.json +152 -0
- package/schema/preset.schema.json +98 -0
- package/schema/state.schema.json +27 -0
- package/skills/shared/ab-testing/SKILL.md +159 -0
- package/skills/shared/ab-testing/evals/README.md +8 -0
- package/skills/shared/ab-testing/evals/cases.yaml +49 -0
- package/skills/shared/ab-testing/references/pitfalls.md +74 -0
- package/skills/shared/ab-testing/references/sample-size-and-cuped.md +128 -0
- package/skills/shared/ab-testing/scripts/verify.sh +89 -0
- package/skills/shared/accessibility/SKILL.md +216 -0
- package/skills/shared/accessibility/evals/README.md +3 -0
- package/skills/shared/accessibility/evals/cases.yaml +47 -0
- package/skills/shared/accessibility/references/aria-patterns.md +113 -0
- package/skills/shared/accessibility/references/wcag22-checklist.md +83 -0
- package/skills/shared/accessibility/scripts/verify.sh +103 -0
- package/skills/shared/agent-eval/SKILL.md +187 -0
- package/skills/shared/agent-eval/evals/README.md +12 -0
- package/skills/shared/agent-eval/evals/cases.yaml +45 -0
- package/skills/shared/agent-eval/references/judge-design.md +118 -0
- package/skills/shared/agent-eval/references/runner-and-gate.md +183 -0
- package/skills/shared/agent-eval/scripts/verify.sh +161 -0
- package/skills/shared/agent-safety/SKILL.md +169 -0
- package/skills/shared/agent-safety/evals/README.md +12 -0
- package/skills/shared/agent-safety/evals/cases.yaml +46 -0
- package/skills/shared/agent-safety/references/threat-model.md +51 -0
- package/skills/shared/analyze/SKILL.md +123 -0
- package/skills/shared/analyze/evals/README.md +72 -0
- package/skills/shared/analyze/evals/cases.yaml +74 -0
- package/skills/shared/angular/SKILL.md +275 -0
- package/skills/shared/angular/evals/README.md +3 -0
- package/skills/shared/angular/evals/cases.yaml +38 -0
- package/skills/shared/angular/references/migration.md +81 -0
- package/skills/shared/angular/references/signals-rxjs.md +92 -0
- package/skills/shared/angular/scripts/verify.sh +122 -0
- package/skills/shared/api-connector-builder/SKILL.md +268 -0
- package/skills/shared/api-connector-builder/evals/README.md +11 -0
- package/skills/shared/api-connector-builder/evals/cases.yaml +47 -0
- package/skills/shared/api-connector-builder/references/auth-flows.md +132 -0
- package/skills/shared/api-connector-builder/references/pagination.md +144 -0
- package/skills/shared/api-connector-builder/scripts/verify.sh +172 -0
- package/skills/shared/api-design/SKILL.md +182 -0
- package/skills/shared/api-design/evals/README.md +3 -0
- package/skills/shared/api-design/evals/cases.yaml +45 -0
- package/skills/shared/api-design/references/graphql-design.md +70 -0
- package/skills/shared/api-design/references/openapi-contract.md +86 -0
- package/skills/shared/api-design/references/rest-conventions.md +63 -0
- package/skills/shared/api-design/references/versioning-and-evolution.md +49 -0
- package/skills/shared/api-design/scripts/verify.sh +138 -0
- package/skills/shared/astro/SKILL.md +257 -0
- package/skills/shared/astro/evals/README.md +3 -0
- package/skills/shared/astro/evals/cases.yaml +41 -0
- package/skills/shared/astro/references/content-layer.md +118 -0
- package/skills/shared/astro/references/deploy-and-integrations.md +163 -0
- package/skills/shared/astro/scripts/verify.sh +137 -0
- package/skills/shared/author-skill/SKILL.md +194 -0
- package/skills/shared/author-skill/evals/README.md +66 -0
- package/skills/shared/author-skill/evals/cases.yaml +75 -0
- package/skills/shared/author-skill/references/description-recipe.md +85 -0
- package/skills/shared/author-skill/references/eval-authoring.md +108 -0
- package/skills/shared/author-skill/references/skill-conventions.md +95 -0
- package/skills/shared/automation-flows/SKILL.md +122 -0
- package/skills/shared/automation-flows/evals/README.md +5 -0
- package/skills/shared/automation-flows/evals/cases.yaml +44 -0
- package/skills/shared/automation-flows/references/error-handling.md +58 -0
- package/skills/shared/automation-flows/references/n8n-workflow-json.md +63 -0
- package/skills/shared/automation-flows/scripts/verify.sh +78 -0
- package/skills/shared/aws-essentials/SKILL.md +206 -0
- package/skills/shared/aws-essentials/evals/README.md +10 -0
- package/skills/shared/aws-essentials/evals/cases.yaml +44 -0
- package/skills/shared/aws-essentials/references/iam-least-privilege.md +134 -0
- package/skills/shared/aws-essentials/references/rds-cloudfront-recipes.md +127 -0
- package/skills/shared/aws-essentials/scripts/verify.sh +99 -0
- package/skills/shared/backups/SKILL.md +131 -0
- package/skills/shared/backups/evals/README.md +3 -0
- package/skills/shared/backups/evals/cases.yaml +42 -0
- package/skills/shared/backups/references/engine-recipes.md +121 -0
- package/skills/shared/backups/references/restore-runbook.md +65 -0
- package/skills/shared/backups/scripts/verify.sh +80 -0
- package/skills/shared/bash-scripting/SKILL.md +227 -0
- package/skills/shared/bash-scripting/evals/README.md +3 -0
- package/skills/shared/bash-scripting/evals/cases.yaml +45 -0
- package/skills/shared/bash-scripting/references/portability.md +97 -0
- package/skills/shared/bash-scripting/scripts/verify.sh +140 -0
- package/skills/shared/building-agents/SKILL.md +386 -0
- package/skills/shared/building-agents/evals/README.md +68 -0
- package/skills/shared/building-agents/evals/cases.yaml +60 -0
- package/skills/shared/building-agents/references/agent-loops-and-harness.md +371 -0
- package/skills/shared/building-agents/references/evals-and-observability.md +420 -0
- package/skills/shared/building-agents/references/mcp-servers.md +294 -0
- package/skills/shared/building-agents/references/provider-abstraction.md +489 -0
- package/skills/shared/building-agents/references/tools-and-rag.md +417 -0
- package/skills/shared/building-agents/scripts/verify.sh +121 -0
- package/skills/shared/chatbot/SKILL.md +151 -0
- package/skills/shared/chatbot/evals/README.md +13 -0
- package/skills/shared/chatbot/evals/cases.yaml +43 -0
- package/skills/shared/chatbot/references/handoff-and-sales.md +71 -0
- package/skills/shared/chatbot/references/system-prompt-and-guardrails.md +78 -0
- package/skills/shared/chatbot/scripts/verify.sh +162 -0
- package/skills/shared/chrome-extension/SKILL.md +169 -0
- package/skills/shared/chrome-extension/evals/README.md +12 -0
- package/skills/shared/chrome-extension/evals/cases.yaml +40 -0
- package/skills/shared/chrome-extension/references/store-and-migration.md +84 -0
- package/skills/shared/chrome-extension/scripts/verify.sh +62 -0
- package/skills/shared/clarify/SKILL.md +161 -0
- package/skills/shared/clarify/evals/README.md +70 -0
- package/skills/shared/clarify/evals/cases.yaml +71 -0
- package/skills/shared/clickhouse-analytics/SKILL.md +159 -0
- package/skills/shared/clickhouse-analytics/evals/README.md +3 -0
- package/skills/shared/clickhouse-analytics/evals/cases.yaml +45 -0
- package/skills/shared/clickhouse-analytics/references/ingestion-and-mvs.md +109 -0
- package/skills/shared/clickhouse-analytics/references/query-optimization.md +76 -0
- package/skills/shared/clickhouse-analytics/references/schema-and-engines.md +63 -0
- package/skills/shared/clickhouse-analytics/scripts/verify.sh +109 -0
- package/skills/shared/cloudflare/SKILL.md +186 -0
- package/skills/shared/cloudflare/evals/README.md +15 -0
- package/skills/shared/cloudflare/evals/cases.yaml +46 -0
- package/skills/shared/cloudflare/references/storage-primitives.md +104 -0
- package/skills/shared/cloudflare/references/wrangler-config.md +91 -0
- package/skills/shared/cloudflare/scripts/verify.sh +133 -0
- package/skills/shared/code-review/SKILL.md +132 -0
- package/skills/shared/code-review/evals/README.md +3 -0
- package/skills/shared/code-review/evals/cases.yaml +55 -0
- package/skills/shared/code-review/references/pr-workflow.md +67 -0
- package/skills/shared/codebase-onboarding/SKILL.md +128 -0
- package/skills/shared/codebase-onboarding/evals/README.md +3 -0
- package/skills/shared/codebase-onboarding/evals/cases.yaml +69 -0
- package/skills/shared/codebase-onboarding/references/recon-playbook.md +57 -0
- package/skills/shared/codebase-onboarding/scripts/verify.sh +54 -0
- package/skills/shared/compose-multiplatform/SKILL.md +198 -0
- package/skills/shared/compose-multiplatform/evals/README.md +3 -0
- package/skills/shared/compose-multiplatform/evals/cases.yaml +40 -0
- package/skills/shared/compose-multiplatform/references/ios-interop.md +91 -0
- package/skills/shared/compose-multiplatform/references/project-setup.md +96 -0
- package/skills/shared/compose-multiplatform/scripts/verify.sh +123 -0
- package/skills/shared/connect-tool/SKILL.md +163 -0
- package/skills/shared/connect-tool/evals/cases.yaml +58 -0
- package/skills/shared/constitution/SKILL.md +158 -0
- package/skills/shared/constitution/evals/README.md +68 -0
- package/skills/shared/constitution/evals/cases.yaml +72 -0
- package/skills/shared/constitution/references/constitution-template.md +100 -0
- package/skills/shared/context-budget/SKILL.md +114 -0
- package/skills/shared/context-budget/evals/README.md +11 -0
- package/skills/shared/context-budget/evals/cases.yaml +40 -0
- package/skills/shared/context-budget/references/handoff-and-compaction.md +96 -0
- package/skills/shared/continuous-learning/SKILL.md +106 -0
- package/skills/shared/continuous-learning/evals/README.md +16 -0
- package/skills/shared/continuous-learning/evals/cases.yaml +39 -0
- package/skills/shared/continuous-learning/references/lesson-routing.md +106 -0
- package/skills/shared/coolify/SKILL.md +194 -0
- package/skills/shared/coolify/evals/README.md +21 -0
- package/skills/shared/coolify/evals/cases.yaml +46 -0
- package/skills/shared/coolify/references/databases-and-backups.md +99 -0
- package/skills/shared/coolify/references/deploy-recipes.md +105 -0
- package/skills/shared/coolify/references/install-and-proxy.md +80 -0
- package/skills/shared/coolify/scripts/verify.sh +123 -0
- package/skills/shared/cost-tracking/SKILL.md +176 -0
- package/skills/shared/cost-tracking/evals/README.md +3 -0
- package/skills/shared/cost-tracking/evals/cases.yaml +45 -0
- package/skills/shared/cost-tracking/references/cloud-caps.md +52 -0
- package/skills/shared/cost-tracking/references/pricing-tables.md +51 -0
- package/skills/shared/cost-tracking/scripts/verify.sh +135 -0
- package/skills/shared/cpp/SKILL.md +302 -0
- package/skills/shared/cpp/evals/README.md +14 -0
- package/skills/shared/cpp/evals/cases.yaml +44 -0
- package/skills/shared/cpp/references/cmake.md +167 -0
- package/skills/shared/cpp/references/move-and-templates.md +130 -0
- package/skills/shared/cpp/references/undefined-behavior.md +86 -0
- package/skills/shared/cpp/scripts/verify.sh +165 -0
- package/skills/shared/csharp-dotnet/SKILL.md +272 -0
- package/skills/shared/csharp-dotnet/evals/README.md +3 -0
- package/skills/shared/csharp-dotnet/evals/cases.yaml +48 -0
- package/skills/shared/csharp-dotnet/references/aspnetcore.md +99 -0
- package/skills/shared/csharp-dotnet/references/async.md +82 -0
- package/skills/shared/csharp-dotnet/references/efcore.md +96 -0
- package/skills/shared/csharp-dotnet/scripts/verify.sh +90 -0
- package/skills/shared/data-cleaning/SKILL.md +259 -0
- package/skills/shared/data-cleaning/evals/README.md +16 -0
- package/skills/shared/data-cleaning/evals/cases.yaml +57 -0
- package/skills/shared/data-cleaning/references/normalization-recipes.md +136 -0
- package/skills/shared/data-cleaning/references/validation-patterns.md +134 -0
- package/skills/shared/data-cleaning/scripts/verify.sh +115 -0
- package/skills/shared/data-scraper/SKILL.md +130 -0
- package/skills/shared/data-scraper/evals/README.md +3 -0
- package/skills/shared/data-scraper/evals/cases.yaml +46 -0
- package/skills/shared/data-scraper/references/anti-bot.md +85 -0
- package/skills/shared/data-scraper/references/frameworks.md +116 -0
- package/skills/shared/data-scraper/references/legal-compliance.md +64 -0
- package/skills/shared/data-scraper/scripts/verify.sh +166 -0
- package/skills/shared/db-migrations/SKILL.md +237 -0
- package/skills/shared/db-migrations/evals/README.md +10 -0
- package/skills/shared/db-migrations/evals/cases.yaml +46 -0
- package/skills/shared/db-migrations/references/backfill-and-batching.md +105 -0
- package/skills/shared/db-migrations/references/expand-contract-playbook.md +152 -0
- package/skills/shared/db-migrations/references/tools-and-runners.md +88 -0
- package/skills/shared/db-migrations/scripts/verify.sh +112 -0
- package/skills/shared/debug/SKILL.md +188 -0
- package/skills/shared/debug/evals/README.md +88 -0
- package/skills/shared/debug/evals/cases.yaml +74 -0
- package/skills/shared/decision-challenge/SKILL.md +113 -0
- package/skills/shared/decision-challenge/evals/README.md +3 -0
- package/skills/shared/decision-challenge/evals/cases.yaml +42 -0
- package/skills/shared/decision-records/SKILL.md +202 -0
- package/skills/shared/decision-records/evals/README.md +3 -0
- package/skills/shared/decision-records/evals/cases.yaml +43 -0
- package/skills/shared/decision-records/references/templates.md +252 -0
- package/skills/shared/decision-records/scripts/verify.sh +105 -0
- package/skills/shared/deep-learning/SKILL.md +226 -0
- package/skills/shared/deep-learning/evals/README.md +11 -0
- package/skills/shared/deep-learning/evals/cases.yaml +48 -0
- package/skills/shared/deep-learning/references/distributed.md +105 -0
- package/skills/shared/deep-learning/references/training-recipes.md +135 -0
- package/skills/shared/deployment/SKILL.md +374 -0
- package/skills/shared/deployment/evals/README.md +50 -0
- package/skills/shared/deployment/evals/cases.yaml +53 -0
- package/skills/shared/deployment/references/coolify.md +216 -0
- package/skills/shared/deployment/references/dockerfiles-by-stack.md +319 -0
- package/skills/shared/deployment/references/github-actions.md +295 -0
- package/skills/shared/deployment/references/hosting-targets.md +272 -0
- package/skills/shared/deployment/scripts/verify.sh +134 -0
- package/skills/shared/deprecation/SKILL.md +123 -0
- package/skills/shared/deprecation/evals/README.md +3 -0
- package/skills/shared/deprecation/evals/cases.yaml +42 -0
- package/skills/shared/design/IMPECCABLE-LICENSE.txt +191 -0
- package/skills/shared/design/SKILL.md +111 -0
- package/skills/shared/design/THIRD_PARTY.md +26 -0
- package/skills/shared/design/engine/LICENSE +21 -0
- package/skills/shared/design/engine/RUN.md +515 -0
- package/skills/shared/design/engine/UPSTREAM.json +4 -0
- package/skills/shared/design/engine/assets/app.css +216 -0
- package/skills/shared/design/engine/assets/base.css +105 -0
- package/skills/shared/design/engine/assets/base.js +37 -0
- package/skills/shared/design/engine/assets/charts.js +617 -0
- package/skills/shared/design/engine/assets/scenes/stage.css +28 -0
- package/skills/shared/design/engine/assets/scenes/stage.js +133 -0
- package/skills/shared/design/engine/library/app.json +1327 -0
- package/skills/shared/design/engine/library/directions.json +1078 -0
- package/skills/shared/design/engine/library/heroes.json +1086 -0
- package/skills/shared/design/engine/library/motions.json +92 -0
- package/skills/shared/design/engine/library/palettes.json +1485 -0
- package/skills/shared/design/engine/library/photos.json +7240 -0
- package/skills/shared/design/engine/library/sections.json +4429 -0
- package/skills/shared/design/engine/library/sites.json +8350 -0
- package/skills/shared/design/engine/library/type.json +2024 -0
- package/skills/shared/design/engine/references/app-screens.md +1199 -0
- package/skills/shared/design/engine/references/colour.md +141 -0
- package/skills/shared/design/engine/references/copy.md +177 -0
- package/skills/shared/design/engine/references/critique.md +182 -0
- package/skills/shared/design/engine/references/imagery.md +791 -0
- package/skills/shared/design/engine/references/layout.md +292 -0
- package/skills/shared/design/engine/references/motion.md +980 -0
- package/skills/shared/design/engine/references/research.md +356 -0
- package/skills/shared/design/engine/references/scenes.md +174 -0
- package/skills/shared/design/engine/references/tells.md +115 -0
- package/skills/shared/design/engine/references/type.md +170 -0
- package/skills/shared/design/engine/scripts/assets.mjs +865 -0
- package/skills/shared/design/engine/scripts/draw.mjs +584 -0
- package/skills/shared/design/engine/scripts/inspect.mjs +303 -0
- package/skills/shared/design/engine/scripts/lib/app-draw.mjs +203 -0
- package/skills/shared/design/engine/scripts/lib/cdp.mjs +248 -0
- package/skills/shared/design/engine/scripts/lib/probe.mjs +909 -0
- package/skills/shared/design/engine/scripts/lib/rules.mjs +243 -0
- package/skills/shared/design/engine/scripts/lint.mjs +119 -0
- package/skills/shared/design/engine/scripts/scenes.mjs +124 -0
- package/skills/shared/design/evals/cases.yaml +45 -0
- package/skills/shared/design/references/design-md.md +49 -0
- package/skills/shared/design/references/finish-review.md +46 -0
- package/skills/shared/design/references/modes.md +51 -0
- package/skills/shared/digitalocean/SKILL.md +227 -0
- package/skills/shared/digitalocean/evals/README.md +10 -0
- package/skills/shared/digitalocean/evals/cases.yaml +37 -0
- package/skills/shared/digitalocean/references/app-spec.md +126 -0
- package/skills/shared/digitalocean/references/droplet-ops.md +95 -0
- package/skills/shared/digitalocean/scripts/verify.sh +102 -0
- package/skills/shared/django/SKILL.md +263 -0
- package/skills/shared/django/evals/README.md +11 -0
- package/skills/shared/django/evals/cases.yaml +47 -0
- package/skills/shared/django/references/drf.md +109 -0
- package/skills/shared/django/references/orm-performance.md +91 -0
- package/skills/shared/django/references/security.md +81 -0
- package/skills/shared/django/references/testing.md +86 -0
- package/skills/shared/django/scripts/verify.sh +115 -0
- package/skills/shared/docker/SKILL.md +251 -0
- package/skills/shared/docker/evals/README.md +10 -0
- package/skills/shared/docker/evals/cases.yaml +44 -0
- package/skills/shared/docker/references/base-images-and-stages.md +104 -0
- package/skills/shared/docker/references/compose-recipes.md +109 -0
- package/skills/shared/docker/scripts/verify.sh +149 -0
- package/skills/shared/domains-dns/SKILL.md +131 -0
- package/skills/shared/domains-dns/evals/README.md +16 -0
- package/skills/shared/domains-dns/evals/cases.yaml +47 -0
- package/skills/shared/domains-dns/references/record-cookbook.md +94 -0
- package/skills/shared/domains-dns/references/tls-and-acme.md +90 -0
- package/skills/shared/domains-dns/references/verify-and-debug.md +64 -0
- package/skills/shared/domains-dns/scripts/verify.sh +163 -0
- package/skills/shared/drizzle-orm/SKILL.md +231 -0
- package/skills/shared/drizzle-orm/evals/README.md +12 -0
- package/skills/shared/drizzle-orm/evals/cases.yaml +47 -0
- package/skills/shared/drizzle-orm/references/relations-and-drivers.md +118 -0
- package/skills/shared/drizzle-orm/scripts/verify.sh +155 -0
- package/skills/shared/duckdb/SKILL.md +202 -0
- package/skills/shared/duckdb/evals/README.md +31 -0
- package/skills/shared/duckdb/evals/cases.yaml +41 -0
- package/skills/shared/duckdb/references/python-and-interop.md +105 -0
- package/skills/shared/duckdb/references/remote-and-lakehouse.md +101 -0
- package/skills/shared/duckdb/scripts/verify.sh +71 -0
- package/skills/shared/dynamodb/SKILL.md +204 -0
- package/skills/shared/dynamodb/evals/README.md +8 -0
- package/skills/shared/dynamodb/evals/cases.yaml +46 -0
- package/skills/shared/dynamodb/references/access-patterns.md +127 -0
- package/skills/shared/dynamodb/references/capacity-and-limits.md +78 -0
- package/skills/shared/dynamodb/scripts/verify.sh +108 -0
- package/skills/shared/e2e-testing/SKILL.md +233 -0
- package/skills/shared/e2e-testing/evals/README.md +10 -0
- package/skills/shared/e2e-testing/evals/cases.yaml +64 -0
- package/skills/shared/e2e-testing/references/config-and-ci.md +156 -0
- package/skills/shared/e2e-testing/references/flakiness-playbook.md +124 -0
- package/skills/shared/e2e-testing/scripts/verify.sh +117 -0
- package/skills/shared/electron/SKILL.md +209 -0
- package/skills/shared/electron/evals/README.md +13 -0
- package/skills/shared/electron/evals/cases.yaml +38 -0
- package/skills/shared/electron/references/packaging-and-updates.md +122 -0
- package/skills/shared/electron/references/security-and-ipc.md +158 -0
- package/skills/shared/electron/scripts/verify.sh +143 -0
- package/skills/shared/elixir/SKILL.md +209 -0
- package/skills/shared/elixir/evals/README.md +3 -0
- package/skills/shared/elixir/evals/cases.yaml +41 -0
- package/skills/shared/elixir/references/mix-and-releases.md +91 -0
- package/skills/shared/elixir/references/otp-patterns.md +96 -0
- package/skills/shared/elixir/scripts/verify.sh +76 -0
- package/skills/shared/email-deliverability/SKILL.md +148 -0
- package/skills/shared/email-deliverability/evals/README.md +21 -0
- package/skills/shared/email-deliverability/evals/cases.yaml +45 -0
- package/skills/shared/email-deliverability/scripts/verify.sh +98 -0
- package/skills/shared/embeddings-search/SKILL.md +184 -0
- package/skills/shared/embeddings-search/evals/README.md +10 -0
- package/skills/shared/embeddings-search/evals/cases.yaml +44 -0
- package/skills/shared/embeddings-search/references/evaluation.md +86 -0
- package/skills/shared/embeddings-search/references/models.md +73 -0
- package/skills/shared/embeddings-search/scripts/verify.sh +103 -0
- package/skills/shared/error-handling/SKILL.md +273 -0
- package/skills/shared/error-handling/evals/README.md +12 -0
- package/skills/shared/error-handling/evals/cases.yaml +46 -0
- package/skills/shared/error-handling/references/boundaries-and-messaging.md +120 -0
- package/skills/shared/error-handling/references/retry-and-resilience.md +154 -0
- package/skills/shared/error-handling/scripts/verify.sh +110 -0
- package/skills/shared/expo/SKILL.md +243 -0
- package/skills/shared/expo/evals/README.md +13 -0
- package/skills/shared/expo/evals/cases.yaml +44 -0
- package/skills/shared/expo/references/config-plugins.md +117 -0
- package/skills/shared/expo/references/eas-update.md +118 -0
- package/skills/shared/expo/scripts/verify.sh +132 -0
- package/skills/shared/fal/SKILL.md +196 -0
- package/skills/shared/fal/evals/README.md +3 -0
- package/skills/shared/fal/evals/cases.yaml +42 -0
- package/skills/shared/fal/references/models-and-cost.md +53 -0
- package/skills/shared/fal/references/queue-and-webhooks.md +153 -0
- package/skills/shared/fal/scripts/verify.sh +72 -0
- package/skills/shared/fastapi/SKILL.md +469 -0
- package/skills/shared/fastapi/evals/README.md +50 -0
- package/skills/shared/fastapi/evals/cases.yaml +55 -0
- package/skills/shared/fastapi/references/database.md +347 -0
- package/skills/shared/fastapi/references/production.md +338 -0
- package/skills/shared/fastapi/references/security.md +330 -0
- package/skills/shared/fastapi/references/testing.md +349 -0
- package/skills/shared/fastapi/scripts/verify.sh +157 -0
- package/skills/shared/finetuning/SKILL.md +232 -0
- package/skills/shared/finetuning/evals/README.md +13 -0
- package/skills/shared/finetuning/evals/cases.yaml +50 -0
- package/skills/shared/finetuning/references/hyperparameters-and-eval.md +74 -0
- package/skills/shared/finetuning/references/methods.md +189 -0
- package/skills/shared/firebase/SKILL.md +237 -0
- package/skills/shared/firebase/evals/README.md +12 -0
- package/skills/shared/firebase/evals/cases.yaml +45 -0
- package/skills/shared/firebase/references/cloud-functions.md +102 -0
- package/skills/shared/firebase/references/data-modeling.md +108 -0
- package/skills/shared/firebase/references/security-rules.md +137 -0
- package/skills/shared/firebase/scripts/verify.sh +98 -0
- package/skills/shared/flutter/SKILL.md +400 -0
- package/skills/shared/flutter/evals/README.md +54 -0
- package/skills/shared/flutter/evals/cases.yaml +69 -0
- package/skills/shared/flutter/references/architecture-and-state.md +499 -0
- package/skills/shared/flutter/references/i18n-and-dependencies.md +197 -0
- package/skills/shared/flutter/references/performance.md +299 -0
- package/skills/shared/flutter/references/testing.md +385 -0
- package/skills/shared/flutter/references/ui-and-navigation.md +378 -0
- package/skills/shared/flutter/scripts/verify.sh +104 -0
- package/skills/shared/fly-io/SKILL.md +197 -0
- package/skills/shared/fly-io/evals/README.md +3 -0
- package/skills/shared/fly-io/evals/cases.yaml +42 -0
- package/skills/shared/fly-io/references/fly-toml.md +155 -0
- package/skills/shared/fly-io/references/multi-region.md +66 -0
- package/skills/shared/fly-io/scripts/verify.sh +90 -0
- package/skills/shared/ftd/SKILL.md +111 -0
- package/skills/shared/ftd/evals/cases.yaml +66 -0
- package/skills/shared/ftd/evals/routing.json +24 -0
- package/skills/shared/game-design/SKILL.md +146 -0
- package/skills/shared/game-design/evals/README.md +13 -0
- package/skills/shared/game-design/evals/cases.yaml +47 -0
- package/skills/shared/game-design/references/mechanics-and-loops.md +78 -0
- package/skills/shared/game-design/references/playtesting-and-scope.md +58 -0
- package/skills/shared/game-design/references/progression-and-economy.md +70 -0
- package/skills/shared/game-storytelling/SKILL.md +134 -0
- package/skills/shared/game-storytelling/evals/README.md +28 -0
- package/skills/shared/game-storytelling/evals/cases.yaml +51 -0
- package/skills/shared/game-storytelling/references/branching-and-state.md +134 -0
- package/skills/shared/game-storytelling/references/dialogue-tools.md +117 -0
- package/skills/shared/game-storytelling/references/environmental-storytelling.md +71 -0
- package/skills/shared/gamedev-multiplayer/SKILL.md +237 -0
- package/skills/shared/gamedev-multiplayer/evals/README.md +12 -0
- package/skills/shared/gamedev-multiplayer/evals/cases.yaml +44 -0
- package/skills/shared/gamedev-multiplayer/references/godot-high-level-multiplayer.md +133 -0
- package/skills/shared/gamedev-multiplayer/references/prediction-and-latency.md +104 -0
- package/skills/shared/gamedev-multiplayer/references/unity-and-unreal-netcode.md +166 -0
- package/skills/shared/gamedev-pathing/SKILL.md +233 -0
- package/skills/shared/gamedev-pathing/evals/README.md +14 -0
- package/skills/shared/gamedev-pathing/evals/cases.yaml +49 -0
- package/skills/shared/gamedev-pathing/references/navmesh-workflow.md +110 -0
- package/skills/shared/gamedev-pathing/references/search-algorithms.md +135 -0
- package/skills/shared/gamedev-pathing/references/steering-and-avoidance.md +120 -0
- package/skills/shared/gamedev-physics/SKILL.md +225 -0
- package/skills/shared/gamedev-physics/evals/README.md +12 -0
- package/skills/shared/gamedev-physics/evals/cases.yaml +54 -0
- package/skills/shared/gamedev-physics/references/character-controllers.md +120 -0
- package/skills/shared/gamedev-physics/references/determinism-and-queries.md +124 -0
- package/skills/shared/gamedev-physics/references/layers-and-masks.md +115 -0
- package/skills/shared/gamedev-shaders/SKILL.md +232 -0
- package/skills/shared/gamedev-shaders/evals/README.md +14 -0
- package/skills/shared/gamedev-shaders/evals/cases.yaml +45 -0
- package/skills/shared/gamedev-shaders/references/effect-recipes.md +205 -0
- package/skills/shared/gamedev-shaders/references/godot-shading-language.md +133 -0
- package/skills/shared/gamedev-shaders/references/unity-and-unreal-shaders.md +169 -0
- package/skills/shared/gamedev-shipping/SKILL.md +220 -0
- package/skills/shared/gamedev-shipping/evals/README.md +9 -0
- package/skills/shared/gamedev-shipping/evals/cases.yaml +55 -0
- package/skills/shared/gamedev-shipping/references/mobile-and-desktop.md +127 -0
- package/skills/shared/gamedev-shipping/references/stores-and-ci.md +162 -0
- package/skills/shared/gamedev-shipping/references/web-export-headers.md +140 -0
- package/skills/shared/gcp-essentials/SKILL.md +324 -0
- package/skills/shared/gcp-essentials/evals/README.md +12 -0
- package/skills/shared/gcp-essentials/evals/cases.yaml +38 -0
- package/skills/shared/gcp-essentials/references/deploy-recipes.md +81 -0
- package/skills/shared/gcp-essentials/references/iam-and-auth.md +94 -0
- package/skills/shared/gcp-essentials/references/networking-and-sql.md +74 -0
- package/skills/shared/gcp-essentials/scripts/verify.sh +158 -0
- package/skills/shared/git-workflow/SKILL.md +214 -0
- package/skills/shared/git-workflow/evals/README.md +10 -0
- package/skills/shared/git-workflow/evals/cases.yaml +52 -0
- package/skills/shared/git-workflow/references/gitmoji.md +157 -0
- package/skills/shared/git-workflow/references/interactive-rebase.md +89 -0
- package/skills/shared/github-actions/SKILL.md +244 -0
- package/skills/shared/github-actions/evals/README.md +3 -0
- package/skills/shared/github-actions/evals/cases.yaml +45 -0
- package/skills/shared/github-actions/references/caching-and-matrix.md +92 -0
- package/skills/shared/github-actions/references/oidc-deploys.md +130 -0
- package/skills/shared/github-actions/scripts/verify.sh +105 -0
- package/skills/shared/gitlab-auth/SKILL.md +99 -0
- package/skills/shared/gitlab-workflow/SKILL.md +138 -0
- package/skills/shared/go/SKILL.md +390 -0
- package/skills/shared/go/evals/README.md +56 -0
- package/skills/shared/go/evals/cases.yaml +55 -0
- package/skills/shared/go/references/concurrency.md +557 -0
- package/skills/shared/go/references/http-services.md +529 -0
- package/skills/shared/go/references/testing.md +338 -0
- package/skills/shared/go/scripts/verify.sh +134 -0
- package/skills/shared/godot/SKILL.md +300 -0
- package/skills/shared/godot/evals/README.md +13 -0
- package/skills/shared/godot/evals/cases.yaml +50 -0
- package/skills/shared/godot/references/export-and-testing.md +102 -0
- package/skills/shared/godot/references/gdscript-style.md +84 -0
- package/skills/shared/godot/references/godot3-to-4-traps.md +89 -0
- package/skills/shared/godot/references/nodes-scenes-resources.md +109 -0
- package/skills/shared/harness/SKILL.md +316 -0
- package/skills/shared/harness/assets/_TEMPLATE/.env.example +8 -0
- package/skills/shared/harness/assets/_TEMPLATE/CREDENTIALS.md +25 -0
- package/skills/shared/harness/assets/_TEMPLATE/README.md +25 -0
- package/skills/shared/harness/assets/_TEMPLATE/gitignore +10 -0
- package/skills/shared/harness/assets/_TEMPLATE/test_connection.sh +30 -0
- package/skills/shared/harness/evals/README.md +54 -0
- package/skills/shared/harness/evals/cases.yaml +72 -0
- package/skills/shared/harness/examples/audit-example.md +120 -0
- package/skills/shared/harness/references/agents-md-template.md +41 -0
- package/skills/shared/harness/references/audit-report-template.html +140 -0
- package/skills/shared/harness/references/audit-report-template.md +116 -0
- package/skills/shared/harness/references/claude-md-template.md +85 -0
- package/skills/shared/harness/references/daily-curation-automation.md +68 -0
- package/skills/shared/harness/references/inbox-readme-template.md +51 -0
- package/skills/shared/harness/references/ingest-formats.md +185 -0
- package/skills/shared/harness/references/ingest-ignore-defaults.md +48 -0
- package/skills/shared/harness/references/obsidian-scaffolding.md +103 -0
- package/skills/shared/harness/references/providers.yaml +3546 -0
- package/skills/shared/harness/references/tools-readme-template.md +88 -0
- package/skills/shared/harness/references/wiki-archive-template.html +81 -0
- package/skills/shared/harness/references/wiki-article-template.md +60 -0
- package/skills/shared/harness/references/wiki-dashboard-template.html +136 -0
- package/skills/shared/harness/references/wiki-deep-improve-report-template.html +126 -0
- package/skills/shared/harness/references/wiki-gaps-template.md +22 -0
- package/skills/shared/harness/references/wiki-index-template.md +32 -0
- package/skills/shared/harness/references/wiki-protocol.md +926 -0
- package/skills/shared/harness/references/wiki-raw-template.md +7 -0
- package/skills/shared/harness/references/wiki-worklog-template.md +60 -0
- package/skills/shared/hetzner/SKILL.md +203 -0
- package/skills/shared/hetzner/evals/README.md +35 -0
- package/skills/shared/hetzner/evals/cases.yaml +46 -0
- package/skills/shared/hetzner/references/cloud-init.md +120 -0
- package/skills/shared/hetzner/references/plans-and-locations.md +56 -0
- package/skills/shared/hetzner/scripts/verify.sh +122 -0
- package/skills/shared/htmx/SKILL.md +261 -0
- package/skills/shared/htmx/evals/README.md +3 -0
- package/skills/shared/htmx/evals/cases.yaml +38 -0
- package/skills/shared/htmx/references/patterns.md +113 -0
- package/skills/shared/htmx/references/server-contract.md +91 -0
- package/skills/shared/htmx/scripts/verify.sh +93 -0
- package/skills/shared/huggingface/SKILL.md +191 -0
- package/skills/shared/huggingface/evals/README.md +11 -0
- package/skills/shared/huggingface/evals/cases.yaml +41 -0
- package/skills/shared/huggingface/references/endpoints-and-spaces.md +99 -0
- package/skills/shared/huggingface/references/hub-and-cli.md +85 -0
- package/skills/shared/huggingface/references/inference-providers.md +115 -0
- package/skills/shared/huggingface/scripts/verify.sh +123 -0
- package/skills/shared/idea-refinement/SKILL.md +121 -0
- package/skills/shared/idea-refinement/evals/README.md +3 -0
- package/skills/shared/idea-refinement/evals/cases.yaml +42 -0
- package/skills/shared/implement/SKILL.md +383 -0
- package/skills/shared/implement/evals/README.md +56 -0
- package/skills/shared/implement/evals/cases.yaml +43 -0
- package/skills/shared/implement/references/per-task-review.md +46 -0
- package/skills/shared/implement/scripts/review-package +59 -0
- package/skills/shared/implement/scripts/sdd-workspace +47 -0
- package/skills/shared/implement/scripts/task-brief +77 -0
- package/skills/shared/init/SKILL.md +209 -0
- package/skills/shared/init/evals/README.md +49 -0
- package/skills/shared/init/evals/cases.yaml +74 -0
- package/skills/shared/init/references/accompaniment-and-profile.md +122 -0
- package/skills/shared/init/references/discovery.md +90 -0
- package/skills/shared/init/references/recommend-skills.md +115 -0
- package/skills/shared/init/scripts/verify.sh +118 -0
- package/skills/shared/java/SKILL.md +341 -0
- package/skills/shared/java/evals/README.md +23 -0
- package/skills/shared/java/evals/cases.yaml +43 -0
- package/skills/shared/java/references/builds.md +133 -0
- package/skills/shared/java/references/concurrency.md +108 -0
- package/skills/shared/java/references/streams.md +102 -0
- package/skills/shared/java/scripts/verify.sh +107 -0
- package/skills/shared/knowledge-ops/SKILL.md +122 -0
- package/skills/shared/knowledge-ops/evals/README.md +16 -0
- package/skills/shared/knowledge-ops/evals/cases.yaml +50 -0
- package/skills/shared/knowledge-ops/references/gardening-playbook.md +126 -0
- package/skills/shared/kotlin-android/SKILL.md +245 -0
- package/skills/shared/kotlin-android/evals/README.md +13 -0
- package/skills/shared/kotlin-android/evals/cases.yaml +56 -0
- package/skills/shared/kotlin-android/references/architecture.md +200 -0
- package/skills/shared/kotlin-android/references/gradle-setup.md +125 -0
- package/skills/shared/kotlin-android/scripts/verify.sh +109 -0
- package/skills/shared/laravel/SKILL.md +301 -0
- package/skills/shared/laravel/evals/README.md +10 -0
- package/skills/shared/laravel/evals/cases.yaml +45 -0
- package/skills/shared/laravel/references/eloquent-patterns.md +126 -0
- package/skills/shared/laravel/references/queues-and-scheduling.md +153 -0
- package/skills/shared/laravel/scripts/verify.sh +128 -0
- package/skills/shared/level-design/SKILL.md +143 -0
- package/skills/shared/level-design/evals/README.md +35 -0
- package/skills/shared/level-design/evals/cases.yaml +58 -0
- package/skills/shared/level-design/references/blockout-to-art.md +118 -0
- package/skills/shared/level-design/references/guidance-and-readability.md +152 -0
- package/skills/shared/level-design/references/pacing-and-encounters.md +142 -0
- package/skills/shared/llm-pipeline/SKILL.md +150 -0
- package/skills/shared/llm-pipeline/evals/README.md +3 -0
- package/skills/shared/llm-pipeline/evals/cases.yaml +44 -0
- package/skills/shared/llm-pipeline/references/caching-layers.md +60 -0
- package/skills/shared/llm-pipeline/references/litellm-router.md +101 -0
- package/skills/shared/llm-pipeline/scripts/verify.sh +169 -0
- package/skills/shared/machine-learning/SKILL.md +228 -0
- package/skills/shared/machine-learning/evals/README.md +15 -0
- package/skills/shared/machine-learning/evals/cases.yaml +54 -0
- package/skills/shared/machine-learning/references/gbdt-and-tuning.md +83 -0
- package/skills/shared/machine-learning/references/metrics-and-imbalance.md +82 -0
- package/skills/shared/machine-learning/references/pipelines-and-cv.md +135 -0
- package/skills/shared/modal/SKILL.md +290 -0
- package/skills/shared/modal/evals/README.md +29 -0
- package/skills/shared/modal/evals/cases.yaml +50 -0
- package/skills/shared/modal/references/images-gpu-cookbook.md +160 -0
- package/skills/shared/modal/references/web-and-scaling.md +138 -0
- package/skills/shared/modal/scripts/verify.sh +127 -0
- package/skills/shared/mongodb/SKILL.md +342 -0
- package/skills/shared/mongodb/evals/README.md +29 -0
- package/skills/shared/mongodb/evals/cases.yaml +41 -0
- package/skills/shared/mongodb/references/aggregation.md +115 -0
- package/skills/shared/mongodb/references/data-modeling.md +135 -0
- package/skills/shared/mongodb/references/transactions-and-ops.md +128 -0
- package/skills/shared/mongodb/scripts/verify.sh +151 -0
- package/skills/shared/monitoring/SKILL.md +155 -0
- package/skills/shared/monitoring/evals/README.md +3 -0
- package/skills/shared/monitoring/evals/cases.yaml +47 -0
- package/skills/shared/monitoring/references/burn-rate-and-oncall.md +128 -0
- package/skills/shared/monitoring/references/tool-setup.md +154 -0
- package/skills/shared/monitoring/scripts/verify.sh +145 -0
- package/skills/shared/mysql/SKILL.md +249 -0
- package/skills/shared/mysql/evals/README.md +12 -0
- package/skills/shared/mysql/evals/cases.yaml +49 -0
- package/skills/shared/mysql/references/indexing-and-explain.md +161 -0
- package/skills/shared/mysql/references/mysql-vs-mariadb.md +78 -0
- package/skills/shared/mysql/references/online-ddl-and-migrations.md +120 -0
- package/skills/shared/mysql/references/replication-and-ha.md +115 -0
- package/skills/shared/mysql/scripts/verify.sh +141 -0
- package/skills/shared/neon/SKILL.md +218 -0
- package/skills/shared/neon/evals/README.md +11 -0
- package/skills/shared/neon/evals/cases.yaml +45 -0
- package/skills/shared/neon/references/branching-ci.md +86 -0
- package/skills/shared/neon/scripts/verify.sh +78 -0
- package/skills/shared/nestjs/SKILL.md +217 -0
- package/skills/shared/nestjs/evals/README.md +3 -0
- package/skills/shared/nestjs/evals/cases.yaml +38 -0
- package/skills/shared/nestjs/references/cross-cutting.md +135 -0
- package/skills/shared/nestjs/references/testing-recipes.md +105 -0
- package/skills/shared/nestjs/scripts/verify.sh +98 -0
- package/skills/shared/netlify/SKILL.md +208 -0
- package/skills/shared/netlify/evals/README.md +13 -0
- package/skills/shared/netlify/evals/cases.yaml +43 -0
- package/skills/shared/netlify/references/functions.md +97 -0
- package/skills/shared/netlify/references/netlify-toml.md +115 -0
- package/skills/shared/netlify/scripts/verify.sh +95 -0
- package/skills/shared/nextjs/SKILL.md +400 -0
- package/skills/shared/nextjs/evals/README.md +59 -0
- package/skills/shared/nextjs/evals/cases.yaml +56 -0
- package/skills/shared/nextjs/references/data-and-caching.md +309 -0
- package/skills/shared/nextjs/references/metadata.md +208 -0
- package/skills/shared/nextjs/references/performance.md +325 -0
- package/skills/shared/nextjs/references/react.md +383 -0
- package/skills/shared/nextjs/references/security.md +239 -0
- package/skills/shared/nextjs/references/testing.md +290 -0
- package/skills/shared/nextjs/scripts/verify.sh +141 -0
- package/skills/shared/nlp/SKILL.md +225 -0
- package/skills/shared/nlp/evals/README.md +10 -0
- package/skills/shared/nlp/evals/cases.yaml +45 -0
- package/skills/shared/nlp/references/evaluation.md +107 -0
- package/skills/shared/nlp/references/tokenization.md +95 -0
- package/skills/shared/no-code-app/SKILL.md +145 -0
- package/skills/shared/no-code-app/evals/README.md +3 -0
- package/skills/shared/no-code-app/evals/cases.yaml +43 -0
- package/skills/shared/no-code-app/references/platform-limits.md +100 -0
- package/skills/shared/nodejs/SKILL.md +229 -0
- package/skills/shared/nodejs/evals/README.md +3 -0
- package/skills/shared/nodejs/evals/cases.yaml +39 -0
- package/skills/shared/nodejs/references/express5-migration.md +53 -0
- package/skills/shared/nodejs/references/graceful-shutdown.md +73 -0
- package/skills/shared/nodejs/scripts/verify.sh +122 -0
- package/skills/shared/observability/SKILL.md +235 -0
- package/skills/shared/observability/evals/README.md +3 -0
- package/skills/shared/observability/evals/cases.yaml +51 -0
- package/skills/shared/observability/references/collector-config.md +98 -0
- package/skills/shared/observability/references/instrumentation-recipes.md +115 -0
- package/skills/shared/observability/scripts/verify.sh +156 -0
- package/skills/shared/ollama/SKILL.md +213 -0
- package/skills/shared/ollama/evals/README.md +9 -0
- package/skills/shared/ollama/evals/cases.yaml +43 -0
- package/skills/shared/ollama/references/api.md +148 -0
- package/skills/shared/ollama/references/hardware-sizing.md +87 -0
- package/skills/shared/ollama/scripts/verify.sh +116 -0
- package/skills/shared/open-weights/SKILL.md +239 -0
- package/skills/shared/open-weights/evals/README.md +14 -0
- package/skills/shared/open-weights/evals/cases.yaml +42 -0
- package/skills/shared/open-weights/references/licenses.md +123 -0
- package/skills/shared/open-weights/references/model-families.md +83 -0
- package/skills/shared/open-weights/references/sizing-and-quant.md +89 -0
- package/skills/shared/orient/SKILL.md +92 -0
- package/skills/shared/orient/evals/README.md +18 -0
- package/skills/shared/orient/evals/cases.yaml +67 -0
- package/skills/shared/orient/references/explain-ladder.md +93 -0
- package/skills/shared/orient/references/orientation-contract.md +86 -0
- package/skills/shared/parallel/SKILL.md +168 -0
- package/skills/shared/parallel/evals/README.md +62 -0
- package/skills/shared/parallel/evals/cases.yaml +44 -0
- package/skills/shared/performance/SKILL.md +229 -0
- package/skills/shared/performance/evals/README.md +3 -0
- package/skills/shared/performance/evals/cases.yaml +49 -0
- package/skills/shared/performance/references/profiling-playbook.md +54 -0
- package/skills/shared/performance/scripts/verify.sh +94 -0
- package/skills/shared/phoenix/SKILL.md +169 -0
- package/skills/shared/phoenix/evals/README.md +3 -0
- package/skills/shared/phoenix/evals/cases.yaml +40 -0
- package/skills/shared/phoenix/references/auth-and-scopes.md +82 -0
- package/skills/shared/phoenix/references/ecto-patterns.md +93 -0
- package/skills/shared/phoenix/references/liveview.md +134 -0
- package/skills/shared/phoenix/scripts/verify.sh +73 -0
- package/skills/shared/php/SKILL.md +397 -0
- package/skills/shared/php/evals/README.md +12 -0
- package/skills/shared/php/evals/cases.yaml +45 -0
- package/skills/shared/php/references/tooling.md +170 -0
- package/skills/shared/php/references/type-system.md +220 -0
- package/skills/shared/php/scripts/verify.sh +155 -0
- package/skills/shared/plan/SKILL.md +166 -0
- package/skills/shared/plan/evals/README.md +62 -0
- package/skills/shared/plan/evals/cases.yaml +49 -0
- package/skills/shared/plan/references/plan-template.md +153 -0
- package/skills/shared/planetscale/SKILL.md +198 -0
- package/skills/shared/planetscale/evals/README.md +11 -0
- package/skills/shared/planetscale/evals/cases.yaml +46 -0
- package/skills/shared/planetscale/references/deploy-requests.md +75 -0
- package/skills/shared/planetscale/references/no-foreign-keys.md +88 -0
- package/skills/shared/planetscale/scripts/verify.sh +115 -0
- package/skills/shared/planning-with-files/SKILL.md +278 -0
- package/skills/shared/planning-with-files/examples.md +202 -0
- package/skills/shared/planning-with-files/reference.md +218 -0
- package/skills/shared/planning-with-files/scripts/attest-plan.ps1 +118 -0
- package/skills/shared/planning-with-files/scripts/attest-plan.sh +110 -0
- package/skills/shared/planning-with-files/scripts/check-complete.ps1 +44 -0
- package/skills/shared/planning-with-files/scripts/check-complete.sh +46 -0
- package/skills/shared/planning-with-files/scripts/init-session.ps1 +166 -0
- package/skills/shared/planning-with-files/scripts/init-session.sh +284 -0
- package/skills/shared/planning-with-files/scripts/resolve-plan-dir.ps1 +44 -0
- package/skills/shared/planning-with-files/scripts/resolve-plan-dir.sh +76 -0
- package/skills/shared/planning-with-files/scripts/session-catchup.py +438 -0
- package/skills/shared/planning-with-files/scripts/set-active-plan.ps1 +50 -0
- package/skills/shared/planning-with-files/scripts/set-active-plan.sh +50 -0
- package/skills/shared/planning-with-files/templates/findings.md +95 -0
- package/skills/shared/planning-with-files/templates/progress.md +114 -0
- package/skills/shared/planning-with-files/templates/task_plan.md +132 -0
- package/skills/shared/postgresdb/SKILL.md +354 -0
- package/skills/shared/postgresdb/evals/README.md +55 -0
- package/skills/shared/postgresdb/evals/cases.yaml +57 -0
- package/skills/shared/postgresdb/references/migrations.md +279 -0
- package/skills/shared/postgresdb/references/operations-and-security.md +267 -0
- package/skills/shared/postgresdb/references/query-optimization.md +374 -0
- package/skills/shared/postgresdb/references/schema-and-indexing.md +379 -0
- package/skills/shared/postgresdb/scripts/verify.sh +191 -0
- package/skills/shared/prisma-orm/SKILL.md +313 -0
- package/skills/shared/prisma-orm/evals/README.md +12 -0
- package/skills/shared/prisma-orm/evals/cases.yaml +56 -0
- package/skills/shared/prisma-orm/references/migrations-and-v7-upgrade.md +197 -0
- package/skills/shared/prisma-orm/references/queries-and-performance.md +169 -0
- package/skills/shared/prisma-orm/scripts/verify.sh +137 -0
- package/skills/shared/prompt-engineering/SKILL.md +127 -0
- package/skills/shared/prompt-engineering/evals/README.md +11 -0
- package/skills/shared/prompt-engineering/evals/cases.yaml +46 -0
- package/skills/shared/prompt-engineering/references/eval-templates.md +94 -0
- package/skills/shared/prompt-engineering/references/output-contracts.md +120 -0
- package/skills/shared/prompt-engineering/scripts/verify.sh +84 -0
- package/skills/shared/python/SKILL.md +320 -0
- package/skills/shared/python/evals/README.md +19 -0
- package/skills/shared/python/evals/cases.yaml +46 -0
- package/skills/shared/python/references/async.md +136 -0
- package/skills/shared/python/references/stdlib.md +162 -0
- package/skills/shared/python/references/typing.md +160 -0
- package/skills/shared/python/scripts/verify.sh +125 -0
- package/skills/shared/rag/SKILL.md +209 -0
- package/skills/shared/rag/evals/README.md +13 -0
- package/skills/shared/rag/evals/cases.yaml +45 -0
- package/skills/shared/rag/references/evaluation.md +99 -0
- package/skills/shared/rag/references/pipeline.md +151 -0
- package/skills/shared/rag/scripts/verify.sh +99 -0
- package/skills/shared/rails/SKILL.md +264 -0
- package/skills/shared/rails/evals/README.md +12 -0
- package/skills/shared/rails/evals/cases.yaml +47 -0
- package/skills/shared/rails/references/activerecord.md +148 -0
- package/skills/shared/rails/references/hotwire.md +139 -0
- package/skills/shared/rails/references/testing.md +110 -0
- package/skills/shared/rails/scripts/verify.sh +128 -0
- package/skills/shared/railway/SKILL.md +245 -0
- package/skills/shared/railway/evals/README.md +14 -0
- package/skills/shared/railway/evals/cases.yaml +44 -0
- package/skills/shared/railway/references/cli-cookbook.md +137 -0
- package/skills/shared/railway/references/config-as-code.md +120 -0
- package/skills/shared/railway/scripts/verify.sh +162 -0
- package/skills/shared/react/SKILL.md +182 -0
- package/skills/shared/react/evals/README.md +3 -0
- package/skills/shared/react/evals/cases.yaml +43 -0
- package/skills/shared/react/references/data-and-state.md +152 -0
- package/skills/shared/react/references/performance.md +75 -0
- package/skills/shared/react/references/routing.md +99 -0
- package/skills/shared/react/scripts/verify.sh +123 -0
- package/skills/shared/react-native/SKILL.md +215 -0
- package/skills/shared/react-native/evals/README.md +3 -0
- package/skills/shared/react-native/evals/cases.yaml +42 -0
- package/skills/shared/react-native/references/native-modules.md +123 -0
- package/skills/shared/react-native/references/performance-debugging.md +46 -0
- package/skills/shared/react-native/scripts/verify.sh +120 -0
- package/skills/shared/redis/SKILL.md +298 -0
- package/skills/shared/redis/evals/README.md +10 -0
- package/skills/shared/redis/evals/cases.yaml +43 -0
- package/skills/shared/redis/references/caching.md +116 -0
- package/skills/shared/redis/references/locks-and-rate-limiting.md +140 -0
- package/skills/shared/redis/references/queues.md +102 -0
- package/skills/shared/redis/scripts/verify.sh +164 -0
- package/skills/shared/render/SKILL.md +256 -0
- package/skills/shared/render/evals/README.md +12 -0
- package/skills/shared/render/evals/cases.yaml +45 -0
- package/skills/shared/render/references/blueprint-reference.md +203 -0
- package/skills/shared/render/scripts/verify.sh +167 -0
- package/skills/shared/replicate/SKILL.md +210 -0
- package/skills/shared/replicate/evals/README.md +9 -0
- package/skills/shared/replicate/evals/cases.yaml +45 -0
- package/skills/shared/replicate/references/cog-packaging.md +89 -0
- package/skills/shared/replicate/references/deployments-api.md +87 -0
- package/skills/shared/replicate/references/webhooks-and-async.md +110 -0
- package/skills/shared/replicate/scripts/verify.sh +162 -0
- package/skills/shared/research-ops/SKILL.md +200 -0
- package/skills/shared/research-ops/evals/README.md +13 -0
- package/skills/shared/research-ops/evals/cases.yaml +38 -0
- package/skills/shared/research-ops/references/credibility-rubric.md +78 -0
- package/skills/shared/research-ops/references/memo-template.md +63 -0
- package/skills/shared/research-ops/scripts/verify.sh +181 -0
- package/skills/shared/review/SKILL.md +314 -0
- package/skills/shared/review/evals/README.md +84 -0
- package/skills/shared/review/evals/cases.yaml +55 -0
- package/skills/shared/ruby/SKILL.md +295 -0
- package/skills/shared/ruby/evals/README.md +12 -0
- package/skills/shared/ruby/evals/cases.yaml +41 -0
- package/skills/shared/ruby/references/gems-and-testing.md +208 -0
- package/skills/shared/ruby/references/metaprogramming.md +161 -0
- package/skills/shared/ruby/scripts/verify.sh +83 -0
- package/skills/shared/runpod/SKILL.md +238 -0
- package/skills/shared/runpod/evals/README.md +11 -0
- package/skills/shared/runpod/evals/cases.yaml +47 -0
- package/skills/shared/runpod/references/cost-and-scaling.md +85 -0
- package/skills/shared/runpod/references/serverless-workers.md +101 -0
- package/skills/shared/runpod/scripts/verify.sh +126 -0
- package/skills/shared/rust/SKILL.md +320 -0
- package/skills/shared/rust/evals/README.md +12 -0
- package/skills/shared/rust/evals/cases.yaml +42 -0
- package/skills/shared/rust/references/async-tokio.md +141 -0
- package/skills/shared/rust/references/axum-service.md +132 -0
- package/skills/shared/rust/references/ownership.md +86 -0
- package/skills/shared/rust/references/testing.md +108 -0
- package/skills/shared/rust/scripts/verify.sh +91 -0
- package/skills/shared/scaling/SKILL.md +137 -0
- package/skills/shared/scaling/evals/README.md +3 -0
- package/skills/shared/scaling/evals/cases.yaml +42 -0
- package/skills/shared/scaling/references/load-testing-k6.md +127 -0
- package/skills/shared/scaling/scripts/example.load.js +24 -0
- package/skills/shared/scaling/scripts/verify.sh +70 -0
- package/skills/shared/sdd/SKILL.md +250 -0
- package/skills/shared/sdd/evals/README.md +60 -0
- package/skills/shared/sdd/evals/cases.yaml +90 -0
- package/skills/shared/sdd/references/model-routing.md +194 -0
- package/skills/shared/sdd-init/SKILL.md +189 -0
- package/skills/shared/sdd-init/evals/README.md +3 -0
- package/skills/shared/sdd-init/evals/cases.yaml +43 -0
- package/skills/shared/secure-coding/SKILL.md +336 -0
- package/skills/shared/secure-coding/evals/README.md +68 -0
- package/skills/shared/secure-coding/evals/cases.yaml +55 -0
- package/skills/shared/secure-coding/references/authn-authz.md +249 -0
- package/skills/shared/secure-coding/references/owasp-by-stack.md +574 -0
- package/skills/shared/secure-coding/references/secrets-and-supply-chain.md +205 -0
- package/skills/shared/secure-coding/references/threat-modeling.md +213 -0
- package/skills/shared/secure-coding/scripts/verify.sh +208 -0
- package/skills/shared/security-scan/SKILL.md +219 -0
- package/skills/shared/security-scan/evals/README.md +14 -0
- package/skills/shared/security-scan/evals/cases.yaml +50 -0
- package/skills/shared/security-scan/references/tools.md +97 -0
- package/skills/shared/security-scan/references/triage.md +92 -0
- package/skills/shared/security-scan/scripts/verify.sh +108 -0
- package/skills/shared/ship/SKILL.md +272 -0
- package/skills/shared/ship/evals/README.md +89 -0
- package/skills/shared/ship/evals/cases.yaml +44 -0
- package/skills/shared/shopify/SKILL.md +229 -0
- package/skills/shared/shopify/evals/README.md +14 -0
- package/skills/shared/shopify/evals/cases.yaml +41 -0
- package/skills/shared/shopify/references/apps-graphql.md +103 -0
- package/skills/shared/shopify/references/checkout-extensibility.md +71 -0
- package/skills/shared/shopify/references/liquid-themes.md +89 -0
- package/skills/shared/shopify/scripts/verify.sh +120 -0
- package/skills/shared/simplify-code/SKILL.md +101 -0
- package/skills/shared/simplify-code/evals/README.md +3 -0
- package/skills/shared/simplify-code/evals/cases.yaml +42 -0
- package/skills/shared/skill-scout/SKILL.md +169 -0
- package/skills/shared/skill-scout/evals/README.md +12 -0
- package/skills/shared/skill-scout/evals/cases.yaml +56 -0
- package/skills/shared/skill-scout/references/install-commands.md +76 -0
- package/skills/shared/skill-scout/scripts/verify.sh +154 -0
- package/skills/shared/solid-js/SKILL.md +260 -0
- package/skills/shared/solid-js/evals/README.md +3 -0
- package/skills/shared/solid-js/evals/cases.yaml +38 -0
- package/skills/shared/solid-js/references/reactivity-deep-dive.md +89 -0
- package/skills/shared/solid-js/references/router-and-start.md +93 -0
- package/skills/shared/solid-js/scripts/verify.sh +130 -0
- package/skills/shared/source-grounded-development/SKILL.md +108 -0
- package/skills/shared/source-grounded-development/evals/README.md +3 -0
- package/skills/shared/source-grounded-development/evals/cases.yaml +42 -0
- package/skills/shared/specify/SKILL.md +391 -0
- package/skills/shared/specify/evals/README.md +73 -0
- package/skills/shared/specify/evals/cases.yaml +93 -0
- package/skills/shared/specify/references/eliciting-requirements.md +117 -0
- package/skills/shared/specify/references/spec-template.md +101 -0
- package/skills/shared/speckit-analyze/SKILL.md +35 -0
- package/skills/shared/speckit-assess-decide/SKILL.md +36 -0
- package/skills/shared/speckit-assess-define/SKILL.md +36 -0
- package/skills/shared/speckit-assess-intake/SKILL.md +38 -0
- package/skills/shared/speckit-assess-research/SKILL.md +36 -0
- package/skills/shared/speckit-assess-shape/SKILL.md +36 -0
- package/skills/shared/speckit-bug-assess/SKILL.md +38 -0
- package/skills/shared/speckit-bug-fix/SKILL.md +37 -0
- package/skills/shared/speckit-bug-test/SKILL.md +37 -0
- package/skills/shared/speckit-checklist/SKILL.md +35 -0
- package/skills/shared/speckit-clarify/SKILL.md +32 -0
- package/skills/shared/speckit-constitution/SKILL.md +35 -0
- package/skills/shared/speckit-converge/SKILL.md +36 -0
- package/skills/shared/speckit-implement/SKILL.md +32 -0
- package/skills/shared/speckit-plan/SKILL.md +37 -0
- package/skills/shared/speckit-specify/SKILL.md +36 -0
- package/skills/shared/speckit-tasks/SKILL.md +34 -0
- package/skills/shared/spreadsheet-ops/SKILL.md +180 -0
- package/skills/shared/spreadsheet-ops/evals/README.md +33 -0
- package/skills/shared/spreadsheet-ops/evals/cases.yaml +42 -0
- package/skills/shared/spreadsheet-ops/references/formula-cookbook.md +70 -0
- package/skills/shared/spreadsheet-ops/references/python-excel.md +87 -0
- package/skills/shared/spreadsheet-ops/references/sheets-api-appsscript.md +118 -0
- package/skills/shared/spreadsheet-ops/scripts/verify.sh +152 -0
- package/skills/shared/spring-boot/SKILL.md +350 -0
- package/skills/shared/spring-boot/evals/README.md +11 -0
- package/skills/shared/spring-boot/evals/cases.yaml +49 -0
- package/skills/shared/spring-boot/references/jpa.md +94 -0
- package/skills/shared/spring-boot/references/security.md +92 -0
- package/skills/shared/spring-boot/references/testing.md +95 -0
- package/skills/shared/spring-boot/scripts/verify.sh +115 -0
- package/skills/shared/sql/SKILL.md +286 -0
- package/skills/shared/sql/evals/README.md +9 -0
- package/skills/shared/sql/evals/cases.yaml +49 -0
- package/skills/shared/sql/references/ctes-and-recursion.md +63 -0
- package/skills/shared/sql/references/joins-and-sets.md +71 -0
- package/skills/shared/sql/references/portability.md +38 -0
- package/skills/shared/sql/references/window-functions.md +72 -0
- package/skills/shared/sql/scripts/verify.sh +139 -0
- package/skills/shared/sqlite-turso/SKILL.md +214 -0
- package/skills/shared/sqlite-turso/evals/README.md +24 -0
- package/skills/shared/sqlite-turso/evals/cases.yaml +45 -0
- package/skills/shared/sqlite-turso/references/embedded-replicas.md +96 -0
- package/skills/shared/sqlite-turso/scripts/verify.sh +95 -0
- package/skills/shared/structured-extraction/SKILL.md +230 -0
- package/skills/shared/structured-extraction/evals/README.md +13 -0
- package/skills/shared/structured-extraction/evals/cases.yaml +70 -0
- package/skills/shared/structured-extraction/references/providers.md +152 -0
- package/skills/shared/structured-extraction/scripts/verify.sh +160 -0
- package/skills/shared/suggest/SKILL.md +123 -0
- package/skills/shared/suggest/evals/README.md +17 -0
- package/skills/shared/suggest/evals/cases.yaml +78 -0
- package/skills/shared/supabase/SKILL.md +268 -0
- package/skills/shared/supabase/evals/README.md +12 -0
- package/skills/shared/supabase/evals/cases.yaml +42 -0
- package/skills/shared/supabase/references/auth-ssr.md +173 -0
- package/skills/shared/supabase/references/rls-cookbook.md +122 -0
- package/skills/shared/supabase/scripts/verify.sh +149 -0
- package/skills/shared/svelte/SKILL.md +238 -0
- package/skills/shared/svelte/evals/README.md +3 -0
- package/skills/shared/svelte/evals/cases.yaml +41 -0
- package/skills/shared/svelte/references/runes.md +97 -0
- package/skills/shared/svelte/references/sveltekit-data.md +156 -0
- package/skills/shared/svelte/scripts/verify.sh +128 -0
- package/skills/shared/swift-ios/SKILL.md +224 -0
- package/skills/shared/swift-ios/evals/README.md +3 -0
- package/skills/shared/swift-ios/evals/cases.yaml +46 -0
- package/skills/shared/swift-ios/references/concurrency.md +132 -0
- package/skills/shared/swift-ios/references/testing.md +112 -0
- package/skills/shared/swift-ios/scripts/verify.sh +98 -0
- package/skills/shared/tasks/SKILL.md +265 -0
- package/skills/shared/tasks/evals/README.md +70 -0
- package/skills/shared/tasks/evals/cases.yaml +75 -0
- package/skills/shared/tauri/SKILL.md +219 -0
- package/skills/shared/tauri/evals/README.md +12 -0
- package/skills/shared/tauri/evals/cases.yaml +46 -0
- package/skills/shared/tauri/references/bundling-distribution.md +129 -0
- package/skills/shared/tauri/references/security.md +143 -0
- package/skills/shared/tauri/scripts/verify.sh +178 -0
- package/skills/shared/technical-writing/SKILL.md +230 -0
- package/skills/shared/technical-writing/evals/README.md +12 -0
- package/skills/shared/technical-writing/evals/cases.yaml +53 -0
- package/skills/shared/technical-writing/references/diataxis-modes.md +131 -0
- package/skills/shared/technical-writing/references/vale-starter.md +90 -0
- package/skills/shared/technical-writing/scripts/verify.sh +83 -0
- package/skills/shared/testing-go/SKILL.md +263 -0
- package/skills/shared/testing-go/evals/README.md +3 -0
- package/skills/shared/testing-go/evals/cases.yaml +46 -0
- package/skills/shared/testing-go/references/coverage-and-benchmarks.md +85 -0
- package/skills/shared/testing-go/references/mocks-and-fakes.md +140 -0
- package/skills/shared/testing-go/references/synctest-and-concurrency.md +82 -0
- package/skills/shared/testing-go/scripts/verify.sh +72 -0
- package/skills/shared/testing-py/SKILL.md +197 -0
- package/skills/shared/testing-py/evals/README.md +5 -0
- package/skills/shared/testing-py/evals/cases.yaml +44 -0
- package/skills/shared/testing-py/references/mocking.md +141 -0
- package/skills/shared/testing-py/references/property-testing.md +99 -0
- package/skills/shared/testing-py/scripts/verify.sh +117 -0
- package/skills/shared/testing-web/SKILL.md +244 -0
- package/skills/shared/testing-web/evals/README.md +11 -0
- package/skills/shared/testing-web/evals/cases.yaml +52 -0
- package/skills/shared/testing-web/references/jest-setup.md +88 -0
- package/skills/shared/testing-web/references/recipes.md +116 -0
- package/skills/shared/testing-web/scripts/verify.sh +111 -0
- package/skills/shared/together-fireworks/SKILL.md +176 -0
- package/skills/shared/together-fireworks/evals/README.md +3 -0
- package/skills/shared/together-fireworks/evals/cases.yaml +50 -0
- package/skills/shared/together-fireworks/references/batch-and-tuning.md +59 -0
- package/skills/shared/together-fireworks/references/models-and-pricing.md +79 -0
- package/skills/shared/together-fireworks/scripts/verify.sh +165 -0
- package/skills/shared/training-data/SKILL.md +226 -0
- package/skills/shared/training-data/evals/README.md +13 -0
- package/skills/shared/training-data/evals/cases.yaml +41 -0
- package/skills/shared/training-data/references/formats.md +118 -0
- package/skills/shared/training-data/references/synthesis-dedup-quality.md +134 -0
- package/skills/shared/translation-l10n/SKILL.md +229 -0
- package/skills/shared/translation-l10n/evals/README.md +3 -0
- package/skills/shared/translation-l10n/evals/cases.yaml +39 -0
- package/skills/shared/translation-l10n/references/icu-cookbook.md +82 -0
- package/skills/shared/translation-l10n/references/rtl-and-bidi.md +60 -0
- package/skills/shared/typescript/SKILL.md +225 -0
- package/skills/shared/typescript/evals/README.md +15 -0
- package/skills/shared/typescript/evals/cases.yaml +46 -0
- package/skills/shared/typescript/references/build-and-monorepo.md +141 -0
- package/skills/shared/typescript/references/type-system.md +162 -0
- package/skills/shared/typescript/scripts/verify.sh +52 -0
- package/skills/shared/ui-engineering/SKILL.md +113 -0
- package/skills/shared/ui-engineering/evals/cases.yaml +38 -0
- package/skills/shared/unity/SKILL.md +282 -0
- package/skills/shared/unity/evals/README.md +8 -0
- package/skills/shared/unity/evals/cases.yaml +43 -0
- package/skills/shared/unity/references/build-and-platforms.md +65 -0
- package/skills/shared/unity/references/input-system.md +102 -0
- package/skills/shared/unity/references/lifecycle-deep-dive.md +75 -0
- package/skills/shared/unreal/SKILL.md +270 -0
- package/skills/shared/unreal/evals/README.md +12 -0
- package/skills/shared/unreal/evals/cases.yaml +45 -0
- package/skills/shared/unreal/references/blueprint-cpp-parity.md +109 -0
- package/skills/shared/unreal/references/gameplay-framework.md +95 -0
- package/skills/shared/unreal/references/packaging.md +83 -0
- package/skills/shared/unslop/SKILL.md +143 -0
- package/skills/shared/unslop/evals/README.md +25 -0
- package/skills/shared/unslop/evals/cases.yaml +61 -0
- package/skills/shared/unsloth/SKILL.md +254 -0
- package/skills/shared/unsloth/evals/README.md +10 -0
- package/skills/shared/unsloth/evals/cases.yaml +42 -0
- package/skills/shared/unsloth/references/export.md +75 -0
- package/skills/shared/unsloth/references/grpo.md +91 -0
- package/skills/shared/unsloth/references/masking-and-templates.md +91 -0
- package/skills/shared/variant-explorer/SKILL.md +93 -0
- package/skills/shared/variant-explorer/evals/cases.yaml +38 -0
- package/skills/shared/vector-db/SKILL.md +189 -0
- package/skills/shared/vector-db/evals/README.md +10 -0
- package/skills/shared/vector-db/evals/cases.yaml +45 -0
- package/skills/shared/vector-db/references/engines.md +175 -0
- package/skills/shared/vector-db/references/tuning.md +62 -0
- package/skills/shared/vector-db/scripts/verify.sh +110 -0
- package/skills/shared/vercel/SKILL.md +242 -0
- package/skills/shared/vercel/evals/README.md +23 -0
- package/skills/shared/vercel/evals/cases.yaml +45 -0
- package/skills/shared/vercel/references/cli-cookbook.md +98 -0
- package/skills/shared/vercel/references/vercel-json.md +120 -0
- package/skills/shared/vercel/scripts/verify.sh +168 -0
- package/skills/shared/verify/SKILL.md +230 -0
- package/skills/shared/verify/evals/README.md +78 -0
- package/skills/shared/verify/evals/cases.yaml +104 -0
- package/skills/shared/vllm/SKILL.md +235 -0
- package/skills/shared/vllm/evals/README.md +9 -0
- package/skills/shared/vllm/evals/cases.yaml +47 -0
- package/skills/shared/vllm/references/flags-and-endpoints.md +105 -0
- package/skills/shared/vllm/references/memory-and-throughput.md +78 -0
- package/skills/shared/vue-nuxt/SKILL.md +323 -0
- package/skills/shared/vue-nuxt/evals/README.md +11 -0
- package/skills/shared/vue-nuxt/evals/cases.yaml +49 -0
- package/skills/shared/vue-nuxt/references/data-and-state.md +127 -0
- package/skills/shared/vue-nuxt/references/migration-nuxt4.md +79 -0
- package/skills/shared/vue-nuxt/references/nitro-and-rendering.md +117 -0
- package/skills/shared/vue-nuxt/references/reactivity.md +135 -0
- package/skills/shared/vue-nuxt/scripts/verify.sh +148 -0
- package/skills/shared/webhooks/SKILL.md +229 -0
- package/skills/shared/webhooks/evals/README.md +15 -0
- package/skills/shared/webhooks/evals/cases.yaml +46 -0
- package/skills/shared/webhooks/references/framework-raw-body.md +97 -0
- package/skills/shared/webhooks/references/signature-schemes.md +66 -0
- package/skills/shared/webhooks/scripts/verify.sh +142 -0
- package/skills/shared/wordpress/SKILL.md +224 -0
- package/skills/shared/wordpress/evals/README.md +3 -0
- package/skills/shared/wordpress/evals/cases.yaml +50 -0
- package/skills/shared/wordpress/references/hardening.md +108 -0
- package/skills/shared/wordpress/references/performance.md +80 -0
- package/skills/shared/wordpress/references/woocommerce.md +65 -0
- package/skills/shared/wordpress/scripts/verify.sh +96 -0
- package/skills/shared/worktrees/SKILL.md +204 -0
- package/skills/shared/worktrees/evals/README.md +78 -0
- package/skills/shared/worktrees/evals/cases.yaml +47 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Export: from trained LoRA to a runnable artifact
|
|
2
|
+
|
|
3
|
+
After `trainer.train()` you hold LoRA adapters on top of a (possibly 4-bit) base. Export depends on
|
|
4
|
+
where it runs next. Tracks docs.unsloth.ai inference-and-deployment pages (accessed 2026-07).
|
|
5
|
+
|
|
6
|
+
## The matrix
|
|
7
|
+
|
|
8
|
+
| Target | Method | Notes |
|
|
9
|
+
| -------------------------- | ------------------------------------------------------------- | ----- |
|
|
10
|
+
| vLLM / re-host / portable | `save_pretrained_merged(dir, tok, save_method="merged_16bit")`| Base + LoRA merged at 16-bit. The high-quality keeper. |
|
|
11
|
+
| Small, hot-swappable | `save_pretrained_merged(dir, tok, save_method="lora")` | Adapters only (~MBs). Load onto the base at run time. |
|
|
12
|
+
| Ollama / llama.cpp | `save_pretrained_gguf(dir, tok, quantization_method="q4_k_m")`| Converts + quantizes to GGUF. |
|
|
13
|
+
| DPO / niche 4-bit inference| `save_method="merged_4bit"` | **Discouraged** — quality loss; only if a tool needs it. |
|
|
14
|
+
|
|
15
|
+
## Merge to 16-bit (recommended keeper)
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
model.save_pretrained_merged("model_16bit", tokenizer, save_method = "merged_16bit")
|
|
19
|
+
# push instead of / in addition to saving:
|
|
20
|
+
model.push_to_hub_merged("user/model", tokenizer,
|
|
21
|
+
save_method = "merged_16bit", token = "hf_...")
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`merged_16bit` is the format vLLM and most serving stacks expect. Prefer it over `merged_4bit` — merge
|
|
25
|
+
at 16-bit, quantize downstream if you need to.
|
|
26
|
+
|
|
27
|
+
## LoRA adapters only
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
model.save_pretrained("finetuned_lora"); tokenizer.save_pretrained("finetuned_lora")
|
|
31
|
+
# or save_pretrained_merged(..., save_method="lora")
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Tiny and hot-swappable (e.g. vLLM LoRA hot-swap). Requires the base at inference time.
|
|
35
|
+
|
|
36
|
+
## GGUF for Ollama / llama.cpp
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
# one quant:
|
|
40
|
+
model.save_pretrained_gguf("model_gguf", tokenizer, quantization_method = "q4_k_m")
|
|
41
|
+
# several at once, pushed to the Hub:
|
|
42
|
+
model.push_to_hub_gguf("user/model-gguf", tokenizer,
|
|
43
|
+
quantization_method = ["q4_k_m", "q8_0", "f16"], token = "hf_...")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Quant guide (size vs quality — this is a real tradeoff, not free):
|
|
47
|
+
|
|
48
|
+
| Method | ~bits/weight | Use it for |
|
|
49
|
+
| -------- | ------------ | ---------- |
|
|
50
|
+
| `q4_k_m` | ~4.9 | Everyday default: ~half the size for a few % quality loss. |
|
|
51
|
+
| `q5_k_m` | ~5.5 | A notch more quality than Q4 for a bit more size. |
|
|
52
|
+
| `q8_0` | ~8.5 | Near-lossless; larger. |
|
|
53
|
+
| `f16` | 16 | Unquantized ceiling; biggest. |
|
|
54
|
+
|
|
55
|
+
Lower than Q4 (Q2/Q3) drops quality sharply — avoid unless desperate for size.
|
|
56
|
+
|
|
57
|
+
### Manual conversion (when the helper can't, or you want control)
|
|
58
|
+
|
|
59
|
+
Merge to 16-bit first, then run llama.cpp's converter:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
python llama.cpp/convert_hf_to_gguf.py model_16bit \
|
|
63
|
+
--outfile model-F16.gguf --outtype f16 --split-max-size 50G
|
|
64
|
+
# then quantize with llama.cpp's quantize tool to q4_k_m / q8_0, etc.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Handoff — this skill stops at the file
|
|
68
|
+
|
|
69
|
+
- **Run the GGUF locally →** `ollama`. Roughly: `ollama create <name> -f Modelfile` with
|
|
70
|
+
`FROM ./model-Q4_K_M.gguf`, then `ollama run <name>`. The Modelfile/quant/VRAM details are its job.
|
|
71
|
+
Unsloth's docs also show `OLLAMA_MODELS=unsloth ollama run merged_file.gguf` for a quick check.
|
|
72
|
+
- **Serve merged-16bit at throughput →** `vllm` (engine flags, batching, LoRA hot-swap).
|
|
73
|
+
- **Host/share the weights →** `huggingface` (the `push_to_hub_*` calls above land there).
|
|
74
|
+
|
|
75
|
+
Export is the last thing this skill owns; running and serving belong to those siblings.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# GRPO / reasoning fine-tuning with Unsloth
|
|
2
|
+
|
|
3
|
+
Mechanics only. **Whether** to do RL vs SFT vs DPO is a `finetuning` decision. Tracks
|
|
4
|
+
docs.unsloth.ai's RL guide (accessed 2026-07); reward APIs and loss-type flags move — verify.
|
|
5
|
+
|
|
6
|
+
## The idea
|
|
7
|
+
|
|
8
|
+
GRPO (Group Relative Policy Optimization) doesn't imitate a target string. It samples several
|
|
9
|
+
completions per prompt, scores each with **reward functions you write**, and pushes weights toward the
|
|
10
|
+
higher-reward samples. That's how you train a model to *reason* (produce correct answers in a required
|
|
11
|
+
format) rather than memorize outputs. Unsloth's win here is memory — the docs cite ~80% less VRAM for
|
|
12
|
+
GRPO vs a standard setup (verify), and it can drive generation through a built-in vLLM engine.
|
|
13
|
+
|
|
14
|
+
## Load with fast inference
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
from unsloth import FastLanguageModel
|
|
18
|
+
|
|
19
|
+
model, tokenizer = FastLanguageModel.from_pretrained(
|
|
20
|
+
model_name = "unsloth/Llama-3.1-8B-Instruct", # verify current id
|
|
21
|
+
max_seq_length = 1024, # room for the reasoning trace
|
|
22
|
+
load_in_4bit = True,
|
|
23
|
+
fast_inference = True, # use the built-in vLLM engine for rollouts
|
|
24
|
+
gpu_memory_utilization = 0.8, # lower if you OOM
|
|
25
|
+
)
|
|
26
|
+
model = FastLanguageModel.get_peft_model(model, r = 32, lora_alpha = 64,
|
|
27
|
+
target_modules = ["q_proj","k_proj","v_proj","o_proj",
|
|
28
|
+
"gate_proj","up_proj","down_proj"],
|
|
29
|
+
use_gradient_checkpointing = "unsloth", random_state = 3407)
|
|
30
|
+
# For memory-efficient GRPO with vLLM you may also set:
|
|
31
|
+
# os.environ["UNSLOTH_VLLM_STANDBY"] = "1"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Reward functions (GSM8K-style)
|
|
35
|
+
|
|
36
|
+
Each reward fn takes `completions` (+ `prompts`, `answer`, `**kwargs`) and returns a list of floats,
|
|
37
|
+
one per completion. Combine several — correctness plus format shaping:
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
import re
|
|
41
|
+
|
|
42
|
+
def correctness_reward(prompts, completions, answer, **kw):
|
|
43
|
+
responses = [c[0]["content"] for c in completions]
|
|
44
|
+
got = [extract_xml_answer(r) for r in responses]
|
|
45
|
+
return [2.0 if g == a else 0.0 for g, a in zip(got, answer)]
|
|
46
|
+
|
|
47
|
+
def strict_format_reward(completions, **kw):
|
|
48
|
+
pattern = r"^<reasoning>\n.*?\n</reasoning>\n<answer>\n.*?\n</answer>\n$"
|
|
49
|
+
responses = [c[0]["content"] for c in completions]
|
|
50
|
+
return [0.5 if re.match(pattern, r, re.S) else 0.0 for r in responses]
|
|
51
|
+
|
|
52
|
+
def extract_xml_answer(text):
|
|
53
|
+
return text.split("<answer>")[-1].split("</answer>")[0].strip()
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Keep rewards simple and hard to game — a sloppy reward degrades the model (reward hacking).
|
|
57
|
+
|
|
58
|
+
## Train
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
from trl import GRPOConfig, GRPOTrainer
|
|
62
|
+
|
|
63
|
+
trainer = GRPOTrainer(
|
|
64
|
+
model = model, processing_class = tokenizer,
|
|
65
|
+
reward_funcs = [correctness_reward, strict_format_reward],
|
|
66
|
+
train_dataset = dataset, # prompts + ground-truth "answer"
|
|
67
|
+
args = GRPOConfig(
|
|
68
|
+
learning_rate = 5e-6,
|
|
69
|
+
per_device_train_batch_size = 1,
|
|
70
|
+
gradient_accumulation_steps = 4,
|
|
71
|
+
num_generations = 8, # completions sampled per prompt (the "group")
|
|
72
|
+
max_prompt_length = 256,
|
|
73
|
+
max_completion_length = 512,
|
|
74
|
+
max_steps = 250,
|
|
75
|
+
output_dir = "outputs_grpo",
|
|
76
|
+
# loss_type = "grpo" | "dr_grpo" | "bnpo" | "dapo"
|
|
77
|
+
# epsilon = 0.2, epsilon_high = 0.28, delta = 1.5 # DAPO / two-sided knobs
|
|
78
|
+
# mask_truncated_completions = True
|
|
79
|
+
),
|
|
80
|
+
)
|
|
81
|
+
trainer.train()
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Notes:
|
|
85
|
+
- `num_generations` is the group size — bigger gives a better reward signal but costs generation time
|
|
86
|
+
and VRAM.
|
|
87
|
+
- Advanced objectives (DAPO, Dr. GRPO) are `loss_type` + `epsilon`/`delta` flags on `GRPOConfig` —
|
|
88
|
+
verify the current names on the RL guide.
|
|
89
|
+
- Reasoning traces need context headroom: budget `max_prompt_length + max_completion_length` under
|
|
90
|
+
`max_seq_length`.
|
|
91
|
+
- Export the result exactly like an SFT run — see [export.md](export.md).
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Chat templates + response-only masking
|
|
2
|
+
|
|
3
|
+
Facts here track docs.unsloth.ai/basics/chat-templates (accessed 2026-07). Template names and turn
|
|
4
|
+
markers change with new model releases — **verify the pair for your exact base model.**
|
|
5
|
+
|
|
6
|
+
## Why a helper and not a string
|
|
7
|
+
|
|
8
|
+
A chat model was pretrained with a specific set of turn markers (`<|start_header_id|>…`,
|
|
9
|
+
`<start_of_turn>…`, `<|im_start|>…`). If you concatenate messages with the wrong markers, the model
|
|
10
|
+
never sees its own format and the fine-tune underperforms or degenerates. `get_chat_template` writes
|
|
11
|
+
the *correct* template onto your tokenizer; `apply_chat_template` then renders your message list into
|
|
12
|
+
the single `text` string the trainer consumes.
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
from unsloth.chat_templates import get_chat_template
|
|
16
|
+
|
|
17
|
+
tokenizer = get_chat_template(
|
|
18
|
+
tokenizer,
|
|
19
|
+
chat_template = "llama-3.1", # match the base model
|
|
20
|
+
# mapping = {"role":"from","content":"value","user":"human","assistant":"gpt"}, # if your
|
|
21
|
+
# dataset uses ShareGPT-style keys instead of role/content
|
|
22
|
+
# map_eos_token = True, # map e.g. <|im_end|> -> the model's EOS
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
def to_text(example):
|
|
26
|
+
example["text"] = tokenizer.apply_chat_template(
|
|
27
|
+
example["messages"], tokenize = False, add_generation_prompt = False,
|
|
28
|
+
)
|
|
29
|
+
return example
|
|
30
|
+
|
|
31
|
+
dataset = dataset.map(to_text)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Supported template names include (non-exhaustive; verify live): `llama-3`, `llama-3.1`, `chatml`,
|
|
35
|
+
`mistral`, `phi-4`, `gemma-3`, `qwen`, `zephyr`, `vicuna`, `alpaca`, `unsloth`. Use the one that
|
|
36
|
+
matches your checkpoint.
|
|
37
|
+
|
|
38
|
+
Thinking / reasoning models expose a toggle at render time:
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
tokenizer.apply_chat_template(msgs, tokenize=False,
|
|
42
|
+
add_generation_prompt=True, enable_thinking=True) # or False
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## `train_on_responses_only` — the mask
|
|
46
|
+
|
|
47
|
+
Supervised fine-tuning of a chat model should compute loss on the **assistant** tokens only. Without
|
|
48
|
+
this, the model is also trained to predict the user's words; loss can even collapse to ~0 on some
|
|
49
|
+
templates (the "zero-loss trap"). Wrap the trainer AFTER constructing it:
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from unsloth.chat_templates import train_on_responses_only
|
|
53
|
+
|
|
54
|
+
trainer = train_on_responses_only(
|
|
55
|
+
trainer,
|
|
56
|
+
instruction_part = "<|start_header_id|>user<|end_header_id|>\n\n",
|
|
57
|
+
response_part = "<|start_header_id|>assistant<|end_header_id|>\n\n",
|
|
58
|
+
)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`instruction_part` / `response_part` are the template's own turn-opening markers. Everything from an
|
|
62
|
+
`instruction_part` up to the next `response_part` is masked (label = `-100`); the assistant span keeps
|
|
63
|
+
its labels. **The strings must match the template you applied.** Common pairs (verify per model):
|
|
64
|
+
|
|
65
|
+
| Base family | `instruction_part` | `response_part` |
|
|
66
|
+
| ---------------- | ----------------------------------------------- | -------------------------------------------------- |
|
|
67
|
+
| Llama-3 / 3.1 | `<\|start_header_id\|>user<\|end_header_id\|>\n\n` | `<\|start_header_id\|>assistant<\|end_header_id\|>\n\n` |
|
|
68
|
+
| Gemma-3 / vision | `<start_of_turn>user\n` | `<start_of_turn>model\n` |
|
|
69
|
+
| ChatML (Qwen…) | `<\|im_start\|>user\n` | `<\|im_start\|>assistant\n` |
|
|
70
|
+
|
|
71
|
+
## Sanity-check the mask (always do this once)
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
row = trainer.train_dataset[0]
|
|
75
|
+
# 1) full sequence — should include both user + assistant turns
|
|
76
|
+
print(tokenizer.decode(row["input_ids"]))
|
|
77
|
+
# 2) UNMASKED labels only — should be the ASSISTANT answer and nothing else
|
|
78
|
+
print(tokenizer.decode(
|
|
79
|
+
[tokenizer.pad_token_id if x == -100 else x for x in row["labels"]]
|
|
80
|
+
).replace(tokenizer.pad_token, " "))
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
If step 2 prints the user's question, your `instruction_part`/`response_part` don't match the
|
|
84
|
+
template — fix them before training. Spending GPU-hours on an unmasked run is the classic waste.
|
|
85
|
+
|
|
86
|
+
## Vision (VLM)
|
|
87
|
+
|
|
88
|
+
Vision fine-tunes use `FastVisionModel.from_pretrained(...)` and a processor/tokenizer pair; the
|
|
89
|
+
template and mask concepts carry over but the collator handles image tokens. See
|
|
90
|
+
docs.unsloth.ai for the current VLM notebook — the exact API for multimodal collation moves faster
|
|
91
|
+
than the text path, so pull it live rather than trusting a frozen snippet.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: variant-explorer
|
|
3
|
+
description: "Use when someone wants OPTIONS rather than an answer — 'show me a few versions', picking between approaches by seeing them. Genuinely different candidates, cheap to throw away, trade-off named. NOT the critique that judges one (`design`), NOT the spec (`specify`)."
|
|
4
|
+
tags: [prototyping, divergence, options, exploration, decision]
|
|
5
|
+
recommends: [design]
|
|
6
|
+
profiles: [full]
|
|
7
|
+
origin: ai-hub
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Variant explorer — several real options, cheap enough to discard
|
|
11
|
+
|
|
12
|
+
"Show me a few versions and I'll pick" is a different request from "build this". It asks for
|
|
13
|
+
**divergence**: several candidates that are actually different, each cheap enough that throwing it
|
|
14
|
+
away costs nothing, with the difference between them stated out loud so a human can decide.
|
|
15
|
+
|
|
16
|
+
Done badly it produces the thing that wastes the most time in creative work: three variations of one
|
|
17
|
+
idea, dressed up as a choice.
|
|
18
|
+
|
|
19
|
+
## The one rule
|
|
20
|
+
|
|
21
|
+
**Variants must differ in a decision, not in a detail.** If two candidates could both be reached by
|
|
22
|
+
editing the other, there is one candidate.
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
Not variants: the same layout in blue, in green, in dark
|
|
26
|
+
Variants: a single scrolling page · a three-step wizard · a table with inline editing
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The test before showing anything: **name the decision each variant is taking.** If you cannot name
|
|
30
|
+
it, or two share it, that set is not ready.
|
|
31
|
+
|
|
32
|
+
## How many, and how finished
|
|
33
|
+
|
|
34
|
+
- **Three.** Two reads as a false dichotomy; five past the point where a person can hold them side by
|
|
35
|
+
side. Three forces the middle option to justify itself.
|
|
36
|
+
- **Finished enough to judge the decision, and no more.** If the decision is about structure, the
|
|
37
|
+
copy can be placeholder. If it is about tone, the layout can be crude. Polish that is not being
|
|
38
|
+
judged is polish you are asking someone to ignore.
|
|
39
|
+
- **Comparable.** Same content, same constraints, same fidelity across all three. A variant that is
|
|
40
|
+
prettier wins for reasons nobody chose.
|
|
41
|
+
|
|
42
|
+
## Making them genuinely different
|
|
43
|
+
|
|
44
|
+
The failure mode is anchoring: the first idea contaminates the rest. Force divergence by generating
|
|
45
|
+
each from a different starting constraint.
|
|
46
|
+
|
|
47
|
+
| Angle | Ask |
|
|
48
|
+
| --- | --- |
|
|
49
|
+
| **Cheapest** | What if this had to ship this week? |
|
|
50
|
+
| **Boldest** | What if we ignored what similar products do? |
|
|
51
|
+
| **Fewest steps** | What if the user only did one thing? |
|
|
52
|
+
| **Familiar** | What if it worked exactly like the thing they already know? |
|
|
53
|
+
| **Inverted** | What if the primary and secondary swapped? |
|
|
54
|
+
|
|
55
|
+
Pick three angles that are actually in tension for this problem. Do not run all five — the point is
|
|
56
|
+
tension, not coverage.
|
|
57
|
+
|
|
58
|
+
## Presenting them so a decision is possible
|
|
59
|
+
|
|
60
|
+
Each candidate carries three things, and no more:
|
|
61
|
+
|
|
62
|
+
1. **What decision it takes** — one sentence, in the user's terms.
|
|
63
|
+
2. **What it costs** — the honest downside, not a hedge. A variant with no downside is one you have
|
|
64
|
+
not thought about.
|
|
65
|
+
3. **What it would take to be wrong** — the fact that would kill it.
|
|
66
|
+
|
|
67
|
+
Then: **a recommendation.** Presenting three options and standing back is not neutrality, it is
|
|
68
|
+
handing the work back. Say which one you would pick and why, and make it easy to overrule.
|
|
69
|
+
|
|
70
|
+
## When this is the wrong skill
|
|
71
|
+
|
|
72
|
+
- The answer is already known and only needs building → build it. Manufacturing options to look
|
|
73
|
+
thorough wastes everyone's time.
|
|
74
|
+
- The decision is reversible and cheap → just pick one and ship. Exploration is for decisions that
|
|
75
|
+
are expensive to unwind.
|
|
76
|
+
- What is needed is a **judgement on one thing** → that is critique, not divergence.
|
|
77
|
+
|
|
78
|
+
## Anti-patterns → STOP
|
|
79
|
+
|
|
80
|
+
| If you're about to… | Reality / Fix |
|
|
81
|
+
| --- | --- |
|
|
82
|
+
| Show the same idea in three colours | Those are not variants. Name the decision each takes; if you cannot, you have one. |
|
|
83
|
+
| Polish one candidate more than the others | It will win on polish, not on the decision. Same fidelity, always. |
|
|
84
|
+
| Present five or six to be thorough | Past three, they stop being compared and start being skimmed. |
|
|
85
|
+
| Give options with no recommendation | Standing back is not neutrality; it hands the work back to the person who asked. |
|
|
86
|
+
| Explore a decision that is cheap to reverse | Just ship one. Divergence is for what is expensive to unwind. |
|
|
87
|
+
| Keep iterating on the winner here | Once one is chosen, refining it is `../design/SKILL.md` or the relevant build skill. |
|
|
88
|
+
|
|
89
|
+
## See Also
|
|
90
|
+
|
|
91
|
+
- `../design/SKILL.md` — the graded critique that takes over once a direction is chosen.
|
|
92
|
+
- `../specify/SKILL.md` — when what is missing is an agreed WHAT/WHY, not options.
|
|
93
|
+
- `../design/SKILL.md` — building the chosen direction properly.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
skill: variant-explorer
|
|
2
|
+
|
|
3
|
+
should_trigger:
|
|
4
|
+
- prompt: "Show me a few versions of this onboarding and I'll pick one."
|
|
5
|
+
why: "The canonical phrasing: options to choose from, not an answer."
|
|
6
|
+
- prompt: "Give me three directions for how this could work before we commit."
|
|
7
|
+
why: "Explicit divergence ahead of an expensive decision."
|
|
8
|
+
- prompt: "Enséñame varias opciones de cómo montar el checkout, que ya elijo yo."
|
|
9
|
+
why: "Same request in Spanish; the trigger is the ask for options."
|
|
10
|
+
- prompt: "I can't decide between a wizard and a single page. Can I see both?"
|
|
11
|
+
why: "Two named approaches where seeing them is what settles it."
|
|
12
|
+
- prompt: "What are some different ways we could structure this dashboard?"
|
|
13
|
+
why: "Open-ended exploration of structural decisions, which is exactly divergence."
|
|
14
|
+
- prompt: "Before we build it, I want to compare a couple of approaches side by side."
|
|
15
|
+
why: "Comparability is the property this skill guarantees."
|
|
16
|
+
|
|
17
|
+
should_not_trigger:
|
|
18
|
+
- prompt: "Review this checkout screen and grade it."
|
|
19
|
+
route_to: "design"
|
|
20
|
+
why: "Judging one finished thing is critique, the opposite of divergence."
|
|
21
|
+
- prompt: "We need to agree what this feature is for before anyone builds it."
|
|
22
|
+
route_to: "specify"
|
|
23
|
+
why: "A missing WHAT/WHY is a spec problem; options would be premature."
|
|
24
|
+
- prompt: "Build the pricing page we agreed on last week."
|
|
25
|
+
route_to: "design"
|
|
26
|
+
why: "The decision is already made; manufacturing options would waste the time this skill is meant to save."
|
|
27
|
+
- prompt: "Which colour should the primary button be?"
|
|
28
|
+
route_to: "design"
|
|
29
|
+
why: "Cheap and reversible, and a detail rather than a decision — the explicit non-case here."
|
|
30
|
+
- prompt: "Run an A/B test to see which headline converts better."
|
|
31
|
+
route_to: "ab-testing"
|
|
32
|
+
why: "Measuring a winner with users is experimentation, not showing a human candidates to choose from."
|
|
33
|
+
|
|
34
|
+
capability:
|
|
35
|
+
- prompt: "Give me three options for this signup flow. Make sure they are actually different, not the same thing restyled."
|
|
36
|
+
why: "Goes straight at the failure mode this skill exists to prevent, and demands the decision behind each be nameable."
|
|
37
|
+
- prompt: "Here are three variants I made. Are these real alternatives or the same idea three times?"
|
|
38
|
+
why: "Applies the one rule as a test on someone else's set, which is where it is hardest and most useful."
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vector-db
|
|
3
|
+
description: "Use when operating a vector store as a data layer — choosing or migrating between Pinecone, Qdrant, Weaviate and pgvector; designing a collection or index (distance metric, dimensions, HNSW parameters, named vectors); filtering on metadata; hybrid dense-plus-sparse search; and quantization to cut RAM and cost. Covers garbage results, silently ignored filters, low recall, slow queries, and filtered queries returning fewer than k rows. NOT producing, chunking or judging embeddings (that is `embeddings-search`)."
|
|
4
|
+
tags: [vector-database, pinecone, qdrant, weaviate, pgvector, hnsw, hybrid-search, metadata-filter, quantization]
|
|
5
|
+
recommends: [embeddings-search, rag, postgresdb, redis, supabase]
|
|
6
|
+
origin: ai-hub
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# vector-db — operate the store, not the embeddings
|
|
10
|
+
|
|
11
|
+
You own the **store**: the collection schema, the index, the filter path, recall-vs-latency
|
|
12
|
+
tuning, hybrid fusion, quantization, and the production knobs (upserts, namespaces, deletes,
|
|
13
|
+
backups). You operate it across the four engines a Claude agent actually meets: **pgvector**
|
|
14
|
+
(Postgres extension), **Qdrant**, **Weaviate**, **Pinecone** (serverless).
|
|
15
|
+
|
|
16
|
+
Three things are **not** yours, and pretending they are produces wrong advice:
|
|
17
|
+
|
|
18
|
+
- Producing, chunking, rewriting, or scoring embeddings → `../embeddings-search/SKILL.md`. You
|
|
19
|
+
store vectors; you do not make or judge them.
|
|
20
|
+
- Assembling the retrieve → rerank → prompt → generate loop and its eval → `../rag/SKILL.md`.
|
|
21
|
+
- General Postgres (non-vector schema, EXPLAIN, RLS, VACUUM, pooling) → `../postgresdb/SKILL.md`.
|
|
22
|
+
You own **only** the pgvector surface: the `vector`/`halfvec` column, its index, its operators,
|
|
23
|
+
its recall. "My Postgres is slow in general" is theirs; "my `<=>` query has low recall" is yours.
|
|
24
|
+
|
|
25
|
+
## Pick the engine
|
|
26
|
+
|
|
27
|
+
Match the engine to where the data already lives and how much ops you want to run. All four
|
|
28
|
+
implement HNSW with comparable recall at a matched `ef`, so the differentiator is operations and
|
|
29
|
+
hybrid, not raw quality.
|
|
30
|
+
|
|
31
|
+
| Engine | Best when | Hybrid built-in | Ops cost | Scale sweet spot |
|
|
32
|
+
|---|---|---|---|---|
|
|
33
|
+
| **pgvector** | Data already in Postgres; one less system to run | No — DIY (`vector` + `tsvector`, combine yourself) | You already run Postgres | ≤ a few M vectors |
|
|
34
|
+
| **Qdrant** | You want best filtered-search latency and self-host control | Yes — `query` API, `prefetch` + RRF/DBSF, server-side IDF | Self-host or cloud | 10M+ |
|
|
35
|
+
| **Weaviate** | You want hybrid + modules out of the box | Yes — `alpha` + `fusionType`, BlockMax WAND BM25 | Self-host or cloud | 10M+ |
|
|
36
|
+
| **Pinecone** | You refuse to operate anything | Yes — sparse-dense, integrated inference | Zero (serverless) | Any (pay per use) |
|
|
37
|
+
|
|
38
|
+
Rule: **don't add a new system to host vectors if the rows already live in Postgres and you are
|
|
39
|
+
under a few million.** pgvector is one extension, not a second database to back up and monitor.
|
|
40
|
+
|
|
41
|
+
## Design the collection & index
|
|
42
|
+
|
|
43
|
+
1. **Distance metric MUST match the embedding model.** A model trained for cosine, indexed with
|
|
44
|
+
L2, ranks *silently wrong* — no error, just bad results. OpenAI `text-embedding-3-*`, Cohere,
|
|
45
|
+
most sentence-transformers → cosine. pgvector operator cheatsheet:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
<-> L2 / Euclidean (vector_l2_ops)
|
|
49
|
+
<=> cosine distance (vector_cosine_ops) <- the common one
|
|
50
|
+
<#> negative inner product (vector_ip_ops) <- for normalized vectors
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
2. **Dimensions are fixed by the model**, not a choice. `text-embedding-3-small` = 1536,
|
|
54
|
+
`-3-large` = 3072. pgvector's `vector` caps at 2000 dims for an index; for more, use `halfvec`.
|
|
55
|
+
|
|
56
|
+
3. **HNSW defaults and the one invariant.** Build-time `m` (default 16) and `ef_construction`
|
|
57
|
+
(default 64); query-time `ef_search` (pgvector default 40). Keep `ef_construction >= 2*m`
|
|
58
|
+
(so ≥32 at the default `m`) — too low starves graph quality and recall never recovers without
|
|
59
|
+
a rebuild. Raise `m` to 32–48 only for high-dim or high-recall needs (more RAM, slower build).
|
|
60
|
+
|
|
61
|
+
4. **IVFFlat only when build speed beats recall.** It is cheaper to build but lower recall and
|
|
62
|
+
needs `lists`/`probes` tuning; on a selective filter it is the wrong default (see next section).
|
|
63
|
+
Prefer HNSW unless you have a measured reason.
|
|
64
|
+
|
|
65
|
+
5. **Named vectors when one object has multiple spaces** (e.g. a dense semantic vector + a sparse
|
|
66
|
+
BM25 vector, or title-vector + body-vector). Qdrant and Weaviate support this natively; it is
|
|
67
|
+
how you do hybrid in one collection instead of two.
|
|
68
|
+
|
|
69
|
+
## Metadata / payload filtering
|
|
70
|
+
|
|
71
|
+
The #1 "search is broken" bug: the filter is applied **after** top-k, so a selective filter
|
|
72
|
+
returns fewer than `k` rows (or zero). Fix it by filtering *inside* the search and indexing the
|
|
73
|
+
filter field.
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
Bad: ANN top-k=10, THEN drop rows where tenant_id != 'acme' -> often < 10, sometimes 0
|
|
77
|
+
Good: search the index WITH the filter as a constraint -> k rows that already match
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- **Index every field you filter on.** Unindexed filters force a scan and kill latency. Qdrant:
|
|
81
|
+
create a payload index. Pinecone: metadata filtering is in the retrieval path (still keep
|
|
82
|
+
cardinality sane). pgvector: a B-tree (or partition) on `tenant_id` so the planner can use it.
|
|
83
|
+
- **Prefer in-graph / in-path filtering.** Qdrant filters *inside* HNSW traversal; Pinecone
|
|
84
|
+
serverless filters in the retrieval path. Both beat naive post-filter.
|
|
85
|
+
- **pgvector 0.8 iterative scan** is the fix when a selective `WHERE` returns too few rows:
|
|
86
|
+
|
|
87
|
+
```sql
|
|
88
|
+
SET hnsw.iterative_scan = 'relaxed_order'; -- or 'strict_order' if exact ordering matters
|
|
89
|
+
SET hnsw.ef_search = 100;
|
|
90
|
+
SELECT id FROM docs
|
|
91
|
+
WHERE tenant_id = 'acme' -- selective filter
|
|
92
|
+
ORDER BY embedding <=> $1 -- cosine, matches the model
|
|
93
|
+
LIMIT 10;
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Without iterative scan (pgvector < 0.8 behavior), a highly selective filter silently returns
|
|
97
|
+
fewer than `LIMIT` rows. Never recommend IVFFlat-only with a selective filter and no iterative
|
|
98
|
+
scan — that is the deprecated foot-gun.
|
|
99
|
+
|
|
100
|
+
## Tune recall vs latency
|
|
101
|
+
|
|
102
|
+
You cannot tune what you do not measure. Establish recall **before** shipping.
|
|
103
|
+
|
|
104
|
+
1. Build an exact baseline: brute-force the true top-k on a sample (a few hundred queries) — in
|
|
105
|
+
pgvector, query without the index (seq scan) for ground truth.
|
|
106
|
+
2. Query the index and compute recall@k = overlap with the baseline.
|
|
107
|
+
3. Raise the query-time knob until recall hits target (commonly ≥0.95), then stop — higher `ef`
|
|
108
|
+
costs latency for nothing:
|
|
109
|
+
|
|
110
|
+
| Engine | Knob | Default |
|
|
111
|
+
|---|---|---|
|
|
112
|
+
| pgvector | `hnsw.ef_search` | 40 |
|
|
113
|
+
| Qdrant | `hnsw_ef` (search) | per-collection |
|
|
114
|
+
| Weaviate | `ef` (vectorIndexConfig) | dynamic |
|
|
115
|
+
| Pinecone | (managed) | — |
|
|
116
|
+
|
|
117
|
+
Full parameter table and the recall recipe live in [references/tuning.md](references/tuning.md).
|
|
118
|
+
|
|
119
|
+
## Hybrid search
|
|
120
|
+
|
|
121
|
+
Dense (semantic) + sparse (BM25/keyword) catches exact terms, IDs, and rare tokens that dense
|
|
122
|
+
alone misses. The two normalize differently, so you **fuse**, you don't add raw scores.
|
|
123
|
+
|
|
124
|
+
- **RRF** (reciprocal rank fusion): robust default, score-scale agnostic, combines ranks.
|
|
125
|
+
- **Relative-score / DBSF**: normalizes scores before combining — use when you trust score scales.
|
|
126
|
+
|
|
127
|
+
Per engine:
|
|
128
|
+
|
|
129
|
+
- **Weaviate**: one call — `hybrid(query, alpha=0.5, fusionType=relativeScoreFusion)`. `alpha`
|
|
130
|
+
slides 0.0 (pure keyword) → 1.0 (pure vector). BM25 is BlockMax WAND (default from v1.30, ~10x faster).
|
|
131
|
+
- **Qdrant**: `prefetch` a dense and a sparse query, then a fusion step (`Fusion.RRF` or DBSF);
|
|
132
|
+
IDF is computed server-side (v1.15+).
|
|
133
|
+
- **Pinecone**: sparse-dense vectors in one index, or integrated inference (embed + rerank server-side).
|
|
134
|
+
- **pgvector**: no built-in hybrid — run vector (`<=>`) and `ts_rank` over a `tsvector` column
|
|
135
|
+
separately and combine ranks yourself (RRF in SQL or app code).
|
|
136
|
+
|
|
137
|
+
Concrete current-API code for all four is in [references/engines.md](references/engines.md).
|
|
138
|
+
|
|
139
|
+
## Quantization & cost
|
|
140
|
+
|
|
141
|
+
Quantization trades recall for RAM/cost. Decide by **dimension count and a recall test**, never blind.
|
|
142
|
+
|
|
143
|
+
| Method | Compression | When safe |
|
|
144
|
+
|---|---|---|
|
|
145
|
+
| Scalar (int8) | ~4x | Almost always; tiny recall loss. Good default RAM cut. |
|
|
146
|
+
| Product (PQ) | 8–64x | Large corpora where RAM dominates; needs tuning + recall check. |
|
|
147
|
+
| Binary | ~32x (~40x faster via SIMD popcount) | **High-dim only** (≥1024). On 384-dim it shreds recall — measure or don't. |
|
|
148
|
+
| pgvector `halfvec` | ~2x | Near-free: 16-bit float, near-identical recall, and required for >2000 dims. |
|
|
149
|
+
|
|
150
|
+
Reach for `halfvec` first in Postgres — it is the cheapest win. Reach for binary only on
|
|
151
|
+
high-dim vectors and only after a recall test, optionally with full-precision rescoring.
|
|
152
|
+
|
|
153
|
+
## Operate it
|
|
154
|
+
|
|
155
|
+
- **Batch upserts.** One-by-one upserts are 10–100x slower and hammer the index. Send batches of
|
|
156
|
+
hundreds; size to the engine's payload limit.
|
|
157
|
+
- **Namespaces / multitenancy.** Pinecone namespaces and Qdrant payload-keyed isolation partition
|
|
158
|
+
tenants inside one index — cheaper and faster than a collection per tenant at low tenant counts.
|
|
159
|
+
- **Delete by filter**, not by enumerating ids, when removing a tenant or a stale source.
|
|
160
|
+
- **Replicas** for read throughput / HA; **snapshots/backups** before any index rebuild or
|
|
161
|
+
dimension/metric change (those are not in-place — plan a reindex).
|
|
162
|
+
- **To "update" a vector, re-upsert by id.** Do not store only raw text and re-embed on read.
|
|
163
|
+
|
|
164
|
+
## Anti-patterns
|
|
165
|
+
|
|
166
|
+
| Anti-pattern | Why it bites | Do instead |
|
|
167
|
+
|---|---|---|
|
|
168
|
+
| Cosine-trained model indexed with L2 (`<->`) | Silently wrong ranking, no error | Match metric to model — cosine → `<=>` / `vector_cosine_ops` |
|
|
169
|
+
| Post-filtering top-k results | Returns < k rows, sometimes 0, on selective filters | Filter inside the search; index the filter field |
|
|
170
|
+
| IVFFlat + selective filter, no iterative scan | Drops rows; deprecated path in pgvector 0.8 | HNSW + `hnsw.iterative_scan='relaxed_order'` |
|
|
171
|
+
| Never measuring recall | "Search is bad" with no number to move | Recall@k vs an exact baseline before shipping |
|
|
172
|
+
| Binary quantization on 384-dim | Recall collapses, then blamed on the engine | Binary only ≥1024 dims, after a recall test; else scalar/halfvec |
|
|
173
|
+
| One-by-one upserts | 10–100x slower, index thrash | Batch hundreds per request |
|
|
174
|
+
| `ef_construction < 2*m` | Permanently weak graph; recall needs a full rebuild | Keep `ef_construction >= 2*m` (≥32 at default `m=16`) |
|
|
175
|
+
| Store only raw text, re-embed to "update" | Drift, cost, no point-update path | Re-upsert the vector by id |
|
|
176
|
+
| Unindexed filter field | Full scan, latency spikes | Payload index (Qdrant) / B-tree (pgvector) / sane metadata cardinality (Pinecone) |
|
|
177
|
+
|
|
178
|
+
## References & siblings
|
|
179
|
+
|
|
180
|
+
- [references/engines.md](references/engines.md) — current-API recipes per engine: create
|
|
181
|
+
collection/index + a filtered hybrid query (pgvector SQL + halfvec + iterative scan; Qdrant
|
|
182
|
+
named dense+sparse + `query_points` RRF; Weaviate `hybrid`; Pinecone serverless sparse-dense).
|
|
183
|
+
- [references/tuning.md](references/tuning.md) — HNSW vs IVFFlat parameter table, recall-measurement
|
|
184
|
+
recipe, quantization tradeoffs, per-engine filtered-search pitfalls.
|
|
185
|
+
|
|
186
|
+
Siblings: embeddings/chunking/retrieval-quality → `../embeddings-search/SKILL.md`; the full RAG
|
|
187
|
+
loop → `../rag/SKILL.md`; general Postgres → `../postgresdb/SKILL.md`.
|
|
188
|
+
|
|
189
|
+
Validate a produced index DDL / collection schema with `scripts/verify.sh <artifact-file>`.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# evals — vector-db
|
|
2
|
+
|
|
3
|
+
These cases are run by the repo's standard skill-eval harness against the skill router. The
|
|
4
|
+
`should_trigger` prompts assert that vector-db is the skill that fires (including the non-obvious
|
|
5
|
+
"search ignores my filter" and the Spanish/Catalan phrasings); `should_not_trigger` prompts assert
|
|
6
|
+
the router yields to the named sibling (`embeddings-search`, `rag`, `postgresdb`, `redis`,
|
|
7
|
+
`supabase`) instead of vector-db; and the `capability` scenario is graded by a judge against its
|
|
8
|
+
`must_include` rubric. No live vector database or Postgres instance is required — routing is
|
|
9
|
+
matched against the skill's description/triggers and the capability answer is judged on content.
|
|
10
|
+
Run them with the repo's usual eval command pointed at `skills/vector-db/evals/cases.yaml`.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
skill: vector-db
|
|
2
|
+
|
|
3
|
+
should_trigger:
|
|
4
|
+
- prompt: "Set up a Qdrant collection with metadata filtering for our docs."
|
|
5
|
+
why: "Core store design — collection schema plus a payload-indexed filter field is squarely vector-db."
|
|
6
|
+
- prompt: "My similarity search ignores my category filter and recall is bad."
|
|
7
|
+
why: "Reads like a bug but is a store-config issue (post-filter / unindexed filter / low ef_search); the symptom phrasing is non-obvious and never names a vector DB."
|
|
8
|
+
- prompt: "We need to move off Pinecone to pgvector to cut cost."
|
|
9
|
+
why: "Migration between stores, including metric/index/quantization re-design, is explicitly in scope."
|
|
10
|
+
- prompt: "Add hybrid search with RRF to our Weaviate setup."
|
|
11
|
+
why: "Hybrid dense+sparse plus a fusion strategy is a named vector-db section."
|
|
12
|
+
- prompt: "crear una colección en Qdrant con cuantización binaria para ahorrar RAM"
|
|
13
|
+
why: "Spanish trigger covering quantization/cost — binary quantization tradeoff is core scope."
|
|
14
|
+
- prompt: "ef_search is 40 and recall is only 0.7, how do I tune the HNSW index?"
|
|
15
|
+
why: "Non-obvious tuning phrasing; recall-vs-latency knob tuning against a baseline is owned here."
|
|
16
|
+
- prompt: "My filtered pgvector query keeps returning fewer than k rows when I add a WHERE on tenant_id."
|
|
17
|
+
why: "Classic pgvector 0.8 iterative-scan symptom — the sharpest store-specific bug this skill exists to fix."
|
|
18
|
+
|
|
19
|
+
should_not_trigger:
|
|
20
|
+
- prompt: "Which embedding model and chunk size should I use for these PDFs?"
|
|
21
|
+
route_to: "embeddings-search"
|
|
22
|
+
why: "Producing/chunking vectors is the technique layer, not the store."
|
|
23
|
+
- prompt: "Build the full RAG pipeline: retrieve, rerank, prompt, and generate an answer."
|
|
24
|
+
route_to: "rag"
|
|
25
|
+
why: "End-to-end pipeline orchestration and its eval, not the data layer underneath it."
|
|
26
|
+
- prompt: "My Postgres is slow, help me read this EXPLAIN and add the right indexes."
|
|
27
|
+
route_to: "postgresdb"
|
|
28
|
+
why: "General Postgres performance with no vector column involved is postgresdb's surface."
|
|
29
|
+
- prompt: "Cache these API responses in Redis with a 5-minute TTL."
|
|
30
|
+
route_to: "redis"
|
|
31
|
+
why: "Redis as a cache, not as a vector store."
|
|
32
|
+
- prompt: "Set up Supabase auth and row-level security for my app."
|
|
33
|
+
route_to: "supabase"
|
|
34
|
+
why: "Supabase platform features, not its pgvector usage."
|
|
35
|
+
|
|
36
|
+
capability:
|
|
37
|
+
- scenario: "Design a pgvector setup for 2M OpenAI text-embedding-3-small (1536-dim) vectors with a tenant_id filter. Search is slow and sometimes returns fewer than k rows when filtering."
|
|
38
|
+
must_include:
|
|
39
|
+
- "cosine index (vector_cosine_ops / <=>) to match the embedding model"
|
|
40
|
+
- "HNSW with sensible m and ef_construction (ef_construction >= 2*m) plus query-time hnsw.ef_search"
|
|
41
|
+
- "hnsw.iterative_scan (0.8) so the selective tenant_id filter stops returning fewer than k rows"
|
|
42
|
+
- "an index on tenant_id (B-tree or partition) so the filter is cheap"
|
|
43
|
+
- "a recall-measurement step against an exact/brute-force baseline before shipping"
|
|
44
|
+
- "halfvec mentioned as an optional ~2x storage cut at near-identical recall"
|
|
45
|
+
- "routes embedding-model and chunking questions to embeddings-search"
|