@ruaruababa/vibe-kit 1.0.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/CATALOG.md +317 -0
- package/README.md +121 -0
- package/aliases.json +65 -0
- package/bin/vibe.js +2 -0
- package/bundles.json +265 -0
- package/catalog.json +1560 -0
- package/dist/antigravity-skills/bin/cli.js +438 -0
- package/dist/antigravity-skills/lib/skill-utils.js +158 -0
- package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
- package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
- package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
- package/dist/bin/vibe.js +2 -0
- package/dist/dist/src/cli/index.js +26 -0
- package/dist/lib/skill-utils.js +158 -0
- package/dist/scripts/build-catalog.js +50 -0
- package/dist/scripts/normalize-frontmatter.js +144 -0
- package/dist/scripts/validate-skills.js +56 -0
- package/dist/src/cli/index.js +146 -0
- package/dist/src/types/index.js +13 -0
- package/dist/src/utils/fs.js +1 -0
- package/package.json +43 -0
- package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
- package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
- package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
- package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
- package/skills/agent-orchestrator/SKILL.md +24 -0
- package/skills/ai-engineer/SKILL.md +171 -0
- package/skills/airflow-dag-patterns/SKILL.md +41 -0
- package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
- package/skills/angular-migration/SKILL.md +428 -0
- package/skills/anti-reversing-techniques/SKILL.md +42 -0
- package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
- package/skills/api-design-principles/SKILL.md +37 -0
- package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/skills/api-documenter/SKILL.md +184 -0
- package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
- package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
- package/skills/application-performance-performance-optimization/SKILL.md +154 -0
- package/skills/architect-review/SKILL.md +174 -0
- package/skills/architecture-decision-records/SKILL.md +441 -0
- package/skills/architecture-patterns/SKILL.md +37 -0
- package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
- package/skills/arm-cortex-expert/SKILL.md +306 -0
- package/skills/async-python-patterns/SKILL.md +39 -0
- package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
- package/skills/attack-tree-construction/SKILL.md +38 -0
- package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
- package/skills/auth-implementation-patterns/SKILL.md +39 -0
- package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
- package/skills/backend-architect/SKILL.md +333 -0
- package/skills/backend-development-feature-development/SKILL.md +180 -0
- package/skills/backend-security-coder/SKILL.md +156 -0
- package/skills/backtesting-frameworks/SKILL.md +39 -0
- package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
- package/skills/bash-defensive-patterns/SKILL.md +43 -0
- package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
- package/skills/bash-pro/SKILL.md +310 -0
- package/skills/bats-testing-patterns/SKILL.md +34 -0
- package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
- package/skills/bazel-build-optimization/SKILL.md +397 -0
- package/skills/billing-automation/SKILL.md +42 -0
- package/skills/billing-automation/resources/implementation-playbook.md +544 -0
- package/skills/binary-analysis-patterns/SKILL.md +450 -0
- package/skills/blockchain-developer/SKILL.md +208 -0
- package/skills/business-analyst/SKILL.md +182 -0
- package/skills/c-pro/SKILL.md +56 -0
- package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
- package/skills/c4-code/SKILL.md +244 -0
- package/skills/c4-component/SKILL.md +153 -0
- package/skills/c4-container/SKILL.md +171 -0
- package/skills/c4-context/SKILL.md +150 -0
- package/skills/changelog-automation/SKILL.md +38 -0
- package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
- package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
- package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
- package/skills/clean-markdown/SKILL.md +23 -0
- package/skills/cloud-architect/SKILL.md +135 -0
- package/skills/code-documentation-code-explain/SKILL.md +46 -0
- package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
- package/skills/code-documentation-doc-generate/SKILL.md +48 -0
- package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/code-refactoring-context-restore/SKILL.md +179 -0
- package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
- package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
- package/skills/code-review-ai-ai-review/SKILL.md +450 -0
- package/skills/code-review-excellence/SKILL.md +40 -0
- package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
- package/skills/code-reviewer/SKILL.md +178 -0
- package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
- package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
- package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
- package/skills/competitive-landscape/SKILL.md +34 -0
- package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
- package/skills/comprehensive-review-full-review/SKILL.md +146 -0
- package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
- package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
- package/skills/conductor-implement/SKILL.md +388 -0
- package/skills/conductor-manage/SKILL.md +39 -0
- package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
- package/skills/conductor-new-track/SKILL.md +433 -0
- package/skills/conductor-revert/SKILL.md +372 -0
- package/skills/conductor-setup/SKILL.md +426 -0
- package/skills/conductor-status/SKILL.md +338 -0
- package/skills/conductor-validator/SKILL.md +62 -0
- package/skills/content-marketer/SKILL.md +170 -0
- package/skills/context-driven-development/SKILL.md +400 -0
- package/skills/context-management-context-restore/SKILL.md +179 -0
- package/skills/context-management-context-save/SKILL.md +177 -0
- package/skills/context-manager/SKILL.md +185 -0
- package/skills/cost-optimization/SKILL.md +286 -0
- package/skills/cpp-pro/SKILL.md +59 -0
- package/skills/cqrs-implementation/SKILL.md +35 -0
- package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
- package/skills/csharp-pro/SKILL.md +59 -0
- package/skills/customer-support/SKILL.md +170 -0
- package/skills/data-engineer/SKILL.md +224 -0
- package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
- package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
- package/skills/data-quality-frameworks/SKILL.md +40 -0
- package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
- package/skills/data-scientist/SKILL.md +199 -0
- package/skills/data-storytelling/SKILL.md +465 -0
- package/skills/database-admin/SKILL.md +165 -0
- package/skills/database-architect/SKILL.md +268 -0
- package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
- package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
- package/skills/database-migration/SKILL.md +436 -0
- package/skills/database-migrations-migration-observability/SKILL.md +420 -0
- package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
- package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
- package/skills/database-optimizer/SKILL.md +167 -0
- package/skills/dbt-transformation-patterns/SKILL.md +34 -0
- package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
- package/skills/debugger/SKILL.md +49 -0
- package/skills/debugging-strategies/SKILL.md +34 -0
- package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
- package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
- package/skills/defi-protocol-templates/SKILL.md +466 -0
- package/skills/dependency-management-deps-audit/SKILL.md +44 -0
- package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/dependency-upgrade/SKILL.md +421 -0
- package/skills/deployment-engineer/SKILL.md +170 -0
- package/skills/deployment-pipeline-design/SKILL.md +371 -0
- package/skills/deployment-validation-config-validate/SKILL.md +496 -0
- package/skills/devops-troubleshooter/SKILL.md +161 -0
- package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
- package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
- package/skills/distributed-tracing/SKILL.md +450 -0
- package/skills/django-pro/SKILL.md +180 -0
- package/skills/docs-architect/SKILL.md +98 -0
- package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
- package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/dotnet-architect/SKILL.md +197 -0
- package/skills/dotnet-backend-patterns/SKILL.md +37 -0
- package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
- package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
- package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
- package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
- package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
- package/skills/dummy-skill/SKILL.md +5 -0
- package/skills/dx-optimizer/SKILL.md +83 -0
- package/skills/e2e-testing-patterns/SKILL.md +41 -0
- package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
- package/skills/elixir-pro/SKILL.md +59 -0
- package/skills/embedding-strategies/SKILL.md +491 -0
- package/skills/employment-contract-templates/SKILL.md +39 -0
- package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
- package/skills/error-debugging-error-analysis/SKILL.md +47 -0
- package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-debugging-error-trace/SKILL.md +43 -0
- package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
- package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
- package/skills/error-detective/SKILL.md +53 -0
- package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
- package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
- package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
- package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
- package/skills/error-handling-patterns/SKILL.md +35 -0
- package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
- package/skills/event-sourcing-architect/SKILL.md +58 -0
- package/skills/event-store-design/SKILL.md +449 -0
- package/skills/fastapi-pro/SKILL.md +192 -0
- package/skills/fastapi-templates/SKILL.md +32 -0
- package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
- package/skills/final-test/SKILL.md +5 -0
- package/skills/firmware-analyst/SKILL.md +320 -0
- package/skills/flutter-expert/SKILL.md +200 -0
- package/skills/framework-migration-code-migrate/SKILL.md +48 -0
- package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
- package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
- package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
- package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
- package/skills/frontend-developer/SKILL.md +171 -0
- package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
- package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
- package/skills/frontend-security-coder/SKILL.md +170 -0
- package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
- package/skills/gdpr-data-handling/SKILL.md +33 -0
- package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
- package/skills/git-advanced-workflows/SKILL.md +412 -0
- package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
- package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
- package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
- package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
- package/skills/github-actions-templates/SKILL.md +345 -0
- package/skills/gitlab-ci-patterns/SKILL.md +283 -0
- package/skills/gitops-workflow/SKILL.md +303 -0
- package/skills/gitops-workflow/references/argocd-setup.md +134 -0
- package/skills/gitops-workflow/references/sync-policies.md +131 -0
- package/skills/go-concurrency-patterns/SKILL.md +33 -0
- package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
- package/skills/godot-gdscript-patterns/SKILL.md +33 -0
- package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
- package/skills/golang-pro/SKILL.md +179 -0
- package/skills/grafana-dashboards/SKILL.md +381 -0
- package/skills/graphql-architect/SKILL.md +182 -0
- package/skills/haskell-pro/SKILL.md +56 -0
- package/skills/helm-chart-scaffolding/SKILL.md +34 -0
- package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
- package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
- package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
- package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
- package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
- package/skills/hr-pro/SKILL.md +126 -0
- package/skills/hybrid-cloud-architect/SKILL.md +168 -0
- package/skills/hybrid-cloud-networking/SKILL.md +238 -0
- package/skills/hybrid-search-implementation/SKILL.md +32 -0
- package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
- package/skills/incident-responder/SKILL.md +213 -0
- package/skills/incident-response-incident-response/SKILL.md +168 -0
- package/skills/incident-response-smart-fix/SKILL.md +29 -0
- package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
- package/skills/incident-runbook-templates/SKILL.md +395 -0
- package/skills/ios-developer/SKILL.md +219 -0
- package/skills/istio-traffic-management/SKILL.md +337 -0
- package/skills/java-pro/SKILL.md +177 -0
- package/skills/javascript-pro/SKILL.md +57 -0
- package/skills/javascript-testing-patterns/SKILL.md +35 -0
- package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
- package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
- package/skills/julia-pro/SKILL.md +209 -0
- package/skills/k8s-manifest-generator/SKILL.md +35 -0
- package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
- package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
- package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
- package/skills/k8s-security-policies/SKILL.md +346 -0
- package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
- package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
- package/skills/kpi-dashboard-design/SKILL.md +440 -0
- package/skills/kubernetes-architect/SKILL.md +170 -0
- package/skills/langchain-architecture/SKILL.md +350 -0
- package/skills/legacy-modernizer/SKILL.md +53 -0
- package/skills/legal-advisor/SKILL.md +70 -0
- package/skills/linkerd-patterns/SKILL.md +321 -0
- package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
- package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
- package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
- package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
- package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
- package/skills/llm-evaluation/SKILL.md +483 -0
- package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
- package/skills/malware-analyst/SKILL.md +247 -0
- package/skills/market-sizing-analysis/SKILL.md +425 -0
- package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
- package/skills/market-sizing-analysis/references/data-sources.md +360 -0
- package/skills/memory-forensics/SKILL.md +491 -0
- package/skills/memory-safety-patterns/SKILL.md +33 -0
- package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
- package/skills/mermaid-expert/SKILL.md +59 -0
- package/skills/microservices-patterns/SKILL.md +35 -0
- package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
- package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
- package/skills/ml-engineer/SKILL.md +168 -0
- package/skills/ml-pipeline-workflow/SKILL.md +257 -0
- package/skills/mlops-engineer/SKILL.md +219 -0
- package/skills/mobile-developer/SKILL.md +205 -0
- package/skills/mobile-security-coder/SKILL.md +184 -0
- package/skills/modern-javascript-patterns/SKILL.md +35 -0
- package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
- package/skills/monorepo-architect/SKILL.md +61 -0
- package/skills/monorepo-management/SKILL.md +35 -0
- package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
- package/skills/mtls-configuration/SKILL.md +359 -0
- package/skills/multi-cloud-architecture/SKILL.md +189 -0
- package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
- package/skills/network-engineer/SKILL.md +169 -0
- package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
- package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
- package/skills/nft-standards/SKILL.md +395 -0
- package/skills/node-expert/SKILL.md +23 -0
- package/skills/nodejs-backend-patterns/SKILL.md +35 -0
- package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
- package/skills/nx-workspace-patterns/SKILL.md +464 -0
- package/skills/observability-engineer/SKILL.md +237 -0
- package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
- package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
- package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
- package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
- package/skills/on-call-handoff-patterns/SKILL.md +453 -0
- package/skills/openapi-spec-generation/SKILL.md +33 -0
- package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
- package/skills/payment-integration/SKILL.md +77 -0
- package/skills/paypal-integration/SKILL.md +479 -0
- package/skills/pci-compliance/SKILL.md +478 -0
- package/skills/performance-engineer/SKILL.md +180 -0
- package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
- package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
- package/skills/php-pro/SKILL.md +63 -0
- package/skills/posix-shell-pro/SKILL.md +304 -0
- package/skills/postgresql/SKILL.md +230 -0
- package/skills/postmortem-writing/SKILL.md +386 -0
- package/skills/projection-patterns/SKILL.md +33 -0
- package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
- package/skills/prometheus-configuration/SKILL.md +404 -0
- package/skills/prompt-engineer/SKILL.md +272 -0
- package/skills/prompt-engineering-patterns/SKILL.md +213 -0
- package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
- package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
- package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
- package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
- package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
- package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
- package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
- package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
- package/skills/protocol-reverse-engineering/SKILL.md +29 -0
- package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
- package/skills/python-development-python-scaffold/SKILL.md +331 -0
- package/skills/python-packaging/SKILL.md +36 -0
- package/skills/python-packaging/resources/implementation-playbook.md +869 -0
- package/skills/python-performance-optimization/SKILL.md +36 -0
- package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
- package/skills/python-pro/SKILL.md +158 -0
- package/skills/python-testing-patterns/SKILL.md +37 -0
- package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
- package/skills/quant-analyst/SKILL.md +53 -0
- package/skills/rag-implementation/SKILL.md +421 -0
- package/skills/react-modernization/SKILL.md +34 -0
- package/skills/react-modernization/resources/implementation-playbook.md +512 -0
- package/skills/react-native-architecture/SKILL.md +33 -0
- package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
- package/skills/react-state-management/SKILL.md +441 -0
- package/skills/reference-builder/SKILL.md +188 -0
- package/skills/reverse-engineer/SKILL.md +173 -0
- package/skills/risk-manager/SKILL.md +61 -0
- package/skills/risk-metrics-calculation/SKILL.md +33 -0
- package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
- package/skills/ruby-pro/SKILL.md +56 -0
- package/skills/rust-async-patterns/SKILL.md +33 -0
- package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
- package/skills/rust-pro/SKILL.md +178 -0
- package/skills/saga-orchestration/SKILL.md +496 -0
- package/skills/sales-automator/SKILL.md +55 -0
- package/skills/sast-configuration/SKILL.md +212 -0
- package/skills/scala-pro/SKILL.md +82 -0
- package/skills/screen-reader-testing/SKILL.md +33 -0
- package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
- package/skills/search-specialist/SKILL.md +80 -0
- package/skills/secrets-management/SKILL.md +364 -0
- package/skills/security-auditor/SKILL.md +169 -0
- package/skills/security-compliance-compliance-check/SKILL.md +55 -0
- package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
- package/skills/security-requirement-extraction/SKILL.md +33 -0
- package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
- package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
- package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
- package/skills/security-scanning-security-hardening/SKILL.md +147 -0
- package/skills/security-scanning-security-sast/SKILL.md +495 -0
- package/skills/seo-authority-builder/SKILL.md +136 -0
- package/skills/seo-cannibalization-detector/SKILL.md +123 -0
- package/skills/seo-content-auditor/SKILL.md +83 -0
- package/skills/seo-content-planner/SKILL.md +108 -0
- package/skills/seo-content-refresher/SKILL.md +118 -0
- package/skills/seo-content-writer/SKILL.md +96 -0
- package/skills/seo-keyword-strategist/SKILL.md +95 -0
- package/skills/seo-meta-optimizer/SKILL.md +92 -0
- package/skills/seo-snippet-hunter/SKILL.md +114 -0
- package/skills/seo-structure-architect/SKILL.md +108 -0
- package/skills/service-mesh-expert/SKILL.md +58 -0
- package/skills/service-mesh-observability/SKILL.md +395 -0
- package/skills/shellcheck-configuration/SKILL.md +466 -0
- package/skills/similarity-search-patterns/SKILL.md +33 -0
- package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
- package/skills/slo-implementation/SKILL.md +341 -0
- package/skills/solidity-security/SKILL.md +34 -0
- package/skills/solidity-security/resources/implementation-playbook.md +524 -0
- package/skills/spark-optimization/SKILL.md +427 -0
- package/skills/sql-optimization-patterns/SKILL.md +35 -0
- package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
- package/skills/sql-pro/SKILL.md +173 -0
- package/skills/startup-analyst/SKILL.md +328 -0
- package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
- package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
- package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
- package/skills/startup-financial-modeling/SKILL.md +467 -0
- package/skills/startup-metrics-framework/SKILL.md +34 -0
- package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
- package/skills/stride-analysis-patterns/SKILL.md +33 -0
- package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
- package/skills/stripe-integration/SKILL.md +454 -0
- package/skills/systems-programming-rust-project/SKILL.md +440 -0
- package/skills/tailwind-design-system/SKILL.md +33 -0
- package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
- package/skills/tdd-orchestrator/SKILL.md +205 -0
- package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
- package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
- package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
- package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
- package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
- package/skills/team-collaboration-issue/SKILL.md +37 -0
- package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
- package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
- package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
- package/skills/team-composition-analysis/SKILL.md +413 -0
- package/skills/temporal-python-pro/SKILL.md +370 -0
- package/skills/temporal-python-testing/SKILL.md +170 -0
- package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
- package/skills/temporal-python-testing/resources/local-setup.md +553 -0
- package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
- package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
- package/skills/terraform-module-library/SKILL.md +261 -0
- package/skills/terraform-module-library/references/aws-modules.md +63 -0
- package/skills/terraform-specialist/SKILL.md +166 -0
- package/skills/test-automator/SKILL.md +224 -0
- package/skills/threat-mitigation-mapping/SKILL.md +33 -0
- package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
- package/skills/threat-modeling-expert/SKILL.md +60 -0
- package/skills/track-management/SKILL.md +38 -0
- package/skills/track-management/resources/implementation-playbook.md +591 -0
- package/skills/turborepo-caching/SKILL.md +419 -0
- package/skills/tutorial-engineer/SKILL.md +139 -0
- package/skills/typescript-advanced-types/SKILL.md +35 -0
- package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
- package/skills/typescript-pro/SKILL.md +55 -0
- package/skills/ui-minimal/SKILL.md +23 -0
- package/skills/ui-ux-designer/SKILL.md +209 -0
- package/skills/ui-visual-validator/SKILL.md +214 -0
- package/skills/unit-testing-test-generate/SKILL.md +319 -0
- package/skills/unity-developer/SKILL.md +230 -0
- package/skills/unity-ecs-patterns/SKILL.md +33 -0
- package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
- package/skills/uv-package-manager/SKILL.md +37 -0
- package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
- package/skills/vector-database-engineer/SKILL.md +60 -0
- package/skills/vector-index-tuning/SKILL.md +42 -0
- package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
- package/skills/wcag-audit-patterns/SKILL.md +41 -0
- package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
- package/skills/web3-testing/SKILL.md +427 -0
- package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
- package/skills/workflow-patterns/SKILL.md +38 -0
- package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
|
@@ -0,0 +1,625 @@
|
|
|
1
|
+
# Unity ECS Patterns Implementation Playbook
|
|
2
|
+
|
|
3
|
+
This file contains detailed patterns, checklists, and code samples referenced by the skill.
|
|
4
|
+
|
|
5
|
+
# Unity ECS Patterns
|
|
6
|
+
|
|
7
|
+
Production patterns for Unity's Data-Oriented Technology Stack (DOTS) including Entity Component System, Job System, and Burst Compiler.
|
|
8
|
+
|
|
9
|
+
## When to Use This Skill
|
|
10
|
+
|
|
11
|
+
- Building high-performance Unity games
|
|
12
|
+
- Managing thousands of entities efficiently
|
|
13
|
+
- Implementing data-oriented game systems
|
|
14
|
+
- Optimizing CPU-bound game logic
|
|
15
|
+
- Converting OOP game code to ECS
|
|
16
|
+
- Using Jobs and Burst for parallelization
|
|
17
|
+
|
|
18
|
+
## Core Concepts
|
|
19
|
+
|
|
20
|
+
### 1. ECS vs OOP
|
|
21
|
+
|
|
22
|
+
| Aspect | Traditional OOP | ECS/DOTS |
|
|
23
|
+
|--------|-----------------|----------|
|
|
24
|
+
| Data layout | Object-oriented | Data-oriented |
|
|
25
|
+
| Memory | Scattered | Contiguous |
|
|
26
|
+
| Processing | Per-object | Batched |
|
|
27
|
+
| Scaling | Poor with count | Linear scaling |
|
|
28
|
+
| Best for | Complex behaviors | Mass simulation |
|
|
29
|
+
|
|
30
|
+
### 2. DOTS Components
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Entity: Lightweight ID (no data)
|
|
34
|
+
Component: Pure data (no behavior)
|
|
35
|
+
System: Logic that processes components
|
|
36
|
+
World: Container for entities
|
|
37
|
+
Archetype: Unique combination of components
|
|
38
|
+
Chunk: Memory block for same-archetype entities
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Patterns
|
|
42
|
+
|
|
43
|
+
### Pattern 1: Basic ECS Setup
|
|
44
|
+
|
|
45
|
+
```csharp
|
|
46
|
+
using Unity.Entities;
|
|
47
|
+
using Unity.Mathematics;
|
|
48
|
+
using Unity.Transforms;
|
|
49
|
+
using Unity.Burst;
|
|
50
|
+
using Unity.Collections;
|
|
51
|
+
|
|
52
|
+
// Component: Pure data, no methods
|
|
53
|
+
public struct Speed : IComponentData
|
|
54
|
+
{
|
|
55
|
+
public float Value;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public struct Health : IComponentData
|
|
59
|
+
{
|
|
60
|
+
public float Current;
|
|
61
|
+
public float Max;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public struct Target : IComponentData
|
|
65
|
+
{
|
|
66
|
+
public Entity Value;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Tag component (zero-size marker)
|
|
70
|
+
public struct EnemyTag : IComponentData { }
|
|
71
|
+
public struct PlayerTag : IComponentData { }
|
|
72
|
+
|
|
73
|
+
// Buffer component (variable-size array)
|
|
74
|
+
[InternalBufferCapacity(8)]
|
|
75
|
+
public struct InventoryItem : IBufferElementData
|
|
76
|
+
{
|
|
77
|
+
public int ItemId;
|
|
78
|
+
public int Quantity;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Shared component (grouped entities)
|
|
82
|
+
public struct TeamId : ISharedComponentData
|
|
83
|
+
{
|
|
84
|
+
public int Value;
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Pattern 2: Systems with ISystem (Recommended)
|
|
89
|
+
|
|
90
|
+
```csharp
|
|
91
|
+
using Unity.Entities;
|
|
92
|
+
using Unity.Transforms;
|
|
93
|
+
using Unity.Mathematics;
|
|
94
|
+
using Unity.Burst;
|
|
95
|
+
|
|
96
|
+
// ISystem: Unmanaged, Burst-compatible, highest performance
|
|
97
|
+
[BurstCompile]
|
|
98
|
+
public partial struct MovementSystem : ISystem
|
|
99
|
+
{
|
|
100
|
+
[BurstCompile]
|
|
101
|
+
public void OnCreate(ref SystemState state)
|
|
102
|
+
{
|
|
103
|
+
// Require components before system runs
|
|
104
|
+
state.RequireForUpdate<Speed>();
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
[BurstCompile]
|
|
108
|
+
public void OnUpdate(ref SystemState state)
|
|
109
|
+
{
|
|
110
|
+
float deltaTime = SystemAPI.Time.DeltaTime;
|
|
111
|
+
|
|
112
|
+
// Simple foreach - auto-generates job
|
|
113
|
+
foreach (var (transform, speed) in
|
|
114
|
+
SystemAPI.Query<RefRW<LocalTransform>, RefRO<Speed>>())
|
|
115
|
+
{
|
|
116
|
+
transform.ValueRW.Position +=
|
|
117
|
+
new float3(0, 0, speed.ValueRO.Value * deltaTime);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
[BurstCompile]
|
|
122
|
+
public void OnDestroy(ref SystemState state) { }
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// With explicit job for more control
|
|
126
|
+
[BurstCompile]
|
|
127
|
+
public partial struct MovementJobSystem : ISystem
|
|
128
|
+
{
|
|
129
|
+
[BurstCompile]
|
|
130
|
+
public void OnUpdate(ref SystemState state)
|
|
131
|
+
{
|
|
132
|
+
var job = new MoveJob
|
|
133
|
+
{
|
|
134
|
+
DeltaTime = SystemAPI.Time.DeltaTime
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
state.Dependency = job.ScheduleParallel(state.Dependency);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
[BurstCompile]
|
|
142
|
+
public partial struct MoveJob : IJobEntity
|
|
143
|
+
{
|
|
144
|
+
public float DeltaTime;
|
|
145
|
+
|
|
146
|
+
void Execute(ref LocalTransform transform, in Speed speed)
|
|
147
|
+
{
|
|
148
|
+
transform.Position += new float3(0, 0, speed.Value * DeltaTime);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Pattern 3: Entity Queries
|
|
154
|
+
|
|
155
|
+
```csharp
|
|
156
|
+
[BurstCompile]
|
|
157
|
+
public partial struct QueryExamplesSystem : ISystem
|
|
158
|
+
{
|
|
159
|
+
private EntityQuery _enemyQuery;
|
|
160
|
+
|
|
161
|
+
public void OnCreate(ref SystemState state)
|
|
162
|
+
{
|
|
163
|
+
// Build query manually for complex cases
|
|
164
|
+
_enemyQuery = new EntityQueryBuilder(Allocator.Temp)
|
|
165
|
+
.WithAll<EnemyTag, Health, LocalTransform>()
|
|
166
|
+
.WithNone<Dead>()
|
|
167
|
+
.WithOptions(EntityQueryOptions.FilterWriteGroup)
|
|
168
|
+
.Build(ref state);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
[BurstCompile]
|
|
172
|
+
public void OnUpdate(ref SystemState state)
|
|
173
|
+
{
|
|
174
|
+
// SystemAPI.Query - simplest approach
|
|
175
|
+
foreach (var (health, entity) in
|
|
176
|
+
SystemAPI.Query<RefRW<Health>>()
|
|
177
|
+
.WithAll<EnemyTag>()
|
|
178
|
+
.WithEntityAccess())
|
|
179
|
+
{
|
|
180
|
+
if (health.ValueRO.Current <= 0)
|
|
181
|
+
{
|
|
182
|
+
// Mark for destruction
|
|
183
|
+
SystemAPI.GetSingleton<EndSimulationEntityCommandBufferSystem.Singleton>()
|
|
184
|
+
.CreateCommandBuffer(state.WorldUnmanaged)
|
|
185
|
+
.DestroyEntity(entity);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Get count
|
|
190
|
+
int enemyCount = _enemyQuery.CalculateEntityCount();
|
|
191
|
+
|
|
192
|
+
// Get all entities
|
|
193
|
+
var enemies = _enemyQuery.ToEntityArray(Allocator.Temp);
|
|
194
|
+
|
|
195
|
+
// Get component arrays
|
|
196
|
+
var healths = _enemyQuery.ToComponentDataArray<Health>(Allocator.Temp);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Pattern 4: Entity Command Buffers (Structural Changes)
|
|
202
|
+
|
|
203
|
+
```csharp
|
|
204
|
+
// Structural changes (create/destroy/add/remove) require command buffers
|
|
205
|
+
[BurstCompile]
|
|
206
|
+
[UpdateInGroup(typeof(SimulationSystemGroup))]
|
|
207
|
+
public partial struct SpawnSystem : ISystem
|
|
208
|
+
{
|
|
209
|
+
[BurstCompile]
|
|
210
|
+
public void OnUpdate(ref SystemState state)
|
|
211
|
+
{
|
|
212
|
+
var ecbSingleton = SystemAPI.GetSingleton<BeginSimulationEntityCommandBufferSystem.Singleton>();
|
|
213
|
+
var ecb = ecbSingleton.CreateCommandBuffer(state.WorldUnmanaged);
|
|
214
|
+
|
|
215
|
+
foreach (var (spawner, transform) in
|
|
216
|
+
SystemAPI.Query<RefRW<Spawner>, RefRO<LocalTransform>>())
|
|
217
|
+
{
|
|
218
|
+
spawner.ValueRW.Timer -= SystemAPI.Time.DeltaTime;
|
|
219
|
+
|
|
220
|
+
if (spawner.ValueRO.Timer <= 0)
|
|
221
|
+
{
|
|
222
|
+
spawner.ValueRW.Timer = spawner.ValueRO.Interval;
|
|
223
|
+
|
|
224
|
+
// Create entity (deferred until sync point)
|
|
225
|
+
Entity newEntity = ecb.Instantiate(spawner.ValueRO.Prefab);
|
|
226
|
+
|
|
227
|
+
// Set component values
|
|
228
|
+
ecb.SetComponent(newEntity, new LocalTransform
|
|
229
|
+
{
|
|
230
|
+
Position = transform.ValueRO.Position,
|
|
231
|
+
Rotation = quaternion.identity,
|
|
232
|
+
Scale = 1f
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
// Add component
|
|
236
|
+
ecb.AddComponent(newEntity, new Speed { Value = 5f });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Parallel ECB usage
|
|
243
|
+
[BurstCompile]
|
|
244
|
+
public partial struct ParallelSpawnJob : IJobEntity
|
|
245
|
+
{
|
|
246
|
+
public EntityCommandBuffer.ParallelWriter ECB;
|
|
247
|
+
|
|
248
|
+
void Execute([EntityIndexInQuery] int index, in Spawner spawner)
|
|
249
|
+
{
|
|
250
|
+
Entity e = ECB.Instantiate(index, spawner.Prefab);
|
|
251
|
+
ECB.AddComponent(index, e, new Speed { Value = 5f });
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Pattern 5: Aspect (Grouping Components)
|
|
257
|
+
|
|
258
|
+
```csharp
|
|
259
|
+
using Unity.Entities;
|
|
260
|
+
using Unity.Transforms;
|
|
261
|
+
using Unity.Mathematics;
|
|
262
|
+
|
|
263
|
+
// Aspect: Groups related components for cleaner code
|
|
264
|
+
public readonly partial struct CharacterAspect : IAspect
|
|
265
|
+
{
|
|
266
|
+
public readonly Entity Entity;
|
|
267
|
+
|
|
268
|
+
private readonly RefRW<LocalTransform> _transform;
|
|
269
|
+
private readonly RefRO<Speed> _speed;
|
|
270
|
+
private readonly RefRW<Health> _health;
|
|
271
|
+
|
|
272
|
+
// Optional component
|
|
273
|
+
[Optional]
|
|
274
|
+
private readonly RefRO<Shield> _shield;
|
|
275
|
+
|
|
276
|
+
// Buffer
|
|
277
|
+
private readonly DynamicBuffer<InventoryItem> _inventory;
|
|
278
|
+
|
|
279
|
+
public float3 Position
|
|
280
|
+
{
|
|
281
|
+
get => _transform.ValueRO.Position;
|
|
282
|
+
set => _transform.ValueRW.Position = value;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
public float CurrentHealth => _health.ValueRO.Current;
|
|
286
|
+
public float MaxHealth => _health.ValueRO.Max;
|
|
287
|
+
public float MoveSpeed => _speed.ValueRO.Value;
|
|
288
|
+
|
|
289
|
+
public bool HasShield => _shield.IsValid;
|
|
290
|
+
public float ShieldAmount => HasShield ? _shield.ValueRO.Amount : 0f;
|
|
291
|
+
|
|
292
|
+
public void TakeDamage(float amount)
|
|
293
|
+
{
|
|
294
|
+
float remaining = amount;
|
|
295
|
+
|
|
296
|
+
if (HasShield && _shield.ValueRO.Amount > 0)
|
|
297
|
+
{
|
|
298
|
+
// Shield absorbs damage first
|
|
299
|
+
remaining = math.max(0, amount - _shield.ValueRO.Amount);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
_health.ValueRW.Current = math.max(0, _health.ValueRO.Current - remaining);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
public void Move(float3 direction, float deltaTime)
|
|
306
|
+
{
|
|
307
|
+
_transform.ValueRW.Position += direction * _speed.ValueRO.Value * deltaTime;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
public void AddItem(int itemId, int quantity)
|
|
311
|
+
{
|
|
312
|
+
_inventory.Add(new InventoryItem { ItemId = itemId, Quantity = quantity });
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Using aspect in system
|
|
317
|
+
[BurstCompile]
|
|
318
|
+
public partial struct CharacterSystem : ISystem
|
|
319
|
+
{
|
|
320
|
+
[BurstCompile]
|
|
321
|
+
public void OnUpdate(ref SystemState state)
|
|
322
|
+
{
|
|
323
|
+
float dt = SystemAPI.Time.DeltaTime;
|
|
324
|
+
|
|
325
|
+
foreach (var character in SystemAPI.Query<CharacterAspect>())
|
|
326
|
+
{
|
|
327
|
+
character.Move(new float3(1, 0, 0), dt);
|
|
328
|
+
|
|
329
|
+
if (character.CurrentHealth < character.MaxHealth * 0.5f)
|
|
330
|
+
{
|
|
331
|
+
// Low health logic
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Pattern 6: Singleton Components
|
|
339
|
+
|
|
340
|
+
```csharp
|
|
341
|
+
// Singleton: Exactly one entity with this component
|
|
342
|
+
public struct GameConfig : IComponentData
|
|
343
|
+
{
|
|
344
|
+
public float DifficultyMultiplier;
|
|
345
|
+
public int MaxEnemies;
|
|
346
|
+
public float SpawnRate;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
public struct GameState : IComponentData
|
|
350
|
+
{
|
|
351
|
+
public int Score;
|
|
352
|
+
public int Wave;
|
|
353
|
+
public float TimeRemaining;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// Create singleton on world creation
|
|
357
|
+
public partial struct GameInitSystem : ISystem
|
|
358
|
+
{
|
|
359
|
+
public void OnCreate(ref SystemState state)
|
|
360
|
+
{
|
|
361
|
+
var entity = state.EntityManager.CreateEntity();
|
|
362
|
+
state.EntityManager.AddComponentData(entity, new GameConfig
|
|
363
|
+
{
|
|
364
|
+
DifficultyMultiplier = 1.0f,
|
|
365
|
+
MaxEnemies = 100,
|
|
366
|
+
SpawnRate = 2.0f
|
|
367
|
+
});
|
|
368
|
+
state.EntityManager.AddComponentData(entity, new GameState
|
|
369
|
+
{
|
|
370
|
+
Score = 0,
|
|
371
|
+
Wave = 1,
|
|
372
|
+
TimeRemaining = 120f
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// Access singleton in system
|
|
378
|
+
[BurstCompile]
|
|
379
|
+
public partial struct ScoreSystem : ISystem
|
|
380
|
+
{
|
|
381
|
+
[BurstCompile]
|
|
382
|
+
public void OnUpdate(ref SystemState state)
|
|
383
|
+
{
|
|
384
|
+
// Read singleton
|
|
385
|
+
var config = SystemAPI.GetSingleton<GameConfig>();
|
|
386
|
+
|
|
387
|
+
// Write singleton
|
|
388
|
+
ref var gameState = ref SystemAPI.GetSingletonRW<GameState>().ValueRW;
|
|
389
|
+
gameState.TimeRemaining -= SystemAPI.Time.DeltaTime;
|
|
390
|
+
|
|
391
|
+
// Check exists
|
|
392
|
+
if (SystemAPI.HasSingleton<GameConfig>())
|
|
393
|
+
{
|
|
394
|
+
// ...
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### Pattern 7: Baking (Converting GameObjects)
|
|
401
|
+
|
|
402
|
+
```csharp
|
|
403
|
+
using Unity.Entities;
|
|
404
|
+
using UnityEngine;
|
|
405
|
+
|
|
406
|
+
// Authoring component (MonoBehaviour in Editor)
|
|
407
|
+
public class EnemyAuthoring : MonoBehaviour
|
|
408
|
+
{
|
|
409
|
+
public float Speed = 5f;
|
|
410
|
+
public float Health = 100f;
|
|
411
|
+
public GameObject ProjectilePrefab;
|
|
412
|
+
|
|
413
|
+
class Baker : Baker<EnemyAuthoring>
|
|
414
|
+
{
|
|
415
|
+
public override void Bake(EnemyAuthoring authoring)
|
|
416
|
+
{
|
|
417
|
+
var entity = GetEntity(TransformUsageFlags.Dynamic);
|
|
418
|
+
|
|
419
|
+
AddComponent(entity, new Speed { Value = authoring.Speed });
|
|
420
|
+
AddComponent(entity, new Health
|
|
421
|
+
{
|
|
422
|
+
Current = authoring.Health,
|
|
423
|
+
Max = authoring.Health
|
|
424
|
+
});
|
|
425
|
+
AddComponent(entity, new EnemyTag());
|
|
426
|
+
|
|
427
|
+
if (authoring.ProjectilePrefab != null)
|
|
428
|
+
{
|
|
429
|
+
AddComponent(entity, new ProjectilePrefab
|
|
430
|
+
{
|
|
431
|
+
Value = GetEntity(authoring.ProjectilePrefab, TransformUsageFlags.Dynamic)
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
// Complex baking with dependencies
|
|
439
|
+
public class SpawnerAuthoring : MonoBehaviour
|
|
440
|
+
{
|
|
441
|
+
public GameObject[] Prefabs;
|
|
442
|
+
public float Interval = 1f;
|
|
443
|
+
|
|
444
|
+
class Baker : Baker<SpawnerAuthoring>
|
|
445
|
+
{
|
|
446
|
+
public override void Bake(SpawnerAuthoring authoring)
|
|
447
|
+
{
|
|
448
|
+
var entity = GetEntity(TransformUsageFlags.Dynamic);
|
|
449
|
+
|
|
450
|
+
AddComponent(entity, new Spawner
|
|
451
|
+
{
|
|
452
|
+
Interval = authoring.Interval,
|
|
453
|
+
Timer = 0f
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
// Bake buffer of prefabs
|
|
457
|
+
var buffer = AddBuffer<SpawnPrefabElement>(entity);
|
|
458
|
+
foreach (var prefab in authoring.Prefabs)
|
|
459
|
+
{
|
|
460
|
+
buffer.Add(new SpawnPrefabElement
|
|
461
|
+
{
|
|
462
|
+
Prefab = GetEntity(prefab, TransformUsageFlags.Dynamic)
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// Declare dependencies
|
|
467
|
+
DependsOn(authoring.Prefabs);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
### Pattern 8: Jobs with Native Collections
|
|
474
|
+
|
|
475
|
+
```csharp
|
|
476
|
+
using Unity.Jobs;
|
|
477
|
+
using Unity.Collections;
|
|
478
|
+
using Unity.Burst;
|
|
479
|
+
using Unity.Mathematics;
|
|
480
|
+
|
|
481
|
+
[BurstCompile]
|
|
482
|
+
public struct SpatialHashJob : IJobParallelFor
|
|
483
|
+
{
|
|
484
|
+
[ReadOnly]
|
|
485
|
+
public NativeArray<float3> Positions;
|
|
486
|
+
|
|
487
|
+
// Thread-safe write to hash map
|
|
488
|
+
public NativeParallelMultiHashMap<int, int>.ParallelWriter HashMap;
|
|
489
|
+
|
|
490
|
+
public float CellSize;
|
|
491
|
+
|
|
492
|
+
public void Execute(int index)
|
|
493
|
+
{
|
|
494
|
+
float3 pos = Positions[index];
|
|
495
|
+
int hash = GetHash(pos);
|
|
496
|
+
HashMap.Add(hash, index);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
int GetHash(float3 pos)
|
|
500
|
+
{
|
|
501
|
+
int x = (int)math.floor(pos.x / CellSize);
|
|
502
|
+
int y = (int)math.floor(pos.y / CellSize);
|
|
503
|
+
int z = (int)math.floor(pos.z / CellSize);
|
|
504
|
+
return x * 73856093 ^ y * 19349663 ^ z * 83492791;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
[BurstCompile]
|
|
509
|
+
public partial struct SpatialHashSystem : ISystem
|
|
510
|
+
{
|
|
511
|
+
private NativeParallelMultiHashMap<int, int> _hashMap;
|
|
512
|
+
|
|
513
|
+
public void OnCreate(ref SystemState state)
|
|
514
|
+
{
|
|
515
|
+
_hashMap = new NativeParallelMultiHashMap<int, int>(10000, Allocator.Persistent);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
public void OnDestroy(ref SystemState state)
|
|
519
|
+
{
|
|
520
|
+
_hashMap.Dispose();
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
[BurstCompile]
|
|
524
|
+
public void OnUpdate(ref SystemState state)
|
|
525
|
+
{
|
|
526
|
+
var query = SystemAPI.QueryBuilder()
|
|
527
|
+
.WithAll<LocalTransform>()
|
|
528
|
+
.Build();
|
|
529
|
+
|
|
530
|
+
int count = query.CalculateEntityCount();
|
|
531
|
+
|
|
532
|
+
// Resize if needed
|
|
533
|
+
if (_hashMap.Capacity < count)
|
|
534
|
+
{
|
|
535
|
+
_hashMap.Capacity = count * 2;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
_hashMap.Clear();
|
|
539
|
+
|
|
540
|
+
// Get positions
|
|
541
|
+
var positions = query.ToComponentDataArray<LocalTransform>(Allocator.TempJob);
|
|
542
|
+
var posFloat3 = new NativeArray<float3>(count, Allocator.TempJob);
|
|
543
|
+
|
|
544
|
+
for (int i = 0; i < count; i++)
|
|
545
|
+
{
|
|
546
|
+
posFloat3[i] = positions[i].Position;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
// Build hash map
|
|
550
|
+
var hashJob = new SpatialHashJob
|
|
551
|
+
{
|
|
552
|
+
Positions = posFloat3,
|
|
553
|
+
HashMap = _hashMap.AsParallelWriter(),
|
|
554
|
+
CellSize = 10f
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
state.Dependency = hashJob.Schedule(count, 64, state.Dependency);
|
|
558
|
+
|
|
559
|
+
// Cleanup
|
|
560
|
+
positions.Dispose(state.Dependency);
|
|
561
|
+
posFloat3.Dispose(state.Dependency);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
## Performance Tips
|
|
567
|
+
|
|
568
|
+
```csharp
|
|
569
|
+
// 1. Use Burst everywhere
|
|
570
|
+
[BurstCompile]
|
|
571
|
+
public partial struct MySystem : ISystem { }
|
|
572
|
+
|
|
573
|
+
// 2. Prefer IJobEntity over manual iteration
|
|
574
|
+
[BurstCompile]
|
|
575
|
+
partial struct OptimizedJob : IJobEntity
|
|
576
|
+
{
|
|
577
|
+
void Execute(ref LocalTransform transform) { }
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
// 3. Schedule parallel when possible
|
|
581
|
+
state.Dependency = job.ScheduleParallel(state.Dependency);
|
|
582
|
+
|
|
583
|
+
// 4. Use ScheduleParallel with chunk iteration
|
|
584
|
+
[BurstCompile]
|
|
585
|
+
partial struct ChunkJob : IJobChunk
|
|
586
|
+
{
|
|
587
|
+
public ComponentTypeHandle<Health> HealthHandle;
|
|
588
|
+
|
|
589
|
+
public void Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex,
|
|
590
|
+
bool useEnabledMask, in v128 chunkEnabledMask)
|
|
591
|
+
{
|
|
592
|
+
var healths = chunk.GetNativeArray(ref HealthHandle);
|
|
593
|
+
for (int i = 0; i < chunk.Count; i++)
|
|
594
|
+
{
|
|
595
|
+
// Process
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
// 5. Avoid structural changes in hot paths
|
|
601
|
+
// Use enableable components instead of add/remove
|
|
602
|
+
public struct Disabled : IComponentData, IEnableableComponent { }
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
## Best Practices
|
|
606
|
+
|
|
607
|
+
### Do's
|
|
608
|
+
- **Use ISystem over SystemBase** - Better performance
|
|
609
|
+
- **Burst compile everything** - Massive speedup
|
|
610
|
+
- **Batch structural changes** - Use ECB
|
|
611
|
+
- **Profile with Profiler** - Identify bottlenecks
|
|
612
|
+
- **Use Aspects** - Clean component grouping
|
|
613
|
+
|
|
614
|
+
### Don'ts
|
|
615
|
+
- **Don't use managed types** - Breaks Burst
|
|
616
|
+
- **Don't structural change in jobs** - Use ECB
|
|
617
|
+
- **Don't over-architect** - Start simple
|
|
618
|
+
- **Don't ignore chunk utilization** - Group similar entities
|
|
619
|
+
- **Don't forget disposal** - Native collections leak
|
|
620
|
+
|
|
621
|
+
## Resources
|
|
622
|
+
|
|
623
|
+
- [Unity DOTS Documentation](https://docs.unity3d.com/Packages/com.unity.entities@latest)
|
|
624
|
+
- [Unity DOTS Samples](https://github.com/Unity-Technologies/EntityComponentSystemSamples)
|
|
625
|
+
- [Burst User Guide](https://docs.unity3d.com/Packages/com.unity.burst@latest)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: uv-package-manager
|
|
3
|
+
description: Master the uv package manager for fast Python dependency management, virtual environments, and modern Python project workflows. Use when setting up Python projects, managing dependencies, or optimizing Python development workflows with uv.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# UV Package Manager
|
|
7
|
+
|
|
8
|
+
Comprehensive guide to using uv, an extremely fast Python package installer and resolver written in Rust, for modern Python project management and dependency workflows.
|
|
9
|
+
|
|
10
|
+
## Use this skill when
|
|
11
|
+
|
|
12
|
+
- Setting up new Python projects quickly
|
|
13
|
+
- Managing Python dependencies faster than pip
|
|
14
|
+
- Creating and managing virtual environments
|
|
15
|
+
- Installing Python interpreters
|
|
16
|
+
- Resolving dependency conflicts efficiently
|
|
17
|
+
- Migrating from pip/pip-tools/poetry
|
|
18
|
+
- Speeding up CI/CD pipelines
|
|
19
|
+
- Managing monorepo Python projects
|
|
20
|
+
- Working with lockfiles for reproducible builds
|
|
21
|
+
- Optimizing Docker builds with Python dependencies
|
|
22
|
+
|
|
23
|
+
## Do not use this skill when
|
|
24
|
+
|
|
25
|
+
- The task is unrelated to uv package manager
|
|
26
|
+
- You need a different domain or tool outside this scope
|
|
27
|
+
|
|
28
|
+
## Instructions
|
|
29
|
+
|
|
30
|
+
- Clarify goals, constraints, and required inputs.
|
|
31
|
+
- Apply relevant best practices and validate outcomes.
|
|
32
|
+
- Provide actionable steps and verification.
|
|
33
|
+
- If detailed examples are required, open `resources/implementation-playbook.md`.
|
|
34
|
+
|
|
35
|
+
## Resources
|
|
36
|
+
|
|
37
|
+
- `resources/implementation-playbook.md` for detailed patterns and examples.
|