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.
- package/README.md +796 -0
- package/bin/commands/init.mjs +221 -0
- package/bin/init.mjs +21 -0
- package/package.json +22 -0
- package/template/.opencode/agent-docs/backend/README.md +0 -0
- package/template/.opencode/agent-docs/backend/node/BACKEND_PATTERNS.md +82 -0
- package/template/.opencode/agent-docs/backend/node/BACKEND_QUICK_START.md +49 -0
- package/template/.opencode/agent-docs/frontend/next/README.md +0 -0
- package/template/.opencode/agent-docs/frontend/nuxt/API_PATTERNS.md +807 -0
- package/template/.opencode/agent-docs/frontend/nuxt/CHEATSHEET.md +676 -0
- package/template/.opencode/agent-docs/frontend/nuxt/COMPLETION_REPORT.md +613 -0
- package/template/.opencode/agent-docs/frontend/nuxt/EXAMPLES.md +956 -0
- package/template/.opencode/agent-docs/frontend/nuxt/INDEX.md +596 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MCP_GUIDE.md +881 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_CURRICULUM_30_DAYS.md +256 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_CURRICULUM_CHECKLIST.md +156 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_WEEKLY_ASSIGNMENTS.md +191 -0
- package/template/.opencode/agent-docs/frontend/nuxt/QUICK_START.md +509 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README.md +506 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README_AGENTS.md +140 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README_DOCS.md +65 -0
- package/template/.opencode/agent-docs/frontend/nuxt/SUMMARY.md +474 -0
- package/template/.opencode/agent-docs/frontend/nuxt/TEAM_OPERATING_GUIDE.md +54 -0
- package/template/.opencode/agent-docs/frontend/nuxt/TESTING_GUIDE.md +904 -0
- package/template/.opencode/agent-docs/frontend/nuxt/WORKFLOWS.md +758 -0
- package/template/.opencode/agent-docs/frontend/react/API_PATTERNS.md +187 -0
- package/template/.opencode/agent-docs/frontend/react/CHEATSHEET.md +87 -0
- package/template/.opencode/agent-docs/frontend/react/INDEX.md +45 -0
- package/template/.opencode/agent-docs/frontend/react/QUICK_START.md +43 -0
- package/template/.opencode/agent-docs/frontend/react/README.md +159 -0
- package/template/.opencode/agent-docs/frontend/vue/README.md +0 -0
- package/template/.opencode/agent-docs/mobile/android/README.md +45 -0
- package/template/.opencode/agent-docs/mobile/flutter/README.md +44 -0
- package/template/.opencode/agents/android-developer.md +418 -0
- package/template/.opencode/agents/code-igniter-3-fullstack.md +345 -0
- package/template/.opencode/agents/code-reviewer.md +517 -0
- package/template/.opencode/agents/database-specialist.md +455 -0
- package/template/.opencode/agents/devops-specialist.md +562 -0
- package/template/.opencode/agents/flutter-developer.md +556 -0
- package/template/.opencode/agents/it-leader.md +911 -0
- package/template/.opencode/agents/laravel-advanced.md +691 -0
- package/template/.opencode/agents/node-backend-developer.md +343 -0
- package/template/.opencode/agents/nuxt-frontend-developer-mentor.md +402 -0
- package/template/.opencode/agents/nuxt-frontend-developer.md +1573 -0
- package/template/.opencode/agents/react-frontend-developer.md +1017 -0
- package/template/.opencode/agents/seo-specialist.md +681 -0
- package/template/.opencode/agents/ui-ux-designer.md +783 -0
- package/template/.opencode/commands/android-build/command.md +25 -0
- package/template/.opencode/commands/android-test/command.md +23 -0
- package/template/.opencode/commands/build-fix.md +29 -0
- package/template/.opencode/commands/checkpoint.md +74 -0
- package/template/.opencode/commands/code-review.md +40 -0
- package/template/.opencode/commands/e2e.md +363 -0
- package/template/.opencode/commands/eval.md +120 -0
- package/template/.opencode/commands/evolve.md +193 -0
- package/template/.opencode/commands/flutter-build/command.md +25 -0
- package/template/.opencode/commands/flutter-test/command.md +24 -0
- package/template/.opencode/commands/go-build.md +183 -0
- package/template/.opencode/commands/go-review.md +148 -0
- package/template/.opencode/commands/go-test.md +268 -0
- package/template/.opencode/commands/gpc-release/command.md +30 -0
- package/template/.opencode/commands/instinct-export.md +91 -0
- package/template/.opencode/commands/instinct-import.md +142 -0
- package/template/.opencode/commands/instinct-status.md +86 -0
- package/template/.opencode/commands/learn.md +70 -0
- package/template/.opencode/commands/multi-backend.md +158 -0
- package/template/.opencode/commands/multi-execute.md +310 -0
- package/template/.opencode/commands/multi-frontend.md +158 -0
- package/template/.opencode/commands/multi-plan.md +261 -0
- package/template/.opencode/commands/multi-workflow.md +183 -0
- package/template/.opencode/commands/orchestrate.md +172 -0
- package/template/.opencode/commands/plan.md +113 -0
- package/template/.opencode/commands/pm2.md +271 -0
- package/template/.opencode/commands/python-review.md +297 -0
- package/template/.opencode/commands/refactor-clean.md +28 -0
- package/template/.opencode/commands/sessions.md +305 -0
- package/template/.opencode/commands/setup-pm.md +80 -0
- package/template/.opencode/commands/skill-create.md +174 -0
- package/template/.opencode/commands/tdd.md +326 -0
- package/template/.opencode/commands/test-coverage.md +27 -0
- package/template/.opencode/commands/update-codemaps.md +17 -0
- package/template/.opencode/commands/update-docs.md +31 -0
- package/template/.opencode/commands/verify.md +59 -0
- package/template/.opencode/config.example.json +309 -0
- package/template/.opencode/config.json +341 -0
- package/template/.opencode/contexts/dev.md +20 -0
- package/template/.opencode/contexts/research.md +26 -0
- package/template/.opencode/contexts/review.md +22 -0
- package/template/.opencode/hooks/hooks.json +169 -0
- package/template/.opencode/instructions/INSTRUCTIONS.md +388 -0
- package/template/.opencode/package.json +5 -0
- package/template/.opencode/rules/README.md +82 -0
- package/template/.opencode/rules/android/gradle.md +62 -0
- package/template/.opencode/rules/android/testing.md +27 -0
- package/template/.opencode/rules/common/agents.md +49 -0
- package/template/.opencode/rules/common/coding-style.md +48 -0
- package/template/.opencode/rules/common/git-workflow.md +45 -0
- package/template/.opencode/rules/common/hooks.md +30 -0
- package/template/.opencode/rules/common/patterns.md +31 -0
- package/template/.opencode/rules/common/performance.md +55 -0
- package/template/.opencode/rules/common/security.md +29 -0
- package/template/.opencode/rules/common/testing.md +29 -0
- package/template/.opencode/rules/flutter/state-management.md +57 -0
- package/template/.opencode/rules/flutter/testing.md +42 -0
- package/template/.opencode/rules/golang/coding-style.md +26 -0
- package/template/.opencode/rules/golang/hooks.md +11 -0
- package/template/.opencode/rules/golang/patterns.md +39 -0
- package/template/.opencode/rules/golang/security.md +28 -0
- package/template/.opencode/rules/golang/testing.md +25 -0
- package/template/.opencode/rules/mobile/performance.md +36 -0
- package/template/.opencode/rules/python/coding-style.md +37 -0
- package/template/.opencode/rules/python/hooks.md +14 -0
- package/template/.opencode/rules/python/patterns.md +34 -0
- package/template/.opencode/rules/python/security.md +25 -0
- package/template/.opencode/rules/python/testing.md +33 -0
- package/template/.opencode/rules/typescript/coding-style.md +58 -0
- package/template/.opencode/rules/typescript/hooks.md +15 -0
- package/template/.opencode/rules/typescript/patterns.md +45 -0
- package/template/.opencode/rules/typescript/security.md +21 -0
- package/template/.opencode/rules/typescript/testing.md +11 -0
- package/template/.opencode/skills/api-documentation/SKILL.md +188 -0
- package/template/.opencode/skills/backend-patterns/SKILL.md +587 -0
- package/template/.opencode/skills/building-components/SKILL.md +37 -0
- package/template/.opencode/skills/building-components/references/accessibility.mdx +819 -0
- package/template/.opencode/skills/building-components/references/as-child.mdx +324 -0
- package/template/.opencode/skills/building-components/references/composition.mdx +239 -0
- package/template/.opencode/skills/building-components/references/data-attributes.mdx +413 -0
- package/template/.opencode/skills/building-components/references/definitions.mdx +258 -0
- package/template/.opencode/skills/building-components/references/design-tokens.mdx +57 -0
- package/template/.opencode/skills/building-components/references/docs.mdx +155 -0
- package/template/.opencode/skills/building-components/references/marketplaces.mdx +144 -0
- package/template/.opencode/skills/building-components/references/npm.mdx +166 -0
- package/template/.opencode/skills/building-components/references/polymorphism.mdx +583 -0
- package/template/.opencode/skills/building-components/references/principles.mdx +61 -0
- package/template/.opencode/skills/building-components/references/registry.mdx +169 -0
- package/template/.opencode/skills/building-components/references/state.mdx +99 -0
- package/template/.opencode/skills/building-components/references/styling.mdx +286 -0
- package/template/.opencode/skills/building-components/references/types.mdx +191 -0
- package/template/.opencode/skills/clickhouse-io/SKILL.md +429 -0
- package/template/.opencode/skills/coding-standards/SKILL.md +520 -0
- package/template/.opencode/skills/configure-ecc/SKILL.md +298 -0
- package/template/.opencode/skills/continuous-learning/SKILL.md +110 -0
- package/template/.opencode/skills/continuous-learning/config.json +18 -0
- package/template/.opencode/skills/continuous-learning/evaluate-session.sh +60 -0
- package/template/.opencode/skills/continuous-learning-v2/SKILL.md +284 -0
- package/template/.opencode/skills/continuous-learning-v2/agents/observer.md +137 -0
- package/template/.opencode/skills/continuous-learning-v2/agents/start-observer.sh +134 -0
- package/template/.opencode/skills/continuous-learning-v2/config.json +41 -0
- package/template/.opencode/skills/continuous-learning-v2/hooks/observe.sh +153 -0
- package/template/.opencode/skills/continuous-learning-v2/scripts/instinct-cli.py +489 -0
- package/template/.opencode/skills/continuous-learning-v2/scripts/test_parse_instinct.py +82 -0
- package/template/.opencode/skills/dart-add-unit-test/SKILL.md +122 -0
- package/template/.opencode/skills/dart-build-cli-app/SKILL.md +185 -0
- package/template/.opencode/skills/dart-collect-coverage/SKILL.md +141 -0
- package/template/.opencode/skills/dart-fix-runtime-errors/SKILL.md +166 -0
- package/template/.opencode/skills/dart-generate-test-mocks/SKILL.md +155 -0
- package/template/.opencode/skills/dart-migrate-to-checks-package/SKILL.md +126 -0
- package/template/.opencode/skills/dart-resolve-package-conflicts/SKILL.md +116 -0
- package/template/.opencode/skills/dart-run-static-analysis/SKILL.md +104 -0
- package/template/.opencode/skills/dart-use-pattern-matching/SKILL.md +146 -0
- package/template/.opencode/skills/django-patterns/SKILL.md +733 -0
- package/template/.opencode/skills/django-security/SKILL.md +592 -0
- package/template/.opencode/skills/django-tdd/SKILL.md +728 -0
- package/template/.opencode/skills/django-verification/SKILL.md +460 -0
- package/template/.opencode/skills/eval-harness/SKILL.md +227 -0
- package/template/.opencode/skills/firebase-basics/SKILL.md +103 -0
- package/template/.opencode/skills/firebase-basics/references/additional-skills.md +113 -0
- package/template/.opencode/skills/firebase-basics/references/cli-usage.md +31 -0
- package/template/.opencode/skills/firebase-basics/references/client-library-usage.md +45 -0
- package/template/.opencode/skills/firebase-basics/references/core-concepts.md +61 -0
- package/template/.opencode/skills/firebase-basics/references/iac-usage.md +40 -0
- package/template/.opencode/skills/firebase-basics/references/iam-security.md +74 -0
- package/template/.opencode/skills/firebase-basics/references/mcp-usage.md +63 -0
- package/template/.opencode/skills/flutter/SKILL.md +292 -0
- package/template/.opencode/skills/flutter-add-integration-test/SKILL.md +163 -0
- package/template/.opencode/skills/flutter-add-widget-preview/SKILL.md +145 -0
- package/template/.opencode/skills/flutter-add-widget-test/SKILL.md +154 -0
- package/template/.opencode/skills/flutter-apply-architecture-best-practices/SKILL.md +162 -0
- package/template/.opencode/skills/flutter-build-responsive-layout/SKILL.md +139 -0
- package/template/.opencode/skills/flutter-fix-layout-issues/SKILL.md +130 -0
- package/template/.opencode/skills/flutter-implement-json-serialization/SKILL.md +153 -0
- package/template/.opencode/skills/flutter-setup-declarative-routing/SKILL.md +255 -0
- package/template/.opencode/skills/flutter-setup-localization/SKILL.md +210 -0
- package/template/.opencode/skills/flutter-use-http-package/SKILL.md +174 -0
- package/template/.opencode/skills/frontend-design/SKILL.md +89 -0
- package/template/.opencode/skills/frontend-patterns/SKILL.md +631 -0
- package/template/.opencode/skills/golang-patterns/SKILL.md +673 -0
- package/template/.opencode/skills/golang-testing/SKILL.md +719 -0
- package/template/.opencode/skills/impeccable/SKILL.md +165 -0
- package/template/.opencode/skills/impeccable/agents/impeccable-asset-producer.md +101 -0
- package/template/.opencode/skills/impeccable/reference/adapt.md +190 -0
- package/template/.opencode/skills/impeccable/reference/animate.md +175 -0
- package/template/.opencode/skills/impeccable/reference/audit.md +133 -0
- package/template/.opencode/skills/impeccable/reference/bolder.md +113 -0
- package/template/.opencode/skills/impeccable/reference/brand.md +118 -0
- package/template/.opencode/skills/impeccable/reference/clarify.md +174 -0
- package/template/.opencode/skills/impeccable/reference/codex.md +105 -0
- package/template/.opencode/skills/impeccable/reference/cognitive-load.md +106 -0
- package/template/.opencode/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/template/.opencode/skills/impeccable/reference/colorize.md +154 -0
- package/template/.opencode/skills/impeccable/reference/craft.md +123 -0
- package/template/.opencode/skills/impeccable/reference/critique.md +273 -0
- package/template/.opencode/skills/impeccable/reference/delight.md +302 -0
- package/template/.opencode/skills/impeccable/reference/distill.md +111 -0
- package/template/.opencode/skills/impeccable/reference/document.md +427 -0
- package/template/.opencode/skills/impeccable/reference/extract.md +69 -0
- package/template/.opencode/skills/impeccable/reference/harden.md +347 -0
- package/template/.opencode/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/template/.opencode/skills/impeccable/reference/interaction-design.md +195 -0
- package/template/.opencode/skills/impeccable/reference/layout.md +141 -0
- package/template/.opencode/skills/impeccable/reference/live.md +622 -0
- package/template/.opencode/skills/impeccable/reference/motion-design.md +109 -0
- package/template/.opencode/skills/impeccable/reference/onboard.md +234 -0
- package/template/.opencode/skills/impeccable/reference/optimize.md +258 -0
- package/template/.opencode/skills/impeccable/reference/overdrive.md +130 -0
- package/template/.opencode/skills/impeccable/reference/personas.md +179 -0
- package/template/.opencode/skills/impeccable/reference/polish.md +242 -0
- package/template/.opencode/skills/impeccable/reference/product.md +62 -0
- package/template/.opencode/skills/impeccable/reference/quieter.md +99 -0
- package/template/.opencode/skills/impeccable/reference/responsive-design.md +114 -0
- package/template/.opencode/skills/impeccable/reference/shape.md +165 -0
- package/template/.opencode/skills/impeccable/reference/spatial-design.md +100 -0
- package/template/.opencode/skills/impeccable/reference/teach.md +156 -0
- package/template/.opencode/skills/impeccable/reference/typeset.md +124 -0
- package/template/.opencode/skills/impeccable/reference/typography.md +159 -0
- package/template/.opencode/skills/impeccable/reference/ux-writing.md +107 -0
- package/template/.opencode/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/template/.opencode/skills/impeccable/scripts/command-metadata.json +94 -0
- package/template/.opencode/skills/impeccable/scripts/critique-storage.mjs +242 -0
- package/template/.opencode/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/template/.opencode/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/template/.opencode/skills/impeccable/scripts/detect.mjs +21 -0
- package/template/.opencode/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
- package/template/.opencode/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/template/.opencode/skills/impeccable/scripts/live-accept.mjs +595 -0
- package/template/.opencode/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/template/.opencode/skills/impeccable/scripts/live-browser.js +4860 -0
- package/template/.opencode/skills/impeccable/scripts/live-complete.mjs +75 -0
- package/template/.opencode/skills/impeccable/scripts/live-completion.mjs +18 -0
- package/template/.opencode/skills/impeccable/scripts/live-inject.mjs +446 -0
- package/template/.opencode/skills/impeccable/scripts/live-poll.mjs +200 -0
- package/template/.opencode/skills/impeccable/scripts/live-resume.mjs +48 -0
- package/template/.opencode/skills/impeccable/scripts/live-server.mjs +838 -0
- package/template/.opencode/skills/impeccable/scripts/live-session-store.mjs +254 -0
- package/template/.opencode/skills/impeccable/scripts/live-status.mjs +47 -0
- package/template/.opencode/skills/impeccable/scripts/live-wrap.mjs +632 -0
- package/template/.opencode/skills/impeccable/scripts/live.mjs +247 -0
- package/template/.opencode/skills/impeccable/scripts/load-context.mjs +141 -0
- package/template/.opencode/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/template/.opencode/skills/impeccable/scripts/pin.mjs +214 -0
- package/template/.opencode/skills/iterative-retrieval/SKILL.md +202 -0
- package/template/.opencode/skills/java-coding-standards/SKILL.md +138 -0
- package/template/.opencode/skills/jetpack-compose/.skillfish.json +10 -0
- package/template/.opencode/skills/jetpack-compose/SKILL.md +420 -0
- package/template/.opencode/skills/jpa-patterns/SKILL.md +141 -0
- package/template/.opencode/skills/nutrient-document-processing/SKILL.md +165 -0
- package/template/.opencode/skills/nuxt-ui/SKILL.md +334 -0
- package/template/.opencode/skills/nuxt-ui/references/components.md +377 -0
- package/template/.opencode/skills/nuxt-ui/references/composables.md +127 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/chat.md +266 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/dashboard.md +220 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/docs.md +141 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/editor.md +168 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/page.md +260 -0
- package/template/.opencode/skills/nuxt-ui/references/theming.md +427 -0
- package/template/.opencode/skills/postgres-patterns/SKILL.md +146 -0
- package/template/.opencode/skills/project-guidelines-example/SKILL.md +345 -0
- package/template/.opencode/skills/python-patterns/SKILL.md +749 -0
- package/template/.opencode/skills/python-testing/SKILL.md +815 -0
- package/template/.opencode/skills/security-review/SKILL.md +494 -0
- package/template/.opencode/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/template/.opencode/skills/shadcn-ui/README.md +248 -0
- package/template/.opencode/skills/shadcn-ui/SKILL.md +326 -0
- package/template/.opencode/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/template/.opencode/skills/shadcn-ui/examples/data-table.tsx +313 -0
- package/template/.opencode/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/template/.opencode/skills/shadcn-ui/resources/component-catalog.md +481 -0
- package/template/.opencode/skills/shadcn-ui/resources/customization-guide.md +516 -0
- package/template/.opencode/skills/shadcn-ui/resources/migration-guide.md +463 -0
- package/template/.opencode/skills/shadcn-ui/resources/setup-guide.md +412 -0
- package/template/.opencode/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/template/.opencode/skills/springboot-patterns/SKILL.md +304 -0
- package/template/.opencode/skills/springboot-security/SKILL.md +119 -0
- package/template/.opencode/skills/springboot-tdd/SKILL.md +157 -0
- package/template/.opencode/skills/springboot-verification/SKILL.md +100 -0
- package/template/.opencode/skills/strategic-compact/SKILL.md +63 -0
- package/template/.opencode/skills/strategic-compact/suggest-compact.sh +52 -0
- package/template/.opencode/skills/tdd-workflow/SKILL.md +409 -0
- package/template/.opencode/skills/vercel-composition-patterns/AGENTS.md +946 -0
- package/template/.opencode/skills/vercel-composition-patterns/SKILL.md +89 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/template/.opencode/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/template/.opencode/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/template/.opencode/skills/verification-loop/SKILL.md +120 -0
- package/template/.opencode/skills/web-design-guidelines/SKILL.md +39 -0
- package/template/AGENTS.md +32 -0
- 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
|