@punks/cli 0.1.16 → 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 (508) hide show
  1. package/AGENTS.md +10 -0
  2. package/README.md +64 -0
  3. package/dist/data/AGENTS.md +123 -0
  4. package/dist/data/catalog/lint.ts +349 -0
  5. package/dist/data/catalog/packs.ts +44 -0
  6. package/dist/data/catalog/skills.ts +47 -0
  7. package/dist/data/catalog/tools.ts +22 -0
  8. package/dist/data/hooks/format-edited-file.mjs +554 -0
  9. package/dist/data/hooks/format-edited-file.py +157 -0
  10. package/dist/data/hooks/format-edited-file.sh +37 -0
  11. package/dist/data/hooks/require-tests-for-pr.mjs +144 -0
  12. package/dist/data/scripts/sync-subagents.mjs +420 -0
  13. package/dist/data/subagents/manifest.mjs +253 -0
  14. package/dist/index.js +46415 -0
  15. package/dist/skills/agnostic/backend/backend-domain-structure/SKILL.md +50 -0
  16. package/dist/skills/agnostic/backend/backend-domain-structure/agents/openai.yaml +4 -0
  17. package/dist/skills/agnostic/backend/backend-domain-structure/references/layout.md +167 -0
  18. package/dist/skills/agnostic/backend/backend-recoverable-actions/SKILL.md +49 -0
  19. package/dist/skills/agnostic/backend/backend-recoverable-actions/agents/openai.yaml +4 -0
  20. package/dist/skills/agnostic/backend/backend-recoverable-actions/references/strategy-matrix.md +34 -0
  21. package/dist/skills/agnostic/backend/backend-recoverable-actions/references/test-matrix.md +34 -0
  22. package/dist/skills/agnostic/docs/docs-maintenance/SKILL.md +193 -0
  23. package/dist/skills/agnostic/docs/docs-maintenance/agents/openai.yaml +4 -0
  24. package/dist/skills/agnostic/docs/docs-maintenance/references/concept-pages.md +48 -0
  25. package/dist/skills/agnostic/docs/docs-maintenance/references/flow-pages.md +41 -0
  26. package/dist/skills/agnostic/frontend/agent-browser/.clawdhub/origin.json +7 -0
  27. package/dist/skills/agnostic/frontend/agent-browser/SKILL.md +229 -0
  28. package/dist/skills/agnostic/frontend/agent-browser/references/authentication.md +202 -0
  29. package/dist/skills/agnostic/frontend/agent-browser/references/commands.md +259 -0
  30. package/dist/skills/agnostic/frontend/agent-browser/references/proxy-support.md +188 -0
  31. package/dist/skills/agnostic/frontend/agent-browser/references/session-management.md +193 -0
  32. package/dist/skills/agnostic/frontend/agent-browser/references/snapshot-refs.md +194 -0
  33. package/dist/skills/agnostic/frontend/agent-browser/references/video-recording.md +173 -0
  34. package/dist/skills/agnostic/frontend/agent-browser/templates/authenticated-session.sh +97 -0
  35. package/dist/skills/agnostic/frontend/agent-browser/templates/capture-workflow.sh +69 -0
  36. package/dist/skills/agnostic/frontend/agent-browser/templates/form-automation.sh +62 -0
  37. package/dist/skills/agnostic/frontend/design-taste-frontend/SKILL.md +226 -0
  38. package/dist/skills/agnostic/frontend/frontend-domain-structure/SKILL.md +55 -0
  39. package/dist/skills/agnostic/frontend/frontend-domain-structure/agents/openai.yaml +4 -0
  40. package/dist/skills/agnostic/frontend/frontend-domain-structure/references/react/structure.md +102 -0
  41. package/dist/skills/agnostic/frontend/frontend-domain-structure/references/structure.md +257 -0
  42. package/dist/skills/agnostic/frontend/gpt-taste/SKILL.md +74 -0
  43. package/dist/skills/agnostic/frontend/image-taste-frontend/SKILL.md +1102 -0
  44. package/dist/skills/agnostic/frontend/redesign-existing-projects/SKILL.md +178 -0
  45. package/dist/skills/agnostic/planning/create-plan/REFERENCE.md +37 -0
  46. package/dist/skills/agnostic/planning/create-plan/SKILL.md +69 -0
  47. package/dist/skills/agnostic/planning/create-plan/references/backlog-sync.md +44 -0
  48. package/dist/skills/agnostic/planning/create-plan/references/grill-phase.md +86 -0
  49. package/dist/skills/agnostic/planning/create-plan/references/plan-schema.md +66 -0
  50. package/dist/skills/agnostic/planning/create-plan/references/planner-phase.md +39 -0
  51. package/dist/skills/agnostic/planning/create-plan/references/stop-conditions.md +18 -0
  52. package/dist/skills/agnostic/planning/create-plan/references/tdd-phase.md +26 -0
  53. package/dist/skills/agnostic/planning/create-spec/SKILL.md +57 -0
  54. package/dist/skills/agnostic/planning/create-spec/assets/SPEC-TEMPLATE.md +91 -0
  55. package/dist/skills/agnostic/planning/create-spec/references/discovery.md +44 -0
  56. package/dist/skills/agnostic/planning/create-spec/references/folder-naming.md +27 -0
  57. package/dist/skills/agnostic/planning/create-spec/references/handoff.md +47 -0
  58. package/dist/skills/agnostic/planning/create-spec/references/questioning.md +41 -0
  59. package/dist/skills/agnostic/planning/create-spec/references/spec-quality-bar.md +58 -0
  60. package/dist/skills/agnostic/planning/create-spec/references/wiki-bookkeeping.md +26 -0
  61. package/dist/skills/agnostic/planning/grill-me/SKILL.md +28 -0
  62. package/dist/skills/agnostic/planning/implement-spec/SKILL.md +72 -0
  63. package/dist/skills/agnostic/planning/implement-spec/assets/IMPLEMENTATION-NOTES-TEMPLATE.md +47 -0
  64. package/dist/skills/agnostic/planning/implement-spec/references/lifecycle.md +149 -0
  65. package/dist/skills/agnostic/planning/implement-spec/references/parallel-orchestration.md +102 -0
  66. package/dist/skills/agnostic/planning/implement-spec/references/parallel-worker-brief.md +65 -0
  67. package/dist/skills/agnostic/planning/implement-spec/references/parallel.md +56 -0
  68. package/dist/skills/agnostic/planning/implement-spec/references/sequential.md +28 -0
  69. package/dist/skills/agnostic/planning/swarm-planner/SKILL.md +179 -0
  70. package/dist/skills/agnostic/quality/simplify/SKILL.md +14 -0
  71. package/dist/skills/agnostic/quality/tdd/SKILL.md +107 -0
  72. package/dist/skills/agnostic/quality/tdd/deep-modules.md +33 -0
  73. package/dist/skills/agnostic/quality/tdd/interface-design.md +31 -0
  74. package/dist/skills/agnostic/quality/tdd/mocking.md +59 -0
  75. package/dist/skills/agnostic/quality/tdd/refactoring.md +10 -0
  76. package/dist/skills/agnostic/quality/tdd/tests.md +61 -0
  77. package/dist/skills/agnostic/requirements/requirements-grill/SKILL.md +42 -0
  78. package/dist/skills/agnostic/requirements/requirements-grill/references/artifact-output.md +73 -0
  79. package/dist/skills/agnostic/requirements/requirements-grill/references/grilling-flow.md +57 -0
  80. package/dist/skills/agnostic/requirements/requirements-grill/references/wiki-output.md +94 -0
  81. package/dist/skills/agnostic/requirements/write-backlog/EXAMPLES.md +67 -0
  82. package/dist/skills/agnostic/requirements/write-backlog/REFERENCE.md +253 -0
  83. package/dist/skills/agnostic/requirements/write-backlog/SKILL.md +68 -0
  84. package/dist/skills/agnostic/requirements/write-backlog/assets/concepts/backlog-model.md +69 -0
  85. package/dist/skills/agnostic/requirements/write-backlog/assets/concepts/story-shape.md +66 -0
  86. package/dist/skills/agnostic/requirements/write-backlog/assets/providers/azure-devops-create-payload.md +63 -0
  87. package/dist/skills/agnostic/requirements/write-backlog/assets/providers/github-issues-create-payload.md +48 -0
  88. package/dist/skills/agnostic/requirements/write-backlog/assets/providers/linear-create-payload.md +76 -0
  89. package/dist/skills/agnostic/research/improve-codebase-architecture/REFERENCE.md +78 -0
  90. package/dist/skills/agnostic/research/improve-codebase-architecture/SKILL.md +76 -0
  91. package/dist/skills/agnostic/research/parallel-research/SKILL.md +68 -0
  92. package/dist/skills/agnostic/research/parallel-research/agents/openai.yaml +4 -0
  93. package/dist/skills/agnostic/subagents/swarm-planner/SKILL.md +179 -0
  94. package/dist/skills/agnostic/write-a-skill/SKILL.md +117 -0
  95. package/dist/skills/frameworks/better-auth/better-auth-best-practices/SKILL.md +166 -0
  96. package/dist/skills/frameworks/better-auth/better-auth-security-best-practices/SKILL.MD +432 -0
  97. package/dist/skills/frameworks/effect/effect-authoring/SKILL.md +116 -0
  98. package/dist/skills/frameworks/effect/effect-authoring/references/branded-types.md +98 -0
  99. package/dist/skills/frameworks/effect/effect-authoring/references/effect-atom-patterns.md +257 -0
  100. package/dist/skills/frameworks/effect/effect-authoring/references/effect-primitives.md +144 -0
  101. package/dist/skills/frameworks/effect/effect-authoring/references/error-patterns.md +156 -0
  102. package/dist/skills/frameworks/effect/effect-authoring/references/otel-patterns.md +113 -0
  103. package/dist/skills/frameworks/effect/effect-authoring/references/test-patterns.md +146 -0
  104. package/dist/skills/frameworks/effect/effect-backend-structure/SKILL.md +96 -0
  105. package/dist/skills/frameworks/effect/effect-backend-structure/agents/openai.yaml +4 -0
  106. package/dist/skills/frameworks/effect/effect-backend-structure/references/layout.md +68 -0
  107. package/dist/skills/frameworks/effect/effect-best-practices/SKILL.md +517 -0
  108. package/dist/skills/frameworks/effect/effect-best-practices/references/anti-patterns.md +392 -0
  109. package/dist/skills/frameworks/effect/effect-best-practices/references/effect-atom-patterns.md +653 -0
  110. package/dist/skills/frameworks/effect/effect-best-practices/references/error-patterns.md +464 -0
  111. package/dist/skills/frameworks/effect/effect-best-practices/references/language-server.md +287 -0
  112. package/dist/skills/frameworks/effect/effect-best-practices/references/layer-patterns.md +495 -0
  113. package/dist/skills/frameworks/effect/effect-best-practices/references/observability-patterns.md +342 -0
  114. package/dist/skills/frameworks/effect/effect-best-practices/references/rpc-cluster-patterns.md +418 -0
  115. package/dist/skills/frameworks/effect/effect-best-practices/references/schema-patterns.md +353 -0
  116. package/dist/skills/frameworks/effect/effect-best-practices/references/service-patterns.md +299 -0
  117. package/dist/skills/frameworks/effect/effect-recoverable-actions/SKILL.md +65 -0
  118. package/dist/skills/frameworks/effect/effect-recoverable-actions/agents/openai.yaml +4 -0
  119. package/dist/skills/frameworks/effect/effect-recoverable-actions/references/flow-examples.md +154 -0
  120. package/dist/skills/frameworks/effect/effect-recoverable-actions/references/source-backed-primitives.md +104 -0
  121. package/dist/skills/frameworks/effect/effect-recoverable-actions/references/strategy-matrix.md +34 -0
  122. package/dist/skills/frameworks/effect/effect-recoverable-actions/references/test-matrix.md +36 -0
  123. package/dist/skills/frameworks/elysia/elysiajs/SKILL.md +475 -0
  124. package/dist/skills/frameworks/elysia/elysiajs/examples/basic.ts +9 -0
  125. package/dist/skills/frameworks/elysia/elysiajs/examples/body-parser.ts +33 -0
  126. package/dist/skills/frameworks/elysia/elysiajs/examples/complex.ts +112 -0
  127. package/dist/skills/frameworks/elysia/elysiajs/examples/cookie.ts +45 -0
  128. package/dist/skills/frameworks/elysia/elysiajs/examples/error.ts +38 -0
  129. package/dist/skills/frameworks/elysia/elysiajs/examples/file.ts +10 -0
  130. package/dist/skills/frameworks/elysia/elysiajs/examples/guard.ts +34 -0
  131. package/dist/skills/frameworks/elysia/elysiajs/examples/map-response.ts +15 -0
  132. package/dist/skills/frameworks/elysia/elysiajs/examples/redirect.ts +6 -0
  133. package/dist/skills/frameworks/elysia/elysiajs/examples/rename.ts +32 -0
  134. package/dist/skills/frameworks/elysia/elysiajs/examples/schema.ts +61 -0
  135. package/dist/skills/frameworks/elysia/elysiajs/examples/state.ts +6 -0
  136. package/dist/skills/frameworks/elysia/elysiajs/examples/upload-file.ts +20 -0
  137. package/dist/skills/frameworks/elysia/elysiajs/examples/websocket.ts +25 -0
  138. package/dist/skills/frameworks/elysia/elysiajs/integrations/ai-sdk.md +92 -0
  139. package/dist/skills/frameworks/elysia/elysiajs/integrations/astro.md +59 -0
  140. package/dist/skills/frameworks/elysia/elysiajs/integrations/better-auth.md +117 -0
  141. package/dist/skills/frameworks/elysia/elysiajs/integrations/cloudflare-worker.md +95 -0
  142. package/dist/skills/frameworks/elysia/elysiajs/integrations/deno.md +34 -0
  143. package/dist/skills/frameworks/elysia/elysiajs/integrations/drizzle.md +258 -0
  144. package/dist/skills/frameworks/elysia/elysiajs/integrations/expo.md +95 -0
  145. package/dist/skills/frameworks/elysia/elysiajs/integrations/nextjs.md +103 -0
  146. package/dist/skills/frameworks/elysia/elysiajs/integrations/nodejs.md +64 -0
  147. package/dist/skills/frameworks/elysia/elysiajs/integrations/nuxt.md +67 -0
  148. package/dist/skills/frameworks/elysia/elysiajs/integrations/prisma.md +93 -0
  149. package/dist/skills/frameworks/elysia/elysiajs/integrations/react-email.md +134 -0
  150. package/dist/skills/frameworks/elysia/elysiajs/integrations/sveltekit.md +53 -0
  151. package/dist/skills/frameworks/elysia/elysiajs/integrations/tanstack-start.md +87 -0
  152. package/dist/skills/frameworks/elysia/elysiajs/integrations/vercel.md +55 -0
  153. package/dist/skills/frameworks/elysia/elysiajs/patterns/mvc.md +380 -0
  154. package/dist/skills/frameworks/elysia/elysiajs/plugins/bearer.md +30 -0
  155. package/dist/skills/frameworks/elysia/elysiajs/plugins/cors.md +141 -0
  156. package/dist/skills/frameworks/elysia/elysiajs/plugins/cron.md +265 -0
  157. package/dist/skills/frameworks/elysia/elysiajs/plugins/graphql-apollo.md +90 -0
  158. package/dist/skills/frameworks/elysia/elysiajs/plugins/graphql-yoga.md +87 -0
  159. package/dist/skills/frameworks/elysia/elysiajs/plugins/html.md +188 -0
  160. package/dist/skills/frameworks/elysia/elysiajs/plugins/jwt.md +197 -0
  161. package/dist/skills/frameworks/elysia/elysiajs/plugins/openapi.md +246 -0
  162. package/dist/skills/frameworks/elysia/elysiajs/plugins/opentelemetry.md +167 -0
  163. package/dist/skills/frameworks/elysia/elysiajs/plugins/server-timing.md +71 -0
  164. package/dist/skills/frameworks/elysia/elysiajs/plugins/static.md +84 -0
  165. package/dist/skills/frameworks/elysia/elysiajs/references/bun-fullstack-dev-server.md +129 -0
  166. package/dist/skills/frameworks/elysia/elysiajs/references/cookie.md +187 -0
  167. package/dist/skills/frameworks/elysia/elysiajs/references/deployment.md +413 -0
  168. package/dist/skills/frameworks/elysia/elysiajs/references/eden.md +158 -0
  169. package/dist/skills/frameworks/elysia/elysiajs/references/lifecycle.md +198 -0
  170. package/dist/skills/frameworks/elysia/elysiajs/references/macro.md +83 -0
  171. package/dist/skills/frameworks/elysia/elysiajs/references/plugin.md +207 -0
  172. package/dist/skills/frameworks/elysia/elysiajs/references/route.md +331 -0
  173. package/dist/skills/frameworks/elysia/elysiajs/references/testing.md +385 -0
  174. package/dist/skills/frameworks/elysia/elysiajs/references/validation.md +491 -0
  175. package/dist/skills/frameworks/elysia/elysiajs/references/websocket.md +250 -0
  176. package/dist/skills/frameworks/nestjs/nestjs-best-practices/.github/workflows/branch-protection.yml +24 -0
  177. package/dist/skills/frameworks/nestjs/nestjs-best-practices/.github/workflows/deploy.yml +61 -0
  178. package/dist/skills/frameworks/nestjs/nestjs-best-practices/AGENTS.md +5958 -0
  179. package/dist/skills/frameworks/nestjs/nestjs-best-practices/SKILL.md +130 -0
  180. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/api-use-dto-serialization.md +182 -0
  181. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/api-use-interceptors.md +202 -0
  182. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/api-use-pipes.md +205 -0
  183. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/api-versioning.md +191 -0
  184. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-avoid-circular-deps.md +80 -0
  185. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-feature-modules.md +82 -0
  186. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-module-sharing.md +141 -0
  187. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-single-responsibility.md +106 -0
  188. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-use-events.md +108 -0
  189. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-use-repository-pattern.md +97 -0
  190. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/db-avoid-n-plus-one.md +139 -0
  191. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/db-use-migrations.md +129 -0
  192. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/db-use-transactions.md +140 -0
  193. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/devops-graceful-shutdown.md +222 -0
  194. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/devops-use-config-module.md +167 -0
  195. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/devops-use-logging.md +232 -0
  196. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-avoid-service-locator.md +104 -0
  197. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-interface-segregation.md +165 -0
  198. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-liskov-substitution.md +221 -0
  199. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-prefer-constructor-injection.md +86 -0
  200. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-scope-awareness.md +94 -0
  201. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-use-interfaces-tokens.md +101 -0
  202. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/error-handle-async-errors.md +125 -0
  203. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/error-throw-http-exceptions.md +114 -0
  204. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/error-use-exception-filters.md +140 -0
  205. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/micro-use-health-checks.md +226 -0
  206. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/micro-use-patterns.md +167 -0
  207. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/micro-use-queues.md +252 -0
  208. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/perf-async-hooks.md +109 -0
  209. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/perf-lazy-loading.md +121 -0
  210. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/perf-optimize-database.md +131 -0
  211. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/perf-use-caching.md +128 -0
  212. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-auth-jwt.md +146 -0
  213. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-rate-limiting.md +125 -0
  214. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-sanitize-output.md +139 -0
  215. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-use-guards.md +135 -0
  216. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-validate-all-input.md +150 -0
  217. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/test-e2e-supertest.md +178 -0
  218. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/test-mock-external-services.md +179 -0
  219. package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/test-use-testing-module.md +153 -0
  220. package/dist/skills/frameworks/nestjs/nestjs-best-practices/scripts/build-agents.ts +299 -0
  221. package/dist/skills/frameworks/nestjs/nestjs-best-practices/scripts/build.sh +16 -0
  222. package/dist/skills/frameworks/nestjs/nestjs-best-practices/scripts/package-lock.json +237 -0
  223. package/dist/skills/frameworks/nestjs/nestjs-best-practices/scripts/package.json +15 -0
  224. package/dist/skills/frameworks/nestjs/nestjs-expert/SKILL.md +208 -0
  225. package/dist/skills/frameworks/nestjs/nestjs-expert/references/authentication.md +166 -0
  226. package/dist/skills/frameworks/nestjs/nestjs-expert/references/controllers-routing.md +111 -0
  227. package/dist/skills/frameworks/nestjs/nestjs-expert/references/dtos-validation.md +153 -0
  228. package/dist/skills/frameworks/nestjs/nestjs-expert/references/migration-from-express.md +1237 -0
  229. package/dist/skills/frameworks/nestjs/nestjs-expert/references/services-di.md +140 -0
  230. package/dist/skills/frameworks/nestjs/nestjs-expert/references/testing-patterns.md +186 -0
  231. package/dist/skills/frameworks/nextjs/next-best-practices/SKILL.md +153 -0
  232. package/dist/skills/frameworks/nextjs/next-best-practices/async-patterns.md +87 -0
  233. package/dist/skills/frameworks/nextjs/next-best-practices/bundling.md +180 -0
  234. package/dist/skills/frameworks/nextjs/next-best-practices/data-patterns.md +297 -0
  235. package/dist/skills/frameworks/nextjs/next-best-practices/debug-tricks.md +105 -0
  236. package/dist/skills/frameworks/nextjs/next-best-practices/directives.md +73 -0
  237. package/dist/skills/frameworks/nextjs/next-best-practices/error-handling.md +227 -0
  238. package/dist/skills/frameworks/nextjs/next-best-practices/file-conventions.md +140 -0
  239. package/dist/skills/frameworks/nextjs/next-best-practices/font.md +245 -0
  240. package/dist/skills/frameworks/nextjs/next-best-practices/functions.md +108 -0
  241. package/dist/skills/frameworks/nextjs/next-best-practices/hydration-error.md +91 -0
  242. package/dist/skills/frameworks/nextjs/next-best-practices/image.md +173 -0
  243. package/dist/skills/frameworks/nextjs/next-best-practices/metadata.md +301 -0
  244. package/dist/skills/frameworks/nextjs/next-best-practices/parallel-routes.md +287 -0
  245. package/dist/skills/frameworks/nextjs/next-best-practices/route-handlers.md +146 -0
  246. package/dist/skills/frameworks/nextjs/next-best-practices/rsc-boundaries.md +159 -0
  247. package/dist/skills/frameworks/nextjs/next-best-practices/runtime-selection.md +39 -0
  248. package/dist/skills/frameworks/nextjs/next-best-practices/scripts.md +141 -0
  249. package/dist/skills/frameworks/nextjs/next-best-practices/self-hosting.md +371 -0
  250. package/dist/skills/frameworks/nextjs/next-best-practices/suspense-boundaries.md +67 -0
  251. package/dist/skills/frameworks/nextjs/next-cache-components/SKILL.md +360 -0
  252. package/dist/skills/frameworks/react/async-react-patterns/SKILL.md +78 -0
  253. package/dist/skills/frameworks/react/vercel-composition-patterns/AGENTS.md +946 -0
  254. package/dist/skills/frameworks/react/vercel-composition-patterns/SKILL.md +89 -0
  255. package/dist/skills/frameworks/react/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  256. package/dist/skills/frameworks/react/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
  257. package/dist/skills/frameworks/react/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  258. package/dist/skills/frameworks/react/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  259. package/dist/skills/frameworks/react/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  260. package/dist/skills/frameworks/react/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  261. package/dist/skills/frameworks/react/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
  262. package/dist/skills/frameworks/react/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  263. package/dist/skills/frameworks/react/vercel-react-best-practices/AGENTS.md +3750 -0
  264. package/dist/skills/frameworks/react/vercel-react-best-practices/SKILL.md +148 -0
  265. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  266. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  267. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  268. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  269. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  270. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  271. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-defer-await.md +82 -0
  272. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  273. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-parallel.md +28 -0
  274. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  275. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  276. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  277. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  278. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  279. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  280. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  281. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  282. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  283. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  284. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  285. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  286. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  287. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  288. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  289. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  290. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
  291. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  292. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  293. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  294. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  295. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
  296. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  297. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  298. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  299. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  300. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  301. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  302. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  303. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  304. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  305. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
  306. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  307. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  308. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  309. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  310. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  311. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  312. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  313. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  314. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  315. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  316. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  317. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  318. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  319. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  320. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  321. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  322. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  323. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  324. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  325. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  326. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  327. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  328. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  329. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
  330. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
  331. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  332. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  333. package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-serialization.md +38 -0
  334. package/dist/skills/frameworks/tanstack-query/tanstack-query/.claude-plugin/plugin.json +12 -0
  335. package/dist/skills/frameworks/tanstack-query/tanstack-query/SKILL.md +1058 -0
  336. package/dist/skills/frameworks/tanstack-query/tanstack-query/assets/example-template.txt +14 -0
  337. package/dist/skills/frameworks/tanstack-query/tanstack-query/references/best-practices.md +304 -0
  338. package/dist/skills/frameworks/tanstack-query/tanstack-query/references/common-patterns.md +271 -0
  339. package/dist/skills/frameworks/tanstack-query/tanstack-query/references/example-reference.md +26 -0
  340. package/dist/skills/frameworks/tanstack-query/tanstack-query/references/testing.md +282 -0
  341. package/dist/skills/frameworks/tanstack-query/tanstack-query/references/top-errors.md +332 -0
  342. package/dist/skills/frameworks/tanstack-query/tanstack-query/references/typescript-patterns.md +291 -0
  343. package/dist/skills/frameworks/tanstack-query/tanstack-query/references/v4-to-v5-migration.md +231 -0
  344. package/dist/skills/frameworks/tanstack-query/tanstack-query/rules/tanstack-query.md +126 -0
  345. package/dist/skills/frameworks/tanstack-query/tanstack-query/scripts/example-script.sh +15 -0
  346. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/custom-hooks-pattern.tsx +281 -0
  347. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/devtools-setup.tsx +248 -0
  348. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/error-boundary.tsx +243 -0
  349. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/package.json +31 -0
  350. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/provider-setup.tsx +50 -0
  351. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/query-client-config.ts +72 -0
  352. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/use-infinite-query.tsx +214 -0
  353. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/use-mutation-basic.tsx +201 -0
  354. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/use-mutation-optimistic.tsx +234 -0
  355. package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/use-query-basic.tsx +119 -0
  356. package/dist/skills/frameworks/trpc/tanstack-query/.claude-plugin/plugin.json +12 -0
  357. package/dist/skills/frameworks/trpc/tanstack-query/SKILL.md +1058 -0
  358. package/dist/skills/frameworks/trpc/tanstack-query/assets/example-template.txt +14 -0
  359. package/dist/skills/frameworks/trpc/tanstack-query/references/best-practices.md +304 -0
  360. package/dist/skills/frameworks/trpc/tanstack-query/references/common-patterns.md +271 -0
  361. package/dist/skills/frameworks/trpc/tanstack-query/references/example-reference.md +26 -0
  362. package/dist/skills/frameworks/trpc/tanstack-query/references/testing.md +282 -0
  363. package/dist/skills/frameworks/trpc/tanstack-query/references/top-errors.md +332 -0
  364. package/dist/skills/frameworks/trpc/tanstack-query/references/typescript-patterns.md +291 -0
  365. package/dist/skills/frameworks/trpc/tanstack-query/references/v4-to-v5-migration.md +231 -0
  366. package/dist/skills/frameworks/trpc/tanstack-query/rules/tanstack-query.md +126 -0
  367. package/dist/skills/frameworks/trpc/tanstack-query/scripts/example-script.sh +15 -0
  368. package/dist/skills/frameworks/trpc/tanstack-query/templates/custom-hooks-pattern.tsx +281 -0
  369. package/dist/skills/frameworks/trpc/tanstack-query/templates/devtools-setup.tsx +248 -0
  370. package/dist/skills/frameworks/trpc/tanstack-query/templates/error-boundary.tsx +243 -0
  371. package/dist/skills/frameworks/trpc/tanstack-query/templates/package.json +31 -0
  372. package/dist/skills/frameworks/trpc/tanstack-query/templates/provider-setup.tsx +50 -0
  373. package/dist/skills/frameworks/trpc/tanstack-query/templates/query-client-config.ts +72 -0
  374. package/dist/skills/frameworks/trpc/tanstack-query/templates/use-infinite-query.tsx +214 -0
  375. package/dist/skills/frameworks/trpc/tanstack-query/templates/use-mutation-basic.tsx +201 -0
  376. package/dist/skills/frameworks/trpc/tanstack-query/templates/use-mutation-optimistic.tsx +234 -0
  377. package/dist/skills/frameworks/trpc/tanstack-query/templates/use-query-basic.tsx +119 -0
  378. package/dist/skills/frameworks/turborepo/turborepo/SKILL.md +914 -0
  379. package/dist/skills/frameworks/turborepo/turborepo/command/turborepo.md +70 -0
  380. package/dist/skills/frameworks/turborepo/turborepo/references/best-practices/RULE.md +241 -0
  381. package/dist/skills/frameworks/turborepo/turborepo/references/best-practices/dependencies.md +246 -0
  382. package/dist/skills/frameworks/turborepo/turborepo/references/best-practices/packages.md +335 -0
  383. package/dist/skills/frameworks/turborepo/turborepo/references/best-practices/structure.md +270 -0
  384. package/dist/skills/frameworks/turborepo/turborepo/references/boundaries/RULE.md +126 -0
  385. package/dist/skills/frameworks/turborepo/turborepo/references/caching/RULE.md +107 -0
  386. package/dist/skills/frameworks/turborepo/turborepo/references/caching/gotchas.md +169 -0
  387. package/dist/skills/frameworks/turborepo/turborepo/references/caching/remote-cache.md +127 -0
  388. package/dist/skills/frameworks/turborepo/turborepo/references/ci/RULE.md +79 -0
  389. package/dist/skills/frameworks/turborepo/turborepo/references/ci/github-actions.md +162 -0
  390. package/dist/skills/frameworks/turborepo/turborepo/references/ci/patterns.md +145 -0
  391. package/dist/skills/frameworks/turborepo/turborepo/references/ci/vercel.md +103 -0
  392. package/dist/skills/frameworks/turborepo/turborepo/references/cli/RULE.md +100 -0
  393. package/dist/skills/frameworks/turborepo/turborepo/references/cli/commands.md +297 -0
  394. package/dist/skills/frameworks/turborepo/turborepo/references/configuration/RULE.md +211 -0
  395. package/dist/skills/frameworks/turborepo/turborepo/references/configuration/global-options.md +187 -0
  396. package/dist/skills/frameworks/turborepo/turborepo/references/configuration/gotchas.md +348 -0
  397. package/dist/skills/frameworks/turborepo/turborepo/references/configuration/tasks.md +285 -0
  398. package/dist/skills/frameworks/turborepo/turborepo/references/environment/RULE.md +96 -0
  399. package/dist/skills/frameworks/turborepo/turborepo/references/environment/gotchas.md +141 -0
  400. package/dist/skills/frameworks/turborepo/turborepo/references/environment/modes.md +101 -0
  401. package/dist/skills/frameworks/turborepo/turborepo/references/filtering/RULE.md +148 -0
  402. package/dist/skills/frameworks/turborepo/turborepo/references/filtering/patterns.md +152 -0
  403. package/dist/skills/frameworks/turborepo/turborepo/references/watch/RULE.md +99 -0
  404. package/dist/tsconfig.tsbuildinfo +1 -0
  405. package/docs/README.md +20 -0
  406. package/docs/reference/dp-requirements.md +210 -0
  407. package/docs/runbooks/dp-cli-scaffolding.md +187 -0
  408. package/package.json +24 -50
  409. package/.eslintignore +0 -4
  410. package/.eslintrc +0 -127
  411. package/.prettierignore +0 -4
  412. package/.prettierrc +0 -7
  413. package/bin/abstractions/builder.d.ts +0 -4
  414. package/bin/abstractions/builder.js +0 -7
  415. package/bin/builders/dotnet/base.d.ts +0 -18
  416. package/bin/builders/dotnet/base.js +0 -47
  417. package/bin/builders/dotnet/entity-configuration/index.d.ts +0 -8
  418. package/bin/builders/dotnet/entity-configuration/index.js +0 -29
  419. package/bin/builders/dotnet/entity-converter/index.d.ts +0 -8
  420. package/bin/builders/dotnet/entity-converter/index.js +0 -29
  421. package/bin/builders/dotnet/entity-model-create/index.d.ts +0 -8
  422. package/bin/builders/dotnet/entity-model-create/index.js +0 -29
  423. package/bin/builders/dotnet/entity-model-dto/index.d.ts +0 -8
  424. package/bin/builders/dotnet/entity-model-dto/index.js +0 -29
  425. package/bin/builders/dotnet/entity-model-list-item-dto/index.d.ts +0 -8
  426. package/bin/builders/dotnet/entity-model-list-item-dto/index.js +0 -29
  427. package/bin/builders/dotnet/entity-model-update/index.d.ts +0 -8
  428. package/bin/builders/dotnet/entity-model-update/index.js +0 -29
  429. package/bin/builders/dotnet/entity-search-parameters/index.d.ts +0 -8
  430. package/bin/builders/dotnet/entity-search-parameters/index.js +0 -29
  431. package/bin/builders/dotnet/entity-search-query-builder/index.d.ts +0 -8
  432. package/bin/builders/dotnet/entity-search-query-builder/index.js +0 -29
  433. package/bin/builders/dotnet/firestore-connector/index.d.ts +0 -8
  434. package/bin/builders/dotnet/firestore-connector/index.js +0 -29
  435. package/bin/builders/dotnet/firestore-mapper/index.d.ts +0 -8
  436. package/bin/builders/dotnet/firestore-mapper/index.js +0 -29
  437. package/bin/builders/dotnet/types.d.ts +0 -10
  438. package/bin/builders/dotnet/types.js +0 -3
  439. package/bin/commands/entity-add/__test__/dotnet/common.d.ts +0 -2
  440. package/bin/commands/entity-add/__test__/dotnet/common.js +0 -11
  441. package/bin/commands/entity-add/__test__/dotnet/render.configuration.spec.d.ts +0 -1
  442. package/bin/commands/entity-add/__test__/dotnet/render.configuration.spec.js +0 -22
  443. package/bin/commands/entity-add/__test__/dotnet/render.converter.spec.d.ts +0 -1
  444. package/bin/commands/entity-add/__test__/dotnet/render.converter.spec.js +0 -22
  445. package/bin/commands/entity-add/__test__/dotnet/render.firestore-connector.spec.d.ts +0 -1
  446. package/bin/commands/entity-add/__test__/dotnet/render.firestore-connector.spec.js +0 -22
  447. package/bin/commands/entity-add/__test__/dotnet/render.firestore-mapper.spec.d.ts +0 -1
  448. package/bin/commands/entity-add/__test__/dotnet/render.firestore-mapper.spec.js +0 -22
  449. package/bin/commands/entity-add/__test__/dotnet/render.model-create.spec.d.ts +0 -1
  450. package/bin/commands/entity-add/__test__/dotnet/render.model-create.spec.js +0 -22
  451. package/bin/commands/entity-add/__test__/dotnet/render.model-dto.spec.d.ts +0 -1
  452. package/bin/commands/entity-add/__test__/dotnet/render.model-dto.spec.js +0 -22
  453. package/bin/commands/entity-add/__test__/dotnet/render.model-list-item-dto.spec.d.ts +0 -1
  454. package/bin/commands/entity-add/__test__/dotnet/render.model-list-item-dto.spec.js +0 -22
  455. package/bin/commands/entity-add/__test__/dotnet/render.model-update.spec.d.ts +0 -1
  456. package/bin/commands/entity-add/__test__/dotnet/render.model-update.spec.js +0 -22
  457. package/bin/commands/entity-add/__test__/dotnet/render.search-parameters.spec.d.ts +0 -1
  458. package/bin/commands/entity-add/__test__/dotnet/render.search-parameters.spec.js +0 -22
  459. package/bin/commands/entity-add/__test__/dotnet/render.search-query.spec.d.ts +0 -1
  460. package/bin/commands/entity-add/__test__/dotnet/render.search-query.spec.js +0 -22
  461. package/bin/commands/entity-add/index.d.ts +0 -26
  462. package/bin/commands/entity-add/index.js +0 -44
  463. package/bin/logging/index.d.ts +0 -8
  464. package/bin/logging/index.js +0 -28
  465. package/bin/providers/rendering/base.d.ts +0 -3
  466. package/bin/providers/rendering/base.js +0 -7
  467. package/bin/providers/rendering/factory.d.ts +0 -5
  468. package/bin/providers/rendering/factory.js +0 -16
  469. package/bin/providers/rendering/handlebars.d.ts +0 -4
  470. package/bin/providers/rendering/handlebars.js +0 -16
  471. package/bin/renderer/index.d.ts +0 -6
  472. package/bin/renderer/index.js +0 -27
  473. package/bin/run.d.ts +0 -2
  474. package/bin/run.js +0 -70
  475. package/bin/services/folders.d.ts +0 -1
  476. package/bin/services/folders.js +0 -31
  477. package/bin/types/commands.d.ts +0 -5
  478. package/bin/types/commands.js +0 -3
  479. package/bin/utils/collections.d.ts +0 -1
  480. package/bin/utils/collections.js +0 -6
  481. package/bin/utils/files.d.ts +0 -3
  482. package/bin/utils/files.js +0 -19
  483. package/bin/utils/strings.d.ts +0 -4
  484. package/bin/utils/strings.js +0 -22
  485. package/bin/utils/text.d.ts +0 -1
  486. package/bin/utils/text.js +0 -8
  487. package/em-cli +0 -0
  488. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.configuration.spec.ts.snap +0 -49
  489. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.converter.spec.ts.snap +0 -53
  490. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-connector.spec.ts.snap +0 -20
  491. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-mapper.spec.ts.snap +0 -29
  492. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-create.spec.ts.snap +0 -10
  493. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-dto.spec.ts.snap +0 -9
  494. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-list-item-dto.spec.ts.snap +0 -11
  495. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-update.spec.ts.snap +0 -11
  496. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-parameters.spec.ts.snap +0 -29
  497. package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-query.spec.ts.snap +0 -42
  498. package/templates/dotnet/NewEntity/Configuration/<PluralizedEntity>Configuration.cs.template +0 -48
  499. package/templates/dotnet/NewEntity/Connectors/<PluralizedEntity>FirestoreConnector.cs.template +0 -15
  500. package/templates/dotnet/NewEntity/Converters/<PluralizedEntity>Converter.cs.template +0 -48
  501. package/templates/dotnet/NewEntity/Mappers/<PluralizedEntity>FirestoreMapper.cs.template +0 -25
  502. package/templates/dotnet/NewEntity/Models/<Entity>CreateInput.cs.template +0 -6
  503. package/templates/dotnet/NewEntity/Models/<Entity>Dto.cs.template +0 -5
  504. package/templates/dotnet/NewEntity/Models/<Entity>ListItemDto.cs.template +0 -6
  505. package/templates/dotnet/NewEntity/Models/<Entity>UpdateInput.cs.template +0 -6
  506. package/templates/dotnet/NewEntity/Search/<PluralizedEntity>QueryBuilder.cs.template +0 -38
  507. package/templates/dotnet/NewEntity/Search/<PluralizedEntity>SearchParameters.cs.template +0 -24
  508. package/tsconfig.json +0 -25
@@ -0,0 +1,420 @@
1
+ import {
2
+ lstat,
3
+ mkdir,
4
+ readFile,
5
+ readdir,
6
+ readlink,
7
+ rm,
8
+ symlink,
9
+ writeFile,
10
+ } from "node:fs/promises";
11
+ import path from "node:path";
12
+ import { fileURLToPath } from "node:url";
13
+
14
+ import { agents, capabilityPacks } from "../subagents/manifest.mjs";
15
+
16
+ const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
17
+ const sharedAgentsPath = path.join(repoRoot, ".agents/AGENTS.md");
18
+ const sharedSkillsPath = path.join(repoRoot, ".agents/skills");
19
+ const sharedHooksPath = path.join(repoRoot, ".agents/hooks");
20
+
21
+ const codexDir = path.join(repoRoot, ".codex");
22
+ const codexAgentsDir = path.join(codexDir, "agents");
23
+ const codexHooksDir = path.join(codexDir, "hooks");
24
+ const codexConfigPath = path.join(codexDir, "config.toml");
25
+ const codexAgentsMirrorPath = path.join(codexDir, "AGENTS.md");
26
+
27
+ const claudeDir = path.join(repoRoot, ".claude");
28
+ const claudeAgentsDir = path.join(claudeDir, "agents");
29
+ const claudeHooksDir = path.join(claudeDir, "hooks");
30
+ const claudeSettingsPath = path.join(claudeDir, "settings.json");
31
+ const claudeAgentsMirrorPath = path.join(claudeDir, "CLAUDE.md");
32
+ const claudeSkillsMirrorPath = path.join(claudeDir, "skills");
33
+
34
+ const cursorDir = path.join(repoRoot, ".cursor");
35
+ const cursorAgentsDir = path.join(cursorDir, "agents");
36
+ const cursorHooksDir = path.join(cursorDir, "hooks");
37
+ const cursorHooksJsonPath = path.join(cursorDir, "hooks.json");
38
+
39
+ const opencodeDir = path.join(repoRoot, ".opencode");
40
+ const opencodeAgentsDir = path.join(opencodeDir, "agents");
41
+ const opencodePluginsDir = path.join(opencodeDir, "plugins");
42
+ const opencodeAgentsMirrorPath = path.join(opencodeDir, "AGENTS.md");
43
+
44
+ const managedHeader = [
45
+ "# Generated by scripts/sync-subagents.mjs.",
46
+ "# Do not edit by hand; update .agents/subagents/manifest.mjs and re-run sync.",
47
+ ].join("\n");
48
+ const claudeManagedComment =
49
+ "<!-- Generated by scripts/sync-subagents.mjs. Edit .agents/subagents/manifest.mjs instead. -->";
50
+ const cursorManagedComment =
51
+ "<!-- Generated by scripts/sync-subagents.mjs. Edit .agents/subagents/manifest.mjs instead. -->";
52
+ const opencodeManagedComment =
53
+ "<!-- Generated by scripts/sync-subagents.mjs. Edit .agents/subagents/manifest.mjs instead. -->";
54
+
55
+ const codexAgentConfig = [
56
+ "[agents]",
57
+ "max_threads = 6",
58
+ "max_depth = 1",
59
+ "",
60
+ "[features]",
61
+ "codex_hooks = true",
62
+ "",
63
+ "[hooks]",
64
+ "SessionStart = [",
65
+ ' { matcher = "startup|resume", hooks = [',
66
+ ' { type = "command", command = "node \\"$(git rev-parse --show-toplevel)/.codex/hooks/format-edited-file.mjs\\" session-start", statusMessage = "Capturing edited-file baseline", timeout = 30 },',
67
+ " ] },",
68
+ "]",
69
+ "PreToolUse = [",
70
+ ' { matcher = "Bash|.*[Pp]ull.?[Rr]equest.*|.*[Pp][Rr].?[Cc]reate.*|.*create[_-]?pull[_-]?request.*", hooks = [',
71
+ ' { type = "command", command = "node \\"$(git rev-parse --show-toplevel)/.codex/hooks/require-tests-for-pr.mjs\\" codex", statusMessage = "Checking tests before PR creation", timeout = 600 },',
72
+ " ] },",
73
+ "]",
74
+ "PostToolUse = [",
75
+ ' { matcher = "Bash|apply_patch|.*apply.?patch.*|edit|write|multiedit", hooks = [',
76
+ ' { type = "command", command = "node \\"$(git rev-parse --show-toplevel)/.codex/hooks/format-edited-file.mjs\\" post", statusMessage = "Auto-formatting edited files", timeout = 30 },',
77
+ " ] },",
78
+ "]",
79
+ "",
80
+ ].join("\n");
81
+
82
+ const claudeSettingsConfig = {
83
+ hooks: {
84
+ PreToolUse: [
85
+ {
86
+ matcher: "mcp__github__create_pull_request",
87
+ hooks: [
88
+ {
89
+ type: "command",
90
+ command: 'node "$CLAUDE_PROJECT_DIR"/.claude/hooks/require-tests-for-pr.mjs claude',
91
+ timeout: 600,
92
+ },
93
+ ],
94
+ },
95
+ {
96
+ matcher: "Bash",
97
+ hooks: [
98
+ {
99
+ type: "command",
100
+ command: 'node "$CLAUDE_PROJECT_DIR"/.claude/hooks/require-tests-for-pr.mjs claude',
101
+ timeout: 600,
102
+ },
103
+ ],
104
+ },
105
+ ],
106
+ PostToolUse: [
107
+ {
108
+ matcher: "Edit|Write|MultiEdit",
109
+ hooks: [
110
+ {
111
+ type: "command",
112
+ command: 'node "$CLAUDE_PROJECT_DIR"/.claude/hooks/format-edited-file.mjs claude',
113
+ timeout: 30,
114
+ },
115
+ ],
116
+ },
117
+ ],
118
+ },
119
+ };
120
+
121
+ const cursorHooksConfig = {
122
+ version: 1,
123
+ hooks: {
124
+ beforeMCPExecution: [
125
+ {
126
+ command: "node .cursor/hooks/require-tests-for-pr.mjs cursor",
127
+ },
128
+ ],
129
+ beforeShellExecution: [
130
+ {
131
+ command: "node .cursor/hooks/require-tests-for-pr.mjs cursor",
132
+ },
133
+ ],
134
+ afterFileEdit: [
135
+ {
136
+ command: "node .cursor/hooks/format-edited-file.mjs cursor",
137
+ },
138
+ ],
139
+ },
140
+ };
141
+
142
+ function getSkillNames(agent) {
143
+ if (Array.isArray(agent.skills)) {
144
+ return [...new Set(agent.skills)];
145
+ }
146
+
147
+ return [...new Set(agent.packs.flatMap((pack) => capabilityPacks[pack].skills))];
148
+ }
149
+
150
+ function formatList(items) {
151
+ return items.map((item) => `- ${item}`).join("\n");
152
+ }
153
+
154
+ function relativeSkillPath(skillName) {
155
+ const absoluteSkillDir = path.join(sharedSkillsPath, skillName);
156
+ return path.relative(codexAgentsDir, absoluteSkillDir);
157
+ }
158
+
159
+ function yamlString(value) {
160
+ return JSON.stringify(value);
161
+ }
162
+
163
+ function encodeJson(value) {
164
+ return `${JSON.stringify(value, null, 2)}\n`;
165
+ }
166
+
167
+ async function readGuidance(files) {
168
+ const entries = await Promise.all(
169
+ files.map(async (file) => {
170
+ const absolutePath = path.join(repoRoot, file);
171
+ let content = "";
172
+
173
+ try {
174
+ content = await readFile(absolutePath, "utf8");
175
+ } catch (error) {
176
+ if (!(error && typeof error === "object" && "code" in error && error.code === "ENOENT")) {
177
+ throw error;
178
+ }
179
+
180
+ content = [
181
+ `Missing neutral guidance source: ${file}.`,
182
+ "Author the scoped AGENTS.md file, create the sibling CLAUDE.md symlink mirror, then rerun .agents/scripts/sync-subagents.mjs.",
183
+ ].join("\n");
184
+ }
185
+
186
+ return `### ${file}\n${content.trim()}`;
187
+ }),
188
+ );
189
+
190
+ return entries.join("\n\n");
191
+ }
192
+
193
+ function buildPrompt(agent, guidance) {
194
+ const packs = agent.packs.map((pack) => {
195
+ const definition = capabilityPacks[pack];
196
+ return `${pack}: ${definition.description}`;
197
+ });
198
+
199
+ return [
200
+ `You are the ${agent.name} specialist for this repository.`,
201
+ "",
202
+ "Operate as a narrow owner for the assigned slice instead of broadening scope.",
203
+ "",
204
+ "Primary ownership:",
205
+ formatList(agent.ownedPaths),
206
+ "",
207
+ "Preloaded capability packs:",
208
+ formatList(packs),
209
+ "",
210
+ "Boundary rules:",
211
+ formatList(agent.boundaries),
212
+ "",
213
+ "Scoped skill activation:",
214
+ formatList(agent.activationInstructions ?? []),
215
+ "",
216
+ "Execution expectations:",
217
+ formatList([
218
+ "Prefer doing the assigned slice well over exploring adjacent areas.",
219
+ "If the task clearly belongs to a different specialist, say so explicitly instead of improvising outside your scope.",
220
+ "Keep repo boundaries intact: backend logic stays out of apps/web, transport stays out of packages/api, and auth-sensitive work stays in packages/auth unless the parent explicitly assigns cross-surface coordination.",
221
+ "If your work changes architecture, setup, contracts, decisions, or operator workflow, update docs/README.md and the relevant domain doc/runbook in the same task.",
222
+ ]),
223
+ "",
224
+ "Baked-in scoped guidance:",
225
+ guidance,
226
+ ].join("\n");
227
+ }
228
+
229
+ function buildClaudeAgent(agent, prompt, skillNames) {
230
+ const frontmatter = [
231
+ "---",
232
+ `name: ${yamlString(agent.name)}`,
233
+ `description: ${yamlString(agent.description)}`,
234
+ "model: inherit",
235
+ "skills:",
236
+ ...skillNames.map((skillName) => ` - ${skillName}`),
237
+ "---",
238
+ "",
239
+ ].join("\n");
240
+
241
+ return `${frontmatter}${claudeManagedComment}\n\n${prompt}\n`;
242
+ }
243
+
244
+ function buildCodexAgent(agent, prompt, skillNames) {
245
+ const lines = [
246
+ managedHeader,
247
+ "",
248
+ `name = ${JSON.stringify(agent.name)}`,
249
+ `description = ${JSON.stringify(agent.description)}`,
250
+ 'model_reasoning_effort = "medium"',
251
+ `developer_instructions = """\n${prompt}\n"""`,
252
+ ];
253
+
254
+ for (const skillName of skillNames) {
255
+ lines.push("");
256
+ lines.push("[[skills.config]]");
257
+ lines.push(`path = ${JSON.stringify(relativeSkillPath(skillName))}`);
258
+ lines.push("enabled = true");
259
+ }
260
+
261
+ return `${lines.join("\n")}\n`;
262
+ }
263
+
264
+ function buildCursorAgent(agent, prompt) {
265
+ const frontmatter = [
266
+ "---",
267
+ `name: ${agent.name}`,
268
+ `description: ${yamlString(agent.description)}`,
269
+ "model: inherit",
270
+ "---",
271
+ "",
272
+ ].join("\n");
273
+
274
+ return `${frontmatter}${cursorManagedComment}\n\n${prompt}\n`;
275
+ }
276
+
277
+ function buildOpenCodeAgent(agent, prompt) {
278
+ const frontmatter = [
279
+ "---",
280
+ `description: ${yamlString(agent.description)}`,
281
+ "mode: subagent",
282
+ "---",
283
+ "",
284
+ ].join("\n");
285
+
286
+ return `${frontmatter}${opencodeManagedComment}\n\n${prompt}\n`;
287
+ }
288
+
289
+ async function ensureSymlink(linkPath, targetPath) {
290
+ const relativeTarget = path.relative(path.dirname(linkPath), targetPath);
291
+ await mkdir(path.dirname(linkPath), { recursive: true });
292
+
293
+ try {
294
+ const existingStat = await lstat(linkPath);
295
+
296
+ if (existingStat.isSymbolicLink() && (await readlink(linkPath)) === relativeTarget) {
297
+ return;
298
+ }
299
+ } catch (error) {
300
+ if (!(error && typeof error === "object" && "code" in error && error.code === "ENOENT")) {
301
+ throw error;
302
+ }
303
+ }
304
+
305
+ await rm(linkPath, { force: true, recursive: true });
306
+ await symlink(relativeTarget, linkPath);
307
+ }
308
+
309
+ async function writeManagedFiles(directory, extension, renderedByName) {
310
+ await mkdir(directory, { recursive: true });
311
+
312
+ const managedNames = new Set(Object.keys(renderedByName).map((name) => `${name}.${extension}`));
313
+
314
+ for (const filename of await readdir(directory)) {
315
+ if (!filename.endsWith(`.${extension}`)) {
316
+ continue;
317
+ }
318
+
319
+ const filePath = path.join(directory, filename);
320
+ const existingContent = await readFile(filePath, "utf8");
321
+ const isManaged =
322
+ extension === "toml"
323
+ ? existingContent.startsWith(managedHeader)
324
+ : existingContent.includes(claudeManagedComment);
325
+
326
+ if (isManaged && !managedNames.has(filename)) {
327
+ await rm(filePath, { force: true });
328
+ }
329
+ }
330
+
331
+ for (const [name, content] of Object.entries(renderedByName)) {
332
+ await writeFile(path.join(directory, `${name}.${extension}`), content, "utf8");
333
+ }
334
+ }
335
+
336
+ async function syncHookSurface() {
337
+ await mkdir(sharedHooksPath, { recursive: true });
338
+ await mkdir(codexHooksDir, { recursive: true });
339
+ await mkdir(claudeHooksDir, { recursive: true });
340
+ await mkdir(cursorHooksDir, { recursive: true });
341
+ await mkdir(opencodePluginsDir, { recursive: true });
342
+
343
+ await ensureSymlink(
344
+ path.join(codexHooksDir, "format-edited-file.mjs"),
345
+ path.join(sharedHooksPath, "format-edited-file.mjs"),
346
+ );
347
+ await ensureSymlink(
348
+ path.join(codexHooksDir, "require-tests-for-pr.mjs"),
349
+ path.join(sharedHooksPath, "require-tests-for-pr.mjs"),
350
+ );
351
+ await ensureSymlink(
352
+ path.join(claudeHooksDir, "format-edited-file.mjs"),
353
+ path.join(sharedHooksPath, "format-edited-file.mjs"),
354
+ );
355
+ await ensureSymlink(
356
+ path.join(claudeHooksDir, "require-tests-for-pr.mjs"),
357
+ path.join(sharedHooksPath, "require-tests-for-pr.mjs"),
358
+ );
359
+ await ensureSymlink(
360
+ path.join(cursorHooksDir, "format-edited-file.mjs"),
361
+ path.join(sharedHooksPath, "format-edited-file.mjs"),
362
+ );
363
+ await ensureSymlink(
364
+ path.join(cursorHooksDir, "require-tests-for-pr.mjs"),
365
+ path.join(sharedHooksPath, "require-tests-for-pr.mjs"),
366
+ );
367
+ await ensureSymlink(
368
+ path.join(opencodePluginsDir, "format-edited-file.mjs"),
369
+ path.join(sharedHooksPath, "format-edited-file.mjs"),
370
+ );
371
+ await ensureSymlink(
372
+ path.join(opencodePluginsDir, "require-tests-for-pr.mjs"),
373
+ path.join(sharedHooksPath, "require-tests-for-pr.mjs"),
374
+ );
375
+ }
376
+
377
+ async function syncSkillMirrors() {
378
+ await ensureSymlink(claudeSkillsMirrorPath, sharedSkillsPath);
379
+ }
380
+
381
+ async function syncPromptMirrors() {
382
+ await ensureSymlink(codexAgentsMirrorPath, sharedAgentsPath);
383
+ await ensureSymlink(claudeAgentsMirrorPath, sharedAgentsPath);
384
+ await ensureSymlink(opencodeAgentsMirrorPath, sharedAgentsPath);
385
+ }
386
+
387
+ async function main() {
388
+ const claudeFiles = {};
389
+ const codexFiles = {};
390
+ const cursorFiles = {};
391
+ const opencodeFiles = {};
392
+
393
+ for (const agent of agents) {
394
+ const guidance = await readGuidance(agent.guidanceFiles);
395
+ const prompt = buildPrompt(agent, guidance);
396
+ const skillNames = getSkillNames(agent);
397
+
398
+ claudeFiles[agent.name] = buildClaudeAgent(agent, prompt, skillNames);
399
+ codexFiles[agent.name] = buildCodexAgent(agent, prompt, skillNames);
400
+ cursorFiles[agent.name] = buildCursorAgent(agent, prompt);
401
+ opencodeFiles[agent.name] = buildOpenCodeAgent(agent, prompt);
402
+ }
403
+
404
+ await mkdir(path.dirname(codexConfigPath), { recursive: true });
405
+ await mkdir(path.dirname(claudeSettingsPath), { recursive: true });
406
+ await mkdir(path.dirname(cursorHooksJsonPath), { recursive: true });
407
+ await writeFile(codexConfigPath, codexAgentConfig, "utf8");
408
+ await rm(path.join(codexDir, "hooks.json"), { force: true });
409
+ await writeFile(claudeSettingsPath, encodeJson(claudeSettingsConfig), "utf8");
410
+ await writeFile(cursorHooksJsonPath, encodeJson(cursorHooksConfig), "utf8");
411
+ await writeManagedFiles(claudeAgentsDir, "md", claudeFiles);
412
+ await writeManagedFiles(codexAgentsDir, "toml", codexFiles);
413
+ await writeManagedFiles(cursorAgentsDir, "md", cursorFiles);
414
+ await writeManagedFiles(opencodeAgentsDir, "md", opencodeFiles);
415
+ await syncPromptMirrors();
416
+ await syncSkillMirrors();
417
+ await syncHookSurface();
418
+ }
419
+
420
+ await main();
@@ -0,0 +1,253 @@
1
+ const capabilityPacks = {
2
+ "frontend-core": {
3
+ description:
4
+ "Core Next.js and React app structure guidance for product-facing frontend work.",
5
+ skills: [
6
+ "next-best-practices",
7
+ "async-react-patterns",
8
+ "react-domain-structure",
9
+ "vercel-react-best-practices",
10
+ ],
11
+ },
12
+ simplify: {
13
+ description:
14
+ "Simplify and refine recently modified code for clarity and consistency.",
15
+ skills: ["simplify"],
16
+ },
17
+ "frontend-ui": {
18
+ description:
19
+ "UI implementation, browser testing, visual quality, and composition patterns.",
20
+ skills: [
21
+ "agent-browser",
22
+ "frontend-design",
23
+ "web-design-guidelines",
24
+ "vercel-composition-patterns",
25
+ ],
26
+ },
27
+ "frontend-data": {
28
+ description:
29
+ "TanStack Query driven server-state fetching, mutations, hydration, and invalidation.",
30
+ skills: ["tanstack-query"],
31
+ },
32
+ "frontend-cache": {
33
+ description:
34
+ "Next.js cache components, PPR, cache tags, and related rendering/cache behavior.",
35
+ skills: ["next-cache-components"],
36
+ },
37
+ "server-core": {
38
+ description:
39
+ "Elysia transport-layer work for HTTP routes, adapters, request/response handling, and Effect-facing transport boundaries.",
40
+ skills: ["elysiajs", "effect-authoring"],
41
+ },
42
+ "api-core": {
43
+ description:
44
+ "Effect application logic, pre-write authoring guidance, service/layer patterns, and test-first backend domain work.",
45
+ skills: [
46
+ "effect-authoring",
47
+ "effect-best-practices",
48
+ "effect-recoverable-actions",
49
+ "tdd",
50
+ ],
51
+ },
52
+ "auth-core": {
53
+ description:
54
+ "Better Auth conventions and security-sensitive authentication behavior.",
55
+ skills: [
56
+ "better-auth-best-practices",
57
+ "better-auth-security-best-practices",
58
+ ],
59
+ },
60
+ "docs-core": {
61
+ description:
62
+ "Repo documentation maintenance, routing, and human-facing durable knowledge capture.",
63
+ skills: ["docs-maintenance"],
64
+ },
65
+ };
66
+
67
+ const skillActivationInstructions = [
68
+ "Before planning or editing, read every file in `guidanceFiles` for this role.",
69
+ "In those scoped AGENTS.md files, find the `Primary skills here` list and treat each named skill as mandatory for matching work.",
70
+ "Activate a skill by opening its SKILL.md, reading the workflow/checklist needed for the assigned task, and applying it before edits.",
71
+ "When a skill listed in scoped guidance is also present in this role's `skills`, explicitly mention in the worker's reasoning or handoff that it was used.",
72
+ "If the task touches multiple owned or related scopes, inspect each scope's nearest AGENTS.md and activate the union of relevant skills.",
73
+ "Do not rely on role name or inherited context alone; scoped AGENTS.md skill routing is part of the task contract.",
74
+ ];
75
+
76
+ const agents = [
77
+ {
78
+ name: "docs-maintenance",
79
+ description:
80
+ "Use for repo documentation work centered on docs updates, index maintenance, ADR routing, and keeping docs grounded in implemented reality.",
81
+ ownedPaths: ["docs/**"],
82
+ guidanceFiles: ["docs/AGENTS.md"],
83
+ activationInstructions: skillActivationInstructions,
84
+ packs: ["docs-core", "simplify"],
85
+ skills: ["docs-maintenance", "simplify"],
86
+ boundaries: [
87
+ "Own documentation updates in docs/ and keep them human-facing and implementation-grounded.",
88
+ "If the task is mainly code implementation, tell the parent to use the relevant code specialist and only return for the docs follow-up.",
89
+ "If the task needs planning, roadmap, or backlog work instead of repo docs, tell the parent that docs/ is not the right destination.",
90
+ ],
91
+ },
92
+ {
93
+ name: "frontend-app",
94
+ description:
95
+ "Use for apps/web feature work centered on Next.js routes, app structure, client/server component boundaries, and non-specialist frontend implementation.",
96
+ ownedPaths: ["apps/web/**"],
97
+ guidanceFiles: ["apps/web/AGENTS.md"],
98
+ activationInstructions: skillActivationInstructions,
99
+ packs: ["frontend-core", "simplify"],
100
+ skills: [
101
+ "agent-browser",
102
+ "next-best-practices",
103
+ "next-cache-components",
104
+ "async-react-patterns",
105
+ "vercel-composition-patterns",
106
+ "vercel-react-best-practices",
107
+ "tanstack-query",
108
+ "react-domain-structure",
109
+ "simplify",
110
+ ],
111
+ boundaries: [
112
+ "Do not take ownership of packages/ui design-system work unless the parent explicitly assigns it.",
113
+ "If the task is mainly visual polish, component-library work, or browser UX verification, tell the parent to use frontend-ui instead.",
114
+ "If the task is mainly TanStack Query, hydration, or mutation-cache behavior, tell the parent to use frontend-data instead.",
115
+ "If the task is mainly Next cache components, PPR, cache tags, or revalidation behavior, tell the parent to use frontend-cache instead.",
116
+ ],
117
+ },
118
+ {
119
+ name: "frontend-ui",
120
+ description:
121
+ "Use for packages/ui work and UI-heavy frontend tasks involving component composition, visual polish, responsive behavior, accessibility, or browser validation.",
122
+ ownedPaths: ["packages/ui/**", "apps/web/**"],
123
+ guidanceFiles: ["packages/ui/AGENTS.md", "apps/web/AGENTS.md"],
124
+ activationInstructions: skillActivationInstructions,
125
+ packs: ["frontend-core", "frontend-ui", "simplify"],
126
+ skills: [
127
+ "agent-browser",
128
+ "next-best-practices",
129
+ "next-cache-components",
130
+ "frontend-design",
131
+ "web-design-guidelines",
132
+ "async-react-patterns",
133
+ "vercel-composition-patterns",
134
+ "vercel-react-best-practices",
135
+ "tanstack-query",
136
+ "react-domain-structure",
137
+ "simplify",
138
+ ],
139
+ boundaries: [
140
+ "Prioritize UI primitives, composition, responsiveness, accessibility, and browser-observable behavior.",
141
+ "If the task is primarily data fetching, mutation orchestration, or cache invalidation, tell the parent to use frontend-data instead.",
142
+ "If the task is primarily cache component or PPR behavior, tell the parent to use frontend-cache instead.",
143
+ ],
144
+ },
145
+ {
146
+ name: "frontend-data",
147
+ description:
148
+ "Use for apps/web work centered on TanStack Query, server-state orchestration, hydration, optimistic updates, query invalidation, and mutation flows.",
149
+ ownedPaths: ["apps/web/**"],
150
+ guidanceFiles: ["apps/web/AGENTS.md"],
151
+ activationInstructions: skillActivationInstructions,
152
+ packs: ["frontend-core", "frontend-data", "simplify"],
153
+ skills: [
154
+ "agent-browser",
155
+ "next-best-practices",
156
+ "next-cache-components",
157
+ "async-react-patterns",
158
+ "vercel-composition-patterns",
159
+ "vercel-react-best-practices",
160
+ "tanstack-query",
161
+ "react-domain-structure",
162
+ "simplify",
163
+ ],
164
+ boundaries: [
165
+ "Stay focused on data-fetching contracts, query lifecycle, cache coordination, and mutation UX.",
166
+ "If the task becomes mainly visual redesign or shared component work, tell the parent to use frontend-ui instead.",
167
+ "If the task becomes mainly cache component or PPR behavior, tell the parent to use frontend-cache instead.",
168
+ ],
169
+ },
170
+ {
171
+ name: "frontend-cache",
172
+ description:
173
+ "Use for apps/web work centered on Next.js cache components, PPR, cache tags, revalidation, and rendering/cache boundary issues.",
174
+ ownedPaths: ["apps/web/**"],
175
+ guidanceFiles: ["apps/web/AGENTS.md"],
176
+ activationInstructions: skillActivationInstructions,
177
+ packs: ["frontend-core", "frontend-cache", "simplify"],
178
+ skills: [
179
+ "agent-browser",
180
+ "next-best-practices",
181
+ "next-cache-components",
182
+ "async-react-patterns",
183
+ "vercel-composition-patterns",
184
+ "vercel-react-best-practices",
185
+ "tanstack-query",
186
+ "react-domain-structure",
187
+ "simplify",
188
+ ],
189
+ boundaries: [
190
+ "Stay focused on rendering strategy, cache tagging, revalidation, and cache component behavior.",
191
+ "If the task is primarily TanStack Query or client-side mutation cache behavior, tell the parent to use frontend-data instead.",
192
+ "If the task is primarily visual polish or component-library work, tell the parent to use frontend-ui instead.",
193
+ ],
194
+ },
195
+ {
196
+ name: "server-transport",
197
+ description:
198
+ "Use for apps/server work centered on Elysia routes, transport adaptation, middleware, request/response schemas, and HTTP boundary concerns.",
199
+ ownedPaths: ["apps/server/**"],
200
+ guidanceFiles: ["apps/server/AGENTS.md"],
201
+ activationInstructions: skillActivationInstructions,
202
+ packs: ["server-core", "simplify"],
203
+ skills: ["elysiajs", "effect-authoring", "simplify"],
204
+ boundaries: [
205
+ "Keep transport concerns in apps/server; do not pull Effect domain logic into the server app.",
206
+ "If the task is mainly Effect service/layer logic or tRPC/domain procedures in packages/api, tell the parent to use api-domain instead.",
207
+ "If the task is mainly auth flow or security-sensitive Better Auth behavior, tell the parent to use auth-security instead.",
208
+ ],
209
+ },
210
+ {
211
+ name: "api-domain",
212
+ description:
213
+ "Use for packages/api work centered on Effect services, layers, domain logic, tRPC procedures, and backend tests.",
214
+ ownedPaths: ["packages/api/**"],
215
+ guidanceFiles: ["packages/api/AGENTS.md"],
216
+ activationInstructions: skillActivationInstructions,
217
+ packs: ["api-core", "simplify"],
218
+ skills: [
219
+ "effect-authoring",
220
+ "effect-best-practices",
221
+ "effect-backend-structure",
222
+ "effect-recoverable-actions",
223
+ "tdd",
224
+ "simplify",
225
+ ],
226
+ boundaries: [
227
+ "Own Effect application logic and tests in packages/api.",
228
+ "If the task is mainly HTTP transport or Elysia route wiring in apps/server, tell the parent to use server-transport instead.",
229
+ "If the task is mainly Better Auth configuration or security-sensitive auth flow behavior in packages/auth, tell the parent to use auth-security instead.",
230
+ ],
231
+ },
232
+ {
233
+ name: "auth-security",
234
+ description:
235
+ "Use for packages/auth work centered on Better Auth configuration, auth flows, provider setup, session behavior, and security-sensitive changes.",
236
+ ownedPaths: ["packages/auth/**"],
237
+ guidanceFiles: ["packages/auth/AGENTS.md"],
238
+ activationInstructions: skillActivationInstructions,
239
+ packs: ["auth-core", "simplify"],
240
+ skills: [
241
+ "better-auth-best-practices",
242
+ "better-auth-security-best-practices",
243
+ "simplify",
244
+ ],
245
+ boundaries: [
246
+ "Treat auth work as security-sensitive and stay inside packages/auth unless explicitly coordinating with another specialist.",
247
+ "If the task is mainly Effect application logic, tell the parent to use api-domain instead.",
248
+ "If the task is mainly HTTP transport or route mounting, tell the parent to use server-transport instead.",
249
+ ],
250
+ },
251
+ ];
252
+
253
+ export { agents, capabilityPacks };