cfsa-antigravity 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 (378) hide show
  1. package/bin/cli.mjs +324 -0
  2. package/package.json +34 -0
  3. package/template/.agent/instructions/commands.md +48 -0
  4. package/template/.agent/instructions/patterns.md +61 -0
  5. package/template/.agent/instructions/structure.md +29 -0
  6. package/template/.agent/instructions/tech-stack.md +43 -0
  7. package/template/.agent/instructions/workflow.md +41 -0
  8. package/template/.agent/kit-sync.md +15 -0
  9. package/template/.agent/rules/boundary-not-placeholder.md +146 -0
  10. package/template/.agent/rules/completion-checklist.md +48 -0
  11. package/template/.agent/rules/decision-classification.md +103 -0
  12. package/template/.agent/rules/extensibility.md +47 -0
  13. package/template/.agent/rules/question-vs-command.md +81 -0
  14. package/template/.agent/rules/security-first.md +43 -0
  15. package/template/.agent/rules/specificity-standards.md +54 -0
  16. package/template/.agent/rules/tdd-contract-first.md +57 -0
  17. package/template/.agent/rules/vertical-slices.md +42 -0
  18. package/template/.agent/skill-library/MANIFEST.md +480 -0
  19. package/template/.agent/skill-library/README.md +38 -0
  20. package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
  21. package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
  22. package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
  23. package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
  24. package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
  25. package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
  26. package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
  27. package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
  28. package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
  29. package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
  30. package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
  31. package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
  32. package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
  33. package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
  34. package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
  35. package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
  36. package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
  37. package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
  38. package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
  39. package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
  40. package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
  41. package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
  42. package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
  43. package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
  44. package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
  45. package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
  46. package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
  47. package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
  48. package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
  49. package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
  50. package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
  51. package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
  52. package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
  53. package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
  54. package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
  55. package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
  56. package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
  57. package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
  58. package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
  59. package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
  60. package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
  61. package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
  62. package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
  63. package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
  64. package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
  65. package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
  66. package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
  67. package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
  68. package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
  69. package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
  70. package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
  71. package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
  72. package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
  73. package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
  74. package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
  75. package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
  76. package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
  77. package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
  78. package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
  79. package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
  80. package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
  81. package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
  82. package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
  83. package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
  84. package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
  85. package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
  86. package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
  87. package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
  88. package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
  89. package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
  90. package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
  91. package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
  92. package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
  93. package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
  94. package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
  95. package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
  96. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
  97. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
  98. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
  99. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
  100. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
  101. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
  102. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
  103. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
  104. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
  105. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
  106. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
  107. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
  108. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
  109. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
  110. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
  111. package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
  112. package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
  113. package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
  114. package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
  115. package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
  116. package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
  117. package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
  118. package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
  119. package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
  120. package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
  121. package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
  122. package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
  123. package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
  124. package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
  125. package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
  126. package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
  127. package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
  128. package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
  129. package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
  130. package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
  131. package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
  132. package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
  133. package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
  134. package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
  135. package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
  136. package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
  137. package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
  138. package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
  139. package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
  140. package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
  141. package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
  142. package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
  143. package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
  144. package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
  145. package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
  146. package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
  147. package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
  148. package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
  149. package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
  150. package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
  151. package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
  152. package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
  153. package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
  154. package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
  155. package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
  156. package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
  157. package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
  158. package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
  159. package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
  160. package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
  161. package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
  162. package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
  163. package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
  164. package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
  165. package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
  166. package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
  167. package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
  168. package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
  169. package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
  170. package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
  171. package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
  172. package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
  173. package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
  174. package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
  175. package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
  176. package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
  177. package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
  178. package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
  179. package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
  180. package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
  181. package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
  182. package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
  183. package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
  184. package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
  185. package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
  186. package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
  187. package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
  188. package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
  189. package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
  190. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
  191. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
  192. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
  193. package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
  194. package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
  195. package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
  196. package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
  197. package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
  198. package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
  199. package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
  200. package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
  201. package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
  202. package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
  203. package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
  204. package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
  205. package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
  206. package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
  207. package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
  208. package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
  209. package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
  210. package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
  211. package/template/.agent/skills/accessibility/SKILL.md +522 -0
  212. package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
  213. package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
  214. package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
  215. package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  216. package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
  217. package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  218. package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  219. package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  220. package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  221. package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  222. package/template/.agent/skills/api-versioning/SKILL.md +420 -0
  223. package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
  224. package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
  225. package/template/.agent/skills/brainstorming/SKILL.md +236 -0
  226. package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
  227. package/template/.agent/skills/clean-code/SKILL.md +94 -0
  228. package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
  229. package/template/.agent/skills/concise-planning/SKILL.md +68 -0
  230. package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
  231. package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
  232. package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
  233. package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
  234. package/template/.agent/skills/design-direction/SKILL.md +45 -0
  235. package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
  236. package/template/.agent/skills/find-skills/SKILL.md +145 -0
  237. package/template/.agent/skills/git-advanced/SKILL.md +972 -0
  238. package/template/.agent/skills/git-workflow/SKILL.md +420 -0
  239. package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
  240. package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
  241. package/template/.agent/skills/migration-management/SKILL.md +384 -0
  242. package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
  243. package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
  244. package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
  245. package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
  246. package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
  247. package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
  248. package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  249. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  250. package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  251. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  252. package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
  253. package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
  254. package/template/.agent/skills/prd-templates/SKILL.md +88 -0
  255. package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
  256. package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
  257. package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
  258. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
  259. package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
  260. package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
  261. package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  262. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
  263. package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  264. package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
  265. package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  266. package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
  267. package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
  268. package/template/.agent/skills/prompt-engineer/README.md +659 -0
  269. package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
  270. package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
  271. package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
  272. package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
  273. package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
  274. package/template/.agent/skills/session-continuity/SKILL.md +730 -0
  275. package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  276. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  277. package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
  278. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  279. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
  280. package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  281. package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  282. package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
  283. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  284. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
  285. package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  286. package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
  287. package/template/.agent/skills/skill-creator/README.md +270 -0
  288. package/template/.agent/skills/skill-creator/SKILL.md +590 -0
  289. package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
  290. package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
  291. package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
  292. package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
  293. package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
  294. package/template/.agent/skills/spec-writing/SKILL.md +110 -0
  295. package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
  296. package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
  297. package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  298. package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
  299. package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
  300. package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
  301. package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
  302. package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
  303. package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
  304. package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
  305. package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
  306. package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
  307. package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
  308. package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
  309. package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  310. package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  311. package/template/.agent/skills/technical-writer/SKILL.md +242 -0
  312. package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
  313. package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
  314. package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
  315. package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
  316. package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
  317. package/template/.agent/workflows/audit-ambiguity.md +64 -0
  318. package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
  319. package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
  320. package/template/.agent/workflows/bootstrap-agents.md +66 -0
  321. package/template/.agent/workflows/create-prd-architecture.md +119 -0
  322. package/template/.agent/workflows/create-prd-compile.md +138 -0
  323. package/template/.agent/workflows/create-prd-design-system.md +135 -0
  324. package/template/.agent/workflows/create-prd-security.md +113 -0
  325. package/template/.agent/workflows/create-prd-stack.md +91 -0
  326. package/template/.agent/workflows/create-prd.md +168 -0
  327. package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
  328. package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
  329. package/template/.agent/workflows/decompose-architecture.md +111 -0
  330. package/template/.agent/workflows/evolve-contract.md +98 -0
  331. package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
  332. package/template/.agent/workflows/evolve-feature-classify.md +116 -0
  333. package/template/.agent/workflows/evolve-feature.md +56 -0
  334. package/template/.agent/workflows/ideate-discover.md +144 -0
  335. package/template/.agent/workflows/ideate-extract.md +129 -0
  336. package/template/.agent/workflows/ideate-validate.md +117 -0
  337. package/template/.agent/workflows/ideate.md +113 -0
  338. package/template/.agent/workflows/implement-slice-setup.md +113 -0
  339. package/template/.agent/workflows/implement-slice-tdd.md +198 -0
  340. package/template/.agent/workflows/implement-slice.md +50 -0
  341. package/template/.agent/workflows/plan-phase.md +202 -0
  342. package/template/.agent/workflows/propagate-decision-apply.md +135 -0
  343. package/template/.agent/workflows/propagate-decision-scan.md +147 -0
  344. package/template/.agent/workflows/propagate-decision.md +56 -0
  345. package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
  346. package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
  347. package/template/.agent/workflows/remediate-pipeline.md +55 -0
  348. package/template/.agent/workflows/resolve-ambiguity.md +82 -0
  349. package/template/.agent/workflows/sync-kit.md +209 -0
  350. package/template/.agent/workflows/update-architecture-map.md +74 -0
  351. package/template/.agent/workflows/validate-phase.md +219 -0
  352. package/template/.agent/workflows/verify-infrastructure.md +207 -0
  353. package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
  354. package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
  355. package/template/.agent/workflows/write-architecture-spec.md +63 -0
  356. package/template/.agent/workflows/write-be-spec-classify.md +165 -0
  357. package/template/.agent/workflows/write-be-spec-write.md +98 -0
  358. package/template/.agent/workflows/write-be-spec.md +76 -0
  359. package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
  360. package/template/.agent/workflows/write-fe-spec-write.md +94 -0
  361. package/template/.agent/workflows/write-fe-spec.md +71 -0
  362. package/template/AGENTS.md +176 -0
  363. package/template/GEMINI.md +177 -0
  364. package/template/docs/README.md +187 -0
  365. package/template/docs/audits/.gitkeep +0 -0
  366. package/template/docs/audits/README.md +10 -0
  367. package/template/docs/plans/.gitkeep +0 -0
  368. package/template/docs/plans/README.md +21 -0
  369. package/template/docs/plans/be/.gitkeep +0 -0
  370. package/template/docs/plans/be/README.md +11 -0
  371. package/template/docs/plans/fe/.gitkeep +0 -0
  372. package/template/docs/plans/fe/README.md +11 -0
  373. package/template/docs/plans/ia/.gitkeep +0 -0
  374. package/template/docs/plans/ia/README.md +17 -0
  375. package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
  376. package/template/docs/plans/ia/deep-dives/README.md +5 -0
  377. package/template/docs/plans/phases/.gitkeep +0 -0
  378. package/template/docs/plans/phases/README.md +11 -0
@@ -0,0 +1,53 @@
1
+ # Mapped Types
2
+
3
+ **Transform object types systematically:**
4
+
5
+ ```typescript
6
+ // Make all properties optional
7
+ type Partial<T> = {
8
+ [P in keyof T]?: T[P];
9
+ };
10
+
11
+ // Make all properties readonly
12
+ type Readonly<T> = {
13
+ readonly [P in keyof T]: T[P];
14
+ };
15
+
16
+ // Pick specific properties
17
+ type Pick<T, K extends keyof T> = {
18
+ [P in K]: T[P];
19
+ };
20
+
21
+ interface User {
22
+ id: number;
23
+ name: string;
24
+ email: string;
25
+ password: string;
26
+ }
27
+
28
+ // Create API response type
29
+ type UserResponse = Omit<User, 'password'>;
30
+
31
+ // Create update type (all optional)
32
+ type UserUpdate = Partial<User>;
33
+
34
+ // Create creation type (no id)
35
+ type UserCreate = Omit<User, 'id'>;
36
+ ```
37
+
38
+ ## Advanced Mapping
39
+
40
+ ```typescript
41
+ // Add prefix to all keys
42
+ type Prefixed<T, Prefix extends string> = {
43
+ [K in keyof T as `${Prefix}${string & K}`]: T[K];
44
+ };
45
+
46
+ type Events = {
47
+ click: MouseEvent;
48
+ focus: FocusEvent;
49
+ };
50
+
51
+ type Handlers = Prefixed<Events, 'on'>;
52
+ // { onclick: MouseEvent; onfocus: FocusEvent }
53
+ ```
@@ -0,0 +1,104 @@
1
+ # Performance Best Practices
2
+
3
+ ## Avoid Excessive Type Complexity
4
+
5
+ **Keep types simple and composable:**
6
+
7
+ ```typescript
8
+ // Bad - deeply nested types
9
+ type Complex<T> = T extends Array<infer U>
10
+ ? U extends Array<infer V>
11
+ ? V extends Array<infer W>
12
+ ? W extends Array<infer X>
13
+ ? X
14
+ : never
15
+ : never
16
+ : never
17
+ : never;
18
+
19
+ // Good - iterative approach
20
+ type ElementType<T> = T extends (infer E)[] ? E : T;
21
+
22
+ type Deep1<T> = ElementType<T>;
23
+ type Deep2<T> = ElementType<Deep1<T>>;
24
+ ```
25
+
26
+ ## Use Type Aliases for Reusability
27
+
28
+ **Extract common patterns:**
29
+
30
+ ```typescript
31
+ // Define once, reuse everywhere
32
+ type ID = string | number;
33
+ type Timestamp = number;
34
+ type Optional<T> = T | null | undefined;
35
+
36
+ interface User {
37
+ id: ID;
38
+ createdAt: Timestamp;
39
+ lastLogin: Optional<Timestamp>;
40
+ }
41
+ ```
42
+
43
+ ## Leverage Inference
44
+
45
+ **Let TypeScript infer when possible:**
46
+
47
+ ```typescript
48
+ // Don't over-annotate
49
+ const users = [
50
+ { id: 1, name: 'John' },
51
+ { id: 2, name: 'Jane' }
52
+ ]; // Type inferred automatically
53
+
54
+ // Use inference in generics
55
+ function identity<T>(value: T): T {
56
+ return value;
57
+ }
58
+
59
+ const num = identity(42); // T inferred as 42 (literal type)
60
+ ```
61
+
62
+ ## Avoid Type Computation Overhead
63
+
64
+ ```typescript
65
+ // Bad - expensive type computation on every use
66
+ type ExpensiveUnion<T> = T extends any
67
+ ? { [K in keyof T]: SomeComplexType<T[K]> }
68
+ : never;
69
+
70
+ // Good - compute once, reuse
71
+ type PrecomputedType = ExpensiveUnion<MyType>;
72
+ function useType(value: PrecomputedType) { }
73
+ ```
74
+
75
+ ## Use Index Signatures Wisely
76
+
77
+ ```typescript
78
+ // Bad - loses type safety
79
+ interface LooseMap {
80
+ [key: string]: any;
81
+ }
82
+
83
+ // Good - constrained types
84
+ interface TypedMap {
85
+ [key: string]: string | number;
86
+ }
87
+
88
+ // Better - use Record for known types
89
+ type StrictMap = Record<'id' | 'name' | 'age', string | number>;
90
+ ```
91
+
92
+ ## Optimize Union Types
93
+
94
+ ```typescript
95
+ // Bad - large union causes slow checking
96
+ type ManyStrings = 'a' | 'b' | 'c' | /* ...100 more */ | 'z';
97
+
98
+ // Good - use branded types or enums for large sets
99
+ enum StringEnum {
100
+ A = 'a',
101
+ B = 'b',
102
+ // ...
103
+ }
104
+ ```
@@ -0,0 +1,49 @@
1
+ # Template Literal Types
2
+
3
+ **String type manipulation at compile time:**
4
+
5
+ ```typescript
6
+ // Event handler types
7
+ type EventNames = 'click' | 'focus' | 'blur';
8
+ type EventHandlers = `on${Capitalize<EventNames>}`;
9
+ // 'onClick' | 'onFocus' | 'onBlur'
10
+
11
+ // URL path types
12
+ type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE';
13
+ type Endpoint = `/api/${'users' | 'posts' | 'comments'}`;
14
+ type Route = `${HTTPMethod} ${Endpoint}`;
15
+ // 'GET /api/users' | 'POST /api/users' | ...
16
+
17
+ // CSS property types
18
+ type CSSUnit = 'px' | 'em' | 'rem' | '%';
19
+ type Size = `${number}${CSSUnit}`;
20
+
21
+ const width: Size = '100px'; // Valid
22
+ const height: Size = '2em'; // Valid
23
+ // const invalid: Size = '100'; // Error
24
+ ```
25
+
26
+ ## Nested Template Literals
27
+
28
+ ```typescript
29
+ type DeepKey<T> = T extends object
30
+ ? {
31
+ [K in keyof T & string]: K | `${K}.${DeepKey<T[K]>}`;
32
+ }[keyof T & string]
33
+ : never;
34
+
35
+ interface Config {
36
+ database: {
37
+ host: string;
38
+ port: number;
39
+ credentials: {
40
+ username: string;
41
+ password: string;
42
+ };
43
+ };
44
+ }
45
+
46
+ type ConfigKeys = DeepKey<Config>;
47
+ // 'database' | 'database.host' | 'database.port' |
48
+ // 'database.credentials' | 'database.credentials.username' | ...
49
+ ```
@@ -0,0 +1,112 @@
1
+ # Testing Type-Safe Code
2
+
3
+ ## Type Assertion Tests
4
+
5
+ ```typescript
6
+ // Type equality checker
7
+ type AssertEqual<T, U> = T extends U ? (U extends T ? true : false) : false;
8
+
9
+ type Test1 = AssertEqual<Pick<User, 'name'>, { name: string }>; // true
10
+ type Test2 = AssertEqual<string, number>; // false
11
+ ```
12
+
13
+ ## Compile-Time Validation
14
+
15
+ ```typescript
16
+ // Expect type to match
17
+ function expectType<T>(value: T): T {
18
+ return value;
19
+ }
20
+
21
+ const user: User = { id: 1, name: 'John', email: 'john@example.com', password: 'secret' };
22
+ expectType<UserResponse>(user); // Error: password should not exist
23
+ ```
24
+
25
+ ## Test Helper Types
26
+
27
+ ```typescript
28
+ // Assert never (for exhaustiveness checking)
29
+ type AssertNever<T extends never> = T;
30
+
31
+ // Assert extends
32
+ type AssertExtends<T, U extends T> = U;
33
+
34
+ // Assert assignable
35
+ type AssertAssignable<T, U> = U extends T ? true : false;
36
+ ```
37
+
38
+ ## Runtime Type Testing
39
+
40
+ ```typescript
41
+ import { expectType, expectError, expectAssignable } from 'tsd';
42
+
43
+ // Test type inference
44
+ const result = identity(42);
45
+ expectType<number>(result);
46
+
47
+ // Test error cases
48
+ // @ts-expect-error
49
+ expectError(getUser('invalid-id'));
50
+
51
+ // Test assignability
52
+ interface Base { id: number; }
53
+ interface Extended extends Base { name: string; }
54
+
55
+ expectAssignable<Base>({} as Extended);
56
+ ```
57
+
58
+ ## Property-Based Type Testing
59
+
60
+ ```typescript
61
+ // Test all properties of a type
62
+ type TestUserProperties = {
63
+ [K in keyof User]: User[K] extends string | number ? true : false;
64
+ };
65
+
66
+ // Ensure required properties exist
67
+ type RequiredFields = Required<Pick<User, 'id' | 'name' | 'email'>>;
68
+ ```
69
+
70
+ ## Testing Discriminated Unions
71
+
72
+ ```typescript
73
+ type State =
74
+ | { status: 'idle' }
75
+ | { status: 'loading' }
76
+ | { status: 'success'; data: string };
77
+
78
+ // Test exhaustiveness
79
+ function testExhaustive(state: State) {
80
+ switch (state.status) {
81
+ case 'idle':
82
+ case 'loading':
83
+ case 'success':
84
+ return;
85
+ default:
86
+ // Should be never
87
+ const _exhaustive: never = state;
88
+ return _exhaustive;
89
+ }
90
+ }
91
+ ```
92
+
93
+ ## Type Coverage Tools
94
+
95
+ Use `type-coverage` to ensure high type safety:
96
+
97
+ ```bash
98
+ npm install --save-dev type-coverage
99
+
100
+ # Check type coverage
101
+ npx type-coverage
102
+
103
+ # Require 100% coverage
104
+ npx type-coverage --at-least 100
105
+ ```
106
+
107
+ ## Testing Frameworks
108
+
109
+ - **tsd**: Test TypeScript type definitions
110
+ - **dtslint**: Linter for .d.ts files
111
+ - **type-coverage**: Measure type coverage percentage
112
+ - **ts-expect**: Runtime type checking for tests
@@ -0,0 +1,70 @@
1
+ # Type Guards
2
+
3
+ **Runtime type checking with type narrowing:**
4
+
5
+ ## Basic Type Guards
6
+
7
+ ```typescript
8
+ // Basic type guard
9
+ function isString(value: unknown): value is string {
10
+ return typeof value === 'string';
11
+ }
12
+
13
+ // Discriminated union guard
14
+ interface Success {
15
+ status: 'success';
16
+ data: string;
17
+ }
18
+
19
+ interface Error {
20
+ status: 'error';
21
+ message: string;
22
+ }
23
+
24
+ type Result = Success | Error;
25
+
26
+ function isSuccess(result: Result): result is Success {
27
+ return result.status === 'success';
28
+ }
29
+
30
+ function handleResult(result: Result) {
31
+ if (isSuccess(result)) {
32
+ console.log(result.data); // Type narrowed to Success
33
+ } else {
34
+ console.log(result.message); // Type narrowed to Error
35
+ }
36
+ }
37
+ ```
38
+
39
+ ## Generic Type Guards
40
+
41
+ ```typescript
42
+ function isArrayOf<T>(
43
+ value: unknown,
44
+ check: (item: unknown) => item is T
45
+ ): value is T[] {
46
+ return Array.isArray(value) && value.every(check);
47
+ }
48
+
49
+ const data: unknown = [1, 2, 3];
50
+
51
+ if (isArrayOf(data, (x): x is number => typeof x === 'number')) {
52
+ data.forEach(n => n.toFixed(2)); // Type: number[]
53
+ }
54
+ ```
55
+
56
+ ## Assertion Functions
57
+
58
+ ```typescript
59
+ // Type assertion function
60
+ function assertString(value: unknown): asserts value is string {
61
+ if (typeof value !== 'string') {
62
+ throw new Error('Not a string');
63
+ }
64
+ }
65
+
66
+ const input: unknown = 'hello';
67
+ assertString(input);
68
+ // input is now narrowed to string
69
+ input.toUpperCase(); // Valid
70
+ ```
@@ -0,0 +1,101 @@
1
+ # Type Inference Techniques
2
+
3
+ **Leverage TypeScript's type inference:**
4
+
5
+ ## Const Assertions
6
+
7
+ ```typescript
8
+ // Without const assertion
9
+ const colors1 = ['red', 'green', 'blue'];
10
+ // Type: string[]
11
+
12
+ // With const assertion
13
+ const colors2 = ['red', 'green', 'blue'] as const;
14
+ // Type: readonly ['red', 'green', 'blue']
15
+
16
+ // Narrow object types
17
+ const config = {
18
+ endpoint: '/api/users',
19
+ method: 'GET'
20
+ } as const;
21
+ // Type: { readonly endpoint: '/api/users'; readonly method: 'GET' }
22
+ ```
23
+
24
+ ## Inference from Implementation
25
+
26
+ ```typescript
27
+ // Infer from function implementation
28
+ function createAction<T extends string, P>(
29
+ type: T,
30
+ payload: P
31
+ ) {
32
+ return { type, payload };
33
+ }
34
+
35
+ const action = createAction('UPDATE_USER', { id: 1, name: 'John' });
36
+ // Type: { type: 'UPDATE_USER'; payload: { id: number; name: string } }
37
+ ```
38
+
39
+ ## Inference with Generics
40
+
41
+ ```typescript
42
+ // Let TypeScript infer generic types
43
+ function identity<T>(value: T): T {
44
+ return value;
45
+ }
46
+
47
+ const num = identity(42); // T inferred as 42 (literal type)
48
+ const str = identity('hello'); // T inferred as 'hello'
49
+
50
+ // Inference from array methods
51
+ const numbers = [1, 2, 3];
52
+ const doubled = numbers.map(n => n * 2); // Type: number[]
53
+ ```
54
+
55
+ ## Discriminated Union Inference
56
+
57
+ ```typescript
58
+ // Use in discriminated unions
59
+ type Action =
60
+ | ReturnType<typeof createAction<'INCREMENT'>>
61
+ | ReturnType<typeof createAction<'DECREMENT'>>;
62
+
63
+ function reducer(state: number, action: Action): number {
64
+ switch (action.type) {
65
+ case 'INCREMENT':
66
+ return state + 1;
67
+ case 'DECREMENT':
68
+ return state - 1;
69
+ }
70
+ }
71
+ ```
72
+
73
+ ## Tuple Inference
74
+
75
+ ```typescript
76
+ // Infer tuple types
77
+ function tuple<T extends any[]>(...args: T): T {
78
+ return args;
79
+ }
80
+
81
+ const pair = tuple(1, 'hello'); // Type: [number, string]
82
+ const triple = tuple(1, 'hello', true); // Type: [number, string, boolean]
83
+ ```
84
+
85
+ ## Contextual Typing
86
+
87
+ ```typescript
88
+ // Type inferred from context
89
+ interface Point {
90
+ x: number;
91
+ y: number;
92
+ }
93
+
94
+ const points: Point[] = [
95
+ { x: 0, y: 0 }, // Type inferred from array type
96
+ { x: 1, y: 1 }
97
+ ];
98
+
99
+ // Callback inference
100
+ ['1', '2', '3'].map(str => parseInt(str)); // str inferred as string
101
+ ```
@@ -0,0 +1,98 @@
1
+ # Utility Types Composition
2
+
3
+ **Combine utility types for complex transformations:**
4
+
5
+ ## Deep Transformations
6
+
7
+ ```typescript
8
+ // Deep partial
9
+ type DeepPartial<T> = {
10
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
11
+ };
12
+
13
+ // Make specific keys required
14
+ type RequireKeys<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
15
+
16
+ interface User {
17
+ id?: number;
18
+ name?: string;
19
+ email?: string;
20
+ }
21
+
22
+ type UserWithId = RequireKeys<User, 'id'>;
23
+ // { id: number; name?: string; email?: string }
24
+ ```
25
+
26
+ ## Function Type Utilities
27
+
28
+ ```typescript
29
+ // Extract function parameter types
30
+ type Parameters<T extends (...args: any[]) => any> =
31
+ T extends (...args: infer P) => any ? P : never;
32
+
33
+ function processUser(id: number, name: string): void {}
34
+
35
+ type ProcessUserParams = Parameters<typeof processUser>;
36
+ // [number, string]
37
+
38
+ // Extract return type
39
+ type ReturnType<T extends (...args: any[]) => any> =
40
+ T extends (...args: any[]) => infer R ? R : never;
41
+ ```
42
+
43
+ ## Advanced Transformations
44
+
45
+ ```typescript
46
+ // Flatten nested types
47
+ type Flatten<T> = T extends any[] ? T[number] : T;
48
+
49
+ type Nested = (string | number)[][];
50
+ type Flat = Flatten<Nested>; // (string | number)[]
51
+
52
+ // Exclude nullable values
53
+ type NonNullable<T> = T extends null | undefined ? never : T;
54
+
55
+ // Recursive type definitions
56
+ type JSONValue =
57
+ | string
58
+ | number
59
+ | boolean
60
+ | null
61
+ | JSONValue[]
62
+ | { [key: string]: JSONValue };
63
+ ```
64
+
65
+ ## Readonly Utilities
66
+
67
+ ```typescript
68
+ // Deep readonly
69
+ type DeepReadonly<T> = {
70
+ readonly [P in keyof T]: T[P] extends object
71
+ ? DeepReadonly<T[P]>
72
+ : T[P];
73
+ };
74
+
75
+ // Mutable (remove readonly)
76
+ type Mutable<T> = {
77
+ -readonly [P in keyof T]: T[P];
78
+ };
79
+ ```
80
+
81
+ ## Key Manipulation
82
+
83
+ ```typescript
84
+ // Extract keys of specific type
85
+ type KeysOfType<T, U> = {
86
+ [K in keyof T]: T[K] extends U ? K : never;
87
+ }[keyof T];
88
+
89
+ interface Example {
90
+ name: string;
91
+ age: number;
92
+ active: boolean;
93
+ count: number;
94
+ }
95
+
96
+ type StringKeys = KeysOfType<Example, string>; // 'name'
97
+ type NumberKeys = KeysOfType<Example, number>; // 'age' | 'count'
98
+ ```