@dsalazardev/ai-hub-cli 0.0.0-stage → 0.1.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/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 +74 -0
- package/dist/cli/doctor.d.ts +14 -0
- package/dist/cli/doctor.js +200 -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 +262 -0
- package/dist/cli/memory.d.ts +2 -0
- package/dist/cli/memory.js +84 -0
- package/dist/cli/onboarding.d.ts +17 -0
- package/dist/cli/onboarding.js +234 -0
- package/dist/cli/run.d.ts +15 -0
- package/dist/cli/run.js +183 -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/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 +93 -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 +113 -0
- package/dist/manifest/manifest.js +202 -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 +18 -0
- package/dist/presets/materialize.js +101 -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 +255 -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 +393 -0
- package/package.json +61 -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 +55 -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 +27 -0
- package/presets/base/rules/core.md +35 -0
- package/presets/generic-ts/preset.yaml +46 -0
- package/presets/python/preset.yaml +47 -0
- package/presets/python/rules/python.md +10 -0
- package/schema/engine.schema.json +73 -0
- package/schema/manifest.schema.json +140 -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,265 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tasks
|
|
3
|
+
description: "Use when an approved plan needs slicing into an ordered task list before any code — the SDD `tasks` phase. Each row carries a literal done-check, dependencies, a parallel-safe marker and a spec trace, appended to the plan artifact. NOT writing the plan (that is `plan`), NOT the consistency gate (that is `analyze`), NOT executing the tasks (that is `implement`)."
|
|
4
|
+
tags: [sdd, tasks, breakdown]
|
|
5
|
+
recommends: [analyze, implement]
|
|
6
|
+
profiles: [core, full]
|
|
7
|
+
origin: ai-hub
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Tasks — turn an approved plan into a verifiable work list
|
|
11
|
+
|
|
12
|
+
The `tasks` phase is the hinge between *thinking* and *doing*. The plan already
|
|
13
|
+
decided the architecture, the interfaces, and the testing strategy. This phase
|
|
14
|
+
slices that plan into the **smallest units a coding agent can finish, prove, and
|
|
15
|
+
hand off** — each one ordered, each one carrying a *done-check* that a machine or
|
|
16
|
+
a reviewer can run without trusting anyone's word.
|
|
17
|
+
|
|
18
|
+
A task list is not a to-do list. A to-do list says "build the auth endpoint". A
|
|
19
|
+
task list says "T004: implement `POST /login`; done when `pytest
|
|
20
|
+
tests/auth/test_login.py` is green AND a 401 is returned for a bad password —
|
|
21
|
+
depends on T002, T003; parallel-safe with T005." The difference is that the
|
|
22
|
+
second one can be **handed to a subagent, executed, and verified** with no
|
|
23
|
+
further questions. This phase writes zero runtime code; it produces one artifact,
|
|
24
|
+
appended to the plan it was built from.
|
|
25
|
+
|
|
26
|
+
## Model tier — `balanced` (opt-in routing)
|
|
27
|
+
|
|
28
|
+
This phase's default tier is **`balanced`**: decomposing an approved plan is
|
|
29
|
+
structured work, not architecture. Routing is off unless `models.enabled: true`
|
|
30
|
+
in `02-DOCS/wiki/sdd/config.yaml`; when on, resolve the tier and apply it per
|
|
31
|
+
`../sdd/references/model-routing.md`, which owns the resolution order and the
|
|
32
|
+
announcement rules. Routing off or no profile → honor the session model silently.
|
|
33
|
+
|
|
34
|
+
## Read the harness profile first
|
|
35
|
+
|
|
36
|
+
Read `02-DOCS/wiki/harness/user-profile.md` before producing anything: its
|
|
37
|
+
`technical_level` sets the register (technical terms, or plain words with
|
|
38
|
+
analogies). The task table is always complete. In chat, speak in the `orient`
|
|
39
|
+
voice: one line of *why this slicing*, then flag the risky tasks. No profile →
|
|
40
|
+
use analogies and ask once "technical or with analogies?"; never invent one.
|
|
41
|
+
|
|
42
|
+
## Inputs (refuse to start without them)
|
|
43
|
+
|
|
44
|
+
You break down a **plan**, not an intent. Before slicing, confirm all three exist:
|
|
45
|
+
|
|
46
|
+
1. **The plan** — `02-DOCS/wiki/sdd/plans/<slug>.md`, written by the `plan`
|
|
47
|
+
phase. It must contain the architecture, interfaces, and testing strategy.
|
|
48
|
+
2. **The spec** — `02-DOCS/wiki/sdd/specs/<slug>.md`, so every task traces to a
|
|
49
|
+
requirement. A task with no spec line behind it is scope you are inventing.
|
|
50
|
+
3. **The constitution** — `02-DOCS/wiki/sdd/constitution.md`, the non-negotiable
|
|
51
|
+
bars (stack canon, quality gates) every task must respect.
|
|
52
|
+
4. **The SDD config** — `02-DOCS/wiki/sdd/config.yaml`, if present. Use its
|
|
53
|
+
`review_budget`, `delivery_strategy` and `testing.commands` when writing
|
|
54
|
+
done-checks and review forecasts. If it is missing on non-trivial work,
|
|
55
|
+
recommend `sdd-init`.
|
|
56
|
+
|
|
57
|
+
If the plan is missing, **stop and route to `plan`**. If the plan exists but is
|
|
58
|
+
vague on interfaces or testing, route back to `plan` to tighten it — do not
|
|
59
|
+
paper over a thin plan with guesswork in the task list. That guesswork is the
|
|
60
|
+
exact thing `analyze` will catch next, and you will have wasted the round trip.
|
|
61
|
+
|
|
62
|
+
## What makes a task well-formed
|
|
63
|
+
|
|
64
|
+
Every task is one row. A row is well-formed only when all six fields hold:
|
|
65
|
+
|
|
66
|
+
| Field | Rule |
|
|
67
|
+
| --- | --- |
|
|
68
|
+
| **ID** | `T001`, `T002`, … — sequential, zero-padded, no hyphen (GitHub Spec Kit canon). Stable, never renumbered once written (downstream phases cite it). |
|
|
69
|
+
| **[P]** | A **separate field after the ID**: `[P]` if the task is parallel-safe, blank otherwise. Never fold the marker into the ID. |
|
|
70
|
+
| **Title** | One imperative verb + object. "Implement", "Add", "Wire", "Migrate" — not "Handle" or "Support". |
|
|
71
|
+
| **Done-check** | The **literal** command or observation that proves done. Runnable, not a feeling. See below. |
|
|
72
|
+
| **Depends-on** | The task IDs that must finish first, or `—` for none. Drives the ordering and the parallel markers. |
|
|
73
|
+
| **Trace** | The spec section / acceptance criterion this task satisfies. Every task traces to one; if it can't, it's out of scope. |
|
|
74
|
+
|
|
75
|
+
Put `[P]` (parallel-safe) in its own field only when the task shares **no files
|
|
76
|
+
and no state** with another unblocked task. When in doubt, leave it blank — a
|
|
77
|
+
false `[P]` causes the merge collisions `parallel` exists to prevent.
|
|
78
|
+
|
|
79
|
+
## The done-check is the whole point
|
|
80
|
+
|
|
81
|
+
A done-check has to be **executable evidence**, owned by the stack, not a
|
|
82
|
+
self-graded claim. Delegate the *form* of the check to the relevant stack skill
|
|
83
|
+
and quote the actual command:
|
|
84
|
+
|
|
85
|
+
- Backend (Python/FastAPI) → a `pytest` invocation; route to `../fastapi/SKILL.md`.
|
|
86
|
+
- Go services → a `go test ./...` target; route to `../go/SKILL.md`.
|
|
87
|
+
- Frontend (Next.js) → a component/e2e test or a typed build; route to `../nextjs/SKILL.md`.
|
|
88
|
+
- Flutter → a `flutter test` target; route to `../flutter/SKILL.md`.
|
|
89
|
+
- Schema/migrations → a migration applies + a query returns expected rows; route to `../postgresdb/SKILL.md`.
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
WEAK done-check: "login works"
|
|
93
|
+
STRONG done-check: pytest tests/auth/test_login.py::test_bad_password_returns_401 → green
|
|
94
|
+
AND manual: POST /login {wrong pw} returns 401, no token in body
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
A done-check you cannot run is not a done-check. If the plan's testing strategy
|
|
98
|
+
doesn't support a runnable check for a slice, that is a **plan gap** — name it
|
|
99
|
+
and send it back, don't write a vague check to keep moving.
|
|
100
|
+
|
|
101
|
+
## TDD-shaped slicing (default)
|
|
102
|
+
|
|
103
|
+
The `implement` phase runs red → green → refactor. Slice so it can. For each
|
|
104
|
+
behavioral unit, the natural shape is a test-first pair the implementer executes
|
|
105
|
+
in order:
|
|
106
|
+
|
|
107
|
+
1. **Txxx (test):** write the failing test for the behavior. *Done when the test
|
|
108
|
+
exists and fails for the right reason.*
|
|
109
|
+
2. **Txxx+1 (impl):** implement until that test is green. *Done when the test
|
|
110
|
+
passes and nothing else regresses.*
|
|
111
|
+
|
|
112
|
+
You don't have to split every task in two, but the done-check of an
|
|
113
|
+
implementation task should always be *a test that was red and is now green*. This
|
|
114
|
+
is where `tasks` and `implement` shake hands: the list you write is the list TDD
|
|
115
|
+
will execute.
|
|
116
|
+
|
|
117
|
+
## The slicing procedure
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
1. WALK the plan top to bottom. List every concrete deliverable
|
|
121
|
+
(endpoint, model, migration, component, job, config).
|
|
122
|
+
2. For each deliverable, ask: smallest slice that produces a runnable
|
|
123
|
+
done-check? Split until each task is verifiable on its own.
|
|
124
|
+
3. ORDER by dependency. Foundations first: schema → data layer →
|
|
125
|
+
service → API → UI. A task never precedes what it depends on.
|
|
126
|
+
4. MARK [P] only on tasks that share no files/state with another
|
|
127
|
+
unblocked task. Default to sequential.
|
|
128
|
+
5. TRACE each task back to a spec line. No trace → cut it (scope creep)
|
|
129
|
+
or send the gap to `clarify`/`specify`.
|
|
130
|
+
6. ADD the cross-cutting closers: a final "all done-checks pass" task
|
|
131
|
+
and a "verify.sh green" task that hands off to `verify`.
|
|
132
|
+
7. ADD a review workload + delivery forecast before implementation.
|
|
133
|
+
8. APPEND the table to the plan artifact (see below). Do not start a
|
|
134
|
+
new file; the list lives with the plan it came from.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Where the artifact lives
|
|
138
|
+
|
|
139
|
+
The task list is **not** a new document. Append it to the existing plan under a
|
|
140
|
+
`## Tasks` heading:
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
02-DOCS/wiki/sdd/plans/<slug>.md
|
|
144
|
+
├─ ## Architecture (from plan)
|
|
145
|
+
├─ ## Interfaces (from plan)
|
|
146
|
+
├─ ## Testing strategy (from plan)
|
|
147
|
+
└─ ## Tasks ← you append this
|
|
148
|
+
T001 … T0NN as the table below, + a one-line "generated by tasks on <date>"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Then ensure the plan is indexed in `02-DOCS/wiki/index.md` (the Knowledge map;
|
|
152
|
+
root `CLAUDE.md` keeps only a short pointer) under the `sdd/` topic — the `plan`
|
|
153
|
+
phase usually added the row, so confirm it points at
|
|
154
|
+
`02-DOCS/wiki/sdd/plans/<slug>.md` and add it if missing. Additive only: never
|
|
155
|
+
delete a user's map entry.
|
|
156
|
+
|
|
157
|
+
### The table format
|
|
158
|
+
|
|
159
|
+
```markdown
|
|
160
|
+
## Tasks
|
|
161
|
+
<!-- generated by tasks on 2026-06-01; IDs are stable, do not renumber -->
|
|
162
|
+
|
|
163
|
+
| ID | [P] | Task | Done-check | Depends-on | Trace |
|
|
164
|
+
| --- | --- | --- | --- | --- | --- |
|
|
165
|
+
| T001 | | Add `users` table migration | `alembic upgrade head` applies clean; `\d users` shows email UNIQUE | — | spec §3 Data |
|
|
166
|
+
| T002 | [P] | Add `sessions` table migration | migration applies; FK to users present | T001 | spec §3 Data |
|
|
167
|
+
| T003 | | Write failing test for `POST /login` | `pytest tests/auth/test_login.py` fails: no route | T001 | spec §4 Auth |
|
|
168
|
+
| T004 | | Implement `POST /login` | T003 test green; bad pw → 401 | T003 | spec §4 Auth |
|
|
169
|
+
| ... | ... | ... | ... | ... | ... |
|
|
170
|
+
| T0NN | | All done-checks pass + `verify.sh` green | every row above checked; `scripts/verify.sh` exits 0 | all | spec §Acceptance |
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Per-task Interfaces (for context-isolated implementers)
|
|
174
|
+
|
|
175
|
+
`implement` and `parallel` dispatch tasks to **context-isolated** workers (the `developer`
|
|
176
|
+
subagent) that see *only their own task* — not the whole plan. Such a worker can't infer a
|
|
177
|
+
neighbor's function signature, payload shape, or column name from a one-line row. For any task
|
|
178
|
+
whose correctness depends on a contract it doesn't own, attach an **Interfaces block** right under
|
|
179
|
+
its row. Trivial, self-contained tasks don't need one — don't add ceremony where there's no
|
|
180
|
+
cross-task contract.
|
|
181
|
+
|
|
182
|
+
```markdown
|
|
183
|
+
**T004 — Interfaces**
|
|
184
|
+
- Consumes: `auth.verifyPassword(plain: str, hash: str) -> bool` (from T003); `users.email UNIQUE`
|
|
185
|
+
- Produces: `POST /login` → `200 {token}` | `401 {error}`; sets `Set-Cookie: sid=…; HttpOnly`
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Quote **exact** signatures and shapes, not descriptions — the isolated worker copies them, it can't
|
|
189
|
+
go look them up. "Returns the user" is invisible; `-> {id, email}` is usable. `Consumes` names what
|
|
190
|
+
the task reads from a neighbor or the environment; `Produces` names the contract later tasks (and
|
|
191
|
+
the per-task reviewer) will hold it to. The plan's **§0 Global Constraints** are inherited by every
|
|
192
|
+
task implicitly — do **not** repeat them per task. Interfaces carry the *task-local* contract;
|
|
193
|
+
Global Constraints carry the *project-wide* one. Together they are everything a blind implementer
|
|
194
|
+
needs.
|
|
195
|
+
|
|
196
|
+
## Review workload + delivery strategy forecast
|
|
197
|
+
|
|
198
|
+
After the task table, append a short forecast. This protects the human reviewer
|
|
199
|
+
before a giant diff exists.
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
## Review Workload Forecast
|
|
203
|
+
|
|
204
|
+
| Dimension | Forecast | Why |
|
|
205
|
+
| --- | --- | --- |
|
|
206
|
+
| Estimated changed lines | <number or range> | based on task count + touched areas |
|
|
207
|
+
| Files / areas | <count and names> | modules, migrations, UI, tests, docs |
|
|
208
|
+
| Review risk | low / medium / high | complexity, cross-stack scope, security/data changes |
|
|
209
|
+
| Suggested delivery | single-pr / ask-on-risk / autochain / exception | matched to config.review_budget |
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Pick the delivery strategy from the forecast: tiny change → `single-pr`; estimated
|
|
213
|
+
lines over `config.sdd.review_budget.line_budget` (default 400) → recommend
|
|
214
|
+
splitting or `ask-on-risk`; many areas or cross-stack contracts touched →
|
|
215
|
+
`autochain` or a feature-track branch. A deadline or emergency that justifies a
|
|
216
|
+
large review is marked `exception` and requires explicit user approval later.
|
|
217
|
+
|
|
218
|
+
## Anti-patterns → STOP
|
|
219
|
+
|
|
220
|
+
| Tempting move | Why it's wrong / Fix |
|
|
221
|
+
| --- | --- |
|
|
222
|
+
| "I'll write tasks straight from the user's intent" | You're skipping `plan`. Tasks slice a plan, not a wish. Route to `plan`. |
|
|
223
|
+
| "Done-check: 'feature works'" | Not runnable, not evidence. Quote the literal test/command, or it's not a done-check. |
|
|
224
|
+
| "One giant task: 'build the backend'" | Unverifiable, un-handoffable. Split until each slice has its own runnable check. |
|
|
225
|
+
| "Mark everything `[P]` so it goes faster" | Shared files = merge collisions. `[P]` only when scope is truly disjoint. |
|
|
226
|
+
| "This task has no spec line but we obviously need it" | That's scope creep wearing a hat. Trace it or cut it; if it's real, send it to `clarify`. |
|
|
227
|
+
| "The plan is thin here, I'll guess the slice" | `analyze` will reject the guess next phase. Tighten the plan first. |
|
|
228
|
+
| "I'll start coding the easy task while I list the rest" | This phase writes zero runtime code. Implementation is `implement`. |
|
|
229
|
+
| "Renumber the IDs so they're contiguous" | Downstream phases cite IDs. They're stable once written. Append, don't renumber. |
|
|
230
|
+
|
|
231
|
+
## Result envelope
|
|
232
|
+
|
|
233
|
+
End with:
|
|
234
|
+
|
|
235
|
+
```json result-envelope
|
|
236
|
+
{
|
|
237
|
+
"status": "complete",
|
|
238
|
+
"executive_summary": "Task list and review workload forecast appended to the plan.",
|
|
239
|
+
"artifact": "02-DOCS/wiki/sdd/plans/<slug>.md",
|
|
240
|
+
"next_recommended": "analyze",
|
|
241
|
+
"risk": "low|medium|high",
|
|
242
|
+
"skill_resolution": {
|
|
243
|
+
"used": ["tasks"],
|
|
244
|
+
"missing": [],
|
|
245
|
+
"fallback": [],
|
|
246
|
+
"compact_rules": ["Every task needs a runnable done-check.", "Forecast review load before implementation."]
|
|
247
|
+
},
|
|
248
|
+
"evidence": ["task table appended", "review workload forecast appended"]
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Next in the SDD chain
|
|
253
|
+
|
|
254
|
+
The task list is now the contract for the rest of the build. Hand off to
|
|
255
|
+
**`analyze`** — the consistency gate that cross-checks constitution ↔ spec ↔ plan
|
|
256
|
+
↔ **tasks** and surfaces orphan tasks and untraceable scope — and then to
|
|
257
|
+
**`implement`**, which executes the list TDD-style, using `parallel` for the `[P]`
|
|
258
|
+
tasks and `worktrees` for isolation.
|
|
259
|
+
|
|
260
|
+
Do not jump straight to `implement`. The whole point of writing a checkable list
|
|
261
|
+
was to let `analyze` audit it cheaply *before* code exists.
|
|
262
|
+
|
|
263
|
+
## Orientación (siempre)
|
|
264
|
+
|
|
265
|
+
Habla con la voz de `orient`: frases cortas, una idea por frase, y cada respuesta se entiende sola. Registro técnico o con analogías según `technical_level` en `02-DOCS/wiki/harness/user-profile.md`. Cierra cada turno con el **bloque-brújula** (📍 dónde estás · ➡️ siguiente, terminando en pregunta; ✅ y 🧭 cuando hay algo hecho o decidido). **Nunca termines en seco.** Protocolo completo: skill `orient` → `skills/orient/references/orientation-contract.md`. (Defiere a `suggest` el "¿instalo la skill que falta?".)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Eval harness — `tasks` skill
|
|
2
|
+
|
|
3
|
+
Two things to check: that the skill **triggers** on the right prompts (and stays
|
|
4
|
+
quiet on its SDD neighbours), and that it **measurably improves** the task
|
|
5
|
+
breakdown an agent produces. Cases live in `cases.yaml`. There is no shell
|
|
6
|
+
runner — triggering and breakdown quality are judgment calls, graded by an
|
|
7
|
+
**agent harness** (a Claude Code agent with the skill catalog loaded) plus a
|
|
8
|
+
human spot-check.
|
|
9
|
+
|
|
10
|
+
## What's in `cases.yaml`
|
|
11
|
+
|
|
12
|
+
- `should_trigger` — prompts that MUST load `tasks` (incl. Spanish and non-obvious phrasings).
|
|
13
|
+
- `should_not_trigger` — near-misses that must route elsewhere (`route_to`), all on the
|
|
14
|
+
hard SDD-chain boundaries: `plan` (the step before), `analyze` (the gate after),
|
|
15
|
+
`implement` (the doing), and the stack skills a single task merely delegates to.
|
|
16
|
+
- `capability` — one scenario with a `must_include` rubric to grade with vs without.
|
|
17
|
+
|
|
18
|
+
## Triggering eval
|
|
19
|
+
|
|
20
|
+
Goal: the skill fires when it should and never on a near-miss.
|
|
21
|
+
|
|
22
|
+
1. Configure an agent with the **full catalog of skill descriptions** available
|
|
23
|
+
for routing — the other ai-hub Spec-Kit phases (`sdd`, `constitution`, `specify`,
|
|
24
|
+
`clarify`, `plan`, `analyze`, `implement`, `verify`, `review`, `ship`,
|
|
25
|
+
`debug`, `worktrees`, `parallel`) plus the stack/process skills (`fastapi`,
|
|
26
|
+
`nextjs`, `go`, `postgresdb`, `flutter`, `harness`, …) — so routing competes
|
|
27
|
+
realistically.
|
|
28
|
+
2. For each `should_trigger` prompt: feed it cold, record whether `tasks` is the
|
|
29
|
+
skill the agent loads. Run **3–5 trials** per prompt (fresh context each).
|
|
30
|
+
3. For each `should_not_trigger` prompt: confirm `tasks` does NOT load and that
|
|
31
|
+
the chosen skill matches `route_to`. Same 3–5 trials.
|
|
32
|
+
4. Score: `triggered_correctly / total_trials` across both lists.
|
|
33
|
+
|
|
34
|
+
**Pass bar: ≥ 90% trigger accuracy** over all prompts and trials, with **zero
|
|
35
|
+
systematic false-positives** on the `plan`/`analyze`/`implement` near-misses.
|
|
36
|
+
Those three are the known traps: a prompt to *write* the plan, to *gate* the
|
|
37
|
+
artifacts, or to *execute* the work must not pull in `tasks`. If `tasks` keeps
|
|
38
|
+
stealing `plan` or `implement` prompts, the description's NOT-clauses need
|
|
39
|
+
sharpening.
|
|
40
|
+
|
|
41
|
+
## Capability eval
|
|
42
|
+
|
|
43
|
+
Goal: prove the skill changes the breakdown, not just the routing.
|
|
44
|
+
|
|
45
|
+
1. For the `capability` scenario, run it **twice**:
|
|
46
|
+
- **WITHOUT** the skill (base agent, no `tasks` loaded).
|
|
47
|
+
- **WITH** the `tasks` skill loaded.
|
|
48
|
+
2. Grade each output against the `must_include` checklist — one point per
|
|
49
|
+
checkable item covered. A human or grading agent marks each present / absent.
|
|
50
|
+
3. Compute coverage = `items_covered / total_items` per run.
|
|
51
|
+
|
|
52
|
+
**Pass bar: WITH the skill covers ≥ 80% of `must_include`; WITHOUT clearly
|
|
53
|
+
lower** (target a ≥ 30-point gap). The skill must demonstrably add: runnable
|
|
54
|
+
done-checks (not "it works"), dependency ordering, disciplined `[P]` marking,
|
|
55
|
+
spec traces with no orphan tasks, TDD-shaped pairs, appending into the plan
|
|
56
|
+
artifact (not a new file), and the handoff to `analyze`.
|
|
57
|
+
|
|
58
|
+
## Notes on honesty
|
|
59
|
+
|
|
60
|
+
- Trials are stochastic; report the raw fraction, not a rounded "pass".
|
|
61
|
+
- The highest-signal capability check is the **done-check quality**: a correct
|
|
62
|
+
answer never emits a self-graded "feature works" — it quotes the literal
|
|
63
|
+
command. Treat a tidy-looking but unverifiable list as a **capability
|
|
64
|
+
failure** even if it reads well.
|
|
65
|
+
- The second-highest signal is **refusing to slice from intent**: if no plan
|
|
66
|
+
exists, the correct behaviour is to STOP and route to `plan`, not to invent a
|
|
67
|
+
breakdown. A confident task list built from a fuzzy wish is a failure.
|
|
68
|
+
- Re-run after any edit to `SKILL.md` — wording changes shift both triggering
|
|
69
|
+
and rubric coverage, especially the NOT-clauses that fence off `plan`/
|
|
70
|
+
`analyze`/`implement`.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
skill: tasks
|
|
2
|
+
|
|
3
|
+
# Prompts that MUST load the `tasks` skill. It owns ONE job in the SDD chain:
|
|
4
|
+
# turn an APPROVED plan into an ordered, independently-verifiable task list —
|
|
5
|
+
# each task with a literal done-check, dependencies, a parallel-safe marker,
|
|
6
|
+
# and a trace back to a spec line — appended into the plan artifact under
|
|
7
|
+
# specs/<slug>/plan.md. It is NOT plan-writing (plan), NOT the
|
|
8
|
+
# consistency gate (analyze), NOT execution (implement).
|
|
9
|
+
should_trigger:
|
|
10
|
+
- prompt: "The plan for the billing feature is approved — break it into tasks we can actually execute."
|
|
11
|
+
why: "Slicing an approved plan into an executable task list is the skill's core and only job."
|
|
12
|
+
|
|
13
|
+
- prompt: "Descompón el plan de autenticación en una lista de tareas ordenada, cada una con su comprobación de hecho."
|
|
14
|
+
why: "Spanish phrasing for an ordered task breakdown where each task carries an explicit done-check — exactly this phase."
|
|
15
|
+
|
|
16
|
+
- prompt: "Give each step in the build a done-check so a subagent can run it and prove it's finished."
|
|
17
|
+
why: "Attaching a runnable done-check to every unit so it's independently verifiable is the defining feature of this skill, phrased without naming it."
|
|
18
|
+
|
|
19
|
+
- prompt: "We have the design doc and architecture — now sequence the work and tell me which parts can run in parallel."
|
|
20
|
+
why: "Ordering tasks by dependency and marking which are parallel-safe ([P]) is owned here; the user names sequencing/parallelism, not the skill."
|
|
21
|
+
|
|
22
|
+
- prompt: "Turn the plan into a numbered checklist where every item traces back to a requirement in the spec."
|
|
23
|
+
why: "Producing numbered, spec-traced tasks (Trace field, no orphan tasks) is precisely this phase's output and discipline."
|
|
24
|
+
|
|
25
|
+
- prompt: "Before we start coding, I want a task list off the approved plan with dependencies between tasks spelled out."
|
|
26
|
+
why: "Pre-implementation breakdown of an approved plan with explicit depends-on edges is the tasks phase; it sits between plan and analyze/implement."
|
|
27
|
+
|
|
28
|
+
- prompt: "Slice this implementation plan into the smallest units a coding agent can finish and hand off one at a time."
|
|
29
|
+
why: "Smallest-verifiable-unit slicing for handoff is the skill's stated method, even though 'tasks' is never said."
|
|
30
|
+
|
|
31
|
+
# NEAR-MISS prompts that must NOT load `tasks`. Each routes to the genuinely
|
|
32
|
+
# correct sibling. The recurring trap: anything in the SDD chain that is the
|
|
33
|
+
# step BEFORE (plan), the gate AFTER (analyze), or the DOING (implement) — plus
|
|
34
|
+
# stack-specific work that a single task merely delegates to.
|
|
35
|
+
should_not_trigger:
|
|
36
|
+
- prompt: "We don't have a technical plan yet — design the architecture, interfaces, and testing strategy for the billing feature."
|
|
37
|
+
route_to: "plan"
|
|
38
|
+
why: "Writing the plan itself (architecture/interfaces/testing) is the `plan` phase; `tasks` slices a plan that already exists, it does not author one."
|
|
39
|
+
|
|
40
|
+
- prompt: "Cross-check the constitution, spec, plan, and task list for contradictions or scope drift before we write any code."
|
|
41
|
+
route_to: "analyze"
|
|
42
|
+
why: "The pre-implementation consistency gate over all four artifacts is `analyze`; `tasks` produces the list that analyze audits, it doesn't audit."
|
|
43
|
+
|
|
44
|
+
- prompt: "Start executing the task list — write the code for T004 and get its test green."
|
|
45
|
+
route_to: "implement"
|
|
46
|
+
why: "Executing tasks and writing runtime code (red → green → refactor) is `implement`; `tasks` writes no code, only the list."
|
|
47
|
+
|
|
48
|
+
- prompt: "Write the failing pytest and then the FastAPI route for the POST /login endpoint."
|
|
49
|
+
route_to: "fastapi"
|
|
50
|
+
why: "Concrete test+endpoint implementation in a specific stack is owned by the stack skill (fastapi) under implement; tasks only references such a command as a done-check, it doesn't write it."
|
|
51
|
+
|
|
52
|
+
- prompt: "Write the Alembic migration that adds the users table with a UNIQUE email constraint."
|
|
53
|
+
route_to: "postgresdb"
|
|
54
|
+
why: "Authoring the actual migration/schema is postgresdb's job; a tasks row merely cites 'migration applies clean' as a done-check."
|
|
55
|
+
|
|
56
|
+
- prompt: "The intent is fuzzy — there are unresolved edge cases in the spec we need to nail down before planning."
|
|
57
|
+
route_to: "clarify"
|
|
58
|
+
why: "Surfacing ambiguities and underspecified areas in the spec is the `clarify` gate; tasks refuses to start until the plan (downstream of clarify) is solid."
|
|
59
|
+
|
|
60
|
+
# A concrete task the skill should guide, graded WITH vs WITHOUT it loaded.
|
|
61
|
+
# A correct skill-guided answer enforces well-formed rows (runnable done-checks,
|
|
62
|
+
# dependency order, [P] discipline, spec traces), appends to the plan artifact,
|
|
63
|
+
# and hands off to analyze — not a flat unverifiable to-do list.
|
|
64
|
+
capability:
|
|
65
|
+
- scenario: "An approved plan exists at specs/auth/plan.md (login + sessions + a users migration, pytest as the testing strategy) and a spec at specs/auth/spec.md. Break it into a task list."
|
|
66
|
+
must_include:
|
|
67
|
+
- "Confirms the inputs first: plan, spec, AND constitution must exist; if the plan were missing it would STOP and route to `plan` rather than slice from intent."
|
|
68
|
+
- "Reads the register from AGENTS.md and picks the register; the table is complete either way, and the chat adds only one line of why-this-slicing plus the risky tasks."
|
|
69
|
+
- "Emits sequential zero-padded stable IDs (T001, T002… — no hyphen, GitHub Spec Kit canon) with the six well-formed fields: ID, a separate [P] marker field after the ID, imperative title, done-check, depends-on, and a trace to a spec section."
|
|
70
|
+
- "Every done-check is a LITERAL runnable command or checkable observation (e.g. `pytest tests/auth/test_login.py` green; `alembic upgrade head` applies; bad password → 401) — never 'login works'."
|
|
71
|
+
- "Orders by dependency (migration/schema → data → service → API), so no task precedes what it depends on; marks `[P]` only on file/state-disjoint tasks and defaults to sequential when unsure."
|
|
72
|
+
- "Uses TDD-shaped slicing: a failing-test task before its implementation task, whose done-check is 'the test that was red is now green'."
|
|
73
|
+
- "Ensures every task traces to a spec line and cuts/flags any task with no trace as scope creep (route to clarify/specify), rather than inventing scope."
|
|
74
|
+
- "Appends the table under a `## Tasks` heading INSIDE specs/auth/plan.md (not a new file) and confirms the plan is indexed in the root AGENTS.md Knowledge map under sdd/."
|
|
75
|
+
- "Adds a final closer task gating on all done-checks passing plus `scripts/verify.sh` green, and hands off to `analyze` next (then implement) — not straight to implementation."
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tauri
|
|
3
|
+
description: "Use when building a lightweight cross-platform desktop (or v2 mobile) app with Tauri — a Rust core plus the OS-native WebView: Rust commands and IPC, streaming to the frontend, the default-deny capabilities/permissions ACL, bundling and signed auto-updates. NOT a Chromium+Node shell needing Node APIs in a main process (that is electron)."
|
|
4
|
+
tags: [tauri, desktop, rust, cross-platform, ipc, webview]
|
|
5
|
+
recommends: [rust, electron, react, secure-coding, github-actions]
|
|
6
|
+
origin: ai-hub
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Tauri — Rust core, OS WebView, locked-down IPC, tiny binaries
|
|
10
|
+
|
|
11
|
+
Tauri builds a desktop (and, since v2, mobile) app from a **Rust core** plus the
|
|
12
|
+
**operating system's own WebView** — not a bundled browser. That is the whole value
|
|
13
|
+
proposition: ~12MB installers and 30-50MB idle RAM, versus Electron's ~180MB installers
|
|
14
|
+
and 150-300MB because it ships Chromium + Node. You write your UI in any web framework,
|
|
15
|
+
expose privileged work as Rust commands, and the WebView talks to Rust over a sandboxed
|
|
16
|
+
IPC bridge.
|
|
17
|
+
|
|
18
|
+
**Always target v2.** Tauri 2.0 went stable in October 2024; the current line is 2.x
|
|
19
|
+
(2.11.x as of mid-2026). v1 docs use a `tauri > allowlist` config that no longer exists —
|
|
20
|
+
if you see `allowlist`, you are reading the wrong era. v2 also adds iOS/Android targets,
|
|
21
|
+
so the same Rust core can ship to mobile.
|
|
22
|
+
|
|
23
|
+
This skill owns the **shell**: commands, IPC, the security ACL, the bundler, the updater.
|
|
24
|
+
It does **not** own the Rust language itself (that is the `rust` skill), the web UI inside
|
|
25
|
+
the window (the `react`/`nextjs` skills), a Chromium+Node shell (`../electron/SKILL.md`), or
|
|
26
|
+
app-code hardening beyond the IPC boundary (`../secure-coding/SKILL.md`).
|
|
27
|
+
|
|
28
|
+
## Pick your starting shape
|
|
29
|
+
|
|
30
|
+
| Situation | Do this |
|
|
31
|
+
|-----------|---------|
|
|
32
|
+
| Greenfield app, no UI yet | `npm create tauri-app@latest` — pick your frontend, get `src-tauri/` wired |
|
|
33
|
+
| You already have a web app (Vite/Next/etc.) | `npx @tauri-apps/cli@latest init` inside it; point `build.frontendDist` at your build output |
|
|
34
|
+
| Add mobile to an existing desktop app | `tauri ios init` / `tauri android init`; gate native bits behind `#[cfg(mobile)]` |
|
|
35
|
+
| You see `tauri.conf.json > tauri > allowlist` | You are on v1 — migrate to v2 capabilities before adding anything |
|
|
36
|
+
|
|
37
|
+
`src-tauri/` is its own Cargo crate: `Cargo.toml`, `tauri.conf.json`, `src/lib.rs`
|
|
38
|
+
(the `run()` entry point), and `capabilities/`. The frontend is a sibling directory the
|
|
39
|
+
bundler reads from `frontendDist`.
|
|
40
|
+
|
|
41
|
+
## Commands & IPC — the core contract
|
|
42
|
+
|
|
43
|
+
A command is a Rust function the frontend can call. Each rule below has a one-line *why*.
|
|
44
|
+
|
|
45
|
+
- **Annotate and register.** `#[tauri::command]` on the fn, then list it in
|
|
46
|
+
`tauri::generate_handler![...]` inside `invoke_handler`. *Unregistered commands are not a
|
|
47
|
+
compile error — they fail at runtime when JS calls them.*
|
|
48
|
+
- **Naming crosses the bridge.** JS `invoke('read_config', { filePath })` maps to Rust
|
|
49
|
+
`read_config(file_path: String)`. *Command names stay snake_case; args auto-map
|
|
50
|
+
camelCase (JS) ⇄ snake_case (Rust).*
|
|
51
|
+
- **Fallible commands return `Result<T, E>` where `E: Serialize`.** *An `Err` becomes a
|
|
52
|
+
rejected JS promise; a panic instead crashes the command thread silently.*
|
|
53
|
+
- **Never block the command thread.** Long or I/O work goes in an `async` command or a
|
|
54
|
+
spawned task. *Commands run on a shared IPC thread pool — a blocking call freezes other
|
|
55
|
+
IPC, which users see as a frozen UI.*
|
|
56
|
+
- **Share state with `.manage(x)` + `State<'_, T>`.** *If a guard is held across an
|
|
57
|
+
`.await`, use `tokio::sync::Mutex`, not `std::sync::Mutex` — the std guard is not `Send`
|
|
58
|
+
and will not compile in an async command.*
|
|
59
|
+
|
|
60
|
+
```rust
|
|
61
|
+
// src-tauri/src/lib.rs
|
|
62
|
+
use tauri::State;
|
|
63
|
+
use tokio::sync::Mutex;
|
|
64
|
+
|
|
65
|
+
#[derive(Default)]
|
|
66
|
+
struct AppState { counter: u64 }
|
|
67
|
+
|
|
68
|
+
#[tauri::command] // registered below or it 404s at runtime
|
|
69
|
+
async fn read_config(file_path: String) -> Result<String, String> {
|
|
70
|
+
tokio::fs::read_to_string(&file_path) // async I/O — does not block the IPC pool
|
|
71
|
+
.await
|
|
72
|
+
.map_err(|e| e.to_string()) // Err -> rejected JS promise
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
#[tauri::command]
|
|
76
|
+
async fn bump(state: State<'_, Mutex<AppState>>) -> Result<u64, String> {
|
|
77
|
+
let mut s = state.lock().await; // tokio Mutex: guard is held across .await
|
|
78
|
+
s.counter += 1;
|
|
79
|
+
Ok(s.counter)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
#[cfg_attr(mobile, tauri::mobile_entry_point)] // same core compiles for iOS/Android
|
|
83
|
+
pub fn run() {
|
|
84
|
+
tauri::Builder::default()
|
|
85
|
+
.manage(Mutex::new(AppState::default()))
|
|
86
|
+
.invoke_handler(tauri::generate_handler![read_config, bump])
|
|
87
|
+
.run(tauri::generate_context!())
|
|
88
|
+
.expect("error while running tauri application");
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
// frontend
|
|
94
|
+
import { invoke } from '@tauri-apps/api/core';
|
|
95
|
+
|
|
96
|
+
const text = await invoke('read_config', { filePath: '/app/config.toml' });
|
|
97
|
+
// throws (rejected promise) if the command returns Err — wrap in try/catch
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Bad → Good, the failure people hit most:
|
|
101
|
+
|
|
102
|
+
```rust
|
|
103
|
+
// Bad: std Mutex held across .await — won't compile in an async command, or you
|
|
104
|
+
// "fix" it by dropping the guard early and create a race.
|
|
105
|
+
async fn save(state: State<'_, std::sync::Mutex<AppState>>) { /* ... */ }
|
|
106
|
+
|
|
107
|
+
// Good: async-aware lock.
|
|
108
|
+
async fn save(state: State<'_, tokio::sync::Mutex<AppState>>) -> Result<(), String> { Ok(()) }
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Stream vs notify
|
|
112
|
+
|
|
113
|
+
Two ways to push from Rust to the frontend — pick by ordering needs:
|
|
114
|
+
|
|
115
|
+
- **`Channel<T>` for ordered streaming.** Download progress, file chunks, an HTTP body.
|
|
116
|
+
*Messages arrive in send order on one typed channel — the right tool for "report
|
|
117
|
+
progress as it happens."*
|
|
118
|
+
- **`emit` / `listen` events for fire-and-forget pub/sub.** App-wide notifications, "data
|
|
119
|
+
refreshed," a tray action. *No ordering or backpressure guarantees; many listeners, no
|
|
120
|
+
reply.*
|
|
121
|
+
|
|
122
|
+
```rust
|
|
123
|
+
use tauri::ipc::Channel;
|
|
124
|
+
|
|
125
|
+
#[derive(Clone, serde::Serialize)]
|
|
126
|
+
struct Progress { downloaded: u64, total: u64 }
|
|
127
|
+
|
|
128
|
+
#[tauri::command]
|
|
129
|
+
async fn download(url: String, on_progress: Channel<Progress>) -> Result<(), String> {
|
|
130
|
+
// ... as bytes arrive:
|
|
131
|
+
on_progress.send(Progress { downloaded: 4096, total: 1_000_000 })
|
|
132
|
+
.map_err(|e| e.to_string())?;
|
|
133
|
+
Ok(())
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```javascript
|
|
138
|
+
import { Channel, invoke } from '@tauri-apps/api/core';
|
|
139
|
+
|
|
140
|
+
const onProgress = new Channel();
|
|
141
|
+
onProgress.onmessage = (p) => updateBar(p.downloaded / p.total);
|
|
142
|
+
await invoke('download', { url, onProgress });
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Security — the part people skip
|
|
146
|
+
|
|
147
|
+
Tauri v2's IPC is an **Access Control List**, default-deny. The chain:
|
|
148
|
+
|
|
149
|
+
**capabilities** (group windows/webviews) → grant **permissions** (named command sets) →
|
|
150
|
+
**permissions map scopes** (what data/paths a command may touch). **A webview that matches
|
|
151
|
+
no capability has zero IPC access.** This is the opposite of v1's opt-out allowlist —
|
|
152
|
+
you grant exactly what each window needs.
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
// src-tauri/capabilities/default.json — grant only what the main window uses
|
|
156
|
+
{
|
|
157
|
+
"$schema": "../gen/schemas/desktop-schema.json",
|
|
158
|
+
"identifier": "main-capability",
|
|
159
|
+
"windows": ["main"],
|
|
160
|
+
"permissions": [
|
|
161
|
+
"core:default",
|
|
162
|
+
{
|
|
163
|
+
"identifier": "fs:allow-read-text-file",
|
|
164
|
+
"allow": [{ "path": "$APPCONFIG/*" }] // scope: app config dir only, nothing else
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Three more rules that bite real apps:
|
|
171
|
+
|
|
172
|
+
- **CSP is only enforced if you set it** in `tauri.conf.json > app > security > csp`.
|
|
173
|
+
*No CSP = the WebView runs whatever it loads; local scripts are hashed, external ones get
|
|
174
|
+
a per-load nonce only once a CSP exists.*
|
|
175
|
+
- **Use the isolation pattern when frontend code may be untrusted** (third-party deps,
|
|
176
|
+
plugins). *It injects a sandboxed iframe that can inspect/modify every IPC message before
|
|
177
|
+
it reaches Rust; messages are encrypted with SubtleCrypto using a key regenerated each
|
|
178
|
+
app start.*
|
|
179
|
+
- **Treat the WebView as hostile.** *Anything in the frontend bundle ships to the user —
|
|
180
|
+
no API keys, tokens, or secrets in JS. Privileged work and secrets stay in Rust.*
|
|
181
|
+
|
|
182
|
+
Full capabilities/permissions/scope JSON, fs/http scope globs, CSP dev-vs-prod recipes, and
|
|
183
|
+
isolation-pattern setup live in `references/security.md`.
|
|
184
|
+
|
|
185
|
+
## Bundle & ship
|
|
186
|
+
|
|
187
|
+
`tauri build` produces native installers per OS — but unsigned binaries trigger
|
|
188
|
+
"unidentified developer" / SmartScreen warnings, so signing is not optional for distribution.
|
|
189
|
+
|
|
190
|
+
- **macOS:** sign with a Developer ID cert, then **notarize** — Gatekeeper blocks
|
|
191
|
+
un-notarized apps.
|
|
192
|
+
- **Windows:** Authenticode-sign the `.exe`/MSI/NSIS or SmartScreen warns.
|
|
193
|
+
- **Linux:** AppImage / `.deb` / `.rpm`; no central signing authority, but ship checksums.
|
|
194
|
+
- **Auto-update:** the updater plugin needs a signing keypair (`tauri signer generate`);
|
|
195
|
+
the private key signs releases, the public key ships in config. *Without it the updater
|
|
196
|
+
refuses unsigned updates — by design.*
|
|
197
|
+
- **Sidecar:** embed an external binary via `bundle.externalBin` to call it at runtime
|
|
198
|
+
(e.g. ship a CLI your app shells out to).
|
|
199
|
+
|
|
200
|
+
Per-OS flags, notarization steps, updater config, sidecar setup, and a CI release matrix
|
|
201
|
+
live in `references/bundling-distribution.md`. The CI runner matrix that *runs* those builds
|
|
202
|
+
across three OSes is the `github-actions` skill's job; this skill defines what to build and sign.
|
|
203
|
+
|
|
204
|
+
## Anti-patterns
|
|
205
|
+
|
|
206
|
+
| Anti-pattern | Why it's wrong | Do instead |
|
|
207
|
+
|--------------|----------------|------------|
|
|
208
|
+
| One capability granting broad permissions to all windows | Any XSS gets the full IPC surface | Per-window capability, scoped to the commands that window needs |
|
|
209
|
+
| Permission with no `allow`/scope on `fs`/`http` | Command can touch any path/host | Add an `allow` glob (`$APPCONFIG/*`) and deny the rest |
|
|
210
|
+
| Blocking call (`std::fs`, sync HTTP) in a command | Freezes the IPC pool → frozen UI | `async fn` + `tokio` / spawn the work |
|
|
211
|
+
| `.unwrap()` instead of returning `Result<T, E>` | Panic crashes the command thread silently | Return `Result`, `map_err` to a serializable error |
|
|
212
|
+
| API keys/tokens in the frontend bundle | Ships to every user; trivially extracted | Keep secrets and privileged calls in Rust |
|
|
213
|
+
| No CSP set in config | WebView runs any loaded script | Set `app.security.csp`; isolation pattern if deps are untrusted |
|
|
214
|
+
| Copying a v1 `tauri.conf.json > allowlist` | That key does not exist in v2 | Use `capabilities/*.json` (ACL) |
|
|
215
|
+
| Assuming bundled Chromium | It's the **OS** WebView (WebKit/WebView2) | Test rendering on each OS's engine; avoid Chromium-only CSS/JS |
|
|
216
|
+
|
|
217
|
+
`scripts/verify.sh` is an advisory static lint over an `src-tauri/` tree that catches several of
|
|
218
|
+
these: capabilities present, registered commands exist, no v1 `allowlist`, fallible-looking
|
|
219
|
+
commands return `Result`.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Evals — tauri
|
|
2
|
+
|
|
3
|
+
These cases are a behavioral spec for routing and capability coverage, not a runtime test of
|
|
4
|
+
Tauri itself — nothing here compiles Rust or builds an app. Run them through the repo's eval
|
|
5
|
+
harness: `should_trigger` feeds the skill's `description` + body to the router and asserts it
|
|
6
|
+
selects this skill (including the non-obvious "stream download progress" case, where the right
|
|
7
|
+
answer is a `Channel<T>` and the word "Tauri" never appears); `should_not_trigger` asserts the
|
|
8
|
+
router declines and routes to the named real sibling (electron, expo, rust, react,
|
|
9
|
+
compose-multiplatform); the `capability` scenario prompts the agent and grades the answer against
|
|
10
|
+
the `must_include` rubric (annotated + registered command, `Result<T, E>`, a scoped `fs` glob,
|
|
11
|
+
the default-deny note, and the capability-vs-permission explanation). `scripts/verify.sh` is a
|
|
12
|
+
separate standalone static lint over an `src-tauri/` tree and needs no harness.
|