opencode-agent-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/README.md +796 -0
  2. package/bin/commands/init.mjs +221 -0
  3. package/bin/init.mjs +21 -0
  4. package/package.json +22 -0
  5. package/template/.opencode/agent-docs/backend/README.md +0 -0
  6. package/template/.opencode/agent-docs/backend/node/BACKEND_PATTERNS.md +82 -0
  7. package/template/.opencode/agent-docs/backend/node/BACKEND_QUICK_START.md +49 -0
  8. package/template/.opencode/agent-docs/frontend/next/README.md +0 -0
  9. package/template/.opencode/agent-docs/frontend/nuxt/API_PATTERNS.md +807 -0
  10. package/template/.opencode/agent-docs/frontend/nuxt/CHEATSHEET.md +676 -0
  11. package/template/.opencode/agent-docs/frontend/nuxt/COMPLETION_REPORT.md +613 -0
  12. package/template/.opencode/agent-docs/frontend/nuxt/EXAMPLES.md +956 -0
  13. package/template/.opencode/agent-docs/frontend/nuxt/INDEX.md +596 -0
  14. package/template/.opencode/agent-docs/frontend/nuxt/MCP_GUIDE.md +881 -0
  15. package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_CURRICULUM_30_DAYS.md +256 -0
  16. package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_CURRICULUM_CHECKLIST.md +156 -0
  17. package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_WEEKLY_ASSIGNMENTS.md +191 -0
  18. package/template/.opencode/agent-docs/frontend/nuxt/QUICK_START.md +509 -0
  19. package/template/.opencode/agent-docs/frontend/nuxt/README.md +506 -0
  20. package/template/.opencode/agent-docs/frontend/nuxt/README_AGENTS.md +140 -0
  21. package/template/.opencode/agent-docs/frontend/nuxt/README_DOCS.md +65 -0
  22. package/template/.opencode/agent-docs/frontend/nuxt/SUMMARY.md +474 -0
  23. package/template/.opencode/agent-docs/frontend/nuxt/TEAM_OPERATING_GUIDE.md +54 -0
  24. package/template/.opencode/agent-docs/frontend/nuxt/TESTING_GUIDE.md +904 -0
  25. package/template/.opencode/agent-docs/frontend/nuxt/WORKFLOWS.md +758 -0
  26. package/template/.opencode/agent-docs/frontend/react/API_PATTERNS.md +187 -0
  27. package/template/.opencode/agent-docs/frontend/react/CHEATSHEET.md +87 -0
  28. package/template/.opencode/agent-docs/frontend/react/INDEX.md +45 -0
  29. package/template/.opencode/agent-docs/frontend/react/QUICK_START.md +43 -0
  30. package/template/.opencode/agent-docs/frontend/react/README.md +159 -0
  31. package/template/.opencode/agent-docs/frontend/vue/README.md +0 -0
  32. package/template/.opencode/agent-docs/mobile/android/README.md +45 -0
  33. package/template/.opencode/agent-docs/mobile/flutter/README.md +44 -0
  34. package/template/.opencode/agents/android-developer.md +418 -0
  35. package/template/.opencode/agents/code-igniter-3-fullstack.md +345 -0
  36. package/template/.opencode/agents/code-reviewer.md +517 -0
  37. package/template/.opencode/agents/database-specialist.md +455 -0
  38. package/template/.opencode/agents/devops-specialist.md +562 -0
  39. package/template/.opencode/agents/flutter-developer.md +556 -0
  40. package/template/.opencode/agents/it-leader.md +911 -0
  41. package/template/.opencode/agents/laravel-advanced.md +691 -0
  42. package/template/.opencode/agents/node-backend-developer.md +343 -0
  43. package/template/.opencode/agents/nuxt-frontend-developer-mentor.md +402 -0
  44. package/template/.opencode/agents/nuxt-frontend-developer.md +1573 -0
  45. package/template/.opencode/agents/react-frontend-developer.md +1017 -0
  46. package/template/.opencode/agents/seo-specialist.md +681 -0
  47. package/template/.opencode/agents/ui-ux-designer.md +783 -0
  48. package/template/.opencode/commands/android-build/command.md +25 -0
  49. package/template/.opencode/commands/android-test/command.md +23 -0
  50. package/template/.opencode/commands/build-fix.md +29 -0
  51. package/template/.opencode/commands/checkpoint.md +74 -0
  52. package/template/.opencode/commands/code-review.md +40 -0
  53. package/template/.opencode/commands/e2e.md +363 -0
  54. package/template/.opencode/commands/eval.md +120 -0
  55. package/template/.opencode/commands/evolve.md +193 -0
  56. package/template/.opencode/commands/flutter-build/command.md +25 -0
  57. package/template/.opencode/commands/flutter-test/command.md +24 -0
  58. package/template/.opencode/commands/go-build.md +183 -0
  59. package/template/.opencode/commands/go-review.md +148 -0
  60. package/template/.opencode/commands/go-test.md +268 -0
  61. package/template/.opencode/commands/gpc-release/command.md +30 -0
  62. package/template/.opencode/commands/instinct-export.md +91 -0
  63. package/template/.opencode/commands/instinct-import.md +142 -0
  64. package/template/.opencode/commands/instinct-status.md +86 -0
  65. package/template/.opencode/commands/learn.md +70 -0
  66. package/template/.opencode/commands/multi-backend.md +158 -0
  67. package/template/.opencode/commands/multi-execute.md +310 -0
  68. package/template/.opencode/commands/multi-frontend.md +158 -0
  69. package/template/.opencode/commands/multi-plan.md +261 -0
  70. package/template/.opencode/commands/multi-workflow.md +183 -0
  71. package/template/.opencode/commands/orchestrate.md +172 -0
  72. package/template/.opencode/commands/plan.md +113 -0
  73. package/template/.opencode/commands/pm2.md +271 -0
  74. package/template/.opencode/commands/python-review.md +297 -0
  75. package/template/.opencode/commands/refactor-clean.md +28 -0
  76. package/template/.opencode/commands/sessions.md +305 -0
  77. package/template/.opencode/commands/setup-pm.md +80 -0
  78. package/template/.opencode/commands/skill-create.md +174 -0
  79. package/template/.opencode/commands/tdd.md +326 -0
  80. package/template/.opencode/commands/test-coverage.md +27 -0
  81. package/template/.opencode/commands/update-codemaps.md +17 -0
  82. package/template/.opencode/commands/update-docs.md +31 -0
  83. package/template/.opencode/commands/verify.md +59 -0
  84. package/template/.opencode/config.example.json +309 -0
  85. package/template/.opencode/config.json +341 -0
  86. package/template/.opencode/contexts/dev.md +20 -0
  87. package/template/.opencode/contexts/research.md +26 -0
  88. package/template/.opencode/contexts/review.md +22 -0
  89. package/template/.opencode/hooks/hooks.json +169 -0
  90. package/template/.opencode/instructions/INSTRUCTIONS.md +388 -0
  91. package/template/.opencode/package.json +5 -0
  92. package/template/.opencode/rules/README.md +82 -0
  93. package/template/.opencode/rules/android/gradle.md +62 -0
  94. package/template/.opencode/rules/android/testing.md +27 -0
  95. package/template/.opencode/rules/common/agents.md +49 -0
  96. package/template/.opencode/rules/common/coding-style.md +48 -0
  97. package/template/.opencode/rules/common/git-workflow.md +45 -0
  98. package/template/.opencode/rules/common/hooks.md +30 -0
  99. package/template/.opencode/rules/common/patterns.md +31 -0
  100. package/template/.opencode/rules/common/performance.md +55 -0
  101. package/template/.opencode/rules/common/security.md +29 -0
  102. package/template/.opencode/rules/common/testing.md +29 -0
  103. package/template/.opencode/rules/flutter/state-management.md +57 -0
  104. package/template/.opencode/rules/flutter/testing.md +42 -0
  105. package/template/.opencode/rules/golang/coding-style.md +26 -0
  106. package/template/.opencode/rules/golang/hooks.md +11 -0
  107. package/template/.opencode/rules/golang/patterns.md +39 -0
  108. package/template/.opencode/rules/golang/security.md +28 -0
  109. package/template/.opencode/rules/golang/testing.md +25 -0
  110. package/template/.opencode/rules/mobile/performance.md +36 -0
  111. package/template/.opencode/rules/python/coding-style.md +37 -0
  112. package/template/.opencode/rules/python/hooks.md +14 -0
  113. package/template/.opencode/rules/python/patterns.md +34 -0
  114. package/template/.opencode/rules/python/security.md +25 -0
  115. package/template/.opencode/rules/python/testing.md +33 -0
  116. package/template/.opencode/rules/typescript/coding-style.md +58 -0
  117. package/template/.opencode/rules/typescript/hooks.md +15 -0
  118. package/template/.opencode/rules/typescript/patterns.md +45 -0
  119. package/template/.opencode/rules/typescript/security.md +21 -0
  120. package/template/.opencode/rules/typescript/testing.md +11 -0
  121. package/template/.opencode/skills/api-documentation/SKILL.md +188 -0
  122. package/template/.opencode/skills/backend-patterns/SKILL.md +587 -0
  123. package/template/.opencode/skills/building-components/SKILL.md +37 -0
  124. package/template/.opencode/skills/building-components/references/accessibility.mdx +819 -0
  125. package/template/.opencode/skills/building-components/references/as-child.mdx +324 -0
  126. package/template/.opencode/skills/building-components/references/composition.mdx +239 -0
  127. package/template/.opencode/skills/building-components/references/data-attributes.mdx +413 -0
  128. package/template/.opencode/skills/building-components/references/definitions.mdx +258 -0
  129. package/template/.opencode/skills/building-components/references/design-tokens.mdx +57 -0
  130. package/template/.opencode/skills/building-components/references/docs.mdx +155 -0
  131. package/template/.opencode/skills/building-components/references/marketplaces.mdx +144 -0
  132. package/template/.opencode/skills/building-components/references/npm.mdx +166 -0
  133. package/template/.opencode/skills/building-components/references/polymorphism.mdx +583 -0
  134. package/template/.opencode/skills/building-components/references/principles.mdx +61 -0
  135. package/template/.opencode/skills/building-components/references/registry.mdx +169 -0
  136. package/template/.opencode/skills/building-components/references/state.mdx +99 -0
  137. package/template/.opencode/skills/building-components/references/styling.mdx +286 -0
  138. package/template/.opencode/skills/building-components/references/types.mdx +191 -0
  139. package/template/.opencode/skills/clickhouse-io/SKILL.md +429 -0
  140. package/template/.opencode/skills/coding-standards/SKILL.md +520 -0
  141. package/template/.opencode/skills/configure-ecc/SKILL.md +298 -0
  142. package/template/.opencode/skills/continuous-learning/SKILL.md +110 -0
  143. package/template/.opencode/skills/continuous-learning/config.json +18 -0
  144. package/template/.opencode/skills/continuous-learning/evaluate-session.sh +60 -0
  145. package/template/.opencode/skills/continuous-learning-v2/SKILL.md +284 -0
  146. package/template/.opencode/skills/continuous-learning-v2/agents/observer.md +137 -0
  147. package/template/.opencode/skills/continuous-learning-v2/agents/start-observer.sh +134 -0
  148. package/template/.opencode/skills/continuous-learning-v2/config.json +41 -0
  149. package/template/.opencode/skills/continuous-learning-v2/hooks/observe.sh +153 -0
  150. package/template/.opencode/skills/continuous-learning-v2/scripts/instinct-cli.py +489 -0
  151. package/template/.opencode/skills/continuous-learning-v2/scripts/test_parse_instinct.py +82 -0
  152. package/template/.opencode/skills/dart-add-unit-test/SKILL.md +122 -0
  153. package/template/.opencode/skills/dart-build-cli-app/SKILL.md +185 -0
  154. package/template/.opencode/skills/dart-collect-coverage/SKILL.md +141 -0
  155. package/template/.opencode/skills/dart-fix-runtime-errors/SKILL.md +166 -0
  156. package/template/.opencode/skills/dart-generate-test-mocks/SKILL.md +155 -0
  157. package/template/.opencode/skills/dart-migrate-to-checks-package/SKILL.md +126 -0
  158. package/template/.opencode/skills/dart-resolve-package-conflicts/SKILL.md +116 -0
  159. package/template/.opencode/skills/dart-run-static-analysis/SKILL.md +104 -0
  160. package/template/.opencode/skills/dart-use-pattern-matching/SKILL.md +146 -0
  161. package/template/.opencode/skills/django-patterns/SKILL.md +733 -0
  162. package/template/.opencode/skills/django-security/SKILL.md +592 -0
  163. package/template/.opencode/skills/django-tdd/SKILL.md +728 -0
  164. package/template/.opencode/skills/django-verification/SKILL.md +460 -0
  165. package/template/.opencode/skills/eval-harness/SKILL.md +227 -0
  166. package/template/.opencode/skills/firebase-basics/SKILL.md +103 -0
  167. package/template/.opencode/skills/firebase-basics/references/additional-skills.md +113 -0
  168. package/template/.opencode/skills/firebase-basics/references/cli-usage.md +31 -0
  169. package/template/.opencode/skills/firebase-basics/references/client-library-usage.md +45 -0
  170. package/template/.opencode/skills/firebase-basics/references/core-concepts.md +61 -0
  171. package/template/.opencode/skills/firebase-basics/references/iac-usage.md +40 -0
  172. package/template/.opencode/skills/firebase-basics/references/iam-security.md +74 -0
  173. package/template/.opencode/skills/firebase-basics/references/mcp-usage.md +63 -0
  174. package/template/.opencode/skills/flutter/SKILL.md +292 -0
  175. package/template/.opencode/skills/flutter-add-integration-test/SKILL.md +163 -0
  176. package/template/.opencode/skills/flutter-add-widget-preview/SKILL.md +145 -0
  177. package/template/.opencode/skills/flutter-add-widget-test/SKILL.md +154 -0
  178. package/template/.opencode/skills/flutter-apply-architecture-best-practices/SKILL.md +162 -0
  179. package/template/.opencode/skills/flutter-build-responsive-layout/SKILL.md +139 -0
  180. package/template/.opencode/skills/flutter-fix-layout-issues/SKILL.md +130 -0
  181. package/template/.opencode/skills/flutter-implement-json-serialization/SKILL.md +153 -0
  182. package/template/.opencode/skills/flutter-setup-declarative-routing/SKILL.md +255 -0
  183. package/template/.opencode/skills/flutter-setup-localization/SKILL.md +210 -0
  184. package/template/.opencode/skills/flutter-use-http-package/SKILL.md +174 -0
  185. package/template/.opencode/skills/frontend-design/SKILL.md +89 -0
  186. package/template/.opencode/skills/frontend-patterns/SKILL.md +631 -0
  187. package/template/.opencode/skills/golang-patterns/SKILL.md +673 -0
  188. package/template/.opencode/skills/golang-testing/SKILL.md +719 -0
  189. package/template/.opencode/skills/impeccable/SKILL.md +165 -0
  190. package/template/.opencode/skills/impeccable/agents/impeccable-asset-producer.md +101 -0
  191. package/template/.opencode/skills/impeccable/reference/adapt.md +190 -0
  192. package/template/.opencode/skills/impeccable/reference/animate.md +175 -0
  193. package/template/.opencode/skills/impeccable/reference/audit.md +133 -0
  194. package/template/.opencode/skills/impeccable/reference/bolder.md +113 -0
  195. package/template/.opencode/skills/impeccable/reference/brand.md +118 -0
  196. package/template/.opencode/skills/impeccable/reference/clarify.md +174 -0
  197. package/template/.opencode/skills/impeccable/reference/codex.md +105 -0
  198. package/template/.opencode/skills/impeccable/reference/cognitive-load.md +106 -0
  199. package/template/.opencode/skills/impeccable/reference/color-and-contrast.md +105 -0
  200. package/template/.opencode/skills/impeccable/reference/colorize.md +154 -0
  201. package/template/.opencode/skills/impeccable/reference/craft.md +123 -0
  202. package/template/.opencode/skills/impeccable/reference/critique.md +273 -0
  203. package/template/.opencode/skills/impeccable/reference/delight.md +302 -0
  204. package/template/.opencode/skills/impeccable/reference/distill.md +111 -0
  205. package/template/.opencode/skills/impeccable/reference/document.md +427 -0
  206. package/template/.opencode/skills/impeccable/reference/extract.md +69 -0
  207. package/template/.opencode/skills/impeccable/reference/harden.md +347 -0
  208. package/template/.opencode/skills/impeccable/reference/heuristics-scoring.md +234 -0
  209. package/template/.opencode/skills/impeccable/reference/interaction-design.md +195 -0
  210. package/template/.opencode/skills/impeccable/reference/layout.md +141 -0
  211. package/template/.opencode/skills/impeccable/reference/live.md +622 -0
  212. package/template/.opencode/skills/impeccable/reference/motion-design.md +109 -0
  213. package/template/.opencode/skills/impeccable/reference/onboard.md +234 -0
  214. package/template/.opencode/skills/impeccable/reference/optimize.md +258 -0
  215. package/template/.opencode/skills/impeccable/reference/overdrive.md +130 -0
  216. package/template/.opencode/skills/impeccable/reference/personas.md +179 -0
  217. package/template/.opencode/skills/impeccable/reference/polish.md +242 -0
  218. package/template/.opencode/skills/impeccable/reference/product.md +62 -0
  219. package/template/.opencode/skills/impeccable/reference/quieter.md +99 -0
  220. package/template/.opencode/skills/impeccable/reference/responsive-design.md +114 -0
  221. package/template/.opencode/skills/impeccable/reference/shape.md +165 -0
  222. package/template/.opencode/skills/impeccable/reference/spatial-design.md +100 -0
  223. package/template/.opencode/skills/impeccable/reference/teach.md +156 -0
  224. package/template/.opencode/skills/impeccable/reference/typeset.md +124 -0
  225. package/template/.opencode/skills/impeccable/reference/typography.md +159 -0
  226. package/template/.opencode/skills/impeccable/reference/ux-writing.md +107 -0
  227. package/template/.opencode/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
  228. package/template/.opencode/skills/impeccable/scripts/command-metadata.json +94 -0
  229. package/template/.opencode/skills/impeccable/scripts/critique-storage.mjs +242 -0
  230. package/template/.opencode/skills/impeccable/scripts/design-parser.mjs +820 -0
  231. package/template/.opencode/skills/impeccable/scripts/detect-csp.mjs +198 -0
  232. package/template/.opencode/skills/impeccable/scripts/detect.mjs +21 -0
  233. package/template/.opencode/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
  234. package/template/.opencode/skills/impeccable/scripts/is-generated.mjs +69 -0
  235. package/template/.opencode/skills/impeccable/scripts/live-accept.mjs +595 -0
  236. package/template/.opencode/skills/impeccable/scripts/live-browser-session.js +123 -0
  237. package/template/.opencode/skills/impeccable/scripts/live-browser.js +4860 -0
  238. package/template/.opencode/skills/impeccable/scripts/live-complete.mjs +75 -0
  239. package/template/.opencode/skills/impeccable/scripts/live-completion.mjs +18 -0
  240. package/template/.opencode/skills/impeccable/scripts/live-inject.mjs +446 -0
  241. package/template/.opencode/skills/impeccable/scripts/live-poll.mjs +200 -0
  242. package/template/.opencode/skills/impeccable/scripts/live-resume.mjs +48 -0
  243. package/template/.opencode/skills/impeccable/scripts/live-server.mjs +838 -0
  244. package/template/.opencode/skills/impeccable/scripts/live-session-store.mjs +254 -0
  245. package/template/.opencode/skills/impeccable/scripts/live-status.mjs +47 -0
  246. package/template/.opencode/skills/impeccable/scripts/live-wrap.mjs +632 -0
  247. package/template/.opencode/skills/impeccable/scripts/live.mjs +247 -0
  248. package/template/.opencode/skills/impeccable/scripts/load-context.mjs +141 -0
  249. package/template/.opencode/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
  250. package/template/.opencode/skills/impeccable/scripts/pin.mjs +214 -0
  251. package/template/.opencode/skills/iterative-retrieval/SKILL.md +202 -0
  252. package/template/.opencode/skills/java-coding-standards/SKILL.md +138 -0
  253. package/template/.opencode/skills/jetpack-compose/.skillfish.json +10 -0
  254. package/template/.opencode/skills/jetpack-compose/SKILL.md +420 -0
  255. package/template/.opencode/skills/jpa-patterns/SKILL.md +141 -0
  256. package/template/.opencode/skills/nutrient-document-processing/SKILL.md +165 -0
  257. package/template/.opencode/skills/nuxt-ui/SKILL.md +334 -0
  258. package/template/.opencode/skills/nuxt-ui/references/components.md +377 -0
  259. package/template/.opencode/skills/nuxt-ui/references/composables.md +127 -0
  260. package/template/.opencode/skills/nuxt-ui/references/layouts/chat.md +266 -0
  261. package/template/.opencode/skills/nuxt-ui/references/layouts/dashboard.md +220 -0
  262. package/template/.opencode/skills/nuxt-ui/references/layouts/docs.md +141 -0
  263. package/template/.opencode/skills/nuxt-ui/references/layouts/editor.md +168 -0
  264. package/template/.opencode/skills/nuxt-ui/references/layouts/page.md +260 -0
  265. package/template/.opencode/skills/nuxt-ui/references/theming.md +427 -0
  266. package/template/.opencode/skills/postgres-patterns/SKILL.md +146 -0
  267. package/template/.opencode/skills/project-guidelines-example/SKILL.md +345 -0
  268. package/template/.opencode/skills/python-patterns/SKILL.md +749 -0
  269. package/template/.opencode/skills/python-testing/SKILL.md +815 -0
  270. package/template/.opencode/skills/security-review/SKILL.md +494 -0
  271. package/template/.opencode/skills/security-review/cloud-infrastructure-security.md +361 -0
  272. package/template/.opencode/skills/shadcn-ui/README.md +248 -0
  273. package/template/.opencode/skills/shadcn-ui/SKILL.md +326 -0
  274. package/template/.opencode/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
  275. package/template/.opencode/skills/shadcn-ui/examples/data-table.tsx +313 -0
  276. package/template/.opencode/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
  277. package/template/.opencode/skills/shadcn-ui/resources/component-catalog.md +481 -0
  278. package/template/.opencode/skills/shadcn-ui/resources/customization-guide.md +516 -0
  279. package/template/.opencode/skills/shadcn-ui/resources/migration-guide.md +463 -0
  280. package/template/.opencode/skills/shadcn-ui/resources/setup-guide.md +412 -0
  281. package/template/.opencode/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
  282. package/template/.opencode/skills/springboot-patterns/SKILL.md +304 -0
  283. package/template/.opencode/skills/springboot-security/SKILL.md +119 -0
  284. package/template/.opencode/skills/springboot-tdd/SKILL.md +157 -0
  285. package/template/.opencode/skills/springboot-verification/SKILL.md +100 -0
  286. package/template/.opencode/skills/strategic-compact/SKILL.md +63 -0
  287. package/template/.opencode/skills/strategic-compact/suggest-compact.sh +52 -0
  288. package/template/.opencode/skills/tdd-workflow/SKILL.md +409 -0
  289. package/template/.opencode/skills/vercel-composition-patterns/AGENTS.md +946 -0
  290. package/template/.opencode/skills/vercel-composition-patterns/SKILL.md +89 -0
  291. package/template/.opencode/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  292. package/template/.opencode/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
  293. package/template/.opencode/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  294. package/template/.opencode/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  295. package/template/.opencode/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
  296. package/template/.opencode/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
  297. package/template/.opencode/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
  298. package/template/.opencode/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
  299. package/template/.opencode/skills/vercel-react-best-practices/AGENTS.md +2934 -0
  300. package/template/.opencode/skills/vercel-react-best-practices/SKILL.md +136 -0
  301. package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  302. package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
  303. package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
  304. package/template/.opencode/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
  305. package/template/.opencode/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
  306. package/template/.opencode/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
  307. package/template/.opencode/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
  308. package/template/.opencode/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  309. package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
  310. package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
  311. package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  312. package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  313. package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
  314. package/template/.opencode/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
  315. package/template/.opencode/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
  316. package/template/.opencode/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  317. package/template/.opencode/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
  318. package/template/.opencode/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
  319. package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
  320. package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
  321. package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
  322. package/template/.opencode/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
  323. package/template/.opencode/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
  324. package/template/.opencode/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
  325. package/template/.opencode/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
  326. package/template/.opencode/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
  327. package/template/.opencode/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
  328. package/template/.opencode/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
  329. package/template/.opencode/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  330. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
  331. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  332. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
  333. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
  334. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  335. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  336. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  337. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
  338. package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  339. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
  340. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
  341. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  342. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
  343. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  344. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  345. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  346. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
  347. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  348. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  349. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
  350. package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  351. package/template/.opencode/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
  352. package/template/.opencode/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
  353. package/template/.opencode/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
  354. package/template/.opencode/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
  355. package/template/.opencode/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
  356. package/template/.opencode/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
  357. package/template/.opencode/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
  358. package/template/.opencode/skills/verification-loop/SKILL.md +120 -0
  359. package/template/.opencode/skills/web-design-guidelines/SKILL.md +39 -0
  360. package/template/AGENTS.md +32 -0
  361. package/template/opencode.json +354 -0
@@ -0,0 +1,221 @@
1
+ import { readFileSync, existsSync, copyFileSync, mkdirSync, writeFileSync, readdirSync, statSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { execSync } from 'child_process';
5
+
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ const PKG_ROOT = join(__dirname, '..', '..');
9
+ const TEMPLATE_DIR = join(PKG_ROOT, 'template');
10
+
11
+ function copyRecursive(src, dest) {
12
+ if (!existsSync(src)) return;
13
+ const entries = readdirSync(src, { withFileTypes: true });
14
+ mkdirSync(dest, { recursive: true });
15
+ for (const entry of entries) {
16
+ if (entry.name === '.DS_Store') continue;
17
+ const srcPath = join(src, entry.name);
18
+ const destPath = join(dest, entry.name);
19
+ if (entry.isDirectory()) {
20
+ copyRecursive(srcPath, destPath);
21
+ } else {
22
+ copyFileSync(srcPath, destPath);
23
+ }
24
+ }
25
+ }
26
+
27
+ function detectPackageManager(cwd) {
28
+ if (existsSync(join(cwd, 'bun.lock'))) return 'bun';
29
+ if (existsSync(join(cwd, 'pnpm-lock.yaml'))) return 'pnpm';
30
+ if (existsSync(join(cwd, 'yarn.lock'))) return 'yarn';
31
+ return 'npm';
32
+ }
33
+
34
+ function mergeJson(target, source, strategy = {}) {
35
+ const merged = JSON.parse(JSON.stringify(target));
36
+
37
+ for (const [key, value] of Object.entries(source)) {
38
+ if (!(key in merged)) {
39
+ merged[key] = JSON.parse(JSON.stringify(value));
40
+ continue;
41
+ }
42
+
43
+ const rule = strategy[key] || 'default';
44
+
45
+ if (rule === 'keep-target') {
46
+ // Keep user's existing value
47
+ continue;
48
+ }
49
+
50
+ if (rule === 'source-wins') {
51
+ merged[key] = JSON.parse(JSON.stringify(value));
52
+ continue;
53
+ }
54
+
55
+ if (rule === 'merge-agents') {
56
+ merged[key] = merged[key] || {};
57
+ for (const [agentKey, agentVal] of Object.entries(value)) {
58
+ if (!(agentKey in merged[key])) {
59
+ merged[key][agentKey] = JSON.parse(JSON.stringify(agentVal));
60
+ }
61
+ // else: keep user's existing agent (unless --force)
62
+ }
63
+ continue;
64
+ }
65
+
66
+ if (rule === 'merge-mcp') {
67
+ merged[key] = merged[key] || {};
68
+ for (const [mcpKey, mcpVal] of Object.entries(value)) {
69
+ if (!(mcpKey in merged[key])) {
70
+ merged[key][mcpKey] = JSON.parse(JSON.stringify(mcpVal));
71
+ }
72
+ }
73
+ continue;
74
+ }
75
+
76
+ if (rule === 'merge-instructions') {
77
+ const existing = merged[key] || [];
78
+ const srcArr = Array.isArray(value) ? value : [value];
79
+ for (const item of srcArr) {
80
+ if (!existing.includes(item)) {
81
+ existing.push(item);
82
+ }
83
+ }
84
+ merged[key] = existing;
85
+ continue;
86
+ }
87
+
88
+ if (rule === 'merge-permissions') {
89
+ merged[key] = merged[key] || {};
90
+ for (const [permKey, permVal] of Object.entries(value)) {
91
+ if (!(permKey in merged[key])) {
92
+ merged[key][permKey] = JSON.parse(JSON.stringify(permVal));
93
+ }
94
+ }
95
+ continue;
96
+ }
97
+
98
+ // default: source wins for top-level, but merge nested objects
99
+ if (typeof value === 'object' && value !== null && !Array.isArray(value) &&
100
+ typeof merged[key] === 'object' && merged[key] !== null && !Array.isArray(merged[key])) {
101
+ merged[key] = { ...merged[key], ...value };
102
+ } else {
103
+ merged[key] = value;
104
+ }
105
+ }
106
+
107
+ return merged;
108
+ }
109
+
110
+ function mergeOencodeConfig(templateConfigPath, userConfigPath, force) {
111
+ const templateConfig = JSON.parse(readFileSync(templateConfigPath, 'utf-8'));
112
+ const userConfig = existsSync(userConfigPath)
113
+ ? JSON.parse(readFileSync(userConfigPath, 'utf-8'))
114
+ : {};
115
+
116
+ const strategy = {
117
+ '$schema': 'source-wins',
118
+ 'formatter': 'keep-target',
119
+ 'permission': 'keep-target',
120
+ 'instructions': 'merge-instructions',
121
+ 'mcp': 'merge-mcp',
122
+ 'agent': force ? 'source-wins' : 'merge-agents',
123
+ 'plugin': 'merge-instructions',
124
+ };
125
+
126
+ const merged = mergeJson(userConfig, templateConfig, strategy);
127
+ return merged;
128
+ }
129
+
130
+ export async function init(options) {
131
+ const targetDir = options.dir;
132
+ const force = options.force;
133
+ const skipInstall = options.skipInstall;
134
+
135
+ console.log(`\n opencode-agent-kit init`);
136
+
137
+ // 1. Validate target
138
+ if (!existsSync(targetDir)) {
139
+ console.error(` ✗ Target directory does not exist: ${targetDir}`);
140
+ process.exit(1);
141
+ }
142
+
143
+ // 2. Check if .opencode already exists
144
+ const opencodeDir = join(targetDir, '.opencode');
145
+ const userConfigPath = join(targetDir, 'opencode.json');
146
+
147
+ if (existsSync(opencodeDir) && !force) {
148
+ console.log(` \n ⚠ .opencode/ already exists in ${targetDir}`);
149
+ const rl = await import('readline/promises');
150
+ const readline = rl.createInterface({ input: process.stdin, output: process.stdout });
151
+ const answer = await readline.question(` ? Overwrite existing files? [y/N] `);
152
+ readline.close();
153
+ if (answer.toLowerCase() !== 'y') {
154
+ console.log(` ✗ Aborted.`);
155
+ process.exit(0);
156
+ }
157
+ }
158
+
159
+ // 3. Validate template exists
160
+ if (!existsSync(TEMPLATE_DIR)) {
161
+ console.error(` ✗ Template directory not found at ${TEMPLATE_DIR}`);
162
+ console.error(` This is a bug. Please reinstall the package.`);
163
+ process.exit(1);
164
+ }
165
+
166
+ // 4. Copy .opencode/ from template
167
+ console.log(` \n 📁 Copying .opencode/ configuration...`);
168
+ copyRecursive(join(TEMPLATE_DIR, '.opencode'), opencodeDir);
169
+
170
+ // 5. Merge opencode.json
171
+ const templateConfigPath = join(TEMPLATE_DIR, 'opencode.json');
172
+ if (existsSync(templateConfigPath)) {
173
+ console.log(` 📝 Merging opencode.json...`);
174
+ const merged = mergeOencodeConfig(templateConfigPath, userConfigPath, force);
175
+ writeFileSync(userConfigPath, JSON.stringify(merged, null, 2) + '\n', 'utf-8');
176
+ }
177
+
178
+ // 6. Handle AGENTS.md (append)
179
+ const templateAgentsPath = join(TEMPLATE_DIR, 'AGENTS.md');
180
+ const userAgentsPath = join(targetDir, 'AGENTS.md');
181
+ if (existsSync(templateAgentsPath)) {
182
+ const templateContent = readFileSync(templateAgentsPath, 'utf-8');
183
+ if (existsSync(userAgentsPath) && !force) {
184
+ const existingContent = readFileSync(userAgentsPath, 'utf-8');
185
+ if (!existingContent.includes('# opencode-agent-kit')) {
186
+ console.log(` 📄 Appending to existing AGENTS.md...`);
187
+ writeFileSync(userAgentsPath, existingContent.trimEnd() + '\n\n' + templateContent, 'utf-8');
188
+ }
189
+ } else {
190
+ console.log(` 📄 Writing AGENTS.md...`);
191
+ writeFileSync(userAgentsPath, templateContent, 'utf-8');
192
+ }
193
+ }
194
+
195
+ // 7. Install dependencies
196
+ if (!skipInstall) {
197
+ const pm = detectPackageManager(opencodeDir);
198
+ console.log(` 📦 Installing .opencode/ dependencies with ${pm}...`);
199
+ try {
200
+ execSync(`${pm} install`, { cwd: opencodeDir, stdio: 'pipe' });
201
+ } catch (err) {
202
+ console.error(` ⚠ Dependency install failed: ${err.message}`);
203
+ console.error(` You can run "${pm} install" manually in .opencode/`);
204
+ }
205
+ }
206
+
207
+ // 8. Done
208
+ console.log(`\n ✅ opencode-agent-kit installed!\n`);
209
+ console.log(` Location: ${targetDir}`);
210
+ console.log(` What you got:`);
211
+ console.log(` • opencode.json — 13 agents config with MCP servers`);
212
+ console.log(` • .opencode/agents/ — 14 agent prompt files`);
213
+ console.log(` • .opencode/skills/ — 60+ skill playbooks`);
214
+ console.log(` • .opencode/commands/ — 35+ slash commands`);
215
+ console.log(` • .opencode/rules/ — Scoped coding rules`);
216
+ console.log(` • .opencode/contexts/ — Dev/review/research contexts`);
217
+ console.log(` • .opencode/agent-docs/— Agent documentation`);
218
+ console.log(`\n Next steps:`);
219
+ console.log(` cd ${targetDir}`);
220
+ console.log(` opencode\n`);
221
+ }
package/bin/init.mjs ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Command } from 'commander';
4
+ import { init } from './commands/init.mjs';
5
+
6
+ const program = new Command();
7
+
8
+ program
9
+ .name('opencode-agent-kit')
10
+ .description('Install OpenCode multi-agent toolkit into your project')
11
+ .version('1.0.0');
12
+
13
+ program
14
+ .command('init')
15
+ .description('Initialize .opencode/ configuration in current project')
16
+ .option('-f, --force', 'Overwrite existing files without prompt')
17
+ .option('-d, --dir <path>', 'Target project directory', process.cwd())
18
+ .option('--skip-install', 'Skip npm/bun install step in .opencode/')
19
+ .action(init);
20
+
21
+ program.parse();
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "opencode-agent-kit",
3
+ "version": "1.0.0",
4
+ "description": "Multi-stack OpenCode agent toolkit — 1 orchestrator + 12 specialized subagents for Nuxt, React, Node.js, Laravel, CI3, Android, Flutter, DevOps, SEO, and more",
5
+ "type": "module",
6
+ "bin": {
7
+ "opencode-agent-kit": "./bin/init.mjs"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "template/"
12
+ ],
13
+ "license": "MIT",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/defuj/frontend-developer-nuxt"
17
+ },
18
+ "dependencies": {
19
+ "commander": "^13.0.0",
20
+ "fs-extra": "^11.0.0"
21
+ }
22
+ }
@@ -0,0 +1,82 @@
1
+ # Backend Patterns (Enterprise, Portable)
2
+
3
+ Use these patterns as baseline across backend services with Node.js + TypeScript + Express + Prisma.
4
+
5
+ ## Standard Module Layout
6
+
7
+ - Controllers: request orchestration and response mapping
8
+ - Routes: endpoint registration and middleware chain
9
+ - DTOs: request validation and response exposure contracts
10
+ - Middlewares: auth, validation, upload, limiter, etc.
11
+ - Utilities/services: reusable domain/business logic
12
+
13
+ ## DTO Conventions
14
+
15
+ - Request DTO suffix: `*.dto.ts`
16
+ - Response DTO suffix: `*.response.dto.ts`
17
+ - Explicit field exposure with `@Expose()`
18
+ - Route-level validation middleware uses request DTO class
19
+ - Response serialization maps through response DTO with extraneous field exclusion
20
+
21
+ Example mapping:
22
+
23
+ ```ts
24
+ const result = plainToInstance(ResponseDTO, payload, {
25
+ excludeExtraneousValues: true,
26
+ });
27
+ ```
28
+
29
+ ## API Response Conventions
30
+
31
+ - Use one centralized response helper for success and error envelopes
32
+ - Keep status/message/data structure consistent across endpoints
33
+ - Avoid ad-hoc response shapes in controllers
34
+
35
+ ## Error Handling Conventions
36
+
37
+ - Wrap controller logic in try/catch
38
+ - Delegate catch to centralized error handler
39
+ - Provide predictable business error mappings
40
+ - Log unexpected errors once, near boundary layer
41
+
42
+ ## Route and Middleware Conventions
43
+
44
+ - Register specific paths before parameterized paths
45
+ - Place auth middleware before validation and handler
46
+ - Keep middleware order deterministic and explicit
47
+ - For multipart endpoints, apply upload middleware before DTO validation when needed
48
+
49
+ ## Data Access Conventions
50
+
51
+ - Use transactions for multi-step state mutations
52
+ - Keep write paths idempotent where practical (especially webhook/event handlers)
53
+ - Query only fields/relations needed for output
54
+ - Maintain tenant/ownership scoping where service model requires it
55
+
56
+ ## Security Conventions
57
+
58
+ - Validate all external input via DTOs
59
+ - Enforce auth and resource-level authorization consistently
60
+ - Keep error responses safe (no stack traces/internal details)
61
+ - Restrict upload MIME types, size, and destination path
62
+ - Never leak secret values in logs or API responses
63
+
64
+ ## Pagination and List Conventions
65
+
66
+ - Normalize paging params and cap upper bounds
67
+ - Apply filters and sorting through deterministic query builder logic
68
+ - Return pagination metadata alongside items
69
+
70
+ ## Mutation Conventions
71
+
72
+ - Validate request payload and preconditions first
73
+ - Apply domain mutation in transaction
74
+ - Emit domain/audit log entries for critical operations
75
+ - Return mapped response DTO from committed state
76
+
77
+ ## Test and Verification Conventions
78
+
79
+ - Tiny changes: one focused check
80
+ - Small changes: type-check plus one targeted check
81
+ - Medium+ changes: type-check, lint, and relevant tests
82
+ - Contract changes: include endpoint behavior validation
@@ -0,0 +1,49 @@
1
+ # Backend Agent Quick Start (Enterprise)
2
+
3
+ This guide is portable across services that share the same backend stack style.
4
+
5
+ ## Agent Name
6
+
7
+ - `backend`
8
+
9
+ ## Activate the Agent
10
+
11
+ ```text
12
+ @backend Analyze this backend service and align implementation with existing DTO, route, middleware, and controller patterns.
13
+ ```
14
+
15
+ ## High-Value Prompt Templates
16
+
17
+ ```text
18
+ @backend Add endpoint <METHOD> <path> with request/response DTOs, validation middleware, and standardized error handling.
19
+ ```
20
+
21
+ ```text
22
+ @backend Implement transaction-safe <business operation> with audit logging and predictable response mapping.
23
+ ```
24
+
25
+ ```text
26
+ @backend Review this module for auth boundary, tenant scoping, validation, and API contract consistency.
27
+ ```
28
+
29
+ ```text
30
+ @backend Refactor this controller to reduce complexity while preserving behavior and response shape.
31
+ ```
32
+
33
+ ## What the agent is optimized for
34
+
35
+ - Node.js + TypeScript + Express + Prisma services
36
+ - DTO-driven validation and response mapping
37
+ - Consistent route/middleware layering
38
+ - Transaction-safe data mutations
39
+ - Security and tenant/ownership boundaries
40
+
41
+ ## Recommended verification commands
42
+
43
+ ```bash
44
+ npm run type-check
45
+ npm run lint
46
+ npm run test:run
47
+ ```
48
+
49
+ If command names differ in a service, use that service's equivalents.