@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,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-engineering
|
|
3
|
+
description: "Use when the question is how interface should be BUILT — component boundaries, state that belongs in the URL vs the component, loading/empty/error states, forms, optimistic updates, build vs adopt. NOT the visual system (`design`), NOT framework mechanics (`react`/`nextjs`)."
|
|
4
|
+
tags: [interface, frontend, architecture, components, state, craft]
|
|
5
|
+
recommends: [design]
|
|
6
|
+
profiles: [core, full]
|
|
7
|
+
origin: ai-hub
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# UI engineering — the decisions between the design and the framework
|
|
11
|
+
|
|
12
|
+
There is a layer that neither the design skill nor the framework skill owns. The design says what
|
|
13
|
+
the screen should be. The framework says how its API works. **In between sits every decision that
|
|
14
|
+
makes an interface either durable or a maintenance tax** — and it is where most interface work
|
|
15
|
+
actually goes wrong.
|
|
16
|
+
|
|
17
|
+
Nothing here is framework-specific. These decisions are the same in React, Vue, Svelte, SwiftUI and
|
|
18
|
+
plain HTML; only the syntax moves.
|
|
19
|
+
|
|
20
|
+
## The one rule
|
|
21
|
+
|
|
22
|
+
**State goes to the outermost place that still needs it, and no further.** Almost every interface
|
|
23
|
+
tangle is that rule broken in one of two directions: state hoarded in a component that others need,
|
|
24
|
+
or state hoisted into a global store that only one component ever reads.
|
|
25
|
+
|
|
26
|
+
| Where the state lives | When that is right |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| **The URL** | Anything a user would bookmark, share, or expect the back button to restore: filters, tabs, pagination, the open item |
|
|
29
|
+
| **The server** | Anything that outlives the session or belongs to more than one user |
|
|
30
|
+
| **A shared parent** | Two siblings genuinely need it, and it dies with the screen |
|
|
31
|
+
| **The component** | Nobody else reads it: hover, focus, an open menu, an in-flight draft |
|
|
32
|
+
|
|
33
|
+
The most common and most expensive mistake is the first row: state that belongs in the URL kept in a
|
|
34
|
+
component. It looks fine until someone reloads, shares a link, or presses back — and then the
|
|
35
|
+
interface silently loses what the user did.
|
|
36
|
+
|
|
37
|
+
## Every state, not just the happy one
|
|
38
|
+
|
|
39
|
+
An interface is not finished when it renders data. It is finished when it renders **all five**:
|
|
40
|
+
|
|
41
|
+
| State | The question it answers | The usual failure |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| **Loading** | "Is it working?" | A spinner where the shape is already known — use the shape |
|
|
44
|
+
| **Empty** | "Is it broken, or is there nothing?" | Blank. It must say which, and what to do next |
|
|
45
|
+
| **Error** | "What now?" | A message with no action. Every denial carries its own way out |
|
|
46
|
+
| **Partial** | "Some of it failed" | Ignored entirely; the screen shows a half-truth |
|
|
47
|
+
| **Success** | "It worked" | Silence, so the user does it twice |
|
|
48
|
+
|
|
49
|
+
The empty state is the one that gets skipped, and it is the first state a new user ever sees.
|
|
50
|
+
|
|
51
|
+
## Component boundaries
|
|
52
|
+
|
|
53
|
+
A component earns its existence by **hiding a decision**, not by being reused. Splitting for reuse
|
|
54
|
+
alone produces the worst interfaces: a wrapper around a wrapper, each passing props through, none
|
|
55
|
+
owning anything.
|
|
56
|
+
|
|
57
|
+
Draw the boundary where:
|
|
58
|
+
|
|
59
|
+
- it owns a piece of state nothing outside needs;
|
|
60
|
+
- it can be described in one sentence without "and";
|
|
61
|
+
- swapping its internals changes nothing outside it.
|
|
62
|
+
|
|
63
|
+
Do **not** draw a boundary because a file is long. Long is not a defect; a file that does two
|
|
64
|
+
unrelated things is, and it is usually short.
|
|
65
|
+
|
|
66
|
+
## Forms
|
|
67
|
+
|
|
68
|
+
Forms are where interfaces most often insult people, and the rules are unglamorous:
|
|
69
|
+
|
|
70
|
+
- **Validate on blur, not on keystroke.** Telling someone their email is invalid while they are on
|
|
71
|
+
the third character is scolding them for not having finished.
|
|
72
|
+
- **Never clear what they typed.** Not on error, not on refresh, not on navigation. Their input is
|
|
73
|
+
theirs.
|
|
74
|
+
- **Disable the submit only while submitting**, never as a way of enforcing validity — a disabled
|
|
75
|
+
button with no reason is a dead end.
|
|
76
|
+
- **The error goes next to the field**, and says what to do, not what is wrong.
|
|
77
|
+
|
|
78
|
+
## Optimistic updates
|
|
79
|
+
|
|
80
|
+
Show the result before the server confirms **only** when you can honestly undo it. That means: the
|
|
81
|
+
operation is idempotent, the failure is rare, and reverting it is visible and comprehensible.
|
|
82
|
+
|
|
83
|
+
Optimism on a destructive or an expensive action is a lie you will have to retract in front of the
|
|
84
|
+
user. Deleting, paying, sending — those wait.
|
|
85
|
+
|
|
86
|
+
## Build or adopt
|
|
87
|
+
|
|
88
|
+
Adopting a component costs bundle size, an API you did not design, and an upgrade you will owe
|
|
89
|
+
later. Building costs the accessibility work you will get wrong.
|
|
90
|
+
|
|
91
|
+
The split is not about difficulty, it is about **who is the authority on the behaviour**:
|
|
92
|
+
|
|
93
|
+
- **Adopt** for behaviour with a specification you would otherwise be reimplementing badly: focus
|
|
94
|
+
trapping, combobox semantics, date handling, virtualisation.
|
|
95
|
+
- **Build** for anything that is your product's own logic wearing a UI, or where the library gives
|
|
96
|
+
you 60% and you fight the remaining 40% forever.
|
|
97
|
+
|
|
98
|
+
## Anti-patterns → STOP
|
|
99
|
+
|
|
100
|
+
| If you're about to… | Reality / Fix |
|
|
101
|
+
| --- | --- |
|
|
102
|
+
| Put a filter or tab selection in component state | It belongs in the URL. Reload, share and back are part of the interface. |
|
|
103
|
+
| Add a global store because passing props feels tedious | Tedious is not broken. Global state that one component reads is a leak with ceremony. |
|
|
104
|
+
| Ship a screen with only the loaded state | Loading, empty, error and partial are not extras. The empty one is what a new user sees first. |
|
|
105
|
+
| Split a component because the file got long | Length is not the defect. Two unrelated responsibilities are, and they are usually short. |
|
|
106
|
+
| Show a delete as done before the server confirms | Optimism on a destructive action is a lie you will retract in public. |
|
|
107
|
+
| Reach here for how the framework's hooks work | That is `../react/SKILL.md` or `../nextjs/SKILL.md`. This skill decides what to build; those decide how to express it. |
|
|
108
|
+
|
|
109
|
+
## See Also
|
|
110
|
+
|
|
111
|
+
- `../design/SKILL.md` — the visual system these decisions serve, its motion layer, and the
|
|
112
|
+
browser-measured critique that judges the result.
|
|
113
|
+
- `../accessibility/SKILL.md` — the ground under focus, semantics and forms.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
skill: ui-engineering
|
|
2
|
+
|
|
3
|
+
should_trigger:
|
|
4
|
+
- prompt: "Where should the filter state live — component, context or the URL?"
|
|
5
|
+
why: "The canonical case: the one rule this skill exists to apply."
|
|
6
|
+
- prompt: "How should I split these components? The file is getting big."
|
|
7
|
+
why: "Component boundaries, and the file-length premise is one this skill corrects."
|
|
8
|
+
- prompt: "We only render the loaded state. What else does this screen need?"
|
|
9
|
+
why: "The five states are the checklist this skill owns."
|
|
10
|
+
- prompt: "¿Valido el formulario mientras escribe o al salir del campo?"
|
|
11
|
+
why: "Form behaviour, in Spanish; the trigger is the decision, not the language."
|
|
12
|
+
- prompt: "Should I use a component library for the date picker or build it?"
|
|
13
|
+
why: "Build vs adopt, decided by who owns the behaviour's specification."
|
|
14
|
+
- prompt: "Can we show the delete as done immediately and roll back if it fails?"
|
|
15
|
+
why: "Optimistic updates, and this is the case where the answer is no."
|
|
16
|
+
|
|
17
|
+
should_not_trigger:
|
|
18
|
+
- prompt: "Design the pricing page — layout, type scale, the colour system."
|
|
19
|
+
route_to: "design"
|
|
20
|
+
why: "The visual system is decided before this layer has anything to build."
|
|
21
|
+
- prompt: "My useEffect runs twice in development and I don't understand why."
|
|
22
|
+
route_to: "react"
|
|
23
|
+
why: "Framework mechanics. This skill decides what to build, not how the framework behaves."
|
|
24
|
+
- prompt: "The dropdown animation feels cheap, what duration should it use?"
|
|
25
|
+
route_to: "design"
|
|
26
|
+
why: "Once the component exists, how it moves is motion craft."
|
|
27
|
+
- prompt: "Grade this dashboard and tell me if it is actually good."
|
|
28
|
+
route_to: "design"
|
|
29
|
+
why: "Judging a finished screen is the critique loop, not the build decisions."
|
|
30
|
+
- prompt: "Set up the Next.js App Router with server actions for this project."
|
|
31
|
+
route_to: "nextjs"
|
|
32
|
+
why: "Stack setup is the stack skill's; this one is framework-agnostic by construction."
|
|
33
|
+
|
|
34
|
+
capability:
|
|
35
|
+
- prompt: "Our search page keeps its query and filters in component state. Users complain the back button loses everything. What is wrong and what is the fix?"
|
|
36
|
+
why: "The single most expensive instance of the one rule, stated as a real symptom rather than as theory."
|
|
37
|
+
- prompt: "This list screen shows a spinner, then rows. What states are we missing and why does each matter?"
|
|
38
|
+
why: "Forces the five-state checklist, including the empty state that a new user sees first."
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unity
|
|
3
|
+
description: "Use when writing, reviewing or structuring Unity game code in C# for Unity 6 LTS — GameObjects and the Transform hierarchy, the MonoBehaviour lifecycle, prefabs and variants, ScriptableObjects for data, scenes and additive loading, the Input System, coroutines versus async and Awaitable, Addressables, and build settings for 2D and 3D. NOT Godot or GDScript (that is `godot`), NOT Unreal Blueprint or C++ engine work (that is `unreal`), NOT the netcode wire protocol (that is `gamedev-multiplayer`)."
|
|
4
|
+
tags: [unity, csharp, game-dev, monobehaviour, input-system]
|
|
5
|
+
recommends: [gamedev-multiplayer, gamedev-physics, gamedev-shaders, gamedev-pathing, gamedev-shipping, godot, unreal]
|
|
6
|
+
profiles: [full]
|
|
7
|
+
origin: ai-hub
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Unity + C# (Unity 6 LTS)
|
|
11
|
+
|
|
12
|
+
> Idiomatic C# for the current Unity engine — 2D and 3D. Owns engine-side patterns (components,
|
|
13
|
+
> lifecycle, prefabs, scenes, data, input, async, builds). Not Godot (`godot`) or Unreal (`unreal`);
|
|
14
|
+
> stops at the netcode wire (`gamedev-multiplayer`).
|
|
15
|
+
|
|
16
|
+
## Version contract — read first
|
|
17
|
+
|
|
18
|
+
**Target: Unity 6 LTS, versioned `6000.x`.** Current LTS at authoring is **Unity 6.3 LTS (`6000.3`)**
|
|
19
|
+
(supported to Dec 2027); **Unity 6.0 LTS (`6000.0`)** to Oct 2026. Unity 6 dropped the year-based names
|
|
20
|
+
(2020/2021/2022 LTS) for the `6000.x` scheme. Confirm the project version in
|
|
21
|
+
`ProjectSettings/ProjectVersion.txt` before assuming an API exists.
|
|
22
|
+
|
|
23
|
+
**Ban-list — never emit these; use the modern replacement:**
|
|
24
|
+
|
|
25
|
+
| Deprecated / removed | Use instead |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| `Input.GetAxis` / `GetKey` / `GetButton` (legacy Input Manager) | **new Input System** (`com.unity.inputsystem`): `InputActionAsset` / `InputAction` / `PlayerInput` — §6 |
|
|
28
|
+
| `UnityEngine.Networking` (UNet), `NetworkServer`/`NetworkClient`, its `NetworkBehaviour` | **removed** since 2022.2. → **Netcode for GameObjects** (`com.unity.netcode.gameobjects`) + `gamedev-multiplayer` |
|
|
29
|
+
| `Resources.Load(...)` for game content | **Addressables** (`com.unity.addressables`) — §8 |
|
|
30
|
+
| `FindObjectOfType<T>()` / `FindObjectsOfType<T>()` | `FindFirstObjectByType<T>()` / `FindAnyObjectByType<T>()` / `FindObjectsByType<T>(FindObjectsSortMode.None)` (old ones obsolete since 2023.1) |
|
|
31
|
+
| `WWW` | `UnityWebRequest` |
|
|
32
|
+
| `OnGUI` / IMGUI for runtime game UI | **UI Toolkit** (runtime) or uGUI; keep IMGUI for editor tools only |
|
|
33
|
+
| Setting `transform.position` on a `Rigidbody` in `Update` | `Rigidbody.MovePosition/MoveRotation` in `FixedUpdate` — §4 |
|
|
34
|
+
| `GameObject.Find`/`FindWithTag` by string in `Update` | cache the ref in `Awake`, or `[SerializeField]` it |
|
|
35
|
+
|
|
36
|
+
Prefer the new Input System even for single-player prototypes. Keep `Debug.Log` out of hot loops and
|
|
37
|
+
strip it from ships.
|
|
38
|
+
|
|
39
|
+
## 1. GameObject / Component model & Transform hierarchy
|
|
40
|
+
|
|
41
|
+
A **GameObject** is an empty container; behaviour comes from **Components** you attach
|
|
42
|
+
(`Transform`, `Rigidbody`, `MeshRenderer`, and your `MonoBehaviour` scripts). Every GameObject has
|
|
43
|
+
exactly one `Transform` (or `RectTransform` under a Canvas) giving position/rotation/scale.
|
|
44
|
+
|
|
45
|
+
- Get components: `TryGetComponent(out var rb)` (no-alloc, preferred), `GetComponent<T>()`,
|
|
46
|
+
`GetComponentInChildren/InParent<T>()`. Cache in `Awake` — `GetComponent` in `Update` is a perf sink.
|
|
47
|
+
- Hierarchy: `transform.parent`, `transform.SetParent(newParent, worldPositionStays: true)`,
|
|
48
|
+
`transform.childCount`, `foreach (Transform child in transform)`. Child world = parent × local.
|
|
49
|
+
- Same object model for 2D and 3D: 2D uses `Rigidbody2D`/`Collider2D`/`SpriteRenderer`; 3D uses
|
|
50
|
+
`Rigidbody`/`Collider`/`MeshRenderer`. Never mix 2D and 3D physics components on one body.
|
|
51
|
+
|
|
52
|
+
```csharp
|
|
53
|
+
[RequireComponent(typeof(Rigidbody))]
|
|
54
|
+
public sealed class Mover : MonoBehaviour
|
|
55
|
+
{
|
|
56
|
+
Rigidbody _rb;
|
|
57
|
+
void Awake() => _rb = GetComponent<Rigidbody>(); // cache once
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 2. Prefabs & prefab variants; instantiation
|
|
62
|
+
|
|
63
|
+
A **Prefab** is a reusable GameObject template (an asset). A **Prefab Variant** inherits from a base
|
|
64
|
+
prefab and overrides selected properties/children — like subclassing for assets (e.g. `Enemy` base →
|
|
65
|
+
`EnemyFast` variant). Edit the base and variants inherit the change unless they override that value.
|
|
66
|
+
|
|
67
|
+
- Spawn with `Instantiate(prefab, position, rotation, parent)`; it returns the concrete type
|
|
68
|
+
(`var e = Instantiate(_enemyPrefab);` with `[SerializeField] Enemy _enemyPrefab;`). Store the
|
|
69
|
+
serialized reference; do not `Resources.Load` it.
|
|
70
|
+
- Destroy with `Destroy(gameObject)` (end of frame) or `Destroy(obj, delay)`. Never `DestroyImmediate`
|
|
71
|
+
at runtime. For frequently spawned objects (bullets, VFX) **pool** them (`UnityEngine.Pool.ObjectPool<T>`)
|
|
72
|
+
instead of Instantiate/Destroy churn.
|
|
73
|
+
- Editor-only prefab authoring uses `PrefabUtility` (wrap in `#if UNITY_EDITOR`); absent in builds.
|
|
74
|
+
|
|
75
|
+
## 3. Scenes & scene management (additive loading)
|
|
76
|
+
|
|
77
|
+
A **Scene** holds a set of GameObjects. Register scenes in **Build Profiles → Scene List** (Unity 6;
|
|
78
|
+
formerly Build Settings) so they can load by index or name.
|
|
79
|
+
|
|
80
|
+
```csharp
|
|
81
|
+
using UnityEngine.SceneManagement;
|
|
82
|
+
|
|
83
|
+
// Additive: keep the current scene, layer another on top (e.g. UI, a level chunk).
|
|
84
|
+
var op = SceneManager.LoadSceneAsync("Level_02", LoadSceneMode.Additive);
|
|
85
|
+
op.completed += _ => Debug.Log("Level_02 loaded");
|
|
86
|
+
await op; // Unity 6: AsyncOperation is awaitable
|
|
87
|
+
|
|
88
|
+
// Unload just that scene later:
|
|
89
|
+
await SceneManager.UnloadSceneAsync("Level_02");
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
- `LoadSceneMode.Single` (default) unloads everything first; `Additive` composes scenes — the basis of
|
|
93
|
+
streaming worlds, persistent manager scenes, and separate UI scenes.
|
|
94
|
+
- `SceneManager.MoveGameObjectToScene` moves an object between loaded scenes; `DontDestroyOnLoad` objects
|
|
95
|
+
survive `Single` loads (use for a bootstrap/services scene). Prefer `LoadSceneAsync` to avoid a hitch.
|
|
96
|
+
|
|
97
|
+
## 4. MonoBehaviour lifecycle
|
|
98
|
+
|
|
99
|
+
Order per frame and where each concern belongs (full ordering in `references/lifecycle-deep-dive.md`):
|
|
100
|
+
|
|
101
|
+
| Method | When | Put here |
|
|
102
|
+
| --- | --- | --- |
|
|
103
|
+
| `Awake` | once, on instantiation (even if disabled) | cache `GetComponent`, self-init, no cross-object refs |
|
|
104
|
+
| `OnEnable` | each time the object/component enables | subscribe to events, register callbacks |
|
|
105
|
+
| `Start` | once, before first `Update`, only if active | cross-object wiring (other objects' `Awake` has run) |
|
|
106
|
+
| `FixedUpdate` | fixed timestep (physics tick), 0..n / frame | **all physics** — `Rigidbody` forces/`MovePosition`, `ApplyForce` |
|
|
107
|
+
| `Update` | every frame | input reads, game logic, timers (scale by `Time.deltaTime`) |
|
|
108
|
+
| `LateUpdate` | every frame, after all `Update` | camera follow, look-at, anything tracking moved objects |
|
|
109
|
+
| `OnDisable` | each disable / before destroy | **unsubscribe** everything subscribed in `OnEnable` |
|
|
110
|
+
| `OnDestroy` | once, on destruction | release native/unmanaged resources, final cleanup |
|
|
111
|
+
|
|
112
|
+
Rules that bite:
|
|
113
|
+
- **Physics goes in `FixedUpdate`**, never `Update`. Reading input in `FixedUpdate` drops events —
|
|
114
|
+
read input in `Update`, cache intent, apply forces in `FixedUpdate`.
|
|
115
|
+
- Frame-rate independence: multiply per-frame movement by `Time.deltaTime` (`Update`) — but
|
|
116
|
+
`FixedUpdate` already runs at a fixed `Time.fixedDeltaTime`.
|
|
117
|
+
- `Awake` runs even on inactive objects; `Start` does not run until the object is active. Cross-object
|
|
118
|
+
references belong in `Start`, not `Awake`.
|
|
119
|
+
- Every `OnEnable` subscription needs a matching `OnDisable` unsubscription or you leak and get
|
|
120
|
+
double-fires after re-enable.
|
|
121
|
+
|
|
122
|
+
## 5. ScriptableObjects for data/config; serialization
|
|
123
|
+
|
|
124
|
+
A **ScriptableObject** is a data asset that lives outside any scene — ideal for config, tuning tables,
|
|
125
|
+
enemy/item definitions, and event channels. One asset is shared by reference (no per-instance copy),
|
|
126
|
+
so it saves memory and lets designers tweak values without touching code.
|
|
127
|
+
|
|
128
|
+
```csharp
|
|
129
|
+
[CreateAssetMenu(fileName = "WeaponDef", menuName = "Game/Weapon Definition")]
|
|
130
|
+
public sealed class WeaponDefinition : ScriptableObject
|
|
131
|
+
{
|
|
132
|
+
[SerializeField] float _damage = 10f;
|
|
133
|
+
[SerializeField] float _fireRate = 2f;
|
|
134
|
+
public float Damage => _damage; // expose read-only
|
|
135
|
+
public float FireRate => _fireRate;
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**`[SerializeField] private` vs `public`:** default to `[SerializeField] private` + a public
|
|
140
|
+
property/method. It shows in the Inspector and survives serialization *without* letting arbitrary code
|
|
141
|
+
mutate the field — encapsulation intact. Use bare `public` only for genuine data bags.
|
|
142
|
+
|
|
143
|
+
**Serialization rules (they trip everyone):**
|
|
144
|
+
- Unity serializes: `public` or `[SerializeField]` fields of supported types (primitives, `string`,
|
|
145
|
+
Unity types, enums, arrays/`List<T>` of those, and `[Serializable]` plain classes/structs).
|
|
146
|
+
- Unity does **not** serialize: properties (use `[field: SerializeField] public float X { get; private set; }`),
|
|
147
|
+
`static`, `readonly`, `const`, `Dictionary<,>` (use two lists or a serializable wrapper), or
|
|
148
|
+
polymorphic references — for interface/abstract fields use `[SerializeReference]`.
|
|
149
|
+
- Do not hold runtime mutable state on a shared ScriptableObject expecting it to reset — it persists in
|
|
150
|
+
the Editor between play sessions. Keep SOs for config; put mutable per-instance state on MonoBehaviours.
|
|
151
|
+
|
|
152
|
+
## 6. Input System (new) — with a legacy contrast
|
|
153
|
+
|
|
154
|
+
The new Input System (`com.unity.inputsystem`) is enabled by default in Unity 6 and is device-agnostic
|
|
155
|
+
and event-driven. Define an **Input Action Asset** with **Action Maps** (e.g. "Player", "UI") and
|
|
156
|
+
**Actions** (e.g. "Move" = Value/`Vector2`, "Jump" = Button). Generate a C# wrapper or use the
|
|
157
|
+
`PlayerInput` component. Full setup, `PlayerInput`, and rebinding in `references/input-system.md`.
|
|
158
|
+
|
|
159
|
+
```csharp
|
|
160
|
+
// New Input System — subscribe to the generated actions (no per-frame polling).
|
|
161
|
+
using UnityEngine.InputSystem;
|
|
162
|
+
|
|
163
|
+
public sealed class PlayerController : MonoBehaviour
|
|
164
|
+
{
|
|
165
|
+
InputSystem_Actions _controls; // generated C# class from the .inputactions asset
|
|
166
|
+
Vector2 _move;
|
|
167
|
+
|
|
168
|
+
void Awake() => _controls = new InputSystem_Actions();
|
|
169
|
+
void OnEnable()
|
|
170
|
+
{
|
|
171
|
+
_controls.Player.Enable();
|
|
172
|
+
_controls.Player.Move.performed += ctx => _move = ctx.ReadValue<Vector2>();
|
|
173
|
+
_controls.Player.Move.canceled += _ => _move = Vector2.zero;
|
|
174
|
+
_controls.Player.Jump.performed += _ => Jump();
|
|
175
|
+
}
|
|
176
|
+
void OnDisable() => _controls.Player.Disable();
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Legacy contrast (do not write this in new code):
|
|
181
|
+
```csharp
|
|
182
|
+
// LEGACY Input Manager — string axes, per-frame polling, device-blind. Avoid.
|
|
183
|
+
float x = Input.GetAxis("Horizontal");
|
|
184
|
+
if (Input.GetButtonDown("Jump")) Jump();
|
|
185
|
+
```
|
|
186
|
+
The new system also polls if you prefer: `_controls.Player.Move.ReadValue<Vector2>()` in `Update`.
|
|
187
|
+
|
|
188
|
+
## 7. Coroutines vs async/await vs Awaitable
|
|
189
|
+
|
|
190
|
+
| Use | Reach for | Why |
|
|
191
|
+
| --- | --- | --- |
|
|
192
|
+
| Frame-sequenced gameplay (timers, tweens, "wait then spawn") | **Coroutine** or **Awaitable** | frame-aware yields; auto-tie to object lifetime |
|
|
193
|
+
| Unity-native async in Unity 6 (default for new async gameplay) | **`Awaitable`** | main-thread, low-alloc (pooled), frame + thread awaits, cancels via `destroyCancellationToken` |
|
|
194
|
+
| True background CPU work / library `Task` APIs | **`async Task` + `await`** | thread pool; but marshal back — Unity APIs are main-thread only |
|
|
195
|
+
|
|
196
|
+
```csharp
|
|
197
|
+
// Coroutine — classic, MonoBehaviour-bound, stops when the object disables/destroys.
|
|
198
|
+
IEnumerator SpawnWave()
|
|
199
|
+
{
|
|
200
|
+
yield return new WaitForSeconds(1f);
|
|
201
|
+
Instantiate(_enemyPrefab);
|
|
202
|
+
}
|
|
203
|
+
void Start() => StartCoroutine(SpawnWave());
|
|
204
|
+
|
|
205
|
+
// Awaitable (Unity 6) — the modern replacement. Cancels automatically on destroy.
|
|
206
|
+
async Awaitable SpawnWaveAsync()
|
|
207
|
+
{
|
|
208
|
+
await Awaitable.WaitForSecondsAsync(1f, destroyCancellationToken);
|
|
209
|
+
await Awaitable.NextFrameAsync(destroyCancellationToken);
|
|
210
|
+
Instantiate(_enemyPrefab);
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Rules:
|
|
215
|
+
- **Coroutines** run only while the MonoBehaviour is enabled; they die silently on disable. No return
|
|
216
|
+
value; exceptions across `yield` are awkward.
|
|
217
|
+
- **`Awaitable`**: never `await` the same instance twice (pooled → undefined behavior). Pass
|
|
218
|
+
`destroyCancellationToken` so it stops when the object is destroyed. Switch threads with
|
|
219
|
+
`Awaitable.BackgroundThreadAsync()` / `Awaitable.MainThreadAsync()`.
|
|
220
|
+
- **`Task`**: does *not* auto-cancel on destroy — thread a `CancellationToken` yourself, and never touch
|
|
221
|
+
Unity API off the main thread (it throws). Prefer `Awaitable` in Unity 6 unless you need `Task`.
|
|
222
|
+
|
|
223
|
+
## 8. Addressables (intro) + the Resources anti-pattern
|
|
224
|
+
|
|
225
|
+
**Addressables** (`com.unity.addressables`) is the modern content-loading system: assets get string
|
|
226
|
+
addresses, load asynchronously, and can ship in the build or from a remote CDN with dependency tracking
|
|
227
|
+
and memory-managed release.
|
|
228
|
+
|
|
229
|
+
```csharp
|
|
230
|
+
using UnityEngine.AddressableAssets;
|
|
231
|
+
|
|
232
|
+
var handle = Addressables.InstantiateAsync("Prefabs/Boss");
|
|
233
|
+
GameObject boss = await handle.Task; // or handle.Completed += ...
|
|
234
|
+
// when done: Addressables.ReleaseInstance(boss); // release to free memory
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**`Resources/` is an anti-pattern for game content:** everything under it is forced into the build,
|
|
238
|
+
loaded synchronously, bloats size/startup, and can't be patched or streamed. Reserve it for tiny
|
|
239
|
+
always-needed defaults; migrate real content to Addressables.
|
|
240
|
+
|
|
241
|
+
## 9. Build settings, platforms & player settings
|
|
242
|
+
|
|
243
|
+
- **Build Profiles** (Unity 6, `File → Build Profiles`) supersede the old Build Settings window: per-platform
|
|
244
|
+
scene list, target platform, and overridable player settings.
|
|
245
|
+
- **Scripting backend:** **IL2CPP** (AOT — required for iOS/consoles/WebGL, faster, harder to reverse)
|
|
246
|
+
vs **Mono** (JIT, Editor/desktop, faster iteration). Set per platform in Player Settings.
|
|
247
|
+
- **Player Settings:** product/company name, bundle identifier, icons, orientation, API compatibility
|
|
248
|
+
level (`.NET Standard 2.1` default), managed stripping. **2D vs 3D** is a template choice, not a
|
|
249
|
+
different build path.
|
|
250
|
+
- WebGL/mobile specifics and the shipping checklist: `references/build-and-platforms.md` + `gamedev-shipping`.
|
|
251
|
+
|
|
252
|
+
## Guardrails / gotchas
|
|
253
|
+
|
|
254
|
+
- `==`/`!= null` on a destroyed `UnityEngine.Object` works (overloaded), but `?.` and cached refs treat
|
|
255
|
+
a destroyed object as non-null. Re-check with `if (obj)` after possible destruction.
|
|
256
|
+
- Don't mix input systems: with `PlayerInput`, don't also `Input.GetKey` — in "New" mode legacy calls throw.
|
|
257
|
+
- One `Rigidbody` per body (child colliders fine); non-uniform scale breaks physics bodies.
|
|
258
|
+
- Coroutines/`InvokeRepeating` stop on `SetActive(false)`; async `Task`s keep running unless cancelled.
|
|
259
|
+
- No allocation (`new`, LINQ, boxing) in `Update`/`FixedUpdate` hot paths.
|
|
260
|
+
|
|
261
|
+
## Related skills
|
|
262
|
+
|
|
263
|
+
- `gamedev-multiplayer` — networking/netcode (Netcode for GameObjects); this skill hands off the wire.
|
|
264
|
+
- `gamedev-physics` — deep physics tuning (joints, solver, determinism) beyond "put it in FixedUpdate".
|
|
265
|
+
- `gamedev-shaders` — Shader Graph / HLSL, URP/HDRP materials and rendering.
|
|
266
|
+
- `gamedev-pathing` — NavMesh, agents, steering, path solving.
|
|
267
|
+
- `gamedev-shipping` — store builds, signing, size budgets, platform certification.
|
|
268
|
+
- `godot` / `unreal` — the other engines; route Godot/GDScript and Unreal/Blueprint/C++ there.
|
|
269
|
+
|
|
270
|
+
## Checklist
|
|
271
|
+
|
|
272
|
+
- [ ] Confirmed the project's Unity version (`ProjectVersion.txt`); no year-based-LTS assumptions.
|
|
273
|
+
- [ ] No banned API emitted (`Input.GetAxis`, `UnityEngine.Networking`, `Resources.Load` for content,
|
|
274
|
+
`FindObjectOfType`, `WWW`, runtime `OnGUI`).
|
|
275
|
+
- [ ] `GetComponent` results cached in `Awake`; no string `Find` in `Update`.
|
|
276
|
+
- [ ] Physics in `FixedUpdate`; input read in `Update`; camera/tracking in `LateUpdate`.
|
|
277
|
+
- [ ] Every `OnEnable` subscription has a matching `OnDisable` unsubscription.
|
|
278
|
+
- [ ] `[SerializeField] private` + property used instead of bare `public` where encapsulation matters.
|
|
279
|
+
- [ ] New Input System used (actions/maps), not legacy polling; systems not mixed.
|
|
280
|
+
- [ ] Async uses `Awaitable` (or coroutine) with `destroyCancellationToken`; no double-await.
|
|
281
|
+
- [ ] Content via Addressables, not `Resources/`.
|
|
282
|
+
- [ ] Scenes registered in Build Profiles; async/additive loading where it avoids a hitch.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# unity evals
|
|
2
|
+
|
|
3
|
+
These cases assert the skill fires on Unity/C# engine work (MonoBehaviour lifecycle, prefabs,
|
|
4
|
+
ScriptableObjects, scenes, the new Input System, coroutines/async/Awaitable, Addressables, builds) and
|
|
5
|
+
that it defers correctly: pathfinding→gamedev-pathing, shaders→gamedev-shaders, netcode→gamedev-multiplayer,
|
|
6
|
+
Godot→godot, Unreal→unreal. Capability cases check current Unity 6 patterns (physics in FixedUpdate with
|
|
7
|
+
Rigidbody.MovePosition, new Input System over Input.GetAxis, Awaitable + destroyCancellationToken, no
|
|
8
|
+
double-await) rather than deprecated APIs.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
skill: unity
|
|
2
|
+
should_trigger:
|
|
3
|
+
- prompt: "My Unity player character teleports and jitters through walls when I move it with the arrow keys. Here's my MonoBehaviour."
|
|
4
|
+
why: "Physics-in-Update / setting transform on a Rigidbody — core lifecycle + FixedUpdate guidance this skill owns."
|
|
5
|
+
- prompt: "What's the difference between Awake and Start in Unity, and where should I grab my other components?"
|
|
6
|
+
why: "Directly the MonoBehaviour lifecycle section (Awake caches, Start does cross-object wiring)."
|
|
7
|
+
- prompt: "Help me convert my old Input.GetAxis(\"Horizontal\") movement to Unity's new Input System with an action map."
|
|
8
|
+
why: "Legacy→new Input System migration; ban-list + §6/input-system reference."
|
|
9
|
+
- prompt: "I want to store all my enemy stats (health, speed, damage) as data assets I can tweak in the Inspector. Best way in Unity?"
|
|
10
|
+
why: "ScriptableObject for data/config + [SerializeField] vs public + serialization rules."
|
|
11
|
+
- prompt: "How do I load a second Unity scene on top of the current one for my UI without unloading the level?"
|
|
12
|
+
why: "Scenes & additive loading (LoadSceneAsync + LoadSceneMode.Additive)."
|
|
13
|
+
- prompt: "Should I use a coroutine, async Task, or Awaitable for a 'wait 2 seconds then spawn' timer in Unity 6?"
|
|
14
|
+
why: "Coroutines vs async/await vs Awaitable decision — §7, including destroyCancellationToken."
|
|
15
|
+
- prompt: "Setting up multiplayer in Unity — I found UNet / UnityEngine.Networking tutorials, do they still work?"
|
|
16
|
+
why: "Version contract: UNet removed → Netcode for GameObjects; routes the wire itself onward but Unity owns the 'it's removed' fact."
|
|
17
|
+
should_not_trigger:
|
|
18
|
+
- prompt: "How do I write a NavMeshAgent that chases the player and avoids obstacles smoothly?"
|
|
19
|
+
route_to: "gamedev-pathing"
|
|
20
|
+
why: "Pathfinding/steering algorithms are the pathing skill; Unity only owns the component wiring."
|
|
21
|
+
- prompt: "Design a Shader Graph for a dissolving-enemy effect with an emissive edge in URP."
|
|
22
|
+
route_to: "gamedev-shaders"
|
|
23
|
+
why: "Shader/material authoring belongs to the shaders skill."
|
|
24
|
+
- prompt: "I'm making a game in Godot 4 with GDScript and my _ready() isn't firing."
|
|
25
|
+
route_to: "godot"
|
|
26
|
+
why: "Godot/GDScript engine — explicitly out of scope; route to godot."
|
|
27
|
+
- prompt: "In Unreal Engine 5 my Blueprint Actor won't replicate movement to clients."
|
|
28
|
+
route_to: "unreal"
|
|
29
|
+
why: "Unreal/Blueprint engine work — route to unreal."
|
|
30
|
+
- prompt: "Write the authoritative server tick and client-side prediction/reconciliation for our netcode."
|
|
31
|
+
route_to: "gamedev-multiplayer"
|
|
32
|
+
why: "Netcode protocol/authority design is the multiplayer skill; Unity stops at 'use Netcode for GameObjects'."
|
|
33
|
+
capability:
|
|
34
|
+
- scenario: "User asks how to move a Rigidbody with input from the new Input System without jitter, in Unity 6."
|
|
35
|
+
must_include:
|
|
36
|
+
- "reads input in Update (caches intent) but applies movement in FixedUpdate"
|
|
37
|
+
- "uses Rigidbody.MovePosition (or AddForce), not setting transform.position on the body"
|
|
38
|
+
- "uses the new Input System (InputAction / action map / ReadValue<Vector2>), not Input.GetAxis"
|
|
39
|
+
- scenario: "User asks whether to use a coroutine or async for a delayed spawn and how to make it stop when the object is destroyed."
|
|
40
|
+
must_include:
|
|
41
|
+
- "recommends Awaitable (or coroutine) over raw Task for Unity gameplay in Unity 6"
|
|
42
|
+
- "passes destroyCancellationToken to the Awaitable so it cancels on destroy"
|
|
43
|
+
- "warns never to await the same Awaitable instance twice (it is pooled)"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Build, platforms & player settings (Unity 6)
|
|
2
|
+
|
|
3
|
+
Reference: Unity Manual "Build Profiles", "Player Settings", "IL2CPP".
|
|
4
|
+
|
|
5
|
+
## Build Profiles (Unity 6) — replaces the old Build Settings window
|
|
6
|
+
|
|
7
|
+
`File → Build Profiles`. A **Build Profile** is a saved, per-platform configuration:
|
|
8
|
+
- **Scene List** — which scenes are included and their build index (index 0 = first/boot scene). Scenes
|
|
9
|
+
not in the list can only be loaded Additively if already present, so register everything you load.
|
|
10
|
+
- **Target platform & architecture** — Windows/macOS/Linux, Android, iOS, WebGL, consoles.
|
|
11
|
+
- **Overrides** — a profile can override Player Settings (e.g. a "Demo" profile with a different bundle id).
|
|
12
|
+
|
|
13
|
+
`Shared Settings` hold the defaults; each profile diffs from them. Build with `Build` or `Build And Run`.
|
|
14
|
+
Headless/CI builds go through `BuildPipeline.BuildPlayer` in an editor script.
|
|
15
|
+
|
|
16
|
+
## Scripting backend: IL2CPP vs Mono
|
|
17
|
+
|
|
18
|
+
`Player Settings → Configuration → Scripting Backend`:
|
|
19
|
+
|
|
20
|
+
| | IL2CPP | Mono |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| How | C# → IL → C++ → native (AOT) | JIT at runtime |
|
|
23
|
+
| Platforms | required for iOS, WebGL, consoles; available desktop/Android | Editor + desktop + Android |
|
|
24
|
+
| Runtime speed | faster | slower |
|
|
25
|
+
| Build time | slower | faster (good for iteration) |
|
|
26
|
+
| Reverse-engineering | harder | easier |
|
|
27
|
+
| Reflection/`dynamic` | AOT limits (no runtime codegen; `System.Reflection.Emit` unsupported) | full |
|
|
28
|
+
|
|
29
|
+
Ship production builds on **IL2CPP**; iterate in the Editor (always Mono/interpreted). IL2CPP + AOT means
|
|
30
|
+
generic code reached only via reflection can be stripped — see managed stripping below.
|
|
31
|
+
|
|
32
|
+
## Player Settings essentials
|
|
33
|
+
|
|
34
|
+
- **Identity**: Company Name, Product Name, **bundle identifier** (`com.company.game` — must match store
|
|
35
|
+
listing), version + build/bundle number.
|
|
36
|
+
- **Icons & splash**, default orientation (mobile), resolution/presentation.
|
|
37
|
+
- **API Compatibility Level**: `.NET Standard 2.1` (default, smaller) vs `.NET Framework` (broader API,
|
|
38
|
+
larger). Prefer Standard unless a dependency needs Framework.
|
|
39
|
+
- **Managed Stripping Level** (`Minimal`/`Low`/`Medium`/`High`): strips unused IL to shrink builds. High
|
|
40
|
+
can strip types only used via reflection/serialization — preserve them with a `link.xml` or
|
|
41
|
+
`[Preserve]`.
|
|
42
|
+
- **Graphics APIs** per platform (Vulkan/Metal/D3D12/GLES3/WebGPU), color space (Linear recommended).
|
|
43
|
+
|
|
44
|
+
## Platform quick-notes
|
|
45
|
+
|
|
46
|
+
- **WebGL**: IL2CPP only; **no multithreading by default** (so `System.Threading`/most `Task`
|
|
47
|
+
parallelism is unavailable — `Awaitable` frame awaits are fine); no synchronous file I/O; build size
|
|
48
|
+
and memory matter; use compression (Brotli/Gzip) + a server that serves the right headers.
|
|
49
|
+
- **Android**: set target/min SDK, choose ARM64 (required for Play Store), build **AAB** for the store
|
|
50
|
+
(APK for sideload). Configure keystore signing.
|
|
51
|
+
- **iOS**: Unity emits an Xcode project; sign & archive in Xcode. IL2CPP + ARM64.
|
|
52
|
+
- **Desktop**: simplest; Mono or IL2CPP.
|
|
53
|
+
|
|
54
|
+
## Rendering pipeline choice (affects builds & shaders)
|
|
55
|
+
|
|
56
|
+
- **URP** (Universal RP) — default for most 2D/3D projects, scales phone→desktop.
|
|
57
|
+
- **HDRP** — high-end desktop/console visuals.
|
|
58
|
+
- **Built-in** — legacy; new projects should pick URP/HDRP.
|
|
59
|
+
|
|
60
|
+
Pipeline choice changes materials and shader authoring — see the `gamedev-shaders` skill.
|
|
61
|
+
|
|
62
|
+
## Handoff
|
|
63
|
+
|
|
64
|
+
Store submission, signing, size budgets, certification, and release ops belong to the `gamedev-shipping`
|
|
65
|
+
skill. This reference stops at producing a correct platform build from the Editor.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Input System (new) — setup, patterns, migration
|
|
2
|
+
|
|
3
|
+
Package: `com.unity.inputsystem`. Enabled by default in Unity 6. Device-agnostic, event-driven,
|
|
4
|
+
supports rebinding, composites, local multiplayer, and touch. Reference: Unity Input System package
|
|
5
|
+
manual.
|
|
6
|
+
|
|
7
|
+
## Project mode
|
|
8
|
+
|
|
9
|
+
`Edit → Project Settings → Player → Active Input Handling`:
|
|
10
|
+
- **Input System Package (New)** — legacy `Input.*` calls throw. Recommended for new projects.
|
|
11
|
+
- **Both** — new + legacy coexist (migration only; avoid mixing per-feature).
|
|
12
|
+
- **Input Manager (Old)** — legacy only. Do not target for new work.
|
|
13
|
+
|
|
14
|
+
Unity 6 also has **Project-wide Actions** (`Edit → Project Settings → Input System Package`): a default
|
|
15
|
+
`InputActionAsset` shared across the whole project, reachable via `InputSystem.actions`.
|
|
16
|
+
|
|
17
|
+
## Anatomy
|
|
18
|
+
|
|
19
|
+
- **Input Action Asset** (`.inputactions`): the container. Enable "Generate C# Class" in its importer to
|
|
20
|
+
get a strongly-typed wrapper (e.g. `InputSystem_Actions`).
|
|
21
|
+
- **Action Map**: a group of actions active together — e.g. "Player", "UI", "Vehicle". Enable/disable
|
|
22
|
+
maps to switch context (`_controls.Player.Disable(); _controls.UI.Enable();`).
|
|
23
|
+
- **Action**: a named input with a **type**:
|
|
24
|
+
- *Value* (continuous, e.g. `Vector2` Move) — `performed` fires on change, `ReadValue<T>()`.
|
|
25
|
+
- *Button* (Jump, Fire) — `started` / `performed` / `canceled` phases.
|
|
26
|
+
- *Pass-Through* (raw device, every event).
|
|
27
|
+
- **Binding**: the physical control → action. **Composite** bindings combine controls, e.g. a "2D Vector"
|
|
28
|
+
composite maps W/A/S/D to a single `Vector2`. **Control schemes** group bindings per device set
|
|
29
|
+
(Keyboard&Mouse, Gamepad).
|
|
30
|
+
|
|
31
|
+
## Three ways to consume input
|
|
32
|
+
|
|
33
|
+
### 1. Generated C# class (recommended for a single player)
|
|
34
|
+
|
|
35
|
+
```csharp
|
|
36
|
+
using UnityEngine.InputSystem;
|
|
37
|
+
|
|
38
|
+
public sealed class PlayerController : MonoBehaviour
|
|
39
|
+
{
|
|
40
|
+
InputSystem_Actions _controls;
|
|
41
|
+
Vector2 _move;
|
|
42
|
+
|
|
43
|
+
void Awake() => _controls = new InputSystem_Actions();
|
|
44
|
+
void OnEnable()
|
|
45
|
+
{
|
|
46
|
+
_controls.Player.Enable();
|
|
47
|
+
_controls.Player.Move.performed += OnMove;
|
|
48
|
+
_controls.Player.Move.canceled += OnMove;
|
|
49
|
+
_controls.Player.Jump.performed += _ => Jump();
|
|
50
|
+
}
|
|
51
|
+
void OnDisable()
|
|
52
|
+
{
|
|
53
|
+
_controls.Player.Move.performed -= OnMove;
|
|
54
|
+
_controls.Player.Move.canceled -= OnMove;
|
|
55
|
+
_controls.Player.Disable();
|
|
56
|
+
}
|
|
57
|
+
void OnDestroy() => _controls.Dispose(); // it owns native resources
|
|
58
|
+
void OnMove(InputAction.CallbackContext ctx) => _move = ctx.ReadValue<Vector2>();
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 2. Polling (when event-driven feels heavy)
|
|
63
|
+
|
|
64
|
+
```csharp
|
|
65
|
+
Vector2 move = _controls.Player.Move.ReadValue<Vector2>();
|
|
66
|
+
bool jumped = _controls.Player.Jump.WasPressedThisFrame(); // edge-triggered, read in Update
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 3. `PlayerInput` component (fastest wiring, local multiplayer)
|
|
70
|
+
|
|
71
|
+
Attach `PlayerInput`, assign the action asset, pick a **Behavior**:
|
|
72
|
+
- *Send Messages* / *Broadcast Messages* — calls `OnMove(InputValue)` etc. by name.
|
|
73
|
+
- *Invoke Unity Events* — wire in the Inspector.
|
|
74
|
+
- *Invoke C# Events* — subscribe in code.
|
|
75
|
+
|
|
76
|
+
For local co-op, `PlayerInputManager` spawns a `PlayerInput` per joined device, isolating each player's
|
|
77
|
+
action instance and pairing devices automatically.
|
|
78
|
+
|
|
79
|
+
## Rebinding at runtime
|
|
80
|
+
|
|
81
|
+
```csharp
|
|
82
|
+
var rebind = _controls.Player.Jump.PerformInteractiveRebinding()
|
|
83
|
+
.WithControlsExcluding("Mouse")
|
|
84
|
+
.OnComplete(op => { op.Dispose(); SaveBindings(); })
|
|
85
|
+
.Start();
|
|
86
|
+
// Persist: string json = _controls.asset.SaveBindingOverridesAsJson();
|
|
87
|
+
// Restore: _controls.asset.LoadBindingOverridesFromJson(json);
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Migration from legacy
|
|
91
|
+
|
|
92
|
+
| Legacy | New Input System |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
| `Input.GetAxis("Horizontal")` | Move action (Value/`Vector2`) → `ReadValue<Vector2>().x` |
|
|
95
|
+
| `Input.GetButtonDown("Jump")` | Jump action (Button) → `WasPressedThisFrame()` or `performed` |
|
|
96
|
+
| `Input.GetKey(KeyCode.E)` | action bound to `<Keyboard>/e` → `IsPressed()` |
|
|
97
|
+
| `Input.mousePosition` | `Mouse.current.position.ReadValue()` |
|
|
98
|
+
| `Input.GetMouseButtonDown(0)` | `Mouse.current.leftButton.wasPressedThisFrame` |
|
|
99
|
+
| `Input.touchCount` / `Input.GetTouch` | `Touchscreen.current` / Enhanced Touch API |
|
|
100
|
+
|
|
101
|
+
Do not leave `Input.*` polling alongside new-system actions — in "New" mode the legacy calls throw, and
|
|
102
|
+
in "Both" mode you double-handle the same physical input.
|