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,187 @@
|
|
|
1
|
+
# React Frontend Developer Agent — Data Fetching Patterns
|
|
2
|
+
|
|
3
|
+
Panduan data fetching patterns untuk React/Next.js project.
|
|
4
|
+
|
|
5
|
+
## Server Components (Next.js App Router)
|
|
6
|
+
|
|
7
|
+
### Direct Fetch (Default)
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
async function ProductList() {
|
|
11
|
+
const res = await fetch("https://api.example.com/products", {
|
|
12
|
+
next: { revalidate: 60 },
|
|
13
|
+
});
|
|
14
|
+
const products = await res.json();
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<ul>
|
|
18
|
+
{products.map((p) => (
|
|
19
|
+
<li key={p.id}>{p.name}</li>
|
|
20
|
+
))}
|
|
21
|
+
</ul>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Parallel Fetching
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
async function DashboardPage() {
|
|
30
|
+
const [users, products, stats] = await Promise.all([
|
|
31
|
+
fetch("https://api.example.com/users").then((r) => r.json()),
|
|
32
|
+
fetch("https://api.example.com/products").then((r) => r.json()),
|
|
33
|
+
fetch("https://api.example.com/stats").then((r) => r.json()),
|
|
34
|
+
]);
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<div>
|
|
38
|
+
<UserList users={users} />
|
|
39
|
+
<ProductList products={products} />
|
|
40
|
+
<StatsDisplay stats={stats} />
|
|
41
|
+
</div>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## TanStack Query (Client Components)
|
|
47
|
+
|
|
48
|
+
### Setup
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm install @tanstack/react-query
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
// app/providers.tsx
|
|
56
|
+
"use client";
|
|
57
|
+
|
|
58
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
59
|
+
|
|
60
|
+
const queryClient = new QueryClient();
|
|
61
|
+
|
|
62
|
+
export function Providers({ children }: { children: React.ReactNode }) {
|
|
63
|
+
return (
|
|
64
|
+
<QueryClientProvider client={queryClient}>
|
|
65
|
+
{children}
|
|
66
|
+
</QueryClientProvider>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Query
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
"use client";
|
|
75
|
+
|
|
76
|
+
import { useQuery } from "@tanstack/react-query";
|
|
77
|
+
|
|
78
|
+
function Profile() {
|
|
79
|
+
const { data, isLoading, error } = useQuery({
|
|
80
|
+
queryKey: ["profile"],
|
|
81
|
+
queryFn: () => fetch("/api/profile").then((r) => r.json()),
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
if (isLoading) return <div>Loading...</div>;
|
|
85
|
+
if (error) return <div>Error: {error.message}</div>;
|
|
86
|
+
return <div>{data.name}</div>;
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Mutation
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
"use client";
|
|
94
|
+
|
|
95
|
+
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
96
|
+
|
|
97
|
+
function CreateProduct() {
|
|
98
|
+
const queryClient = useQueryClient();
|
|
99
|
+
|
|
100
|
+
const mutation = useMutation({
|
|
101
|
+
mutationFn: (newProduct: { name: string; price: number }) =>
|
|
102
|
+
fetch("/api/products", {
|
|
103
|
+
method: "POST",
|
|
104
|
+
body: JSON.stringify(newProduct),
|
|
105
|
+
headers: { "Content-Type": "application/json" },
|
|
106
|
+
}),
|
|
107
|
+
onSuccess: () => {
|
|
108
|
+
queryClient.invalidateQueries({ queryKey: ["products"] });
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
return (
|
|
113
|
+
<button onClick={() => mutation.mutate({ name: "Foo", price: 100 })}>
|
|
114
|
+
{mutation.isPending ? "Creating..." : "Create Product"}
|
|
115
|
+
</button>
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Server Actions (Next.js)
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
// app/products/actions.ts
|
|
124
|
+
"use server";
|
|
125
|
+
|
|
126
|
+
import { revalidatePath } from "next/cache";
|
|
127
|
+
|
|
128
|
+
export async function createProduct(formData: FormData) {
|
|
129
|
+
const name = formData.get("name");
|
|
130
|
+
const price = formData.get("price");
|
|
131
|
+
|
|
132
|
+
// Validate
|
|
133
|
+
if (!name || !price) {
|
|
134
|
+
return { error: "Name and price required" };
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Database operation
|
|
138
|
+
await prisma.product.create({
|
|
139
|
+
data: { name: String(name), price: Number(price) },
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
revalidatePath("/products");
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Custom Fetch Composable (React)
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// lib/api.ts
|
|
150
|
+
interface ApiOptions<T> {
|
|
151
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
|
|
152
|
+
body?: T;
|
|
153
|
+
params?: Record<string, string>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export async function api<T>(
|
|
157
|
+
endpoint: string,
|
|
158
|
+
options: ApiOptions<unknown> = {}
|
|
159
|
+
): Promise<T> {
|
|
160
|
+
const { method = "GET", body, params } = options;
|
|
161
|
+
|
|
162
|
+
let url = `/api${endpoint}`;
|
|
163
|
+
if (params) {
|
|
164
|
+
const searchParams = new URLSearchParams(params);
|
|
165
|
+
url += `?${searchParams}`;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const res = await fetch(url, {
|
|
169
|
+
method,
|
|
170
|
+
headers: {
|
|
171
|
+
"Content-Type": "application/json",
|
|
172
|
+
},
|
|
173
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
174
|
+
credentials: "include",
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
if (!res.ok) {
|
|
178
|
+
const error = await res.json().catch(() => ({ message: res.statusText }));
|
|
179
|
+
throw new Error(error.message || "API Error");
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return res.json();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Usage:
|
|
186
|
+
// const products = await api<Product[]>("/products");
|
|
187
|
+
// const user = await api<User>(`/users/${id}`);
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# React Frontend Developer Agent — Cheatsheet
|
|
2
|
+
|
|
3
|
+
## Activation
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
@frontend-react [request]
|
|
7
|
+
@frontend-react Load skill `shadcn-ui` untuk build form components
|
|
8
|
+
@frontend-react Load skills: `building-components`, `security-review`, `tdd-workflow`
|
|
9
|
+
@frontend-react What skills are currently loaded?
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Component Development
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
@frontend-react Buat component Button dengan:
|
|
16
|
+
@frontend-react Buat DataTable component:
|
|
17
|
+
@frontend-react Buat LoginForm:
|
|
18
|
+
@frontend-react Implement design dari [screenshot]:
|
|
19
|
+
@frontend-react Add dark mode support:
|
|
20
|
+
@frontend-react Make [component] responsive:
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Performance
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
@frontend-react Load `vercel-react-best-practices` dan audit:
|
|
27
|
+
@frontend-react Add virtualization ke List untuk 500+ items
|
|
28
|
+
@frontend-react Lazy load semua components di bawah fold
|
|
29
|
+
@frontend-react Code split routes dan heavy components
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## State Management
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
@frontend-react Create Zustand store untuk products:
|
|
36
|
+
@frontend-react Create TanStack Query hooks:
|
|
37
|
+
@frontend-react Setup data fetching untuk users page:
|
|
38
|
+
@frontend-react Setup data fetching untuk external API:
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Forms & Validation
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
@frontend-react Create Zod schema untuk form:
|
|
45
|
+
@frontend-react Implement form dengan React Hook Form:
|
|
46
|
+
@frontend-react Handle form submission dan validation:
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Design & Animation
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
@frontend-react Add micro-interactions dengan Framer Motion:
|
|
53
|
+
@frontend-react Add page transitions:
|
|
54
|
+
@frontend-react Create ErrorBoundary component:
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Code Review
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
@frontend-react Review components/ProductCard.tsx:
|
|
61
|
+
@frontend-react Review all changed files sebelum commit:
|
|
62
|
+
@frontend-react Audit accessibility:
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Debugging & Profiling
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
@frontend-react Debug ProductCard component:
|
|
69
|
+
@frontend-react Profile performance di dashboard page:
|
|
70
|
+
@frontend-react What's the current session context?
|
|
71
|
+
@frontend-react What's the best practice untuk [specific task]?
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Skills Available
|
|
75
|
+
|
|
76
|
+
| Skill | Description |
|
|
77
|
+
|-------|-------------|
|
|
78
|
+
| `coding-standards` | Universal coding standards |
|
|
79
|
+
| `frontend-patterns` | React/Next.js patterns |
|
|
80
|
+
| `frontend-design` | Design implementation |
|
|
81
|
+
| `web-design-guidelines` | UI/UX compliance |
|
|
82
|
+
| `shadcn-ui` | shadcn/ui components |
|
|
83
|
+
| `vercel-react-best-practices` | React performance |
|
|
84
|
+
| `vercel-composition-patterns` | Component composition |
|
|
85
|
+
| `building-components` | Component library creation |
|
|
86
|
+
| `security-review` | Auth/user input security |
|
|
87
|
+
| `tdd-workflow` | Test-driven development |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# React Frontend Developer Agent — Dokumentasi Index
|
|
2
|
+
|
|
3
|
+
Navigasi lengkap untuk semua dokumentasi React Frontend Developer Agent (`@frontend-react`).
|
|
4
|
+
|
|
5
|
+
## Quick Links
|
|
6
|
+
|
|
7
|
+
| Kebutuhan | Dokumen |
|
|
8
|
+
|-----------|---------|
|
|
9
|
+
| Baru mulai? | [QUICK_START.md](./QUICK_START.md) |
|
|
10
|
+
| Panduan lengkap? | [README.md](./README.md) |
|
|
11
|
+
| Cari command cepat? | [CHEATSHEET.md](./CHEATSHEET.md) |
|
|
12
|
+
| Data fetching patterns? | [API_PATTERNS.md](./API_PATTERNS.md) |
|
|
13
|
+
|
|
14
|
+
## Documentation Structure
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
.opencode/
|
|
18
|
+
├── agents/
|
|
19
|
+
│ └── react-frontend-developer.md # Agent definition
|
|
20
|
+
└── agent-docs/frontend/react/ # Supporting documentation (this directory)
|
|
21
|
+
├── INDEX.md # This file — navigation hub
|
|
22
|
+
├── README.md # Complete user guide
|
|
23
|
+
├── QUICK_START.md # Get started in 5 minutes
|
|
24
|
+
├── CHEATSHEET.md # Quick reference
|
|
25
|
+
└── API_PATTERNS.md # Data fetching patterns
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## For New Users
|
|
29
|
+
|
|
30
|
+
1. Read [QUICK_START.md](./QUICK_START.md) — 5 menit memahami basics
|
|
31
|
+
2. Reference [CHEATSHEET.md](./CHEATSHEET.md) — untuk quick commands
|
|
32
|
+
3. Baca [README.md](./README.md) — capabilities lengkap
|
|
33
|
+
|
|
34
|
+
## For Experienced Users
|
|
35
|
+
|
|
36
|
+
- [CHEATSHEET.md](./CHEATSHEET.md) — Commands, skills, shortcuts
|
|
37
|
+
- [API_PATTERNS.md](./API_PATTERNS.md) — Data fetching patterns
|
|
38
|
+
- [README.md](./README.md) — Comprehensive capabilities
|
|
39
|
+
|
|
40
|
+
## Agent Reference
|
|
41
|
+
|
|
42
|
+
| Mention | File | Stack |
|
|
43
|
+
|---------|------|-------|
|
|
44
|
+
| `@frontend-react` | `react-frontend-developer.md` | React 19, Next.js 15, shadcn/ui, Tailwind CSS |
|
|
45
|
+
| `@frontend-nuxt` | `nuxt-frontend-developer.md` | Nuxt 4, Vue 3, Nuxt UI, Tailwind CSS |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# React Frontend Developer Agent — Quick Start
|
|
2
|
+
|
|
3
|
+
Panduan cepat untuk mulai menggunakan React Frontend Developer Agent (`@frontend-react`).
|
|
4
|
+
|
|
5
|
+
## Aktivasi Agent
|
|
6
|
+
|
|
7
|
+
Di OpenCode, ketik:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
@frontend-react Hello! Tolong analyze project structure ini.
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Agent Akan Load Skills
|
|
14
|
+
|
|
15
|
+
Agent otomatis akan load skills yang dibutuhkan:
|
|
16
|
+
- `coding-standards`
|
|
17
|
+
- `frontend-patterns`
|
|
18
|
+
- `frontend-design`
|
|
19
|
+
- `web-design-guidelines`
|
|
20
|
+
|
|
21
|
+
## Mulai Development!
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
@frontend-react Buat component Button dengan:
|
|
25
|
+
- 5 variants (primary, secondary, success, error, ghost)
|
|
26
|
+
- 3 sizes (sm, md, lg)
|
|
27
|
+
- Loading state
|
|
28
|
+
- Icon support
|
|
29
|
+
- Accessible (ARIA + keyboard)
|
|
30
|
+
- shadcn/ui style
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Agent akan:
|
|
34
|
+
- Membuat component dengan TypeScript strict
|
|
35
|
+
- Implement accessibility standards
|
|
36
|
+
- Follow React 19 / Next.js 15 best practices
|
|
37
|
+
- Include usage examples
|
|
38
|
+
|
|
39
|
+
## Next Steps
|
|
40
|
+
|
|
41
|
+
- [CHEATSHEET.md](./CHEATSHEET.md) — Quick commands
|
|
42
|
+
- [API_PATTERNS.md](./API_PATTERNS.md) — Data fetching patterns
|
|
43
|
+
- [README.md](./README.md) — Full capabilities
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# React Frontend Developer Agent — Panduan Lengkap
|
|
2
|
+
|
|
3
|
+
Dokumentasi lengkap untuk React Frontend Developer Agent (`@frontend-react`).
|
|
4
|
+
|
|
5
|
+
## Daftar Isi
|
|
6
|
+
|
|
7
|
+
- [Tentang Agent](#tentang-agent)
|
|
8
|
+
- [Cara Aktivasi](#cara-aktivasi)
|
|
9
|
+
- [Stack yang Didukung](#stack-yang-didukung)
|
|
10
|
+
- [Skills](#skills)
|
|
11
|
+
- [Contoh Penggunaan](#contoh-penggunaan)
|
|
12
|
+
- [Tips & Best Practices](#tips--best-practices)
|
|
13
|
+
- [Referensi Lanjutan](#referensi-lanjutan)
|
|
14
|
+
|
|
15
|
+
## Tentang Agent
|
|
16
|
+
|
|
17
|
+
React Frontend Developer Agent adalah subagent spesialis untuk pengembangan frontend menggunakan **React.js / Next.js / Vite**. Agent ini dipanggil oleh IT Leader (`leader`) ketika project membutuhkan frontend berbasis React.
|
|
18
|
+
|
|
19
|
+
**Stack utama:**
|
|
20
|
+
- React 19 + TypeScript strict
|
|
21
|
+
- Next.js 15 (App Router) — Server Components, Server Actions, Route Handlers
|
|
22
|
+
- Vite + React plugin
|
|
23
|
+
- Tailwind CSS v4
|
|
24
|
+
- shadcn/ui component library
|
|
25
|
+
- TanStack Query (data fetching)
|
|
26
|
+
- Zustand (state management)
|
|
27
|
+
- React Hook Form + Zod (form validation)
|
|
28
|
+
- Framer Motion (animations)
|
|
29
|
+
|
|
30
|
+
## Cara Aktivasi
|
|
31
|
+
|
|
32
|
+
### Via IT Leader (Recommended)
|
|
33
|
+
|
|
34
|
+
IT Leader akan otomatis mendelegasikan task ke `@frontend-react` ketika project menggunakan React/Next.js.
|
|
35
|
+
|
|
36
|
+
### Manual
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
@frontend-react [deskripsi task]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Skills
|
|
43
|
+
|
|
44
|
+
### Auto-loaded Skills
|
|
45
|
+
|
|
46
|
+
Setiap session, agent akan load:
|
|
47
|
+
1. `coding-standards` — Universal coding standards
|
|
48
|
+
2. `frontend-patterns` — React/Next.js patterns
|
|
49
|
+
3. `frontend-design` — Design implementation
|
|
50
|
+
4. `web-design-guidelines` — UI/UX compliance
|
|
51
|
+
|
|
52
|
+
### Contextual Skills (load sesuai kebutuhan)
|
|
53
|
+
|
|
54
|
+
- `shadcn-ui` — shadcn/ui components
|
|
55
|
+
- `vercel-react-best-practices` — React performance optimization
|
|
56
|
+
- `vercel-composition-patterns` — Component composition patterns
|
|
57
|
+
- `building-components` — Component library creation
|
|
58
|
+
- `security-review` — Auth/user input security
|
|
59
|
+
- `tdd-workflow` — Test-driven development
|
|
60
|
+
|
|
61
|
+
## Contoh Penggunaan
|
|
62
|
+
|
|
63
|
+
### 1. Build Component
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
@frontend-react Buat ProductCard component:
|
|
67
|
+
- Props: product (name, price, image, rating)
|
|
68
|
+
- Variants: default, loading, error
|
|
69
|
+
- Responsive: mobile-first
|
|
70
|
+
- Animasi: hover scale
|
|
71
|
+
- Accessibility: ARIA labels
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. Setup Data Fetching
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
@frontend-react Setup TanStack Query untuk products page:
|
|
78
|
+
- GET /api/products — list with pagination
|
|
79
|
+
- GET /api/products/[id] — single product
|
|
80
|
+
- POST /api/products — create
|
|
81
|
+
- Handle loading, error, empty states
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 3. Implement Form
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
@frontend-react Buat CreateProduct form:
|
|
88
|
+
- Fields: name, description, price, category
|
|
89
|
+
- Validation: Zod schema
|
|
90
|
+
- Submit: Server Action
|
|
91
|
+
- States: idle, submitting, success, error
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 4. Server Component
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
@frontend-react Buat ProductList sebagai Server Component:
|
|
98
|
+
- Fetch langsung dari database
|
|
99
|
+
- Search params untuk filter
|
|
100
|
+
- Streaming dengan Suspense
|
|
101
|
+
- Revalidation periodik
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 5. Performance Optimization
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
@frontend-react Load `vercel-react-best-practices` dan audit:
|
|
108
|
+
- Bundle size
|
|
109
|
+
- Re-render patterns
|
|
110
|
+
- Image optimization
|
|
111
|
+
- Code splitting
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Tips & Best Practices
|
|
115
|
+
|
|
116
|
+
### Server Components First
|
|
117
|
+
|
|
118
|
+
Gunakan Server Components secara default. Tambah `'use client'` hanya ketika membutuhkan:
|
|
119
|
+
- Browser APIs (localStorage, event handlers)
|
|
120
|
+
- useState / useEffect
|
|
121
|
+
- onClick / onChange
|
|
122
|
+
- Custom hooks dengan browser APIs
|
|
123
|
+
|
|
124
|
+
### Data Fetching
|
|
125
|
+
|
|
126
|
+
- **Server Components**: `fetch()` langsung dengan `next.revalidate`
|
|
127
|
+
- **Client Components**: TanStack Query untuk caching & refetch
|
|
128
|
+
- **Mutations**: Server Actions (Next.js) atau TanStack Query mutations
|
|
129
|
+
|
|
130
|
+
### State Management
|
|
131
|
+
|
|
132
|
+
- **Server State**: Server Components + TanStack Query
|
|
133
|
+
- **Client State**: Zustand untuk global state
|
|
134
|
+
- **Form State**: React Hook Form
|
|
135
|
+
- **URL State**: useSearchParams / useParams
|
|
136
|
+
|
|
137
|
+
### Component Patterns
|
|
138
|
+
|
|
139
|
+
- Gunakan shadcn/ui components sebagai base
|
|
140
|
+
- Custom components via composition
|
|
141
|
+
- Props interface dengan TypeScript strict
|
|
142
|
+
- Gunakan React.memo hanya untuk expensive renders
|
|
143
|
+
|
|
144
|
+
### Accessibility
|
|
145
|
+
|
|
146
|
+
- Semantic HTML elements
|
|
147
|
+
- ARIA labels untuk interactive elements
|
|
148
|
+
- Keyboard navigation
|
|
149
|
+
- Color contrast WCAG 2.1 AA
|
|
150
|
+
- Focus management untuk modals
|
|
151
|
+
|
|
152
|
+
## Referensi Lanjutan
|
|
153
|
+
|
|
154
|
+
| Dokumen | Deskripsi |
|
|
155
|
+
|---------|-----------|
|
|
156
|
+
| [QUICK_START.md](./QUICK_START.md) | Mulai dalam 5 menit |
|
|
157
|
+
| [CHEATSHEET.md](./CHEATSHEET.md) | Quick commands reference |
|
|
158
|
+
| [API_PATTERNS.md](./API_PATTERNS.md) | Data fetching patterns |
|
|
159
|
+
| [INDEX.md](./INDEX.md) | Full documentation index |
|
|
File without changes
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Android Developer Agent — `@android`
|
|
2
|
+
|
|
3
|
+
Android native development dengan Kotlin, Jetpack Compose, dan Material Design 3.
|
|
4
|
+
|
|
5
|
+
## Quick Reference
|
|
6
|
+
|
|
7
|
+
| Mention | Agent File | Stack |
|
|
8
|
+
|---------|-----------|-------|
|
|
9
|
+
| `@android` | `android-developer.md` | Kotlin, Jetpack Compose, XML, Material 3, Gradle KTS |
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
@android Buat screen login dengan Jetpack Compose + ViewModel
|
|
15
|
+
@android Implementasi Room database untuk produk
|
|
16
|
+
@android Setup Hilt DI module
|
|
17
|
+
@android Migrasi XML layout ke Compose
|
|
18
|
+
@android Implementasi Firebase Cloud Messaging
|
|
19
|
+
@android Buat UI dengan Material Design 3 theme
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Core Stack
|
|
23
|
+
|
|
24
|
+
- **Language**: Kotlin
|
|
25
|
+
- **UI**: Jetpack Compose, XML layouts
|
|
26
|
+
- **Architecture**: MVVM, Clean Architecture
|
|
27
|
+
- **DI**: Hilt
|
|
28
|
+
- **Database**: Room
|
|
29
|
+
- **Networking**: Retrofit + OkHttp
|
|
30
|
+
- **Navigation**: Navigation Compose
|
|
31
|
+
- **Background**: WorkManager
|
|
32
|
+
- **Build**: Gradle KTS, Version Catalog
|
|
33
|
+
|
|
34
|
+
## Skills Available
|
|
35
|
+
|
|
36
|
+
- `android-jetpack-compose` — Compose patterns
|
|
37
|
+
- `edge-to-edge` — Edge-to-edge display
|
|
38
|
+
- `navigation-3` — Jetpack Navigation
|
|
39
|
+
- `firebase-basics` — Firebase services
|
|
40
|
+
- `play-billing-library-version-upgrade` — Play Billing
|
|
41
|
+
- `camera1-to-camerax` — Camera migration
|
|
42
|
+
- `r8-analyzer` — R8/ProGuard optimization
|
|
43
|
+
- `migrate-xml-views-to-jetpack-compose` — XML to Compose migration
|
|
44
|
+
- `security-review` — Security best practices
|
|
45
|
+
- `tdd-workflow` — Test-driven development
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Flutter Developer Agent — `@flutter`
|
|
2
|
+
|
|
3
|
+
Cross-platform mobile development dengan Dart, Flutter SDK, dan Material Design 3.
|
|
4
|
+
|
|
5
|
+
## Quick Reference
|
|
6
|
+
|
|
7
|
+
| Mention | Agent File | Stack |
|
|
8
|
+
|---------|-----------|-------|
|
|
9
|
+
| `@flutter` | `flutter-developer.md` | Dart, Flutter SDK, Material 3, Bloc/Riverpod |
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
@flutter Buat screen product list dengan Bloc pattern
|
|
15
|
+
@flutter Implementasi GoRouter navigation
|
|
16
|
+
@flutter Setup Firebase Auth + Firestore
|
|
17
|
+
@flutter Buat Repository pattern dengan Dio + Hive
|
|
18
|
+
@flutter Implementasi dark mode dengan Material 3
|
|
19
|
+
@flutter Buat unit test dan widget test
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Core Stack
|
|
23
|
+
|
|
24
|
+
- **Language**: Dart
|
|
25
|
+
- **UI**: Material Design 3, Cupertino widgets
|
|
26
|
+
- **Architecture**: Clean Architecture
|
|
27
|
+
- **State Management**: Bloc, Riverpod, Provider
|
|
28
|
+
- **Navigation**: GoRouter
|
|
29
|
+
- **Networking**: Dio, http package
|
|
30
|
+
- **Local Storage**: Hive, Isar, Drift, flutter_secure_storage
|
|
31
|
+
- **Firebase**: Auth, Firestore, Cloud Messaging
|
|
32
|
+
- **Code Generation**: freezed, build_runner
|
|
33
|
+
- **Testing**: flutter_test, bloc_test, mocktail, integration_test
|
|
34
|
+
|
|
35
|
+
## Skills Available
|
|
36
|
+
|
|
37
|
+
- `coding-standards` — Universal coding standards
|
|
38
|
+
- `frontend-patterns` — Mobile UI patterns
|
|
39
|
+
- `frontend-design` — Design implementation
|
|
40
|
+
- `web-design-guidelines` — UI/UX compliance
|
|
41
|
+
- `firebase-basics` — Firebase services
|
|
42
|
+
- `building-components` — Reusable widget libraries
|
|
43
|
+
- `security-review` — Security best practices
|
|
44
|
+
- `tdd-workflow` — Test-driven development
|