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,904 @@
1
+ # Frontend Developer Agent - Testing Guide
2
+
3
+ Panduan untuk testing dan validasi Frontend Developer Agent.
4
+
5
+ ## Daftar Isi
6
+
7
+ 1. [Pre-Testing Checklist](#pre-testing-checklist)
8
+ 2. [Basic Functionality Tests](#basic-functionality-tests)
9
+ 3. [MCP Integration Tests](#mcp-integration-tests)
10
+ 4. [Skills Integration Tests](#skills-integration-tests)
11
+ 5. [Advanced Scenarios](#advanced-scenarios)
12
+ 6. [Troubleshooting](#troubleshooting)
13
+
14
+ ---
15
+
16
+ ## Pre-Testing Checklist
17
+
18
+ Sebelum mulai testing, pastikan:
19
+
20
+ ### 1. Configuration Files
21
+
22
+ ```bash
23
+ # Check agent configuration
24
+ cat .opencode/config.json
25
+
26
+ # Verify MCP servers configured
27
+ # Expected: nuxt, nuxt-ui, playwright enabled
28
+ ```
29
+
30
+ ### 2. Documentation Files
31
+
32
+ ```bash
33
+ # List agent documentation
34
+ ls -la .opencode/agents/
35
+
36
+ # Expected files:
37
+ # - frontend-developer.md (agent definition)
38
+ # - README.md (user guide)
39
+ # - WORKFLOWS.md (workflow examples)
40
+ # - CHEATSHEET.md (quick reference)
41
+ # - QUICK_START.md (getting started)
42
+ # - MCP_GUIDE.md (MCP integration)
43
+ # - EXAMPLES.md (practical examples)
44
+ # - TESTING_GUIDE.md (this file)
45
+ ```
46
+
47
+ ### 3. Environment Setup
48
+
49
+ ```bash
50
+ # Check .env.example has Figma token placeholder
51
+ grep FIGMA .env.example
52
+
53
+ # Verify project structure
54
+ ls -la app/
55
+ ls -la server/
56
+ ls -la shared/
57
+ ```
58
+
59
+ ### 4. Skills Available
60
+
61
+ ```bash
62
+ # Global skills
63
+ ls ~/.opencode/skills/
64
+
65
+ # Additional skills
66
+ ls ~/.agents/skills/ 2>/dev/null || echo "No additional skills"
67
+
68
+ # Expected core skills:
69
+ # - coding-standards
70
+ # - frontend-patterns
71
+ # - frontend-design
72
+ # - nuxt-ui
73
+ # - web-design-guidelines
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Basic Functionality Tests
79
+
80
+ ### Test 1: Agent Activation
81
+
82
+ **Command:**
83
+
84
+ ```
85
+ @frontend Hello! Introduce yourself and list your capabilities.
86
+ ```
87
+
88
+ **Expected Response:**
89
+
90
+ - ✅ Agent responds dengan identity sebagai frontend expert
91
+ - ✅ Mentions Nuxt.js & Nuxt UI specialization
92
+ - ✅ Lists core capabilities (component dev, accessibility, performance, etc.)
93
+ - ✅ Mentions MCP integration
94
+ - ✅ Professional tone, concise
95
+
96
+ **Pass Criteria:**
97
+
98
+ - Response < 500 words
99
+ - Mentions at least 5 core capabilities
100
+ - Explains MCP integration briefly
101
+
102
+ ---
103
+
104
+ ### Test 2: File Reading & Analysis
105
+
106
+ **Command:**
107
+
108
+ ```
109
+ @frontend Analyze struktur project ini. Apa framework yang digunakan?
110
+ ```
111
+
112
+ **Expected Response:**
113
+
114
+ - ✅ Identifies Nuxt 4 framework
115
+ - ✅ Lists key directories (app/, server/, shared/)
116
+ - ✅ Identifies package.json dependencies
117
+ - ✅ Notes testing setup (Vitest, Playwright)
118
+ - ✅ Identifies UI framework (Nuxt UI)
119
+
120
+ **Pass Criteria:**
121
+
122
+ - Correctly identifies all major frameworks
123
+ - Provides directory structure overview
124
+ - Notes important configuration files
125
+
126
+ ---
127
+
128
+ ### Test 3: Simple Component Creation
129
+
130
+ **Command:**
131
+
132
+ ```
133
+ @frontend Create simple Button component dengan props:
134
+ - label (string)
135
+ - variant (primary | secondary)
136
+ - disabled (boolean)
137
+
138
+ Gunakan TypeScript dan Nuxt UI.
139
+ ```
140
+
141
+ **Expected Output:**
142
+
143
+ - ✅ File: `app/components/Button.vue` or `app/components/common/Button.vue`
144
+ - ✅ Uses `<script setup lang="ts">`
145
+ - ✅ TypeScript interface untuk props
146
+ - ✅ Uses Nuxt UI `<UButton>` if applicable
147
+ - ✅ Proper default values
148
+ - ✅ Accessible attributes
149
+
150
+ **Pass Criteria:**
151
+
152
+ ```vue
153
+ <!-- Expected structure -->
154
+ <script setup lang="ts">
155
+ interface Props {
156
+ label: string
157
+ variant?: 'primary' | 'secondary'
158
+ disabled?: boolean
159
+ }
160
+
161
+ const props = withDefaults(defineProps<Props>(), {
162
+ variant: 'primary',
163
+ disabled: false,
164
+ })
165
+ </script>
166
+
167
+ <template>
168
+ <UButton :variant="variant" :disabled="disabled">
169
+ {{ label }}
170
+ </UButton>
171
+ </template>
172
+ ```
173
+
174
+ ---
175
+
176
+ ## MCP Integration Tests
177
+
178
+ ### Test 4: Nuxt Documentation Query
179
+
180
+ **Command:**
181
+
182
+ ```
183
+ @frontend Bagaimana cara implement server-side data fetching di Nuxt 4?
184
+ Gunakan Nuxt MCP untuk check documentation.
185
+ ```
186
+
187
+ **Expected Behavior:**
188
+
189
+ - ✅ Agent queries Nuxt MCP server
190
+ - ✅ Retrieves latest Nuxt 4 documentation
191
+ - ✅ Explains `useFetch` and `useAsyncData`
192
+ - ✅ Provides code example
193
+ - ✅ Mentions SSR considerations
194
+
195
+ **Pass Criteria:**
196
+
197
+ - Response includes MCP query confirmation
198
+ - Code examples use Nuxt 4 patterns (not Nuxt 2/3)
199
+ - Explains difference between `useFetch` and `useAsyncData`
200
+ - Includes TypeScript typing
201
+
202
+ ---
203
+
204
+ ### Test 5: Nuxt UI Component Discovery
205
+
206
+ **Command:**
207
+
208
+ ```
209
+ @frontend Apa component terbaik dari Nuxt UI untuk membuat notification system?
210
+ Check Nuxt UI MCP untuk options available.
211
+ ```
212
+
213
+ **Expected Behavior:**
214
+
215
+ - ✅ Queries Nuxt UI MCP
216
+ - ✅ Lists available notification components
217
+ - ✅ Compares `<UNotification>`, `<UToast>`, `<UAlert>`
218
+ - ✅ Provides recommendation dengan reasoning
219
+ - ✅ Shows implementation example
220
+
221
+ **Pass Criteria:**
222
+
223
+ - Lists multiple relevant components
224
+ - Explains use cases for each
225
+ - Provides working code example
226
+ - Includes props documentation
227
+
228
+ ---
229
+
230
+ ### Test 6: Playwright Testing
231
+
232
+ **Command:**
233
+
234
+ ```
235
+ @frontend Create E2E test untuk login page menggunakan Playwright.
236
+ Path: /login
237
+ Test scenario: success login dengan valid credentials.
238
+ ```
239
+
240
+ **Expected Behavior:**
241
+
242
+ - ✅ Uses Playwright MCP if available
243
+ - ✅ Creates test file in correct location
244
+ - ✅ Includes proper test structure
245
+ - ✅ Has assertions untuk success state
246
+ - ✅ Includes error scenarios
247
+
248
+ **Expected Output:**
249
+
250
+ ```typescript
251
+ // tests/e2e/login.spec.ts
252
+ import { test, expect } from '@playwright/test'
253
+
254
+ test.describe('Login Flow', () => {
255
+ test('should login with valid credentials', async ({ page }) => {
256
+ await page.goto('/login')
257
+
258
+ await page.fill('[name="email"]', 'user@example.com')
259
+ await page.fill('[name="password"]', 'password123')
260
+ await page.click('[type="submit"]')
261
+
262
+ await expect(page).toHaveURL('/dashboard')
263
+ await expect(page.locator('h1')).toContainText('Welcome')
264
+ })
265
+ })
266
+ ```
267
+
268
+ ---
269
+
270
+ ## Skills Integration Tests
271
+
272
+ ### Test 7: Coding Standards Skill
273
+
274
+ **Command:**
275
+
276
+ ```
277
+ @frontend Review code quality untuk file app/components/UserCard.vue
278
+ Load skill coding-standards untuk check best practices.
279
+ ```
280
+
281
+ **Expected Behavior:**
282
+
283
+ - ✅ Loads `coding-standards` skill
284
+ - ✅ Checks TypeScript strict mode compliance
285
+ - ✅ Verifies no `any` types
286
+ - ✅ Checks component composition
287
+ - ✅ Reviews naming conventions
288
+ - ✅ Provides detailed feedback
289
+
290
+ **Pass Criteria:**
291
+
292
+ - Explicitly mentions loading coding-standards skill
293
+ - Provides categorized feedback (critical/warning/info)
294
+ - Includes code examples for fixes
295
+ - References specific coding standards
296
+
297
+ ---
298
+
299
+ ### Test 8: Accessibility Review Skill
300
+
301
+ **Command:**
302
+
303
+ ```
304
+ @frontend Review accessibility untuk Modal component.
305
+ Load skill web-design-guidelines untuk WCAG 2.1 compliance.
306
+ ```
307
+
308
+ **Expected Behavior:**
309
+
310
+ - ✅ Loads `web-design-guidelines` skill
311
+ - ✅ Checks semantic HTML
312
+ - ✅ Verifies ARIA attributes
313
+ - ✅ Tests keyboard navigation
314
+ - ✅ Checks color contrast
315
+ - ✅ Provides WCAG compliance report
316
+
317
+ **Expected Report Structure:**
318
+
319
+ ```markdown
320
+ # Accessibility Audit
321
+
322
+ ## WCAG 2.1 Level AA Compliance
323
+
324
+ ### Issues Found
325
+
326
+ 1. ❌ Missing role="dialog"
327
+ 2. ⚠️ Low color contrast (3.2:1, needs 4.5:1)
328
+
329
+ ### Recommendations
330
+
331
+ [Detailed fixes with code examples]
332
+
333
+ ### After Fixes
334
+
335
+ ✅ All criteria met
336
+ ```
337
+
338
+ ---
339
+
340
+ ### Test 9: Frontend Patterns Skill
341
+
342
+ **Command:**
343
+
344
+ ```
345
+ @frontend Implement data fetching dengan error handling untuk /api/products.
346
+ Load skill frontend-patterns untuk best practices.
347
+ ```
348
+
349
+ **Expected Behavior:**
350
+
351
+ - ✅ Loads `frontend-patterns` skill
352
+ - ✅ Uses Nuxt 4 composables (`useFetch`)
353
+ - ✅ Implements loading states
354
+ - ✅ Adds error boundaries
355
+ - ✅ Includes retry mechanism
356
+ - ✅ Proper TypeScript typing
357
+
358
+ ---
359
+
360
+ ### Test 10: Multiple Skills Integration
361
+
362
+ **Command:**
363
+
364
+ ```
365
+ @frontend Create ProductCard component dengan requirements:
366
+ - Accessible (WCAG 2.1)
367
+ - Optimized performance
368
+ - Clean code standards
369
+ - Uses Nuxt UI components
370
+
371
+ Load relevant skills: web-design-guidelines, coding-standards, frontend-patterns, nuxt-ui
372
+ ```
373
+
374
+ **Expected Behavior:**
375
+
376
+ - ✅ Loads all 4 mentioned skills
377
+ - ✅ Applies patterns from each skill
378
+ - ✅ Creates comprehensive component
379
+ - ✅ Includes tests
380
+ - ✅ Provides documentation
381
+
382
+ **Pass Criteria:**
383
+
384
+ - Component meets all requirements
385
+ - Code follows all loaded skill patterns
386
+ - Includes accessibility features
387
+ - Performance optimized (lazy loading, etc.)
388
+ - Clean, typed code
389
+
390
+ ---
391
+
392
+ ## Advanced Scenarios
393
+
394
+ ### Test 11: Complex Feature Implementation
395
+
396
+ **Scenario:** Multi-step form dengan validation, file upload, auto-save
397
+
398
+ **Command:**
399
+
400
+ ```
401
+ @frontend Implement user profile update form dengan:
402
+ 1. Multi-step wizard (3 steps: Personal, Contact, Preferences)
403
+ 2. Zod validation per step
404
+ 3. Avatar upload dengan preview
405
+ 4. Auto-save draft ke localStorage
406
+ 5. Progress indicator
407
+ 6. Nuxt UI components
408
+
409
+ Load skills: frontend-patterns, nuxt-ui, coding-standards
410
+ ```
411
+
412
+ **Expected Deliverables:**
413
+
414
+ - ✅ Form component dengan proper structure
415
+ - ✅ Zod schemas untuk validation
416
+ - ✅ Step navigation logic
417
+ - ✅ File upload handling
418
+ - ✅ Auto-save composable
419
+ - ✅ Progress component
420
+ - ✅ Comprehensive tests
421
+
422
+ **Validation Checklist:**
423
+
424
+ - [ ] All steps implemented
425
+ - [ ] Validation works per step
426
+ - [ ] File upload with preview
427
+ - [ ] Auto-save functionality
428
+ - [ ] Progress indicator accurate
429
+ - [ ] Uses Nuxt UI components
430
+ - [ ] TypeScript strict mode
431
+ - [ ] Accessible
432
+ - [ ] Tests cover all scenarios
433
+
434
+ ---
435
+
436
+ ### Test 12: Performance Optimization
437
+
438
+ **Scenario:** Optimize slow product listing page
439
+
440
+ **Command:**
441
+
442
+ ```
443
+ @frontend Optimize /products page yang load 500+ products:
444
+ - Current FCP: 3.5s
445
+ - Target FCP: < 1.5s
446
+ - Target Lighthouse: 90+
447
+
448
+ Analyze dan implement optimizations.
449
+ Load skill: frontend-patterns
450
+ ```
451
+
452
+ **Expected Actions:**
453
+
454
+ 1. ✅ Analyze current implementation
455
+ 2. ✅ Identify bottlenecks
456
+ 3. ✅ Implement lazy loading
457
+ 4. ✅ Add image optimization
458
+ 5. ✅ Use virtual scrolling
459
+ 6. ✅ Code splitting
460
+ 7. ✅ Measure improvements
461
+
462
+ **Expected Report:**
463
+
464
+ ```markdown
465
+ # Performance Optimization Report
466
+
467
+ ## Before
468
+
469
+ - Bundle size: 500KB
470
+ - FCP: 3.5s
471
+ - Lighthouse: 65
472
+
473
+ ## Optimizations Applied
474
+
475
+ 1. Lazy load images with NuxtImg
476
+ 2. Virtual scrolling for product list
477
+ 3. Code splitting for heavy components
478
+ 4. Implement route-level caching
479
+
480
+ ## After
481
+
482
+ - Bundle size: 200KB (-60%)
483
+ - FCP: 1.2s (-66%)
484
+ - Lighthouse: 94 (+45%)
485
+
486
+ ## Code Changes
487
+
488
+ [Detailed diff with explanations]
489
+ ```
490
+
491
+ ---
492
+
493
+ ### Test 13: Bug Diagnosis & Fix
494
+
495
+ **Scenario:** Hydration mismatch error
496
+
497
+ **Command:**
498
+
499
+ ```
500
+ @frontend Fix hydration error:
501
+ "Hydration completed but contains mismatches"
502
+
503
+ Error di app/pages/index.vue line 45.
504
+ Component menampilkan timestamp dengan new Date().toLocaleString()
505
+ ```
506
+
507
+ **Expected Process:**
508
+
509
+ 1. ✅ Analyze error cause
510
+ 2. ✅ Explain SSR/CSR difference
511
+ 3. ✅ Provide multiple fix options
512
+ 4. ✅ Recommend best approach
513
+ 5. ✅ Implement fix
514
+ 6. ✅ Add preventive measures
515
+
516
+ **Expected Fix:**
517
+
518
+ ```vue
519
+ <!-- Option 1: Client-only rendering -->
520
+ <ClientOnly fallback="Loading...">
521
+ <p>{{ new Date().toLocaleString() }}</p>
522
+ </ClientOnly>
523
+
524
+ <!-- Option 2: Use ISO format (recommended) -->
525
+ <script setup lang="ts">
526
+ const timestamp = new Date().toISOString()
527
+ </script>
528
+ <template>
529
+ <p>{{ timestamp }}</p>
530
+ </template>
531
+ ```
532
+
533
+ ---
534
+
535
+ ### Test 14: Full Feature Development
536
+
537
+ **Scenario:** Complete shopping cart implementation
538
+
539
+ **Command:**
540
+
541
+ ```
542
+ @frontend Implement complete shopping cart feature:
543
+
544
+ Requirements:
545
+ 1. Pinia store untuk state management
546
+ 2. Add/remove items dengan optimistic updates
547
+ 3. Quantity adjustment
548
+ 4. Total calculation dengan tax
549
+ 5. Persist to localStorage
550
+ 6. Sync across browser tabs
551
+ 7. Cart sidebar component (Nuxt UI)
552
+ 8. Checkout button integration
553
+ 9. Unit tests untuk store
554
+ 10. E2E tests untuk user flow
555
+
556
+ Load relevant skills dan MCP servers as needed.
557
+ ```
558
+
559
+ **Expected Deliverables:**
560
+
561
+ 1. ✅ `app/stores/cart.ts` - Pinia store
562
+ 2. ✅ `app/components/cart/CartSidebar.vue` - UI component
563
+ 3. ✅ `app/composables/useCart.ts` - Composable
564
+ 4. ✅ `tests/unit/stores/cart.spec.ts` - Unit tests
565
+ 5. ✅ `tests/e2e/cart.spec.ts` - E2E tests
566
+ 6. ✅ Documentation dalam README atau comments
567
+
568
+ **Validation:**
569
+
570
+ - [ ] All 10 requirements met
571
+ - [ ] Store properly typed
572
+ - [ ] Optimistic updates work
573
+ - [ ] LocalStorage persistence
574
+ - [ ] Tab sync via BroadcastChannel
575
+ - [ ] UI uses Nuxt UI components
576
+ - [ ] Unit test coverage 80%+
577
+ - [ ] E2E tests cover critical paths
578
+ - [ ] Code follows standards
579
+ - [ ] Accessible
580
+
581
+ ---
582
+
583
+ ## Edge Cases & Error Handling
584
+
585
+ ### Test 15: Invalid Request Handling
586
+
587
+ **Command:**
588
+
589
+ ```
590
+ @frontend asdfghjkl
591
+ ```
592
+
593
+ **Expected Behavior:**
594
+
595
+ - ✅ Asks for clarification politely
596
+ - ✅ Suggests what user might mean
597
+ - ✅ Doesn't proceed without clear instruction
598
+
599
+ ---
600
+
601
+ ### Test 16: Out of Scope Request
602
+
603
+ **Command:**
604
+
605
+ ```
606
+ @frontend Setup PostgreSQL database dengan Docker
607
+ ```
608
+
609
+ **Expected Behavior:**
610
+
611
+ - ✅ Politely declines (out of frontend scope)
612
+ - ✅ Suggests appropriate alternative (backend agent, if available)
613
+ - ✅ Offers related frontend help (e.g., API integration)
614
+
615
+ ---
616
+
617
+ ### Test 17: Ambiguous Requirements
618
+
619
+ **Command:**
620
+
621
+ ```
622
+ @frontend Create form
623
+ ```
624
+
625
+ **Expected Behavior:**
626
+
627
+ - ✅ Asks clarifying questions:
628
+ - What fields needed?
629
+ - Validation requirements?
630
+ - Submit endpoint?
631
+ - UI preferences?
632
+ - ✅ Doesn't make assumptions
633
+ - ✅ Waits for complete requirements
634
+
635
+ ---
636
+
637
+ ## Troubleshooting
638
+
639
+ ### Issue: Agent tidak respond
640
+
641
+ **Debug Steps:**
642
+
643
+ ```bash
644
+ # 1. Check agent configuration
645
+ cat .opencode/config.json | grep -A 20 '"frontend"'
646
+
647
+ # 2. Verify agent definition file exists
648
+ ls -la .opencode/agents/frontend-developer.md
649
+
650
+ # 3. Check OpenCode logs (if available)
651
+ # Look for errors related to agent initialization
652
+ ```
653
+
654
+ **Solutions:**
655
+
656
+ - Restart OpenCode session
657
+ - Verify JSON syntax in config.json
658
+ - Check file permissions
659
+
660
+ ---
661
+
662
+ ### Issue: MCP servers tidak available
663
+
664
+ **Debug Steps:**
665
+
666
+ ```bash
667
+ # Check MCP configuration
668
+ cat .opencode/config.json | grep -A 5 '"mcp"'
669
+
670
+ # Verify internet connection (for remote MCP)
671
+ curl -I https://nuxt.com/mcp
672
+
673
+ # Test Playwright installation (for stdio MCP)
674
+ npx @modelcontextprotocol/server-playwright --version
675
+ ```
676
+
677
+ **Solutions:**
678
+
679
+ - Enable MCP servers: `"enabled": true`
680
+ - Check internet connection
681
+ - Install missing npm packages
682
+ - Verify environment variables (Figma token)
683
+
684
+ ---
685
+
686
+ ### Issue: Skills tidak load
687
+
688
+ **Debug Steps:**
689
+
690
+ ```bash
691
+ # Check skills directories
692
+ ls ~/.opencode/skills/
693
+ ls ~/.agents/skills/
694
+
695
+ # Verify skill files exist
696
+ ls ~/.opencode/skills/coding-standards/SKILL.md
697
+ ```
698
+
699
+ **Solutions:**
700
+
701
+ - Install missing skills
702
+ - Check file permissions
703
+ - Verify skill directory structure
704
+ - Explicitly mention skill in prompt
705
+
706
+ ---
707
+
708
+ ### Issue: Agent terlalu verbose
709
+
710
+ **Solutions:**
711
+
712
+ - Add constraint: `(concise)` in prompt
713
+ - Request specific format: "Show only code"
714
+ - Adjust temperature in config (lower = less creative)
715
+
716
+ ---
717
+
718
+ ### Issue: Wrong framework patterns
719
+
720
+ **Example:** Agent menggunakan pattern yang tidak sesuai Nuxt/Vue
721
+
722
+ **Solutions:**
723
+
724
+ - Explicitly mention: "Use Nuxt 4 patterns"
725
+ - Reference Nuxt MCP: "Check Nuxt MCP documentation"
726
+ - Load Nuxt-specific skills: "Load skill frontend-patterns"
727
+
728
+ ---
729
+
730
+ ## Performance Benchmarks
731
+
732
+ ### Expected Response Times
733
+
734
+ | Task Type | Expected Time |
735
+ | ------------------- | ------------- |
736
+ | Simple query | < 5 seconds |
737
+ | Component creation | 10-30 seconds |
738
+ | Code review | 20-60 seconds |
739
+ | Complex feature | 1-5 minutes |
740
+ | Full implementation | 5-15 minutes |
741
+
742
+ ### MCP Query Times
743
+
744
+ | MCP Server | Typical Response |
745
+ | ---------- | ---------------- |
746
+ | Nuxt | 1-3 seconds |
747
+ | Nuxt UI | 1-3 seconds |
748
+ | Playwright | 2-5 seconds |
749
+ | Figma | 3-7 seconds |
750
+
751
+ ---
752
+
753
+ ## Testing Report Template
754
+
755
+ Setelah menjalankan tests, gunakan template ini untuk dokumentasi:
756
+
757
+ ```markdown
758
+ # Frontend Developer Agent - Testing Report
759
+
760
+ **Date:** YYYY-MM-DD
761
+ **Tester:** [Your Name]
762
+ **Version:** 1.0.0
763
+
764
+ ## Test Summary
765
+
766
+ | Category | Tests Run | Passed | Failed | Notes |
767
+ | ------------------- | --------- | ------ | ------ | ------------ |
768
+ | Basic Functionality | 3 | 3 | 0 | ✅ All pass |
769
+ | MCP Integration | 3 | 3 | 0 | ✅ All pass |
770
+ | Skills Integration | 4 | 4 | 0 | ✅ All pass |
771
+ | Advanced Scenarios | 4 | 3 | 1 | ⚠️ See notes |
772
+ | Edge Cases | 3 | 3 | 0 | ✅ All pass |
773
+
774
+ **Overall: 16/17 Tests Passed (94%)**
775
+
776
+ ## Failed Tests Details
777
+
778
+ ### Test 14: Full Feature Development
779
+
780
+ **Status:** ❌ Failed
781
+ **Reason:** E2E tests not generated
782
+ **Fix Required:** Add explicit request for E2E tests
783
+ **Severity:** Medium
784
+
785
+ ## Recommendations
786
+
787
+ 1. [List improvements needed]
788
+ 2. [Configuration adjustments]
789
+ 3. [Documentation updates]
790
+
791
+ ## Next Steps
792
+
793
+ - [ ] Fix failed tests
794
+ - [ ] Re-run failed tests
795
+ - [ ] Document edge cases found
796
+ - [ ] Update agent prompt if needed
797
+ ```
798
+
799
+ ---
800
+
801
+ ## Continuous Testing
802
+
803
+ ### Daily Smoke Tests
804
+
805
+ Run these daily untuk ensure agent health:
806
+
807
+ ```bash
808
+ # Test 1: Agent activation
809
+ @frontend Hello
810
+
811
+ # Test 2: Simple component
812
+ @frontend Create Button component
813
+
814
+ # Test 3: MCP query
815
+ @frontend Check Nuxt docs untuk useFetch
816
+ ```
817
+
818
+ ### Weekly Comprehensive Tests
819
+
820
+ Run full test suite weekly:
821
+
822
+ - All basic functionality tests
823
+ - All MCP integration tests
824
+ - At least 2 advanced scenarios
825
+ - Document results
826
+
827
+ ### Monthly Review
828
+
829
+ - Review all test results
830
+ - Update testing guide based on findings
831
+ - Add new test cases for new features
832
+ - Archive test reports
833
+
834
+ ---
835
+
836
+ ## Feedback Loop
837
+
838
+ ### Reporting Issues
839
+
840
+ If you find issues:
841
+
842
+ 1. **Document:**
843
+ - Exact command used
844
+ - Expected vs actual behavior
845
+ - Error messages (if any)
846
+ - Screenshots (if applicable)
847
+
848
+ 2. **Report Format:**
849
+
850
+ ```markdown
851
+ ## Issue Report
852
+
853
+ **Type:** [Bug/Enhancement/Documentation]
854
+ **Severity:** [Critical/High/Medium/Low]
855
+
856
+ **Command:**
857
+ ```
858
+
859
+ @frontend [your command]
860
+
861
+ ```
862
+
863
+ **Expected:**
864
+ [What should happen]
865
+
866
+ **Actual:**
867
+ [What actually happened]
868
+
869
+ **Environment:**
870
+ - OpenCode version: X.Y.Z
871
+ - Node version: X.Y.Z
872
+ - OS: macOS/Linux/Windows
873
+ ```
874
+
875
+ 3. **Share with Team:**
876
+ - Add to project issues
877
+ - Discuss in team meeting
878
+ - Update documentation
879
+
880
+ ---
881
+
882
+ ## Success Criteria
883
+
884
+ Agent is considered **production-ready** when:
885
+
886
+ - ✅ All basic functionality tests pass
887
+ - ✅ All MCP integrations work
888
+ - ✅ Core skills load correctly
889
+ - ✅ 90%+ advanced scenarios pass
890
+ - ✅ Edge cases handled gracefully
891
+ - ✅ Response times meet benchmarks
892
+ - ✅ Code quality meets standards
893
+ - ✅ Documentation complete
894
+ - ✅ Team trained on usage
895
+
896
+ ---
897
+
898
+ **Good luck with testing! 🧪**
899
+
900
+ Questions? Check:
901
+
902
+ - `README.md` for overview
903
+ - `MCP_GUIDE.md` for MCP details
904
+ - `EXAMPLES.md` for usage examples