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,676 @@
|
|
|
1
|
+
# 🎯 Frontend Developer Agent - Cheat Sheet
|
|
2
|
+
|
|
3
|
+
Quick reference untuk command dan patterns yang sering dipakai.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Aktivasi Agent
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Mention agent
|
|
11
|
+
@frontend-developer [request]
|
|
12
|
+
|
|
13
|
+
# Switch ke agent (jika primary)
|
|
14
|
+
<Tab>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Skills Quick Load
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Load specific skill
|
|
23
|
+
@frontend-developer Load skill `nuxt-ui` untuk build form components
|
|
24
|
+
|
|
25
|
+
# Load multiple skills
|
|
26
|
+
@frontend-developer Load skills: `building-components`, `security-review`, `tdd-workflow`
|
|
27
|
+
|
|
28
|
+
# Check loaded skills
|
|
29
|
+
@frontend-developer What skills are currently loaded?
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Component Creation
|
|
35
|
+
|
|
36
|
+
### Basic Component
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
@frontend-developer Buat component Button dengan:
|
|
40
|
+
- Props: variant, size, disabled, loading
|
|
41
|
+
- TypeScript strict
|
|
42
|
+
- Accessible (ARIA + keyboard)
|
|
43
|
+
- File: app/components/ui/Button.vue
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Complex Component
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
@frontend-developer Buat DataTable component:
|
|
50
|
+
- Props: data, columns, sortable, paginated
|
|
51
|
+
- Features: sort, filter, search, selection
|
|
52
|
+
- Virtualization untuk 1000+ rows
|
|
53
|
+
- Export to CSV
|
|
54
|
+
- Responsive (stack on mobile)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Form Component
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
@frontend-developer Buat LoginForm:
|
|
61
|
+
- Fields: email, password, remember me
|
|
62
|
+
- Validation dengan Zod
|
|
63
|
+
- Loading state
|
|
64
|
+
- Error handling
|
|
65
|
+
- Social login buttons
|
|
66
|
+
- Forgot password link
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Styling & Design
|
|
72
|
+
|
|
73
|
+
### Implement Design
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
@frontend-developer Implement design dari [screenshot]:
|
|
77
|
+
- Aesthetic: [minimalist/bold/playful/editorial]
|
|
78
|
+
- Colors: [specify or "your choice"]
|
|
79
|
+
- Typography: [specify or "distinctive choices"]
|
|
80
|
+
- Animations: [describe key moments]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Dark Mode
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
@frontend-developer Add dark mode support:
|
|
87
|
+
- Toggle component in navigation
|
|
88
|
+
- Persist preference
|
|
89
|
+
- Smooth transitions
|
|
90
|
+
- Update all components
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Responsive Design
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
@frontend-developer Make [component] responsive:
|
|
97
|
+
- Mobile: stack vertically
|
|
98
|
+
- Tablet: 2-column grid
|
|
99
|
+
- Desktop: 3-column grid
|
|
100
|
+
- Breakpoints: 640px, 1024px, 1280px
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Performance
|
|
106
|
+
|
|
107
|
+
### Optimization Audit
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
@frontend-developer Load `frontend-patterns` dan audit:
|
|
111
|
+
- app/pages/dashboard.vue
|
|
112
|
+
- app/components/MarketList.vue
|
|
113
|
+
|
|
114
|
+
Focus pada bundle size dan re-renders.
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Specific Optimizations
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Virtualization
|
|
121
|
+
@frontend-developer Add virtualization ke MarketList untuk 500+ items
|
|
122
|
+
|
|
123
|
+
# Lazy Loading
|
|
124
|
+
@frontend-developer Lazy load semua components di bawah fold
|
|
125
|
+
|
|
126
|
+
# Memoization
|
|
127
|
+
@frontend-developer Add proper memoization ke expensive computations di [component]
|
|
128
|
+
|
|
129
|
+
# Code Splitting
|
|
130
|
+
@frontend-developer Code split routes dan heavy components
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## State Management
|
|
136
|
+
|
|
137
|
+
### Pinia Store
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
@frontend-developer Create Pinia store untuk markets:
|
|
141
|
+
- State: markets, selectedMarket, filters
|
|
142
|
+
- Getters: activeMarkets, filteredMarkets
|
|
143
|
+
- Actions: fetchMarkets, selectMarket, updateFilters
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Composable
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
@frontend-developer Create composable useMarketData:
|
|
150
|
+
- Fetch market by ID
|
|
151
|
+
- Handle loading/error states
|
|
152
|
+
- Auto-refetch on ID change
|
|
153
|
+
- Return: { market, loading, error, refetch }
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Data Fetching
|
|
159
|
+
|
|
160
|
+
### useApi (Recommended - Custom Composable)
|
|
161
|
+
|
|
162
|
+
**IMPORTANT**: This project uses a custom `useApi` composable for all API calls.
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
@frontend Setup data fetching untuk users page:
|
|
166
|
+
- useApi untuk fetch users
|
|
167
|
+
- Automatic authentication
|
|
168
|
+
- Error handling dengan retry
|
|
169
|
+
- Loading skeleton
|
|
170
|
+
- Pagination
|
|
171
|
+
|
|
172
|
+
Gunakan app/composables/useApi.ts
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Quick Examples:**
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
// GET request
|
|
179
|
+
const { data, pending, error } = await useApi<User[]>('/users')
|
|
180
|
+
|
|
181
|
+
// POST request (auto-uses $fetch)
|
|
182
|
+
const { data, error } = await useApi('/users', {
|
|
183
|
+
method: 'POST',
|
|
184
|
+
body: { name: 'John', email: 'john@example.com' },
|
|
185
|
+
})
|
|
186
|
+
|
|
187
|
+
// With query params
|
|
188
|
+
const { data } = await useApi('/users', {
|
|
189
|
+
query: { page: 1, limit: 10 },
|
|
190
|
+
})
|
|
191
|
+
|
|
192
|
+
// Manual trigger (don't execute immediately)
|
|
193
|
+
const { execute } = await useApi('/users/123', {
|
|
194
|
+
immediate: false,
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
// Error message accessible directly
|
|
198
|
+
if (error.value) {
|
|
199
|
+
console.log(error.value.message) // "User not found"
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Benefits**:
|
|
204
|
+
|
|
205
|
+
- ✅ Automatic authentication (cookies)
|
|
206
|
+
- ✅ Smart SSR/CSR handling
|
|
207
|
+
- ✅ Consistent error.value.message
|
|
208
|
+
- ✅ Auto-401 redirect to login
|
|
209
|
+
- ✅ Type-safe with generics
|
|
210
|
+
|
|
211
|
+
### useFetch (Native - Only for External APIs)
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
@frontend Setup data fetching untuk external API:
|
|
215
|
+
- useFetch untuk third-party API
|
|
216
|
+
- Custom caching strategy
|
|
217
|
+
- Handle loading skeleton
|
|
218
|
+
- Error boundary
|
|
219
|
+
|
|
220
|
+
Prefer useApi for internal APIs.
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### API Integration
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
@frontend Create API integration untuk markets menggunakan useApi:
|
|
227
|
+
- GET /api/markets (with filters)
|
|
228
|
+
- GET /api/markets/:id
|
|
229
|
+
- POST /api/markets (create)
|
|
230
|
+
- PATCH /api/markets/:id (update)
|
|
231
|
+
- DELETE /api/markets/:id (delete)
|
|
232
|
+
|
|
233
|
+
Include TypeScript types dan automatic error handling.
|
|
234
|
+
Use useApi composable untuk semua requests.
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Testing
|
|
240
|
+
|
|
241
|
+
### Unit Tests
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
@frontend-developer Load `tdd-workflow` dan write tests untuk Button:
|
|
245
|
+
- All variants render correctly
|
|
246
|
+
- Click handler works
|
|
247
|
+
- Disabled state prevents clicks
|
|
248
|
+
- Loading shows spinner
|
|
249
|
+
- Keyboard support works
|
|
250
|
+
|
|
251
|
+
Target: 80%+ coverage
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Integration Tests
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
@frontend-developer Integration test untuk CreateMarket flow:
|
|
258
|
+
1. Fill form fields
|
|
259
|
+
2. Validation works
|
|
260
|
+
3. Submit triggers API
|
|
261
|
+
4. Loading state shown
|
|
262
|
+
5. Success redirects to market page
|
|
263
|
+
6. Error shows toast
|
|
264
|
+
|
|
265
|
+
Use MSW untuk mock API.
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Accessibility
|
|
271
|
+
|
|
272
|
+
### Audit
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
@frontend-developer Load `web-design-guidelines` dan audit:
|
|
276
|
+
- app/pages/markets/index.vue
|
|
277
|
+
- app/components/MarketCard.vue
|
|
278
|
+
|
|
279
|
+
Check:
|
|
280
|
+
- Semantic HTML
|
|
281
|
+
- ARIA labels
|
|
282
|
+
- Keyboard navigation
|
|
283
|
+
- Color contrast
|
|
284
|
+
- Screen reader support
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Fix Issues
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
@frontend-developer Fix accessibility issues:
|
|
291
|
+
- Add proper heading hierarchy
|
|
292
|
+
- ARIA labels untuk icon buttons
|
|
293
|
+
- Focus visible states
|
|
294
|
+
- Keyboard trap in modal
|
|
295
|
+
- Alt text untuk images
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Refactoring
|
|
301
|
+
|
|
302
|
+
### Component Refactor
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
@frontend-developer Load `vercel-composition-patterns` dan refactor UserProfile:
|
|
306
|
+
- Too many props (15+)
|
|
307
|
+
- Complex conditional rendering
|
|
308
|
+
- Hard to maintain
|
|
309
|
+
|
|
310
|
+
Gunakan compound components pattern.
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Code Quality
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
@frontend-developer Refactor untuk improve code quality:
|
|
317
|
+
- Extract magic numbers to constants
|
|
318
|
+
- Simplify deep nesting (use early returns)
|
|
319
|
+
- Remove code duplication
|
|
320
|
+
- Add missing types
|
|
321
|
+
- Improve function naming
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Forms & Validation
|
|
327
|
+
|
|
328
|
+
### Schema
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
@frontend-developer Create Zod schema untuk CreateMarket form:
|
|
332
|
+
- title: string, 5-200 chars
|
|
333
|
+
- description: string, 20-2000 chars
|
|
334
|
+
- endDate: future datetime
|
|
335
|
+
- category: enum
|
|
336
|
+
- tags: array, max 5 items
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Form Handling
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
@frontend-developer Implement form dengan:
|
|
343
|
+
- Real-time validation
|
|
344
|
+
- Error messages
|
|
345
|
+
- Submit disabled until valid
|
|
346
|
+
- Loading state
|
|
347
|
+
- Success/error handling
|
|
348
|
+
- Optimistic updates
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
---
|
|
352
|
+
|
|
353
|
+
## Animations
|
|
354
|
+
|
|
355
|
+
### Micro-interactions
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
@frontend-developer Add micro-interactions:
|
|
359
|
+
|
|
360
|
+
Buttons:
|
|
361
|
+
- Hover: scale 1.05
|
|
362
|
+
- Active: scale 0.98
|
|
363
|
+
- Click: ripple effect
|
|
364
|
+
|
|
365
|
+
Cards:
|
|
366
|
+
- Hover: lift + shadow
|
|
367
|
+
- Focus: outline
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Page Transitions
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
@frontend-developer Add page transitions:
|
|
374
|
+
- Fade in content: opacity 0 → 1
|
|
375
|
+
- Slide in from bottom: y 20px → 0
|
|
376
|
+
- Stagger children: 100ms delay each
|
|
377
|
+
- Duration: 500ms
|
|
378
|
+
- Easing: ease-out
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## Error Handling
|
|
384
|
+
|
|
385
|
+
### Error Boundary
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
@frontend-developer Create ErrorBoundary component:
|
|
389
|
+
- Catch runtime errors
|
|
390
|
+
- Show user-friendly message
|
|
391
|
+
- Log to error tracking
|
|
392
|
+
- Retry button
|
|
393
|
+
- Fallback UI
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### API Errors
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
@frontend-developer Implement error handling untuk API calls:
|
|
400
|
+
- Network errors
|
|
401
|
+
- 4xx client errors
|
|
402
|
+
- 5xx server errors
|
|
403
|
+
- Timeout errors
|
|
404
|
+
- Parse errors
|
|
405
|
+
|
|
406
|
+
Show appropriate toast messages.
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## Code Review
|
|
412
|
+
|
|
413
|
+
### Review Request
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
@frontend-developer Review app/components/MarketCard.vue for:
|
|
417
|
+
- Performance issues
|
|
418
|
+
- Accessibility compliance
|
|
419
|
+
- Code quality
|
|
420
|
+
- Best practices
|
|
421
|
+
- Security concerns
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### Pre-commit Review
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
@frontend-developer Review all changed files sebelum commit:
|
|
428
|
+
- TypeScript errors?
|
|
429
|
+
- Missing error handling?
|
|
430
|
+
- Performance concerns?
|
|
431
|
+
- Accessibility issues?
|
|
432
|
+
- Test coverage adequate?
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
## Common Patterns
|
|
438
|
+
|
|
439
|
+
### Loading States
|
|
440
|
+
|
|
441
|
+
```typescript
|
|
442
|
+
{loading && <Skeleton />}
|
|
443
|
+
{error && <ErrorMessage error={error} retry={refetch} />}
|
|
444
|
+
{!data && !loading && <EmptyState />}
|
|
445
|
+
{data && <DataDisplay data={data} />}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### Conditional Rendering
|
|
449
|
+
|
|
450
|
+
```typescript
|
|
451
|
+
// ✅ Use ternary for boolean conditions
|
|
452
|
+
{isLoggedIn ? <Dashboard /> : <Login />}
|
|
453
|
+
|
|
454
|
+
// ✅ Use && for optional rendering
|
|
455
|
+
{showBanner && <Banner />}
|
|
456
|
+
|
|
457
|
+
// ❌ Avoid complex nested ternaries
|
|
458
|
+
{isLoading ? <Spinner /> : error ? <Error /> : data ? <Data /> : null}
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### Event Handlers
|
|
462
|
+
|
|
463
|
+
```typescript
|
|
464
|
+
// ✅ Use arrow functions for inline handlers
|
|
465
|
+
<button onClick={() => handleClick(id)}>
|
|
466
|
+
|
|
467
|
+
// ✅ Use useCallback for passed callbacks
|
|
468
|
+
const handleSearch = useCallback((query: string) => {
|
|
469
|
+
setSearchQuery(query)
|
|
470
|
+
}, [])
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## Debugging
|
|
476
|
+
|
|
477
|
+
### Component Debug
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
@frontend-developer Debug MarketCard component:
|
|
481
|
+
- Why re-rendering too much?
|
|
482
|
+
- Why props not updating?
|
|
483
|
+
- Why styles not applying?
|
|
484
|
+
- Why event handler not firing?
|
|
485
|
+
|
|
486
|
+
Add console logs dan explain what's happening.
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
### Performance Debug
|
|
490
|
+
|
|
491
|
+
```bash
|
|
492
|
+
@frontend-developer Profile performance di dashboard page:
|
|
493
|
+
- Identify slow renders
|
|
494
|
+
- Find unnecessary re-renders
|
|
495
|
+
- Locate large bundles
|
|
496
|
+
- Detect memory leaks
|
|
497
|
+
|
|
498
|
+
Gunakan Nuxt DevTools + browser Performance panel approach.
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
## Quick Commands
|
|
504
|
+
|
|
505
|
+
```bash
|
|
506
|
+
# Session Info
|
|
507
|
+
@frontend-developer What's the current session context?
|
|
508
|
+
|
|
509
|
+
# Skill Info
|
|
510
|
+
@frontend-developer List all available skills untuk frontend development
|
|
511
|
+
|
|
512
|
+
# Best Practices
|
|
513
|
+
@frontend-developer What's the best practice untuk [specific task]?
|
|
514
|
+
|
|
515
|
+
# Alternatives
|
|
516
|
+
@frontend-developer Ada cara lain yang lebih [simple/performant/maintainable]?
|
|
517
|
+
|
|
518
|
+
# Explain
|
|
519
|
+
@frontend-developer Explain kenapa [decision/pattern/choice]?
|
|
520
|
+
|
|
521
|
+
# Documentation
|
|
522
|
+
@frontend-developer Add JSDoc comments dan usage examples
|
|
523
|
+
|
|
524
|
+
# Examples
|
|
525
|
+
@frontend-developer Berikan contoh usage untuk component ini
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
## Hotkeys (Primary Agent Mode)
|
|
531
|
+
|
|
532
|
+
```
|
|
533
|
+
Tab - Switch agents
|
|
534
|
+
Ctrl+P - List actions
|
|
535
|
+
/undo - Undo last change
|
|
536
|
+
/redo - Redo change
|
|
537
|
+
/share - Share conversation
|
|
538
|
+
@ - Mention agent/file
|
|
539
|
+
Ctrl+C - Cancel current operation
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## Memory Management
|
|
545
|
+
|
|
546
|
+
### Check Context
|
|
547
|
+
|
|
548
|
+
```bash
|
|
549
|
+
@frontend-developer What do you remember about this project?
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
### Reset Context
|
|
553
|
+
|
|
554
|
+
```bash
|
|
555
|
+
@frontend-developer Forget temporary debug code, keep architecture decisions
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
### Save Important Info
|
|
559
|
+
|
|
560
|
+
```bash
|
|
561
|
+
@frontend-developer Remember: we use Pinia for state, not Vuex
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
---
|
|
565
|
+
|
|
566
|
+
## Keyboard Shortcuts untuk Nuxt 4
|
|
567
|
+
|
|
568
|
+
```typescript
|
|
569
|
+
// Auto-imported - no need to import
|
|
570
|
+
const route = useRoute()
|
|
571
|
+
const router = useRouter()
|
|
572
|
+
const { data } = await useFetch('/api/data')
|
|
573
|
+
const config = useRuntimeConfig()
|
|
574
|
+
|
|
575
|
+
// SSR checks
|
|
576
|
+
if (process.client) { /* browser only */ }
|
|
577
|
+
if (process.server) { /* server only */ }
|
|
578
|
+
|
|
579
|
+
// Client-only component
|
|
580
|
+
<ClientOnly><BrowserComponent /></ClientOnly>
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
## Emergency Commands
|
|
586
|
+
|
|
587
|
+
```bash
|
|
588
|
+
# Rollback changes
|
|
589
|
+
/undo
|
|
590
|
+
|
|
591
|
+
# Fix TypeScript errors
|
|
592
|
+
@frontend-developer Fix all TypeScript errors di current file
|
|
593
|
+
|
|
594
|
+
# Quick accessibility fix
|
|
595
|
+
@frontend-developer Quick accessibility audit + fixes untuk [component]
|
|
596
|
+
|
|
597
|
+
# Performance emergency
|
|
598
|
+
@frontend-developer Page is slow, quick wins untuk improve performance?
|
|
599
|
+
|
|
600
|
+
# Production blocker
|
|
601
|
+
@frontend-developer URGENT: [describe issue], need fix ASAP
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
---
|
|
605
|
+
|
|
606
|
+
## Template Requests
|
|
607
|
+
|
|
608
|
+
### New Feature
|
|
609
|
+
|
|
610
|
+
```bash
|
|
611
|
+
@frontend-developer New feature: [describe]
|
|
612
|
+
|
|
613
|
+
Requirements:
|
|
614
|
+
- [list requirements]
|
|
615
|
+
|
|
616
|
+
Components needed:
|
|
617
|
+
- [list components]
|
|
618
|
+
|
|
619
|
+
Skills to load:
|
|
620
|
+
- [relevant skills]
|
|
621
|
+
|
|
622
|
+
Timeline: [urgent/normal/low priority]
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
### Bug Fix
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
@frontend-developer Bug in [component/page]:
|
|
629
|
+
|
|
630
|
+
Issue: [describe what's wrong]
|
|
631
|
+
Expected: [what should happen]
|
|
632
|
+
Actual: [what happens]
|
|
633
|
+
Steps to reproduce: [list steps]
|
|
634
|
+
|
|
635
|
+
Please debug and fix.
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
### Refactor Request
|
|
639
|
+
|
|
640
|
+
```bash
|
|
641
|
+
@frontend-developer Refactor [component/module]:
|
|
642
|
+
|
|
643
|
+
Current issues:
|
|
644
|
+
- [list problems]
|
|
645
|
+
|
|
646
|
+
Goals:
|
|
647
|
+
- [list goals]
|
|
648
|
+
|
|
649
|
+
Constraints:
|
|
650
|
+
- [list constraints]
|
|
651
|
+
|
|
652
|
+
Maintain existing functionality.
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
---
|
|
656
|
+
|
|
657
|
+
## Pro Tips
|
|
658
|
+
|
|
659
|
+
1. **Be Specific**: More context = better results
|
|
660
|
+
2. **Iterative**: Start simple, then enhance
|
|
661
|
+
3. **Review**: Always ask agent to review their work
|
|
662
|
+
4. **Skills**: Load relevant skills explicitly
|
|
663
|
+
5. **Context**: Help agent remember important decisions
|
|
664
|
+
6. **Accessibility**: Always remind about a11y
|
|
665
|
+
7. **Performance**: Mention performance concerns upfront
|
|
666
|
+
8. **Tests**: Ask for tests alongside implementation
|
|
667
|
+
|
|
668
|
+
---
|
|
669
|
+
|
|
670
|
+
**Print this and keep it handy! 📌**
|
|
671
|
+
|
|
672
|
+
Common questions? Check README.md or ask:
|
|
673
|
+
|
|
674
|
+
```bash
|
|
675
|
+
@frontend-developer How do I [question]?
|
|
676
|
+
```
|