@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.
Files changed (462) hide show
  1. package/CATALOG.md +317 -0
  2. package/README.md +121 -0
  3. package/aliases.json +65 -0
  4. package/bin/vibe.js +2 -0
  5. package/bundles.json +265 -0
  6. package/catalog.json +1560 -0
  7. package/dist/antigravity-skills/bin/cli.js +438 -0
  8. package/dist/antigravity-skills/lib/skill-utils.js +158 -0
  9. package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
  10. package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
  11. package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
  12. package/dist/bin/vibe.js +2 -0
  13. package/dist/dist/src/cli/index.js +26 -0
  14. package/dist/lib/skill-utils.js +158 -0
  15. package/dist/scripts/build-catalog.js +50 -0
  16. package/dist/scripts/normalize-frontmatter.js +144 -0
  17. package/dist/scripts/validate-skills.js +56 -0
  18. package/dist/src/cli/index.js +146 -0
  19. package/dist/src/types/index.js +13 -0
  20. package/dist/src/utils/fs.js +1 -0
  21. package/package.json +43 -0
  22. package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
  23. package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
  24. package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
  25. package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
  26. package/skills/agent-orchestrator/SKILL.md +24 -0
  27. package/skills/ai-engineer/SKILL.md +171 -0
  28. package/skills/airflow-dag-patterns/SKILL.md +41 -0
  29. package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
  30. package/skills/angular-migration/SKILL.md +428 -0
  31. package/skills/anti-reversing-techniques/SKILL.md +42 -0
  32. package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
  33. package/skills/api-design-principles/SKILL.md +37 -0
  34. package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  35. package/skills/api-design-principles/assets/rest-api-template.py +182 -0
  36. package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  37. package/skills/api-design-principles/references/rest-best-practices.md +408 -0
  38. package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  39. package/skills/api-documenter/SKILL.md +184 -0
  40. package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
  41. package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
  42. package/skills/application-performance-performance-optimization/SKILL.md +154 -0
  43. package/skills/architect-review/SKILL.md +174 -0
  44. package/skills/architecture-decision-records/SKILL.md +441 -0
  45. package/skills/architecture-patterns/SKILL.md +37 -0
  46. package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
  47. package/skills/arm-cortex-expert/SKILL.md +306 -0
  48. package/skills/async-python-patterns/SKILL.md +39 -0
  49. package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
  50. package/skills/attack-tree-construction/SKILL.md +38 -0
  51. package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
  52. package/skills/auth-implementation-patterns/SKILL.md +39 -0
  53. package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
  54. package/skills/backend-architect/SKILL.md +333 -0
  55. package/skills/backend-development-feature-development/SKILL.md +180 -0
  56. package/skills/backend-security-coder/SKILL.md +156 -0
  57. package/skills/backtesting-frameworks/SKILL.md +39 -0
  58. package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
  59. package/skills/bash-defensive-patterns/SKILL.md +43 -0
  60. package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
  61. package/skills/bash-pro/SKILL.md +310 -0
  62. package/skills/bats-testing-patterns/SKILL.md +34 -0
  63. package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
  64. package/skills/bazel-build-optimization/SKILL.md +397 -0
  65. package/skills/billing-automation/SKILL.md +42 -0
  66. package/skills/billing-automation/resources/implementation-playbook.md +544 -0
  67. package/skills/binary-analysis-patterns/SKILL.md +450 -0
  68. package/skills/blockchain-developer/SKILL.md +208 -0
  69. package/skills/business-analyst/SKILL.md +182 -0
  70. package/skills/c-pro/SKILL.md +56 -0
  71. package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
  72. package/skills/c4-code/SKILL.md +244 -0
  73. package/skills/c4-component/SKILL.md +153 -0
  74. package/skills/c4-container/SKILL.md +171 -0
  75. package/skills/c4-context/SKILL.md +150 -0
  76. package/skills/changelog-automation/SKILL.md +38 -0
  77. package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
  78. package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
  79. package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
  80. package/skills/clean-markdown/SKILL.md +23 -0
  81. package/skills/cloud-architect/SKILL.md +135 -0
  82. package/skills/code-documentation-code-explain/SKILL.md +46 -0
  83. package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
  84. package/skills/code-documentation-doc-generate/SKILL.md +48 -0
  85. package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
  86. package/skills/code-refactoring-context-restore/SKILL.md +179 -0
  87. package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
  88. package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
  89. package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
  90. package/skills/code-review-ai-ai-review/SKILL.md +450 -0
  91. package/skills/code-review-excellence/SKILL.md +40 -0
  92. package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
  93. package/skills/code-reviewer/SKILL.md +178 -0
  94. package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
  95. package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
  96. package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
  97. package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
  98. package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
  99. package/skills/competitive-landscape/SKILL.md +34 -0
  100. package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
  101. package/skills/comprehensive-review-full-review/SKILL.md +146 -0
  102. package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
  103. package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
  104. package/skills/conductor-implement/SKILL.md +388 -0
  105. package/skills/conductor-manage/SKILL.md +39 -0
  106. package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
  107. package/skills/conductor-new-track/SKILL.md +433 -0
  108. package/skills/conductor-revert/SKILL.md +372 -0
  109. package/skills/conductor-setup/SKILL.md +426 -0
  110. package/skills/conductor-status/SKILL.md +338 -0
  111. package/skills/conductor-validator/SKILL.md +62 -0
  112. package/skills/content-marketer/SKILL.md +170 -0
  113. package/skills/context-driven-development/SKILL.md +400 -0
  114. package/skills/context-management-context-restore/SKILL.md +179 -0
  115. package/skills/context-management-context-save/SKILL.md +177 -0
  116. package/skills/context-manager/SKILL.md +185 -0
  117. package/skills/cost-optimization/SKILL.md +286 -0
  118. package/skills/cpp-pro/SKILL.md +59 -0
  119. package/skills/cqrs-implementation/SKILL.md +35 -0
  120. package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
  121. package/skills/csharp-pro/SKILL.md +59 -0
  122. package/skills/customer-support/SKILL.md +170 -0
  123. package/skills/data-engineer/SKILL.md +224 -0
  124. package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
  125. package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
  126. package/skills/data-quality-frameworks/SKILL.md +40 -0
  127. package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
  128. package/skills/data-scientist/SKILL.md +199 -0
  129. package/skills/data-storytelling/SKILL.md +465 -0
  130. package/skills/database-admin/SKILL.md +165 -0
  131. package/skills/database-architect/SKILL.md +268 -0
  132. package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
  133. package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
  134. package/skills/database-migration/SKILL.md +436 -0
  135. package/skills/database-migrations-migration-observability/SKILL.md +420 -0
  136. package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
  137. package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
  138. package/skills/database-optimizer/SKILL.md +167 -0
  139. package/skills/dbt-transformation-patterns/SKILL.md +34 -0
  140. package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
  141. package/skills/debugger/SKILL.md +49 -0
  142. package/skills/debugging-strategies/SKILL.md +34 -0
  143. package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
  144. package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
  145. package/skills/defi-protocol-templates/SKILL.md +466 -0
  146. package/skills/dependency-management-deps-audit/SKILL.md +44 -0
  147. package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
  148. package/skills/dependency-upgrade/SKILL.md +421 -0
  149. package/skills/deployment-engineer/SKILL.md +170 -0
  150. package/skills/deployment-pipeline-design/SKILL.md +371 -0
  151. package/skills/deployment-validation-config-validate/SKILL.md +496 -0
  152. package/skills/devops-troubleshooter/SKILL.md +161 -0
  153. package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
  154. package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
  155. package/skills/distributed-tracing/SKILL.md +450 -0
  156. package/skills/django-pro/SKILL.md +180 -0
  157. package/skills/docs-architect/SKILL.md +98 -0
  158. package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
  159. package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
  160. package/skills/dotnet-architect/SKILL.md +197 -0
  161. package/skills/dotnet-backend-patterns/SKILL.md +37 -0
  162. package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
  163. package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
  164. package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
  165. package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
  166. package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
  167. package/skills/dummy-skill/SKILL.md +5 -0
  168. package/skills/dx-optimizer/SKILL.md +83 -0
  169. package/skills/e2e-testing-patterns/SKILL.md +41 -0
  170. package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
  171. package/skills/elixir-pro/SKILL.md +59 -0
  172. package/skills/embedding-strategies/SKILL.md +491 -0
  173. package/skills/employment-contract-templates/SKILL.md +39 -0
  174. package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
  175. package/skills/error-debugging-error-analysis/SKILL.md +47 -0
  176. package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
  177. package/skills/error-debugging-error-trace/SKILL.md +43 -0
  178. package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
  179. package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
  180. package/skills/error-detective/SKILL.md +53 -0
  181. package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
  182. package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
  183. package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
  184. package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
  185. package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
  186. package/skills/error-handling-patterns/SKILL.md +35 -0
  187. package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
  188. package/skills/event-sourcing-architect/SKILL.md +58 -0
  189. package/skills/event-store-design/SKILL.md +449 -0
  190. package/skills/fastapi-pro/SKILL.md +192 -0
  191. package/skills/fastapi-templates/SKILL.md +32 -0
  192. package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
  193. package/skills/final-test/SKILL.md +5 -0
  194. package/skills/firmware-analyst/SKILL.md +320 -0
  195. package/skills/flutter-expert/SKILL.md +200 -0
  196. package/skills/framework-migration-code-migrate/SKILL.md +48 -0
  197. package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
  198. package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
  199. package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
  200. package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
  201. package/skills/frontend-developer/SKILL.md +171 -0
  202. package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
  203. package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
  204. package/skills/frontend-security-coder/SKILL.md +170 -0
  205. package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
  206. package/skills/gdpr-data-handling/SKILL.md +33 -0
  207. package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
  208. package/skills/git-advanced-workflows/SKILL.md +412 -0
  209. package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
  210. package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
  211. package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
  212. package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
  213. package/skills/github-actions-templates/SKILL.md +345 -0
  214. package/skills/gitlab-ci-patterns/SKILL.md +283 -0
  215. package/skills/gitops-workflow/SKILL.md +303 -0
  216. package/skills/gitops-workflow/references/argocd-setup.md +134 -0
  217. package/skills/gitops-workflow/references/sync-policies.md +131 -0
  218. package/skills/go-concurrency-patterns/SKILL.md +33 -0
  219. package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
  220. package/skills/godot-gdscript-patterns/SKILL.md +33 -0
  221. package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
  222. package/skills/golang-pro/SKILL.md +179 -0
  223. package/skills/grafana-dashboards/SKILL.md +381 -0
  224. package/skills/graphql-architect/SKILL.md +182 -0
  225. package/skills/haskell-pro/SKILL.md +56 -0
  226. package/skills/helm-chart-scaffolding/SKILL.md +34 -0
  227. package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
  228. package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
  229. package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
  230. package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
  231. package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
  232. package/skills/hr-pro/SKILL.md +126 -0
  233. package/skills/hybrid-cloud-architect/SKILL.md +168 -0
  234. package/skills/hybrid-cloud-networking/SKILL.md +238 -0
  235. package/skills/hybrid-search-implementation/SKILL.md +32 -0
  236. package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
  237. package/skills/incident-responder/SKILL.md +213 -0
  238. package/skills/incident-response-incident-response/SKILL.md +168 -0
  239. package/skills/incident-response-smart-fix/SKILL.md +29 -0
  240. package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
  241. package/skills/incident-runbook-templates/SKILL.md +395 -0
  242. package/skills/ios-developer/SKILL.md +219 -0
  243. package/skills/istio-traffic-management/SKILL.md +337 -0
  244. package/skills/java-pro/SKILL.md +177 -0
  245. package/skills/javascript-pro/SKILL.md +57 -0
  246. package/skills/javascript-testing-patterns/SKILL.md +35 -0
  247. package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
  248. package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
  249. package/skills/julia-pro/SKILL.md +209 -0
  250. package/skills/k8s-manifest-generator/SKILL.md +35 -0
  251. package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  252. package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  253. package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  254. package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
  255. package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
  256. package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
  257. package/skills/k8s-security-policies/SKILL.md +346 -0
  258. package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
  259. package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
  260. package/skills/kpi-dashboard-design/SKILL.md +440 -0
  261. package/skills/kubernetes-architect/SKILL.md +170 -0
  262. package/skills/langchain-architecture/SKILL.md +350 -0
  263. package/skills/legacy-modernizer/SKILL.md +53 -0
  264. package/skills/legal-advisor/SKILL.md +70 -0
  265. package/skills/linkerd-patterns/SKILL.md +321 -0
  266. package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
  267. package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
  268. package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
  269. package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
  270. package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
  271. package/skills/llm-evaluation/SKILL.md +483 -0
  272. package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
  273. package/skills/malware-analyst/SKILL.md +247 -0
  274. package/skills/market-sizing-analysis/SKILL.md +425 -0
  275. package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
  276. package/skills/market-sizing-analysis/references/data-sources.md +360 -0
  277. package/skills/memory-forensics/SKILL.md +491 -0
  278. package/skills/memory-safety-patterns/SKILL.md +33 -0
  279. package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
  280. package/skills/mermaid-expert/SKILL.md +59 -0
  281. package/skills/microservices-patterns/SKILL.md +35 -0
  282. package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
  283. package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
  284. package/skills/ml-engineer/SKILL.md +168 -0
  285. package/skills/ml-pipeline-workflow/SKILL.md +257 -0
  286. package/skills/mlops-engineer/SKILL.md +219 -0
  287. package/skills/mobile-developer/SKILL.md +205 -0
  288. package/skills/mobile-security-coder/SKILL.md +184 -0
  289. package/skills/modern-javascript-patterns/SKILL.md +35 -0
  290. package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
  291. package/skills/monorepo-architect/SKILL.md +61 -0
  292. package/skills/monorepo-management/SKILL.md +35 -0
  293. package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
  294. package/skills/mtls-configuration/SKILL.md +359 -0
  295. package/skills/multi-cloud-architecture/SKILL.md +189 -0
  296. package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
  297. package/skills/network-engineer/SKILL.md +169 -0
  298. package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
  299. package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
  300. package/skills/nft-standards/SKILL.md +395 -0
  301. package/skills/node-expert/SKILL.md +23 -0
  302. package/skills/nodejs-backend-patterns/SKILL.md +35 -0
  303. package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
  304. package/skills/nx-workspace-patterns/SKILL.md +464 -0
  305. package/skills/observability-engineer/SKILL.md +237 -0
  306. package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
  307. package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
  308. package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
  309. package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
  310. package/skills/on-call-handoff-patterns/SKILL.md +453 -0
  311. package/skills/openapi-spec-generation/SKILL.md +33 -0
  312. package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
  313. package/skills/payment-integration/SKILL.md +77 -0
  314. package/skills/paypal-integration/SKILL.md +479 -0
  315. package/skills/pci-compliance/SKILL.md +478 -0
  316. package/skills/performance-engineer/SKILL.md +180 -0
  317. package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
  318. package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
  319. package/skills/php-pro/SKILL.md +63 -0
  320. package/skills/posix-shell-pro/SKILL.md +304 -0
  321. package/skills/postgresql/SKILL.md +230 -0
  322. package/skills/postmortem-writing/SKILL.md +386 -0
  323. package/skills/projection-patterns/SKILL.md +33 -0
  324. package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
  325. package/skills/prometheus-configuration/SKILL.md +404 -0
  326. package/skills/prompt-engineer/SKILL.md +272 -0
  327. package/skills/prompt-engineering-patterns/SKILL.md +213 -0
  328. package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  329. package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
  330. package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
  331. package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
  332. package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
  333. package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
  334. package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
  335. package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  336. package/skills/protocol-reverse-engineering/SKILL.md +29 -0
  337. package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
  338. package/skills/python-development-python-scaffold/SKILL.md +331 -0
  339. package/skills/python-packaging/SKILL.md +36 -0
  340. package/skills/python-packaging/resources/implementation-playbook.md +869 -0
  341. package/skills/python-performance-optimization/SKILL.md +36 -0
  342. package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
  343. package/skills/python-pro/SKILL.md +158 -0
  344. package/skills/python-testing-patterns/SKILL.md +37 -0
  345. package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
  346. package/skills/quant-analyst/SKILL.md +53 -0
  347. package/skills/rag-implementation/SKILL.md +421 -0
  348. package/skills/react-modernization/SKILL.md +34 -0
  349. package/skills/react-modernization/resources/implementation-playbook.md +512 -0
  350. package/skills/react-native-architecture/SKILL.md +33 -0
  351. package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
  352. package/skills/react-state-management/SKILL.md +441 -0
  353. package/skills/reference-builder/SKILL.md +188 -0
  354. package/skills/reverse-engineer/SKILL.md +173 -0
  355. package/skills/risk-manager/SKILL.md +61 -0
  356. package/skills/risk-metrics-calculation/SKILL.md +33 -0
  357. package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
  358. package/skills/ruby-pro/SKILL.md +56 -0
  359. package/skills/rust-async-patterns/SKILL.md +33 -0
  360. package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
  361. package/skills/rust-pro/SKILL.md +178 -0
  362. package/skills/saga-orchestration/SKILL.md +496 -0
  363. package/skills/sales-automator/SKILL.md +55 -0
  364. package/skills/sast-configuration/SKILL.md +212 -0
  365. package/skills/scala-pro/SKILL.md +82 -0
  366. package/skills/screen-reader-testing/SKILL.md +33 -0
  367. package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
  368. package/skills/search-specialist/SKILL.md +80 -0
  369. package/skills/secrets-management/SKILL.md +364 -0
  370. package/skills/security-auditor/SKILL.md +169 -0
  371. package/skills/security-compliance-compliance-check/SKILL.md +55 -0
  372. package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
  373. package/skills/security-requirement-extraction/SKILL.md +33 -0
  374. package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
  375. package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
  376. package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
  377. package/skills/security-scanning-security-hardening/SKILL.md +147 -0
  378. package/skills/security-scanning-security-sast/SKILL.md +495 -0
  379. package/skills/seo-authority-builder/SKILL.md +136 -0
  380. package/skills/seo-cannibalization-detector/SKILL.md +123 -0
  381. package/skills/seo-content-auditor/SKILL.md +83 -0
  382. package/skills/seo-content-planner/SKILL.md +108 -0
  383. package/skills/seo-content-refresher/SKILL.md +118 -0
  384. package/skills/seo-content-writer/SKILL.md +96 -0
  385. package/skills/seo-keyword-strategist/SKILL.md +95 -0
  386. package/skills/seo-meta-optimizer/SKILL.md +92 -0
  387. package/skills/seo-snippet-hunter/SKILL.md +114 -0
  388. package/skills/seo-structure-architect/SKILL.md +108 -0
  389. package/skills/service-mesh-expert/SKILL.md +58 -0
  390. package/skills/service-mesh-observability/SKILL.md +395 -0
  391. package/skills/shellcheck-configuration/SKILL.md +466 -0
  392. package/skills/similarity-search-patterns/SKILL.md +33 -0
  393. package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
  394. package/skills/slo-implementation/SKILL.md +341 -0
  395. package/skills/solidity-security/SKILL.md +34 -0
  396. package/skills/solidity-security/resources/implementation-playbook.md +524 -0
  397. package/skills/spark-optimization/SKILL.md +427 -0
  398. package/skills/sql-optimization-patterns/SKILL.md +35 -0
  399. package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
  400. package/skills/sql-pro/SKILL.md +173 -0
  401. package/skills/startup-analyst/SKILL.md +328 -0
  402. package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
  403. package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
  404. package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
  405. package/skills/startup-financial-modeling/SKILL.md +467 -0
  406. package/skills/startup-metrics-framework/SKILL.md +34 -0
  407. package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
  408. package/skills/stride-analysis-patterns/SKILL.md +33 -0
  409. package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
  410. package/skills/stripe-integration/SKILL.md +454 -0
  411. package/skills/systems-programming-rust-project/SKILL.md +440 -0
  412. package/skills/tailwind-design-system/SKILL.md +33 -0
  413. package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
  414. package/skills/tdd-orchestrator/SKILL.md +205 -0
  415. package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
  416. package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
  417. package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
  418. package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
  419. package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
  420. package/skills/team-collaboration-issue/SKILL.md +37 -0
  421. package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
  422. package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
  423. package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
  424. package/skills/team-composition-analysis/SKILL.md +413 -0
  425. package/skills/temporal-python-pro/SKILL.md +370 -0
  426. package/skills/temporal-python-testing/SKILL.md +170 -0
  427. package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
  428. package/skills/temporal-python-testing/resources/local-setup.md +553 -0
  429. package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
  430. package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
  431. package/skills/terraform-module-library/SKILL.md +261 -0
  432. package/skills/terraform-module-library/references/aws-modules.md +63 -0
  433. package/skills/terraform-specialist/SKILL.md +166 -0
  434. package/skills/test-automator/SKILL.md +224 -0
  435. package/skills/threat-mitigation-mapping/SKILL.md +33 -0
  436. package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
  437. package/skills/threat-modeling-expert/SKILL.md +60 -0
  438. package/skills/track-management/SKILL.md +38 -0
  439. package/skills/track-management/resources/implementation-playbook.md +591 -0
  440. package/skills/turborepo-caching/SKILL.md +419 -0
  441. package/skills/tutorial-engineer/SKILL.md +139 -0
  442. package/skills/typescript-advanced-types/SKILL.md +35 -0
  443. package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
  444. package/skills/typescript-pro/SKILL.md +55 -0
  445. package/skills/ui-minimal/SKILL.md +23 -0
  446. package/skills/ui-ux-designer/SKILL.md +209 -0
  447. package/skills/ui-visual-validator/SKILL.md +214 -0
  448. package/skills/unit-testing-test-generate/SKILL.md +319 -0
  449. package/skills/unity-developer/SKILL.md +230 -0
  450. package/skills/unity-ecs-patterns/SKILL.md +33 -0
  451. package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
  452. package/skills/uv-package-manager/SKILL.md +37 -0
  453. package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
  454. package/skills/vector-database-engineer/SKILL.md +60 -0
  455. package/skills/vector-index-tuning/SKILL.md +42 -0
  456. package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
  457. package/skills/wcag-audit-patterns/SKILL.md +41 -0
  458. package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
  459. package/skills/web3-testing/SKILL.md +427 -0
  460. package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
  461. package/skills/workflow-patterns/SKILL.md +38 -0
  462. package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
@@ -0,0 +1,804 @@
1
+ # Godot GDScript Patterns Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ # Godot GDScript Patterns
6
+
7
+ Production patterns for Godot 4.x game development with GDScript, covering architecture, signals, scenes, and optimization.
8
+
9
+ ## When to Use This Skill
10
+
11
+ - Building games with Godot 4
12
+ - Implementing game systems in GDScript
13
+ - Designing scene architecture
14
+ - Managing game state
15
+ - Optimizing GDScript performance
16
+ - Learning Godot best practices
17
+
18
+ ## Core Concepts
19
+
20
+ ### 1. Godot Architecture
21
+
22
+ ```
23
+ Node: Base building block
24
+ ├── Scene: Reusable node tree (saved as .tscn)
25
+ ├── Resource: Data container (saved as .tres)
26
+ ├── Signal: Event communication
27
+ └── Group: Node categorization
28
+ ```
29
+
30
+ ### 2. GDScript Basics
31
+
32
+ ```gdscript
33
+ class_name Player
34
+ extends CharacterBody2D
35
+
36
+ # Signals
37
+ signal health_changed(new_health: int)
38
+ signal died
39
+
40
+ # Exports (Inspector-editable)
41
+ @export var speed: float = 200.0
42
+ @export var max_health: int = 100
43
+ @export_range(0, 1) var damage_reduction: float = 0.0
44
+ @export_group("Combat")
45
+ @export var attack_damage: int = 10
46
+ @export var attack_cooldown: float = 0.5
47
+
48
+ # Onready (initialized when ready)
49
+ @onready var sprite: Sprite2D = $Sprite2D
50
+ @onready var animation: AnimationPlayer = $AnimationPlayer
51
+ @onready var hitbox: Area2D = $Hitbox
52
+
53
+ # Private variables (convention: underscore prefix)
54
+ var _health: int
55
+ var _can_attack: bool = true
56
+
57
+ func _ready() -> void:
58
+ _health = max_health
59
+
60
+ func _physics_process(delta: float) -> void:
61
+ var direction := Input.get_vector("left", "right", "up", "down")
62
+ velocity = direction * speed
63
+ move_and_slide()
64
+
65
+ func take_damage(amount: int) -> void:
66
+ var actual_damage := int(amount * (1.0 - damage_reduction))
67
+ _health = max(_health - actual_damage, 0)
68
+ health_changed.emit(_health)
69
+
70
+ if _health <= 0:
71
+ died.emit()
72
+ ```
73
+
74
+ ## Patterns
75
+
76
+ ### Pattern 1: State Machine
77
+
78
+ ```gdscript
79
+ # state_machine.gd
80
+ class_name StateMachine
81
+ extends Node
82
+
83
+ signal state_changed(from_state: StringName, to_state: StringName)
84
+
85
+ @export var initial_state: State
86
+
87
+ var current_state: State
88
+ var states: Dictionary = {}
89
+
90
+ func _ready() -> void:
91
+ # Register all State children
92
+ for child in get_children():
93
+ if child is State:
94
+ states[child.name] = child
95
+ child.state_machine = self
96
+ child.process_mode = Node.PROCESS_MODE_DISABLED
97
+
98
+ # Start initial state
99
+ if initial_state:
100
+ current_state = initial_state
101
+ current_state.process_mode = Node.PROCESS_MODE_INHERIT
102
+ current_state.enter()
103
+
104
+ func _process(delta: float) -> void:
105
+ if current_state:
106
+ current_state.update(delta)
107
+
108
+ func _physics_process(delta: float) -> void:
109
+ if current_state:
110
+ current_state.physics_update(delta)
111
+
112
+ func _unhandled_input(event: InputEvent) -> void:
113
+ if current_state:
114
+ current_state.handle_input(event)
115
+
116
+ func transition_to(state_name: StringName, msg: Dictionary = {}) -> void:
117
+ if not states.has(state_name):
118
+ push_error("State '%s' not found" % state_name)
119
+ return
120
+
121
+ var previous_state := current_state
122
+ previous_state.exit()
123
+ previous_state.process_mode = Node.PROCESS_MODE_DISABLED
124
+
125
+ current_state = states[state_name]
126
+ current_state.process_mode = Node.PROCESS_MODE_INHERIT
127
+ current_state.enter(msg)
128
+
129
+ state_changed.emit(previous_state.name, current_state.name)
130
+ ```
131
+
132
+ ```gdscript
133
+ # state.gd
134
+ class_name State
135
+ extends Node
136
+
137
+ var state_machine: StateMachine
138
+
139
+ func enter(_msg: Dictionary = {}) -> void:
140
+ pass
141
+
142
+ func exit() -> void:
143
+ pass
144
+
145
+ func update(_delta: float) -> void:
146
+ pass
147
+
148
+ func physics_update(_delta: float) -> void:
149
+ pass
150
+
151
+ func handle_input(_event: InputEvent) -> void:
152
+ pass
153
+ ```
154
+
155
+ ```gdscript
156
+ # player_idle.gd
157
+ class_name PlayerIdle
158
+ extends State
159
+
160
+ @export var player: Player
161
+
162
+ func enter(_msg: Dictionary = {}) -> void:
163
+ player.animation.play("idle")
164
+
165
+ func physics_update(_delta: float) -> void:
166
+ var direction := Input.get_vector("left", "right", "up", "down")
167
+
168
+ if direction != Vector2.ZERO:
169
+ state_machine.transition_to("Move")
170
+
171
+ func handle_input(event: InputEvent) -> void:
172
+ if event.is_action_pressed("attack"):
173
+ state_machine.transition_to("Attack")
174
+ elif event.is_action_pressed("jump"):
175
+ state_machine.transition_to("Jump")
176
+ ```
177
+
178
+ ### Pattern 2: Autoload Singletons
179
+
180
+ ```gdscript
181
+ # game_manager.gd (Add to Project Settings > Autoload)
182
+ extends Node
183
+
184
+ signal game_started
185
+ signal game_paused(is_paused: bool)
186
+ signal game_over(won: bool)
187
+ signal score_changed(new_score: int)
188
+
189
+ enum GameState { MENU, PLAYING, PAUSED, GAME_OVER }
190
+
191
+ var state: GameState = GameState.MENU
192
+ var score: int = 0:
193
+ set(value):
194
+ score = value
195
+ score_changed.emit(score)
196
+
197
+ var high_score: int = 0
198
+
199
+ func _ready() -> void:
200
+ process_mode = Node.PROCESS_MODE_ALWAYS
201
+ _load_high_score()
202
+
203
+ func _input(event: InputEvent) -> void:
204
+ if event.is_action_pressed("pause") and state == GameState.PLAYING:
205
+ toggle_pause()
206
+
207
+ func start_game() -> void:
208
+ score = 0
209
+ state = GameState.PLAYING
210
+ game_started.emit()
211
+
212
+ func toggle_pause() -> void:
213
+ var is_paused := state != GameState.PAUSED
214
+
215
+ if is_paused:
216
+ state = GameState.PAUSED
217
+ get_tree().paused = true
218
+ else:
219
+ state = GameState.PLAYING
220
+ get_tree().paused = false
221
+
222
+ game_paused.emit(is_paused)
223
+
224
+ func end_game(won: bool) -> void:
225
+ state = GameState.GAME_OVER
226
+
227
+ if score > high_score:
228
+ high_score = score
229
+ _save_high_score()
230
+
231
+ game_over.emit(won)
232
+
233
+ func add_score(points: int) -> void:
234
+ score += points
235
+
236
+ func _load_high_score() -> void:
237
+ if FileAccess.file_exists("user://high_score.save"):
238
+ var file := FileAccess.open("user://high_score.save", FileAccess.READ)
239
+ high_score = file.get_32()
240
+
241
+ func _save_high_score() -> void:
242
+ var file := FileAccess.open("user://high_score.save", FileAccess.WRITE)
243
+ file.store_32(high_score)
244
+ ```
245
+
246
+ ```gdscript
247
+ # event_bus.gd (Global signal bus)
248
+ extends Node
249
+
250
+ # Player events
251
+ signal player_spawned(player: Node2D)
252
+ signal player_died(player: Node2D)
253
+ signal player_health_changed(health: int, max_health: int)
254
+
255
+ # Enemy events
256
+ signal enemy_spawned(enemy: Node2D)
257
+ signal enemy_died(enemy: Node2D, position: Vector2)
258
+
259
+ # Item events
260
+ signal item_collected(item_type: StringName, value: int)
261
+ signal powerup_activated(powerup_type: StringName)
262
+
263
+ # Level events
264
+ signal level_started(level_number: int)
265
+ signal level_completed(level_number: int, time: float)
266
+ signal checkpoint_reached(checkpoint_id: int)
267
+ ```
268
+
269
+ ### Pattern 3: Resource-based Data
270
+
271
+ ```gdscript
272
+ # weapon_data.gd
273
+ class_name WeaponData
274
+ extends Resource
275
+
276
+ @export var name: StringName
277
+ @export var damage: int
278
+ @export var attack_speed: float
279
+ @export var range: float
280
+ @export_multiline var description: String
281
+ @export var icon: Texture2D
282
+ @export var projectile_scene: PackedScene
283
+ @export var sound_attack: AudioStream
284
+ ```
285
+
286
+ ```gdscript
287
+ # character_stats.gd
288
+ class_name CharacterStats
289
+ extends Resource
290
+
291
+ signal stat_changed(stat_name: StringName, new_value: float)
292
+
293
+ @export var max_health: float = 100.0
294
+ @export var attack: float = 10.0
295
+ @export var defense: float = 5.0
296
+ @export var speed: float = 200.0
297
+
298
+ # Runtime values (not saved)
299
+ var _current_health: float
300
+
301
+ func _init() -> void:
302
+ _current_health = max_health
303
+
304
+ func get_current_health() -> float:
305
+ return _current_health
306
+
307
+ func take_damage(amount: float) -> float:
308
+ var actual_damage := maxf(amount - defense, 1.0)
309
+ _current_health = maxf(_current_health - actual_damage, 0.0)
310
+ stat_changed.emit("health", _current_health)
311
+ return actual_damage
312
+
313
+ func heal(amount: float) -> void:
314
+ _current_health = minf(_current_health + amount, max_health)
315
+ stat_changed.emit("health", _current_health)
316
+
317
+ func duplicate_for_runtime() -> CharacterStats:
318
+ var copy := duplicate() as CharacterStats
319
+ copy._current_health = copy.max_health
320
+ return copy
321
+ ```
322
+
323
+ ```gdscript
324
+ # Using resources
325
+ class_name Character
326
+ extends CharacterBody2D
327
+
328
+ @export var base_stats: CharacterStats
329
+ @export var weapon: WeaponData
330
+
331
+ var stats: CharacterStats
332
+
333
+ func _ready() -> void:
334
+ # Create runtime copy to avoid modifying the resource
335
+ stats = base_stats.duplicate_for_runtime()
336
+ stats.stat_changed.connect(_on_stat_changed)
337
+
338
+ func attack() -> void:
339
+ if weapon:
340
+ print("Attacking with %s for %d damage" % [weapon.name, weapon.damage])
341
+
342
+ func _on_stat_changed(stat_name: StringName, value: float) -> void:
343
+ if stat_name == "health" and value <= 0:
344
+ die()
345
+ ```
346
+
347
+ ### Pattern 4: Object Pooling
348
+
349
+ ```gdscript
350
+ # object_pool.gd
351
+ class_name ObjectPool
352
+ extends Node
353
+
354
+ @export var pooled_scene: PackedScene
355
+ @export var initial_size: int = 10
356
+ @export var can_grow: bool = true
357
+
358
+ var _available: Array[Node] = []
359
+ var _in_use: Array[Node] = []
360
+
361
+ func _ready() -> void:
362
+ _initialize_pool()
363
+
364
+ func _initialize_pool() -> void:
365
+ for i in initial_size:
366
+ _create_instance()
367
+
368
+ func _create_instance() -> Node:
369
+ var instance := pooled_scene.instantiate()
370
+ instance.process_mode = Node.PROCESS_MODE_DISABLED
371
+ instance.visible = false
372
+ add_child(instance)
373
+ _available.append(instance)
374
+
375
+ # Connect return signal if exists
376
+ if instance.has_signal("returned_to_pool"):
377
+ instance.returned_to_pool.connect(_return_to_pool.bind(instance))
378
+
379
+ return instance
380
+
381
+ func get_instance() -> Node:
382
+ var instance: Node
383
+
384
+ if _available.is_empty():
385
+ if can_grow:
386
+ instance = _create_instance()
387
+ _available.erase(instance)
388
+ else:
389
+ push_warning("Pool exhausted and cannot grow")
390
+ return null
391
+ else:
392
+ instance = _available.pop_back()
393
+
394
+ instance.process_mode = Node.PROCESS_MODE_INHERIT
395
+ instance.visible = true
396
+ _in_use.append(instance)
397
+
398
+ if instance.has_method("on_spawn"):
399
+ instance.on_spawn()
400
+
401
+ return instance
402
+
403
+ func _return_to_pool(instance: Node) -> void:
404
+ if not instance in _in_use:
405
+ return
406
+
407
+ _in_use.erase(instance)
408
+
409
+ if instance.has_method("on_despawn"):
410
+ instance.on_despawn()
411
+
412
+ instance.process_mode = Node.PROCESS_MODE_DISABLED
413
+ instance.visible = false
414
+ _available.append(instance)
415
+
416
+ func return_all() -> void:
417
+ for instance in _in_use.duplicate():
418
+ _return_to_pool(instance)
419
+ ```
420
+
421
+ ```gdscript
422
+ # pooled_bullet.gd
423
+ class_name PooledBullet
424
+ extends Area2D
425
+
426
+ signal returned_to_pool
427
+
428
+ @export var speed: float = 500.0
429
+ @export var lifetime: float = 5.0
430
+
431
+ var direction: Vector2
432
+ var _timer: float
433
+
434
+ func on_spawn() -> void:
435
+ _timer = lifetime
436
+
437
+ func on_despawn() -> void:
438
+ direction = Vector2.ZERO
439
+
440
+ func initialize(pos: Vector2, dir: Vector2) -> void:
441
+ global_position = pos
442
+ direction = dir.normalized()
443
+ rotation = direction.angle()
444
+
445
+ func _physics_process(delta: float) -> void:
446
+ position += direction * speed * delta
447
+
448
+ _timer -= delta
449
+ if _timer <= 0:
450
+ returned_to_pool.emit()
451
+
452
+ func _on_body_entered(body: Node2D) -> void:
453
+ if body.has_method("take_damage"):
454
+ body.take_damage(10)
455
+ returned_to_pool.emit()
456
+ ```
457
+
458
+ ### Pattern 5: Component System
459
+
460
+ ```gdscript
461
+ # health_component.gd
462
+ class_name HealthComponent
463
+ extends Node
464
+
465
+ signal health_changed(current: int, maximum: int)
466
+ signal damaged(amount: int, source: Node)
467
+ signal healed(amount: int)
468
+ signal died
469
+
470
+ @export var max_health: int = 100
471
+ @export var invincibility_time: float = 0.0
472
+
473
+ var current_health: int:
474
+ set(value):
475
+ var old := current_health
476
+ current_health = clampi(value, 0, max_health)
477
+ if current_health != old:
478
+ health_changed.emit(current_health, max_health)
479
+
480
+ var _invincible: bool = false
481
+
482
+ func _ready() -> void:
483
+ current_health = max_health
484
+
485
+ func take_damage(amount: int, source: Node = null) -> int:
486
+ if _invincible or current_health <= 0:
487
+ return 0
488
+
489
+ var actual := mini(amount, current_health)
490
+ current_health -= actual
491
+ damaged.emit(actual, source)
492
+
493
+ if current_health <= 0:
494
+ died.emit()
495
+ elif invincibility_time > 0:
496
+ _start_invincibility()
497
+
498
+ return actual
499
+
500
+ func heal(amount: int) -> int:
501
+ var actual := mini(amount, max_health - current_health)
502
+ current_health += actual
503
+ if actual > 0:
504
+ healed.emit(actual)
505
+ return actual
506
+
507
+ func _start_invincibility() -> void:
508
+ _invincible = true
509
+ await get_tree().create_timer(invincibility_time).timeout
510
+ _invincible = false
511
+ ```
512
+
513
+ ```gdscript
514
+ # hitbox_component.gd
515
+ class_name HitboxComponent
516
+ extends Area2D
517
+
518
+ signal hit(hurtbox: HurtboxComponent)
519
+
520
+ @export var damage: int = 10
521
+ @export var knockback_force: float = 200.0
522
+
523
+ var owner_node: Node
524
+
525
+ func _ready() -> void:
526
+ owner_node = get_parent()
527
+ area_entered.connect(_on_area_entered)
528
+
529
+ func _on_area_entered(area: Area2D) -> void:
530
+ if area is HurtboxComponent:
531
+ var hurtbox := area as HurtboxComponent
532
+ if hurtbox.owner_node != owner_node:
533
+ hit.emit(hurtbox)
534
+ hurtbox.receive_hit(self)
535
+ ```
536
+
537
+ ```gdscript
538
+ # hurtbox_component.gd
539
+ class_name HurtboxComponent
540
+ extends Area2D
541
+
542
+ signal hurt(hitbox: HitboxComponent)
543
+
544
+ @export var health_component: HealthComponent
545
+
546
+ var owner_node: Node
547
+
548
+ func _ready() -> void:
549
+ owner_node = get_parent()
550
+
551
+ func receive_hit(hitbox: HitboxComponent) -> void:
552
+ hurt.emit(hitbox)
553
+
554
+ if health_component:
555
+ health_component.take_damage(hitbox.damage, hitbox.owner_node)
556
+ ```
557
+
558
+ ### Pattern 6: Scene Management
559
+
560
+ ```gdscript
561
+ # scene_manager.gd (Autoload)
562
+ extends Node
563
+
564
+ signal scene_loading_started(scene_path: String)
565
+ signal scene_loading_progress(progress: float)
566
+ signal scene_loaded(scene: Node)
567
+ signal transition_started
568
+ signal transition_finished
569
+
570
+ @export var transition_scene: PackedScene
571
+ @export var loading_scene: PackedScene
572
+
573
+ var _current_scene: Node
574
+ var _transition: CanvasLayer
575
+ var _loader: ResourceLoader
576
+
577
+ func _ready() -> void:
578
+ _current_scene = get_tree().current_scene
579
+
580
+ if transition_scene:
581
+ _transition = transition_scene.instantiate()
582
+ add_child(_transition)
583
+ _transition.visible = false
584
+
585
+ func change_scene(scene_path: String, with_transition: bool = true) -> void:
586
+ if with_transition:
587
+ await _play_transition_out()
588
+
589
+ _load_scene(scene_path)
590
+
591
+ func change_scene_packed(scene: PackedScene, with_transition: bool = true) -> void:
592
+ if with_transition:
593
+ await _play_transition_out()
594
+
595
+ _swap_scene(scene.instantiate())
596
+
597
+ func _load_scene(path: String) -> void:
598
+ scene_loading_started.emit(path)
599
+
600
+ # Check if already loaded
601
+ if ResourceLoader.has_cached(path):
602
+ var scene := load(path) as PackedScene
603
+ _swap_scene(scene.instantiate())
604
+ return
605
+
606
+ # Async loading
607
+ ResourceLoader.load_threaded_request(path)
608
+
609
+ while true:
610
+ var progress := []
611
+ var status := ResourceLoader.load_threaded_get_status(path, progress)
612
+
613
+ match status:
614
+ ResourceLoader.THREAD_LOAD_IN_PROGRESS:
615
+ scene_loading_progress.emit(progress[0])
616
+ await get_tree().process_frame
617
+ ResourceLoader.THREAD_LOAD_LOADED:
618
+ var scene := ResourceLoader.load_threaded_get(path) as PackedScene
619
+ _swap_scene(scene.instantiate())
620
+ return
621
+ _:
622
+ push_error("Failed to load scene: %s" % path)
623
+ return
624
+
625
+ func _swap_scene(new_scene: Node) -> void:
626
+ if _current_scene:
627
+ _current_scene.queue_free()
628
+
629
+ _current_scene = new_scene
630
+ get_tree().root.add_child(_current_scene)
631
+ get_tree().current_scene = _current_scene
632
+
633
+ scene_loaded.emit(_current_scene)
634
+ await _play_transition_in()
635
+
636
+ func _play_transition_out() -> void:
637
+ if not _transition:
638
+ return
639
+
640
+ transition_started.emit()
641
+ _transition.visible = true
642
+
643
+ if _transition.has_method("transition_out"):
644
+ await _transition.transition_out()
645
+ else:
646
+ await get_tree().create_timer(0.3).timeout
647
+
648
+ func _play_transition_in() -> void:
649
+ if not _transition:
650
+ transition_finished.emit()
651
+ return
652
+
653
+ if _transition.has_method("transition_in"):
654
+ await _transition.transition_in()
655
+ else:
656
+ await get_tree().create_timer(0.3).timeout
657
+
658
+ _transition.visible = false
659
+ transition_finished.emit()
660
+ ```
661
+
662
+ ### Pattern 7: Save System
663
+
664
+ ```gdscript
665
+ # save_manager.gd (Autoload)
666
+ extends Node
667
+
668
+ const SAVE_PATH := "user://savegame.save"
669
+ const ENCRYPTION_KEY := "your_secret_key_here"
670
+
671
+ signal save_completed
672
+ signal load_completed
673
+ signal save_error(message: String)
674
+
675
+ func save_game(data: Dictionary) -> void:
676
+ var file := FileAccess.open_encrypted_with_pass(
677
+ SAVE_PATH,
678
+ FileAccess.WRITE,
679
+ ENCRYPTION_KEY
680
+ )
681
+
682
+ if file == null:
683
+ save_error.emit("Could not open save file")
684
+ return
685
+
686
+ var json := JSON.stringify(data)
687
+ file.store_string(json)
688
+ file.close()
689
+
690
+ save_completed.emit()
691
+
692
+ func load_game() -> Dictionary:
693
+ if not FileAccess.file_exists(SAVE_PATH):
694
+ return {}
695
+
696
+ var file := FileAccess.open_encrypted_with_pass(
697
+ SAVE_PATH,
698
+ FileAccess.READ,
699
+ ENCRYPTION_KEY
700
+ )
701
+
702
+ if file == null:
703
+ save_error.emit("Could not open save file")
704
+ return {}
705
+
706
+ var json := file.get_as_text()
707
+ file.close()
708
+
709
+ var parsed := JSON.parse_string(json)
710
+ if parsed == null:
711
+ save_error.emit("Could not parse save data")
712
+ return {}
713
+
714
+ load_completed.emit()
715
+ return parsed
716
+
717
+ func delete_save() -> void:
718
+ if FileAccess.file_exists(SAVE_PATH):
719
+ DirAccess.remove_absolute(SAVE_PATH)
720
+
721
+ func has_save() -> bool:
722
+ return FileAccess.file_exists(SAVE_PATH)
723
+ ```
724
+
725
+ ```gdscript
726
+ # saveable.gd (Attach to saveable nodes)
727
+ class_name Saveable
728
+ extends Node
729
+
730
+ @export var save_id: String
731
+
732
+ func _ready() -> void:
733
+ if save_id.is_empty():
734
+ save_id = str(get_path())
735
+
736
+ func get_save_data() -> Dictionary:
737
+ var parent := get_parent()
738
+ var data := {"id": save_id}
739
+
740
+ if parent is Node2D:
741
+ data["position"] = {"x": parent.position.x, "y": parent.position.y}
742
+
743
+ if parent.has_method("get_custom_save_data"):
744
+ data.merge(parent.get_custom_save_data())
745
+
746
+ return data
747
+
748
+ func load_save_data(data: Dictionary) -> void:
749
+ var parent := get_parent()
750
+
751
+ if data.has("position") and parent is Node2D:
752
+ parent.position = Vector2(data.position.x, data.position.y)
753
+
754
+ if parent.has_method("load_custom_save_data"):
755
+ parent.load_custom_save_data(data)
756
+ ```
757
+
758
+ ## Performance Tips
759
+
760
+ ```gdscript
761
+ # 1. Cache node references
762
+ @onready var sprite := $Sprite2D # Good
763
+ # $Sprite2D in _process() # Bad - repeated lookup
764
+
765
+ # 2. Use object pooling for frequent spawning
766
+ # See Pattern 4
767
+
768
+ # 3. Avoid allocations in hot paths
769
+ var _reusable_array: Array = []
770
+
771
+ func _process(_delta: float) -> void:
772
+ _reusable_array.clear() # Reuse instead of creating new
773
+
774
+ # 4. Use static typing
775
+ func calculate(value: float) -> float: # Good
776
+ return value * 2.0
777
+
778
+ # 5. Disable processing when not needed
779
+ func _on_off_screen() -> void:
780
+ set_process(false)
781
+ set_physics_process(false)
782
+ ```
783
+
784
+ ## Best Practices
785
+
786
+ ### Do's
787
+ - **Use signals for decoupling** - Avoid direct references
788
+ - **Type everything** - Static typing catches errors
789
+ - **Use resources for data** - Separate data from logic
790
+ - **Pool frequently spawned objects** - Avoid GC hitches
791
+ - **Use Autoloads sparingly** - Only for truly global systems
792
+
793
+ ### Don'ts
794
+ - **Don't use `get_node()` in loops** - Cache references
795
+ - **Don't couple scenes tightly** - Use signals
796
+ - **Don't put logic in resources** - Keep them data-only
797
+ - **Don't ignore the Profiler** - Monitor performance
798
+ - **Don't fight the scene tree** - Work with Godot's design
799
+
800
+ ## Resources
801
+
802
+ - [Godot Documentation](https://docs.godotengine.org/en/stable/)
803
+ - [GDQuest Tutorials](https://www.gdquest.com/)
804
+ - [Godot Recipes](https://kidscancode.org/godot_recipes/)