@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,716 @@
1
+ # TypeScript Advanced Types Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ # TypeScript Advanced Types
6
+
7
+ Comprehensive guidance for mastering TypeScript's advanced type system including generics, conditional types, mapped types, template literal types, and utility types for building robust, type-safe applications.
8
+
9
+ ## When to Use This Skill
10
+
11
+ - Building type-safe libraries or frameworks
12
+ - Creating reusable generic components
13
+ - Implementing complex type inference logic
14
+ - Designing type-safe API clients
15
+ - Building form validation systems
16
+ - Creating strongly-typed configuration objects
17
+ - Implementing type-safe state management
18
+ - Migrating JavaScript codebases to TypeScript
19
+
20
+ ## Core Concepts
21
+
22
+ ### 1. Generics
23
+
24
+ **Purpose:** Create reusable, type-flexible components while maintaining type safety.
25
+
26
+ **Basic Generic Function:**
27
+ ```typescript
28
+ function identity<T>(value: T): T {
29
+ return value;
30
+ }
31
+
32
+ const num = identity<number>(42); // Type: number
33
+ const str = identity<string>("hello"); // Type: string
34
+ const auto = identity(true); // Type inferred: boolean
35
+ ```
36
+
37
+ **Generic Constraints:**
38
+ ```typescript
39
+ interface HasLength {
40
+ length: number;
41
+ }
42
+
43
+ function logLength<T extends HasLength>(item: T): T {
44
+ console.log(item.length);
45
+ return item;
46
+ }
47
+
48
+ logLength("hello"); // OK: string has length
49
+ logLength([1, 2, 3]); // OK: array has length
50
+ logLength({ length: 10 }); // OK: object has length
51
+ // logLength(42); // Error: number has no length
52
+ ```
53
+
54
+ **Multiple Type Parameters:**
55
+ ```typescript
56
+ function merge<T, U>(obj1: T, obj2: U): T & U {
57
+ return { ...obj1, ...obj2 };
58
+ }
59
+
60
+ const merged = merge(
61
+ { name: "John" },
62
+ { age: 30 }
63
+ );
64
+ // Type: { name: string } & { age: number }
65
+ ```
66
+
67
+ ### 2. Conditional Types
68
+
69
+ **Purpose:** Create types that depend on conditions, enabling sophisticated type logic.
70
+
71
+ **Basic Conditional Type:**
72
+ ```typescript
73
+ type IsString<T> = T extends string ? true : false;
74
+
75
+ type A = IsString<string>; // true
76
+ type B = IsString<number>; // false
77
+ ```
78
+
79
+ **Extracting Return Types:**
80
+ ```typescript
81
+ type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
82
+
83
+ function getUser() {
84
+ return { id: 1, name: "John" };
85
+ }
86
+
87
+ type User = ReturnType<typeof getUser>;
88
+ // Type: { id: number; name: string; }
89
+ ```
90
+
91
+ **Distributive Conditional Types:**
92
+ ```typescript
93
+ type ToArray<T> = T extends any ? T[] : never;
94
+
95
+ type StrOrNumArray = ToArray<string | number>;
96
+ // Type: string[] | number[]
97
+ ```
98
+
99
+ **Nested Conditions:**
100
+ ```typescript
101
+ type TypeName<T> =
102
+ T extends string ? "string" :
103
+ T extends number ? "number" :
104
+ T extends boolean ? "boolean" :
105
+ T extends undefined ? "undefined" :
106
+ T extends Function ? "function" :
107
+ "object";
108
+
109
+ type T1 = TypeName<string>; // "string"
110
+ type T2 = TypeName<() => void>; // "function"
111
+ ```
112
+
113
+ ### 3. Mapped Types
114
+
115
+ **Purpose:** Transform existing types by iterating over their properties.
116
+
117
+ **Basic Mapped Type:**
118
+ ```typescript
119
+ type Readonly<T> = {
120
+ readonly [P in keyof T]: T[P];
121
+ };
122
+
123
+ interface User {
124
+ id: number;
125
+ name: string;
126
+ }
127
+
128
+ type ReadonlyUser = Readonly<User>;
129
+ // Type: { readonly id: number; readonly name: string; }
130
+ ```
131
+
132
+ **Optional Properties:**
133
+ ```typescript
134
+ type Partial<T> = {
135
+ [P in keyof T]?: T[P];
136
+ };
137
+
138
+ type PartialUser = Partial<User>;
139
+ // Type: { id?: number; name?: string; }
140
+ ```
141
+
142
+ **Key Remapping:**
143
+ ```typescript
144
+ type Getters<T> = {
145
+ [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]
146
+ };
147
+
148
+ interface Person {
149
+ name: string;
150
+ age: number;
151
+ }
152
+
153
+ type PersonGetters = Getters<Person>;
154
+ // Type: { getName: () => string; getAge: () => number; }
155
+ ```
156
+
157
+ **Filtering Properties:**
158
+ ```typescript
159
+ type PickByType<T, U> = {
160
+ [K in keyof T as T[K] extends U ? K : never]: T[K]
161
+ };
162
+
163
+ interface Mixed {
164
+ id: number;
165
+ name: string;
166
+ age: number;
167
+ active: boolean;
168
+ }
169
+
170
+ type OnlyNumbers = PickByType<Mixed, number>;
171
+ // Type: { id: number; age: number; }
172
+ ```
173
+
174
+ ### 4. Template Literal Types
175
+
176
+ **Purpose:** Create string-based types with pattern matching and transformation.
177
+
178
+ **Basic Template Literal:**
179
+ ```typescript
180
+ type EventName = "click" | "focus" | "blur";
181
+ type EventHandler = `on${Capitalize<EventName>}`;
182
+ // Type: "onClick" | "onFocus" | "onBlur"
183
+ ```
184
+
185
+ **String Manipulation:**
186
+ ```typescript
187
+ type UppercaseGreeting = Uppercase<"hello">; // "HELLO"
188
+ type LowercaseGreeting = Lowercase<"HELLO">; // "hello"
189
+ type CapitalizedName = Capitalize<"john">; // "John"
190
+ type UncapitalizedName = Uncapitalize<"John">; // "john"
191
+ ```
192
+
193
+ **Path Building:**
194
+ ```typescript
195
+ type Path<T> = T extends object
196
+ ? { [K in keyof T]: K extends string
197
+ ? `${K}` | `${K}.${Path<T[K]>}`
198
+ : never
199
+ }[keyof T]
200
+ : never;
201
+
202
+ interface Config {
203
+ server: {
204
+ host: string;
205
+ port: number;
206
+ };
207
+ database: {
208
+ url: string;
209
+ };
210
+ }
211
+
212
+ type ConfigPath = Path<Config>;
213
+ // Type: "server" | "database" | "server.host" | "server.port" | "database.url"
214
+ ```
215
+
216
+ ### 5. Utility Types
217
+
218
+ **Built-in Utility Types:**
219
+
220
+ ```typescript
221
+ // Partial<T> - Make all properties optional
222
+ type PartialUser = Partial<User>;
223
+
224
+ // Required<T> - Make all properties required
225
+ type RequiredUser = Required<PartialUser>;
226
+
227
+ // Readonly<T> - Make all properties readonly
228
+ type ReadonlyUser = Readonly<User>;
229
+
230
+ // Pick<T, K> - Select specific properties
231
+ type UserName = Pick<User, "name" | "email">;
232
+
233
+ // Omit<T, K> - Remove specific properties
234
+ type UserWithoutPassword = Omit<User, "password">;
235
+
236
+ // Exclude<T, U> - Exclude types from union
237
+ type T1 = Exclude<"a" | "b" | "c", "a">; // "b" | "c"
238
+
239
+ // Extract<T, U> - Extract types from union
240
+ type T2 = Extract<"a" | "b" | "c", "a" | "b">; // "a" | "b"
241
+
242
+ // NonNullable<T> - Exclude null and undefined
243
+ type T3 = NonNullable<string | null | undefined>; // string
244
+
245
+ // Record<K, T> - Create object type with keys K and values T
246
+ type PageInfo = Record<"home" | "about", { title: string }>;
247
+ ```
248
+
249
+ ## Advanced Patterns
250
+
251
+ ### Pattern 1: Type-Safe Event Emitter
252
+
253
+ ```typescript
254
+ type EventMap = {
255
+ "user:created": { id: string; name: string };
256
+ "user:updated": { id: string };
257
+ "user:deleted": { id: string };
258
+ };
259
+
260
+ class TypedEventEmitter<T extends Record<string, any>> {
261
+ private listeners: {
262
+ [K in keyof T]?: Array<(data: T[K]) => void>;
263
+ } = {};
264
+
265
+ on<K extends keyof T>(event: K, callback: (data: T[K]) => void): void {
266
+ if (!this.listeners[event]) {
267
+ this.listeners[event] = [];
268
+ }
269
+ this.listeners[event]!.push(callback);
270
+ }
271
+
272
+ emit<K extends keyof T>(event: K, data: T[K]): void {
273
+ const callbacks = this.listeners[event];
274
+ if (callbacks) {
275
+ callbacks.forEach(callback => callback(data));
276
+ }
277
+ }
278
+ }
279
+
280
+ const emitter = new TypedEventEmitter<EventMap>();
281
+
282
+ emitter.on("user:created", (data) => {
283
+ console.log(data.id, data.name); // Type-safe!
284
+ });
285
+
286
+ emitter.emit("user:created", { id: "1", name: "John" });
287
+ // emitter.emit("user:created", { id: "1" }); // Error: missing 'name'
288
+ ```
289
+
290
+ ### Pattern 2: Type-Safe API Client
291
+
292
+ ```typescript
293
+ type HTTPMethod = "GET" | "POST" | "PUT" | "DELETE";
294
+
295
+ type EndpointConfig = {
296
+ "/users": {
297
+ GET: { response: User[] };
298
+ POST: { body: { name: string; email: string }; response: User };
299
+ };
300
+ "/users/:id": {
301
+ GET: { params: { id: string }; response: User };
302
+ PUT: { params: { id: string }; body: Partial<User>; response: User };
303
+ DELETE: { params: { id: string }; response: void };
304
+ };
305
+ };
306
+
307
+ type ExtractParams<T> = T extends { params: infer P } ? P : never;
308
+ type ExtractBody<T> = T extends { body: infer B } ? B : never;
309
+ type ExtractResponse<T> = T extends { response: infer R } ? R : never;
310
+
311
+ class APIClient<Config extends Record<string, Record<HTTPMethod, any>>> {
312
+ async request<
313
+ Path extends keyof Config,
314
+ Method extends keyof Config[Path]
315
+ >(
316
+ path: Path,
317
+ method: Method,
318
+ ...[options]: ExtractParams<Config[Path][Method]> extends never
319
+ ? ExtractBody<Config[Path][Method]> extends never
320
+ ? []
321
+ : [{ body: ExtractBody<Config[Path][Method]> }]
322
+ : [{
323
+ params: ExtractParams<Config[Path][Method]>;
324
+ body?: ExtractBody<Config[Path][Method]>;
325
+ }]
326
+ ): Promise<ExtractResponse<Config[Path][Method]>> {
327
+ // Implementation here
328
+ return {} as any;
329
+ }
330
+ }
331
+
332
+ const api = new APIClient<EndpointConfig>();
333
+
334
+ // Type-safe API calls
335
+ const users = await api.request("/users", "GET");
336
+ // Type: User[]
337
+
338
+ const newUser = await api.request("/users", "POST", {
339
+ body: { name: "John", email: "john@example.com" }
340
+ });
341
+ // Type: User
342
+
343
+ const user = await api.request("/users/:id", "GET", {
344
+ params: { id: "123" }
345
+ });
346
+ // Type: User
347
+ ```
348
+
349
+ ### Pattern 3: Builder Pattern with Type Safety
350
+
351
+ ```typescript
352
+ type BuilderState<T> = {
353
+ [K in keyof T]: T[K] | undefined;
354
+ };
355
+
356
+ type RequiredKeys<T> = {
357
+ [K in keyof T]-?: {} extends Pick<T, K> ? never : K;
358
+ }[keyof T];
359
+
360
+ type OptionalKeys<T> = {
361
+ [K in keyof T]-?: {} extends Pick<T, K> ? K : never;
362
+ }[keyof T];
363
+
364
+ type IsComplete<T, S> =
365
+ RequiredKeys<T> extends keyof S
366
+ ? S[RequiredKeys<T>] extends undefined
367
+ ? false
368
+ : true
369
+ : false;
370
+
371
+ class Builder<T, S extends BuilderState<T> = {}> {
372
+ private state: S = {} as S;
373
+
374
+ set<K extends keyof T>(
375
+ key: K,
376
+ value: T[K]
377
+ ): Builder<T, S & Record<K, T[K]>> {
378
+ this.state[key] = value;
379
+ return this as any;
380
+ }
381
+
382
+ build(
383
+ this: IsComplete<T, S> extends true ? this : never
384
+ ): T {
385
+ return this.state as T;
386
+ }
387
+ }
388
+
389
+ interface User {
390
+ id: string;
391
+ name: string;
392
+ email: string;
393
+ age?: number;
394
+ }
395
+
396
+ const builder = new Builder<User>();
397
+
398
+ const user = builder
399
+ .set("id", "1")
400
+ .set("name", "John")
401
+ .set("email", "john@example.com")
402
+ .build(); // OK: all required fields set
403
+
404
+ // const incomplete = builder
405
+ // .set("id", "1")
406
+ // .build(); // Error: missing required fields
407
+ ```
408
+
409
+ ### Pattern 4: Deep Readonly/Partial
410
+
411
+ ```typescript
412
+ type DeepReadonly<T> = {
413
+ readonly [P in keyof T]: T[P] extends object
414
+ ? T[P] extends Function
415
+ ? T[P]
416
+ : DeepReadonly<T[P]>
417
+ : T[P];
418
+ };
419
+
420
+ type DeepPartial<T> = {
421
+ [P in keyof T]?: T[P] extends object
422
+ ? T[P] extends Array<infer U>
423
+ ? Array<DeepPartial<U>>
424
+ : DeepPartial<T[P]>
425
+ : T[P];
426
+ };
427
+
428
+ interface Config {
429
+ server: {
430
+ host: string;
431
+ port: number;
432
+ ssl: {
433
+ enabled: boolean;
434
+ cert: string;
435
+ };
436
+ };
437
+ database: {
438
+ url: string;
439
+ pool: {
440
+ min: number;
441
+ max: number;
442
+ };
443
+ };
444
+ }
445
+
446
+ type ReadonlyConfig = DeepReadonly<Config>;
447
+ // All nested properties are readonly
448
+
449
+ type PartialConfig = DeepPartial<Config>;
450
+ // All nested properties are optional
451
+ ```
452
+
453
+ ### Pattern 5: Type-Safe Form Validation
454
+
455
+ ```typescript
456
+ type ValidationRule<T> = {
457
+ validate: (value: T) => boolean;
458
+ message: string;
459
+ };
460
+
461
+ type FieldValidation<T> = {
462
+ [K in keyof T]?: ValidationRule<T[K]>[];
463
+ };
464
+
465
+ type ValidationErrors<T> = {
466
+ [K in keyof T]?: string[];
467
+ };
468
+
469
+ class FormValidator<T extends Record<string, any>> {
470
+ constructor(private rules: FieldValidation<T>) {}
471
+
472
+ validate(data: T): ValidationErrors<T> | null {
473
+ const errors: ValidationErrors<T> = {};
474
+ let hasErrors = false;
475
+
476
+ for (const key in this.rules) {
477
+ const fieldRules = this.rules[key];
478
+ const value = data[key];
479
+
480
+ if (fieldRules) {
481
+ const fieldErrors: string[] = [];
482
+
483
+ for (const rule of fieldRules) {
484
+ if (!rule.validate(value)) {
485
+ fieldErrors.push(rule.message);
486
+ }
487
+ }
488
+
489
+ if (fieldErrors.length > 0) {
490
+ errors[key] = fieldErrors;
491
+ hasErrors = true;
492
+ }
493
+ }
494
+ }
495
+
496
+ return hasErrors ? errors : null;
497
+ }
498
+ }
499
+
500
+ interface LoginForm {
501
+ email: string;
502
+ password: string;
503
+ }
504
+
505
+ const validator = new FormValidator<LoginForm>({
506
+ email: [
507
+ {
508
+ validate: (v) => v.includes("@"),
509
+ message: "Email must contain @"
510
+ },
511
+ {
512
+ validate: (v) => v.length > 0,
513
+ message: "Email is required"
514
+ }
515
+ ],
516
+ password: [
517
+ {
518
+ validate: (v) => v.length >= 8,
519
+ message: "Password must be at least 8 characters"
520
+ }
521
+ ]
522
+ });
523
+
524
+ const errors = validator.validate({
525
+ email: "invalid",
526
+ password: "short"
527
+ });
528
+ // Type: { email?: string[]; password?: string[]; } | null
529
+ ```
530
+
531
+ ### Pattern 6: Discriminated Unions
532
+
533
+ ```typescript
534
+ type Success<T> = {
535
+ status: "success";
536
+ data: T;
537
+ };
538
+
539
+ type Error = {
540
+ status: "error";
541
+ error: string;
542
+ };
543
+
544
+ type Loading = {
545
+ status: "loading";
546
+ };
547
+
548
+ type AsyncState<T> = Success<T> | Error | Loading;
549
+
550
+ function handleState<T>(state: AsyncState<T>): void {
551
+ switch (state.status) {
552
+ case "success":
553
+ console.log(state.data); // Type: T
554
+ break;
555
+ case "error":
556
+ console.log(state.error); // Type: string
557
+ break;
558
+ case "loading":
559
+ console.log("Loading...");
560
+ break;
561
+ }
562
+ }
563
+
564
+ // Type-safe state machine
565
+ type State =
566
+ | { type: "idle" }
567
+ | { type: "fetching"; requestId: string }
568
+ | { type: "success"; data: any }
569
+ | { type: "error"; error: Error };
570
+
571
+ type Event =
572
+ | { type: "FETCH"; requestId: string }
573
+ | { type: "SUCCESS"; data: any }
574
+ | { type: "ERROR"; error: Error }
575
+ | { type: "RESET" };
576
+
577
+ function reducer(state: State, event: Event): State {
578
+ switch (state.type) {
579
+ case "idle":
580
+ return event.type === "FETCH"
581
+ ? { type: "fetching", requestId: event.requestId }
582
+ : state;
583
+ case "fetching":
584
+ if (event.type === "SUCCESS") {
585
+ return { type: "success", data: event.data };
586
+ }
587
+ if (event.type === "ERROR") {
588
+ return { type: "error", error: event.error };
589
+ }
590
+ return state;
591
+ case "success":
592
+ case "error":
593
+ return event.type === "RESET" ? { type: "idle" } : state;
594
+ }
595
+ }
596
+ ```
597
+
598
+ ## Type Inference Techniques
599
+
600
+ ### 1. Infer Keyword
601
+
602
+ ```typescript
603
+ // Extract array element type
604
+ type ElementType<T> = T extends (infer U)[] ? U : never;
605
+
606
+ type NumArray = number[];
607
+ type Num = ElementType<NumArray>; // number
608
+
609
+ // Extract promise type
610
+ type PromiseType<T> = T extends Promise<infer U> ? U : never;
611
+
612
+ type AsyncNum = PromiseType<Promise<number>>; // number
613
+
614
+ // Extract function parameters
615
+ type Parameters<T> = T extends (...args: infer P) => any ? P : never;
616
+
617
+ function foo(a: string, b: number) {}
618
+ type FooParams = Parameters<typeof foo>; // [string, number]
619
+ ```
620
+
621
+ ### 2. Type Guards
622
+
623
+ ```typescript
624
+ function isString(value: unknown): value is string {
625
+ return typeof value === "string";
626
+ }
627
+
628
+ function isArrayOf<T>(
629
+ value: unknown,
630
+ guard: (item: unknown) => item is T
631
+ ): value is T[] {
632
+ return Array.isArray(value) && value.every(guard);
633
+ }
634
+
635
+ const data: unknown = ["a", "b", "c"];
636
+
637
+ if (isArrayOf(data, isString)) {
638
+ data.forEach(s => s.toUpperCase()); // Type: string[]
639
+ }
640
+ ```
641
+
642
+ ### 3. Assertion Functions
643
+
644
+ ```typescript
645
+ function assertIsString(value: unknown): asserts value is string {
646
+ if (typeof value !== "string") {
647
+ throw new Error("Not a string");
648
+ }
649
+ }
650
+
651
+ function processValue(value: unknown) {
652
+ assertIsString(value);
653
+ // value is now typed as string
654
+ console.log(value.toUpperCase());
655
+ }
656
+ ```
657
+
658
+ ## Best Practices
659
+
660
+ 1. **Use `unknown` over `any`**: Enforce type checking
661
+ 2. **Prefer `interface` for object shapes**: Better error messages
662
+ 3. **Use `type` for unions and complex types**: More flexible
663
+ 4. **Leverage type inference**: Let TypeScript infer when possible
664
+ 5. **Create helper types**: Build reusable type utilities
665
+ 6. **Use const assertions**: Preserve literal types
666
+ 7. **Avoid type assertions**: Use type guards instead
667
+ 8. **Document complex types**: Add JSDoc comments
668
+ 9. **Use strict mode**: Enable all strict compiler options
669
+ 10. **Test your types**: Use type tests to verify type behavior
670
+
671
+ ## Type Testing
672
+
673
+ ```typescript
674
+ // Type assertion tests
675
+ type AssertEqual<T, U> =
676
+ [T] extends [U]
677
+ ? [U] extends [T]
678
+ ? true
679
+ : false
680
+ : false;
681
+
682
+ type Test1 = AssertEqual<string, string>; // true
683
+ type Test2 = AssertEqual<string, number>; // false
684
+ type Test3 = AssertEqual<string | number, string>; // false
685
+
686
+ // Expect error helper
687
+ type ExpectError<T extends never> = T;
688
+
689
+ // Example usage
690
+ type ShouldError = ExpectError<AssertEqual<string, number>>;
691
+ ```
692
+
693
+ ## Common Pitfalls
694
+
695
+ 1. **Over-using `any`**: Defeats the purpose of TypeScript
696
+ 2. **Ignoring strict null checks**: Can lead to runtime errors
697
+ 3. **Too complex types**: Can slow down compilation
698
+ 4. **Not using discriminated unions**: Misses type narrowing opportunities
699
+ 5. **Forgetting readonly modifiers**: Allows unintended mutations
700
+ 6. **Circular type references**: Can cause compiler errors
701
+ 7. **Not handling edge cases**: Like empty arrays or null values
702
+
703
+ ## Performance Considerations
704
+
705
+ - Avoid deeply nested conditional types
706
+ - Use simple types when possible
707
+ - Cache complex type computations
708
+ - Limit recursion depth in recursive types
709
+ - Use build tools to skip type checking in production
710
+
711
+ ## Resources
712
+
713
+ - **TypeScript Handbook**: https://www.typescriptlang.org/docs/handbook/
714
+ - **Type Challenges**: https://github.com/type-challenges/type-challenges
715
+ - **TypeScript Deep Dive**: https://basarat.gitbook.io/typescript/
716
+ - **Effective TypeScript**: Book by Dan Vanderkam