agent-skill-kit 3.9.135
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/.agent/global.d.ts +80 -0
- package/.agent/rules/GEMINI.md +210 -0
- package/.agent/rules/autopilot.md +287 -0
- package/.agent/rules/code-rules.md +227 -0
- package/.agent/scripts/audit_workflows.ts +23 -0
- package/.agent/scripts/auto_preview.ts +170 -0
- package/.agent/scripts/checklist.ts +180 -0
- package/.agent/scripts/compile-agents.ts +237 -0
- package/.agent/scripts/fix_skills.ts +49 -0
- package/.agent/scripts/session_manager.ts +222 -0
- package/.agent/scripts/skill-audit.ts +255 -0
- package/.agent/scripts/sync_workflows.ts +54 -0
- package/.agent/scripts/utils/colors.ts +58 -0
- package/.agent/scripts/utils/process-manager.ts +131 -0
- package/.agent/scripts/utils/reporter.ts +192 -0
- package/.agent/scripts/utils/runner.ts +128 -0
- package/.agent/scripts/verify_all.ts +243 -0
- package/.agent/scripts/version-sync.ts +256 -0
- package/.agent/skills/SKILL_INDEX.md +129 -0
- package/.agent/skills/agent-browser/AGENTS.md +728 -0
- package/.agent/skills/agent-browser/SKILL.md +193 -0
- package/.agent/skills/agent-browser/rules/_sections.md +15 -0
- package/.agent/skills/agent-browser/rules/_template.md +32 -0
- package/.agent/skills/agent-browser/rules/engineering-spec.md +528 -0
- package/.agent/skills/agent-browser/scripts/browser_cli.ts +52 -0
- package/.agent/skills/agent-browser/scripts/session_manager.ts +166 -0
- package/.agent/skills/ai-artist/AGENTS.md +1082 -0
- package/.agent/skills/ai-artist/SKILL.md +186 -0
- package/.agent/skills/ai-artist/rules/_sections.md +30 -0
- package/.agent/skills/ai-artist/rules/_template.md +32 -0
- package/.agent/skills/ai-artist/rules/domain-code.md +118 -0
- package/.agent/skills/ai-artist/rules/domain-marketing.md +105 -0
- package/.agent/skills/ai-artist/rules/engineering-spec.md +519 -0
- package/.agent/skills/ai-artist/rules/image-prompts.md +195 -0
- package/.agent/skills/ai-artist/rules/model-syntax.md +115 -0
- package/.agent/skills/ai-artist/scripts/prompt_compiler.ts +72 -0
- package/.agent/skills/ai-artist/templates/image-core.txt +1 -0
- package/.agent/skills/ai-artist/templates/llm-core.txt +6 -0
- package/.agent/skills/api-architect/AGENTS.md +1896 -0
- package/.agent/skills/api-architect/SKILL.md +173 -0
- package/.agent/skills/api-architect/rules/_sections.md +35 -0
- package/.agent/skills/api-architect/rules/_template.md +32 -0
- package/.agent/skills/api-architect/rules/api-style.md +115 -0
- package/.agent/skills/api-architect/rules/auth.md +134 -0
- package/.agent/skills/api-architect/rules/documentation.md +131 -0
- package/.agent/skills/api-architect/rules/engineering-spec.md +505 -0
- package/.agent/skills/api-architect/rules/graphql.md +154 -0
- package/.agent/skills/api-architect/rules/rate-limiting.md +76 -0
- package/.agent/skills/api-architect/rules/response.md +138 -0
- package/.agent/skills/api-architect/rules/rest.md +113 -0
- package/.agent/skills/api-architect/rules/security-testing.md +146 -0
- package/.agent/skills/api-architect/rules/trpc.md +129 -0
- package/.agent/skills/api-architect/rules/versioning.md +100 -0
- package/.agent/skills/api-architect/scripts/api_validator.ts +413 -0
- package/.agent/skills/auth-patterns/AGENTS.md +1830 -0
- package/.agent/skills/auth-patterns/SKILL.md +163 -0
- package/.agent/skills/auth-patterns/rules/_sections.md +30 -0
- package/.agent/skills/auth-patterns/rules/_template.md +32 -0
- package/.agent/skills/auth-patterns/rules/engineering-spec.md +515 -0
- package/.agent/skills/auth-patterns/rules/jwt-deep.md +196 -0
- package/.agent/skills/auth-patterns/rules/mfa.md +174 -0
- package/.agent/skills/auth-patterns/rules/oauth2.md +134 -0
- package/.agent/skills/auth-patterns/rules/passkey.md +243 -0
- package/.agent/skills/auth-patterns/rules/rbac-abac.md +206 -0
- package/.agent/skills/auth-patterns/rules/session.md +183 -0
- package/.agent/skills/auth-patterns/scripts/auth_validator.ts +121 -0
- package/.agent/skills/chrome-devtools/AGENTS.md +952 -0
- package/.agent/skills/chrome-devtools/SKILL.md +160 -0
- package/.agent/skills/chrome-devtools/rules/_sections.md +25 -0
- package/.agent/skills/chrome-devtools/rules/_template.md +32 -0
- package/.agent/skills/chrome-devtools/rules/aria-snapshot.md +95 -0
- package/.agent/skills/chrome-devtools/rules/engineering-spec.md +510 -0
- package/.agent/skills/chrome-devtools/rules/scripts-guide.md +174 -0
- package/.agent/skills/chrome-devtools/scripts/aria-snapshot.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/click.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/console.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/core_cli.ts +79 -0
- package/.agent/skills/chrome-devtools/scripts/evaluate.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/fill.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/navigate.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/network.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/performance.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/screenshot.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/select-ref.ts +3 -0
- package/.agent/skills/cicd-pipeline/AGENTS.md +809 -0
- package/.agent/skills/cicd-pipeline/SKILL.md +164 -0
- package/.agent/skills/cicd-pipeline/rules/_sections.md +15 -0
- package/.agent/skills/cicd-pipeline/rules/_template.md +32 -0
- package/.agent/skills/cicd-pipeline/rules/engineering-spec.md +477 -0
- package/.agent/skills/cicd-pipeline/scripts/flag-manager.ts +253 -0
- package/.agent/skills/cicd-pipeline/scripts/pipeline_validator.ts +133 -0
- package/.agent/skills/code-constitution/AGENTS.md +597 -0
- package/.agent/skills/code-constitution/CHANGELOG.md +216 -0
- package/.agent/skills/code-constitution/SKILL.md +191 -0
- package/.agent/skills/code-constitution/VERSION +3 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/after.tsx +59 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/before.tsx +42 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/explanation.md +91 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/after.tsx +99 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/before.tsx +57 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/explanation.md +120 -0
- package/.agent/skills/code-constitution/knowledge/lessons-learned.yaml +3 -0
- package/.agent/skills/code-constitution/metadata/precedence.yaml +117 -0
- package/.agent/skills/code-constitution/metadata/scope-map.yaml +156 -0
- package/.agent/skills/code-constitution/proposals/v1.1-change-proposal-template.md +201 -0
- package/.agent/skills/code-constitution/resources/AUTHORITY_MODEL.md +115 -0
- package/.agent/skills/code-constitution/resources/ENFORCEMENT_GUIDE.md +246 -0
- package/.agent/skills/code-constitution/resources/LOAD_ORDER.md +86 -0
- package/.agent/skills/code-constitution/rules/_sections.md +15 -0
- package/.agent/skills/code-constitution/rules/_template.md +32 -0
- package/.agent/skills/code-constitution/rules/constitution/master-constitution.md +210 -0
- package/.agent/skills/code-constitution/rules/doctrines/architecture/architecture-doctrine.md +188 -0
- package/.agent/skills/code-constitution/rules/doctrines/backend/backend-data-engine-doctrine.md +218 -0
- package/.agent/skills/code-constitution/rules/doctrines/commercial/commercial-guardrails-doctrine.md +196 -0
- package/.agent/skills/code-constitution/rules/doctrines/data/data-integrity-doctrine.md +202 -0
- package/.agent/skills/code-constitution/rules/doctrines/frontend/frontend-mobile-doctrine.md +169 -0
- package/.agent/skills/code-constitution/rules/doctrines/frontend/interaction-patterns-doctrine.md +176 -0
- package/.agent/skills/code-constitution/rules/doctrines/learning/learning-engine-doctrine.md +192 -0
- package/.agent/skills/code-constitution/rules/doctrines/performance/performance-doctrine.md +180 -0
- package/.agent/skills/code-constitution/rules/doctrines/review/code-review-doctrine.md +174 -0
- package/.agent/skills/code-constitution/rules/enforcement/agents/agent-enforcement-protocol.md +218 -0
- package/.agent/skills/code-constitution/rules/enforcement/agents/agent-system-prompt.md +196 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/backend-api-review-checklist.md +131 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/chart-component-review-checklist.md +147 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/frontend-review-checklist.md +194 -0
- package/.agent/skills/code-constitution/rules/enforcement/playbooks/doctrine-violation-playbook.md +236 -0
- package/.agent/skills/code-constitution/rules/engineering-spec.md +561 -0
- package/.agent/skills/code-constitution/scripts/audit_pr.ts +219 -0
- package/.agent/skills/code-constitution/scripts/check_boundaries.ts +134 -0
- package/.agent/skills/code-constitution/scripts/learn.ts +202 -0
- package/.agent/skills/code-constitution/scripts/validate_doctrine.ts +287 -0
- package/.agent/skills/code-craft/AGENTS.md +803 -0
- package/.agent/skills/code-craft/SKILL.md +170 -0
- package/.agent/skills/code-craft/rules/_sections.md +20 -0
- package/.agent/skills/code-craft/rules/_template.md +32 -0
- package/.agent/skills/code-craft/rules/engineering-spec.md +447 -0
- package/.agent/skills/code-craft/rules/verification-scripts.md +83 -0
- package/.agent/skills/code-craft/scripts/code_quality_checker.ts +193 -0
- package/.agent/skills/code-review/AGENTS.md +1664 -0
- package/.agent/skills/code-review/SKILL.md +152 -0
- package/.agent/skills/code-review/rules/_sections.md +15 -0
- package/.agent/skills/code-review/rules/_template.md +32 -0
- package/.agent/skills/code-review/rules/engineering-spec.md +466 -0
- package/.agent/skills/code-review/scripts/lint_runner.ts +213 -0
- package/.agent/skills/code-review/scripts/type_coverage.ts +118 -0
- package/.agent/skills/context-engineering/AGENTS.md +499 -0
- package/.agent/skills/context-engineering/SKILL.md +147 -0
- package/.agent/skills/context-engineering/rules/_sections.md +15 -0
- package/.agent/skills/context-engineering/rules/_template.md +32 -0
- package/.agent/skills/context-engineering/rules/engineering-spec.md +463 -0
- package/.agent/skills/context-engineering/scripts/context_analyzer.ts +127 -0
- package/.agent/skills/copywriting/AGENTS.md +501 -0
- package/.agent/skills/copywriting/SKILL.md +188 -0
- package/.agent/skills/copywriting/rules/_sections.md +15 -0
- package/.agent/skills/copywriting/rules/_template.md +32 -0
- package/.agent/skills/copywriting/rules/engineering-spec.md +465 -0
- package/.agent/skills/copywriting/scripts/copy_validator.ts +185 -0
- package/.agent/skills/data-modeler/AGENTS.md +814 -0
- package/.agent/skills/data-modeler/SKILL.md +195 -0
- package/.agent/skills/data-modeler/rules/_sections.md +15 -0
- package/.agent/skills/data-modeler/rules/_template.md +32 -0
- package/.agent/skills/data-modeler/rules/database-selection.md +124 -0
- package/.agent/skills/data-modeler/rules/engineering-spec.md +479 -0
- package/.agent/skills/data-modeler/rules/indexing.md +166 -0
- package/.agent/skills/data-modeler/rules/migrations.md +176 -0
- package/.agent/skills/data-modeler/rules/optimization.md +161 -0
- package/.agent/skills/data-modeler/rules/orm-selection.md +155 -0
- package/.agent/skills/data-modeler/rules/schema-design.md +162 -0
- package/.agent/skills/data-modeler/scripts/schema_validator.ts +357 -0
- package/.agent/skills/debug-pro/AGENTS.md +798 -0
- package/.agent/skills/debug-pro/SKILL.md +193 -0
- package/.agent/skills/debug-pro/defense-in-depth/SKILL.md +148 -0
- package/.agent/skills/debug-pro/root-cause-tracing/SKILL.md +196 -0
- package/.agent/skills/debug-pro/root-cause-tracing/find-polluter.sh +63 -0
- package/.agent/skills/debug-pro/rules/_sections.md +15 -0
- package/.agent/skills/debug-pro/rules/_template.md +32 -0
- package/.agent/skills/debug-pro/rules/engineering-spec.md +491 -0
- package/.agent/skills/debug-pro/scripts/debug_verifier.ts +148 -0
- package/.agent/skills/debug-pro/verification-before-completion/SKILL.md +160 -0
- package/.agent/skills/design-system/AGENTS.md +4216 -0
- package/.agent/skills/design-system/SKILL.md +186 -0
- package/.agent/skills/design-system/rules/_sections.md +65 -0
- package/.agent/skills/design-system/rules/_template.md +32 -0
- package/.agent/skills/design-system/rules/animation-guide.md +355 -0
- package/.agent/skills/design-system/rules/color-system.md +335 -0
- package/.agent/skills/design-system/rules/color-systems.md +133 -0
- package/.agent/skills/design-system/rules/decision-trees.md +442 -0
- package/.agent/skills/design-system/rules/design-extraction.md +152 -0
- package/.agent/skills/design-system/rules/engineering-spec.md +484 -0
- package/.agent/skills/design-system/rules/motion-design.md +161 -0
- package/.agent/skills/design-system/rules/motion-graphics.md +330 -0
- package/.agent/skills/design-system/rules/spatial-composition.md +184 -0
- package/.agent/skills/design-system/rules/typography-system.md +369 -0
- package/.agent/skills/design-system/rules/typography.md +124 -0
- package/.agent/skills/design-system/rules/ux-psychology.md +565 -0
- package/.agent/skills/design-system/rules/visual-effects.md +407 -0
- package/.agent/skills/design-system/scripts/accessibility_checker.ts +292 -0
- package/.agent/skills/design-system/scripts/ux_audit.ts +356 -0
- package/.agent/skills/doc-templates/AGENTS.md +820 -0
- package/.agent/skills/doc-templates/SKILL.md +260 -0
- package/.agent/skills/doc-templates/rules/_sections.md +20 -0
- package/.agent/skills/doc-templates/rules/_template.md +32 -0
- package/.agent/skills/doc-templates/rules/doc.md +355 -0
- package/.agent/skills/doc-templates/rules/engineering-spec.md +422 -0
- package/.agent/skills/doc-templates/scripts/editor-server.ts +162 -0
- package/.agent/skills/doc-templates/scripts/inject_otel.ts +22 -0
- package/.agent/skills/doc-templates/scripts/kanban-server.ts +171 -0
- package/.agent/skills/doc-templates/scripts/markdown-server.ts +185 -0
- package/.agent/skills/e2e-automation/AGENTS.md +882 -0
- package/.agent/skills/e2e-automation/SKILL.md +175 -0
- package/.agent/skills/e2e-automation/rules/_sections.md +20 -0
- package/.agent/skills/e2e-automation/rules/_template.md +32 -0
- package/.agent/skills/e2e-automation/rules/aria-snapshot.md +185 -0
- package/.agent/skills/e2e-automation/rules/engineering-spec.md +501 -0
- package/.agent/skills/e2e-automation/scripts/playwright_runner.ts +208 -0
- package/.agent/skills/execution-reporter/AGENTS.md +419 -0
- package/.agent/skills/execution-reporter/SKILL.md +152 -0
- package/.agent/skills/execution-reporter/rules/_sections.md +15 -0
- package/.agent/skills/execution-reporter/rules/_template.md +32 -0
- package/.agent/skills/execution-reporter/rules/engineering-spec.md +389 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +140 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +156 -0
- package/.agent/skills/game-development/AGENTS.md +783 -0
- package/.agent/skills/game-development/SKILL.md +178 -0
- package/.agent/skills/game-development/game-art/SKILL.md +207 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +211 -0
- package/.agent/skills/game-development/game-design/SKILL.md +151 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +130 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +154 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +167 -0
- package/.agent/skills/game-development/rules/_sections.md +15 -0
- package/.agent/skills/game-development/rules/_template.md +32 -0
- package/.agent/skills/game-development/rules/engineering-spec.md +480 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +144 -0
- package/.agent/skills/game-development/web-games/SKILL.md +173 -0
- package/.agent/skills/git-workflow/AGENTS.md +554 -0
- package/.agent/skills/git-workflow/SKILL.md +181 -0
- package/.agent/skills/git-workflow/rules/_sections.md +15 -0
- package/.agent/skills/git-workflow/rules/_template.md +32 -0
- package/.agent/skills/git-workflow/rules/engineering-spec.md +518 -0
- package/.agent/skills/gitops/AGENTS.md +921 -0
- package/.agent/skills/gitops/SKILL.md +163 -0
- package/.agent/skills/gitops/rules/_sections.md +25 -0
- package/.agent/skills/gitops/rules/_template.md +32 -0
- package/.agent/skills/gitops/rules/argocd-setup.md +148 -0
- package/.agent/skills/gitops/rules/engineering-spec.md +450 -0
- package/.agent/skills/gitops/rules/sync-policies.md +145 -0
- package/.agent/skills/google-adk-python/AGENTS.md +1054 -0
- package/.agent/skills/google-adk-python/SKILL.md +168 -0
- package/.agent/skills/google-adk-python/rules/_sections.md +25 -0
- package/.agent/skills/google-adk-python/rules/_template.md +32 -0
- package/.agent/skills/google-adk-python/rules/deployment.md +138 -0
- package/.agent/skills/google-adk-python/rules/engineering-spec.md +451 -0
- package/.agent/skills/google-adk-python/rules/multi-agent.md +146 -0
- package/.agent/skills/google-adk-python/rules/tools.md +131 -0
- package/.agent/skills/idea-storm/AGENTS.md +995 -0
- package/.agent/skills/idea-storm/SKILL.md +160 -0
- package/.agent/skills/idea-storm/rules/_sections.md +25 -0
- package/.agent/skills/idea-storm/rules/_template.md +32 -0
- package/.agent/skills/idea-storm/rules/architecture-debate.md +122 -0
- package/.agent/skills/idea-storm/rules/dynamic-questioning.md +374 -0
- package/.agent/skills/idea-storm/rules/engineering-spec.md +466 -0
- package/.agent/skills/knowledge-compiler/SKILL.md +320 -0
- package/.agent/skills/knowledge-graph/AGENTS.md +762 -0
- package/.agent/skills/knowledge-graph/SKILL.md +157 -0
- package/.agent/skills/knowledge-graph/rules/_sections.md +15 -0
- package/.agent/skills/knowledge-graph/rules/_template.md +32 -0
- package/.agent/skills/knowledge-graph/rules/engineering-spec.md +439 -0
- package/.agent/skills/knowledge-linter/SKILL.md +217 -0
- package/.agent/skills/lifecycle-orchestrator/AGENTS.md +989 -0
- package/.agent/skills/lifecycle-orchestrator/SKILL.md +169 -0
- package/.agent/skills/lifecycle-orchestrator/rules/_sections.md +15 -0
- package/.agent/skills/lifecycle-orchestrator/rules/_template.md +32 -0
- package/.agent/skills/lifecycle-orchestrator/rules/engineering-spec.md +525 -0
- package/.agent/skills/lifecycle-orchestrator/scripts/state_manager.ts +189 -0
- package/.agent/skills/mcp-builder/AGENTS.md +1653 -0
- package/.agent/skills/mcp-builder/SKILL.md +166 -0
- package/.agent/skills/mcp-builder/rules/_sections.md +40 -0
- package/.agent/skills/mcp-builder/rules/_template.md +32 -0
- package/.agent/skills/mcp-builder/rules/best-practices.md +157 -0
- package/.agent/skills/mcp-builder/rules/design-principles.md +105 -0
- package/.agent/skills/mcp-builder/rules/engineering-spec.md +473 -0
- package/.agent/skills/mcp-builder/rules/evaluation.md +103 -0
- package/.agent/skills/mcp-builder/rules/python-implementation.md +249 -0
- package/.agent/skills/mcp-builder/rules/quickstart.md +111 -0
- package/.agent/skills/mcp-builder/rules/typescript-implementation.md +280 -0
- package/.agent/skills/mcp-management/AGENTS.md +837 -0
- package/.agent/skills/mcp-management/SKILL.md +164 -0
- package/.agent/skills/mcp-management/rules/_sections.md +25 -0
- package/.agent/skills/mcp-management/rules/_template.md +32 -0
- package/.agent/skills/mcp-management/rules/cli-usage.md +146 -0
- package/.agent/skills/mcp-management/rules/engineering-spec.md +501 -0
- package/.agent/skills/mcp-management/rules/protocol.md +159 -0
- package/.agent/skills/media-processing/AGENTS.md +479 -0
- package/.agent/skills/media-processing/SKILL.md +176 -0
- package/.agent/skills/media-processing/rules/_sections.md +15 -0
- package/.agent/skills/media-processing/rules/_template.md +32 -0
- package/.agent/skills/media-processing/rules/engineering-spec.md +452 -0
- package/.agent/skills/media-processing/scripts/convert-video.ts +155 -0
- package/.agent/skills/media-processing/scripts/optimize-image.ts +127 -0
- package/.agent/skills/mobile-design/AGENTS.md +6531 -0
- package/.agent/skills/mobile-design/SKILL.md +165 -0
- package/.agent/skills/mobile-design/rules/_sections.md +45 -0
- package/.agent/skills/mobile-design/rules/_template.md +32 -0
- package/.agent/skills/mobile-design/rules/decision-trees.md +540 -0
- package/.agent/skills/mobile-design/rules/engineering-spec.md +467 -0
- package/.agent/skills/mobile-design/rules/mobile-backend.md +516 -0
- package/.agent/skills/mobile-design/rules/mobile-color-system.md +436 -0
- package/.agent/skills/mobile-design/rules/mobile-debugging.md +146 -0
- package/.agent/skills/mobile-design/rules/mobile-design-thinking.md +381 -0
- package/.agent/skills/mobile-design/rules/mobile-navigation.md +474 -0
- package/.agent/skills/mobile-design/rules/mobile-performance.md +783 -0
- package/.agent/skills/mobile-design/rules/mobile-testing.md +380 -0
- package/.agent/skills/mobile-design/rules/mobile-typography.md +449 -0
- package/.agent/skills/mobile-design/rules/platform-android.md +682 -0
- package/.agent/skills/mobile-design/rules/platform-ios.md +577 -0
- package/.agent/skills/mobile-design/rules/touch-psychology.md +553 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.ts +309 -0
- package/.agent/skills/mobile-developer/AGENTS.md +904 -0
- package/.agent/skills/mobile-developer/SKILL.md +194 -0
- package/.agent/skills/mobile-developer/rules/_sections.md +75 -0
- package/.agent/skills/mobile-developer/rules/_template.md +32 -0
- package/.agent/skills/mobile-developer/rules/anti-patterns.md +70 -0
- package/.agent/skills/mobile-developer/rules/app-store-optimization.md +319 -0
- package/.agent/skills/mobile-developer/rules/decision-trees.md +545 -0
- package/.agent/skills/mobile-developer/rules/deep-linking.md +441 -0
- package/.agent/skills/mobile-developer/rules/engineering-spec.md +477 -0
- package/.agent/skills/mobile-developer/rules/flutter.md +475 -0
- package/.agent/skills/mobile-developer/rules/mobile-backend.md +516 -0
- package/.agent/skills/mobile-developer/rules/mobile-color-system.md +444 -0
- package/.agent/skills/mobile-developer/rules/mobile-debugging.md +428 -0
- package/.agent/skills/mobile-developer/rules/mobile-design-thinking.md +367 -0
- package/.agent/skills/mobile-developer/rules/mobile-navigation.md +483 -0
- package/.agent/skills/mobile-developer/rules/mobile-performance.md +778 -0
- package/.agent/skills/mobile-developer/rules/mobile-testing.md +382 -0
- package/.agent/skills/mobile-developer/rules/mobile-typography.md +457 -0
- package/.agent/skills/mobile-developer/rules/native.md +572 -0
- package/.agent/skills/mobile-developer/rules/platform-android.md +676 -0
- package/.agent/skills/mobile-developer/rules/platform-ios.md +571 -0
- package/.agent/skills/mobile-developer/rules/push-notifications.md +599 -0
- package/.agent/skills/mobile-developer/rules/react-native.md +422 -0
- package/.agent/skills/mobile-developer/rules/touch-psychology.md +547 -0
- package/.agent/skills/mobile-developer/scripts/mobile_audit.ts +701 -0
- package/.agent/skills/nextjs-pro/AGENTS.md +3932 -0
- package/.agent/skills/nextjs-pro/SKILL.md +171 -0
- package/.agent/skills/nextjs-pro/rules/_sections.md +50 -0
- package/.agent/skills/nextjs-pro/rules/_template.md +32 -0
- package/.agent/skills/nextjs-pro/rules/advanced-event-handler-refs.md +59 -0
- package/.agent/skills/nextjs-pro/rules/advanced-init-once.md +46 -0
- package/.agent/skills/nextjs-pro/rules/advanced-use-latest.md +43 -0
- package/.agent/skills/nextjs-pro/rules/async-api-routes.md +42 -0
- package/.agent/skills/nextjs-pro/rules/async-defer-await.md +84 -0
- package/.agent/skills/nextjs-pro/rules/async-dependencies.md +55 -0
- package/.agent/skills/nextjs-pro/rules/async-parallel.md +32 -0
- package/.agent/skills/nextjs-pro/rules/async-suspense-boundaries.md +103 -0
- package/.agent/skills/nextjs-pro/rules/bundle-barrel-imports.md +63 -0
- package/.agent/skills/nextjs-pro/rules/bundle-conditional.md +35 -0
- package/.agent/skills/nextjs-pro/rules/bundle-defer-third-party.md +53 -0
- package/.agent/skills/nextjs-pro/rules/bundle-dynamic-imports.md +39 -0
- package/.agent/skills/nextjs-pro/rules/bundle-preload.md +54 -0
- package/.agent/skills/nextjs-pro/rules/client-event-listeners.md +78 -0
- package/.agent/skills/nextjs-pro/rules/client-localstorage-schema.md +75 -0
- package/.agent/skills/nextjs-pro/rules/client-passive-event-listeners.md +52 -0
- package/.agent/skills/nextjs-pro/rules/client-swr-dedup.md +60 -0
- package/.agent/skills/nextjs-pro/rules/engineering-spec.md +440 -0
- package/.agent/skills/nextjs-pro/rules/js-batch-dom-css.md +111 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-function-results.md +84 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-property-access.md +32 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-storage.md +74 -0
- package/.agent/skills/nextjs-pro/rules/js-combine-iterations.md +36 -0
- package/.agent/skills/nextjs-pro/rules/js-early-exit.md +54 -0
- package/.agent/skills/nextjs-pro/rules/js-hoist-regexp.md +49 -0
- package/.agent/skills/nextjs-pro/rules/js-index-maps.md +41 -0
- package/.agent/skills/nextjs-pro/rules/js-length-check-first.md +53 -0
- package/.agent/skills/nextjs-pro/rules/js-min-max-loop.md +86 -0
- package/.agent/skills/nextjs-pro/rules/js-set-map-lookups.md +28 -0
- package/.agent/skills/nextjs-pro/rules/js-tosorted-immutable.md +61 -0
- package/.agent/skills/nextjs-pro/rules/rendering-activity.md +30 -0
- package/.agent/skills/nextjs-pro/rules/rendering-animate-svg-wrapper.md +51 -0
- package/.agent/skills/nextjs-pro/rules/rendering-conditional-render.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rendering-content-visibility.md +42 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hoist-jsx.md +50 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hydration-no-flicker.md +86 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hydration-suppress-warning.md +34 -0
- package/.agent/skills/nextjs-pro/rules/rendering-svg-precision.md +32 -0
- package/.agent/skills/nextjs-pro/rules/rendering-usetransition-loading.md +79 -0
- package/.agent/skills/nextjs-pro/rules/rerender-defer-reads.md +43 -0
- package/.agent/skills/nextjs-pro/rules/rerender-dependencies.md +49 -0
- package/.agent/skills/nextjs-pro/rules/rerender-derived-state-no-effect.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rerender-derived-state.md +33 -0
- package/.agent/skills/nextjs-pro/rules/rerender-functional-setstate.md +78 -0
- package/.agent/skills/nextjs-pro/rules/rerender-lazy-state-init.md +62 -0
- package/.agent/skills/nextjs-pro/rules/rerender-memo-with-default-value.md +42 -0
- package/.agent/skills/nextjs-pro/rules/rerender-memo.md +48 -0
- package/.agent/skills/nextjs-pro/rules/rerender-move-effect-to-event.md +49 -0
- package/.agent/skills/nextjs-pro/rules/rerender-simple-expression-in-memo.md +39 -0
- package/.agent/skills/nextjs-pro/rules/rerender-transitions.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rerender-use-ref-transient-values.md +77 -0
- package/.agent/skills/nextjs-pro/rules/schema.json +34 -0
- package/.agent/skills/nextjs-pro/rules/server-after-nonblocking.md +77 -0
- package/.agent/skills/nextjs-pro/rules/server-auth-actions.md +100 -0
- package/.agent/skills/nextjs-pro/rules/server-cache-lru.md +45 -0
- package/.agent/skills/nextjs-pro/rules/server-cache-react.md +80 -0
- package/.agent/skills/nextjs-pro/rules/server-dedup-props.md +69 -0
- package/.agent/skills/nextjs-pro/rules/server-parallel-fetching.md +87 -0
- package/.agent/skills/nextjs-pro/rules/server-serialization.md +42 -0
- package/.agent/skills/nodejs-pro/AGENTS.md +866 -0
- package/.agent/skills/nodejs-pro/SKILL.md +172 -0
- package/.agent/skills/nodejs-pro/rules/_sections.md +50 -0
- package/.agent/skills/nodejs-pro/rules/_template.md +32 -0
- package/.agent/skills/nodejs-pro/rules/architecture-patterns.md +229 -0
- package/.agent/skills/nodejs-pro/rules/async-patterns.md +246 -0
- package/.agent/skills/nodejs-pro/rules/engineering-spec.md +438 -0
- package/.agent/skills/nodejs-pro/rules/error-handling.md +257 -0
- package/.agent/skills/nodejs-pro/rules/framework-selection.md +220 -0
- package/.agent/skills/nodejs-pro/rules/runtime-modules.md +176 -0
- package/.agent/skills/nodejs-pro/rules/testing-strategy.md +266 -0
- package/.agent/skills/nodejs-pro/rules/validation-security.md +205 -0
- package/.agent/skills/observability/AGENTS.md +607 -0
- package/.agent/skills/observability/SKILL.md +178 -0
- package/.agent/skills/observability/rules/_sections.md +15 -0
- package/.agent/skills/observability/rules/_template.md +32 -0
- package/.agent/skills/observability/rules/engineering-spec.md +440 -0
- package/.agent/skills/offensive-sec/AGENTS.md +849 -0
- package/.agent/skills/offensive-sec/SKILL.md +191 -0
- package/.agent/skills/offensive-sec/rules/_sections.md +15 -0
- package/.agent/skills/offensive-sec/rules/_template.md +32 -0
- package/.agent/skills/offensive-sec/rules/engineering-spec.md +470 -0
- package/.agent/skills/perf-optimizer/AGENTS.md +870 -0
- package/.agent/skills/perf-optimizer/SKILL.md +189 -0
- package/.agent/skills/perf-optimizer/rules/_sections.md +15 -0
- package/.agent/skills/perf-optimizer/rules/_template.md +32 -0
- package/.agent/skills/perf-optimizer/rules/backend-patterns.md +312 -0
- package/.agent/skills/perf-optimizer/rules/engineering-spec.md +428 -0
- package/.agent/skills/perf-optimizer/scripts/lighthouse_audit.ts +201 -0
- package/.agent/skills/problem-checker/AGENTS.md +519 -0
- package/.agent/skills/problem-checker/SKILL.md +189 -0
- package/.agent/skills/problem-checker/rules/_sections.md +15 -0
- package/.agent/skills/problem-checker/rules/_template.md +32 -0
- package/.agent/skills/problem-checker/rules/engineering-spec.md +483 -0
- package/.agent/skills/problem-checker/scripts/check_problems.ts +396 -0
- package/.agent/skills/project-planner/AGENTS.md +2698 -0
- package/.agent/skills/project-planner/SKILL.md +166 -0
- package/.agent/skills/project-planner/rules/_sections.md +15 -0
- package/.agent/skills/project-planner/rules/_template.md +32 -0
- package/.agent/skills/project-planner/rules/engineering-spec.md +420 -0
- package/.agent/skills/python-pro/AGENTS.md +1871 -0
- package/.agent/skills/python-pro/SKILL.md +182 -0
- package/.agent/skills/python-pro/rules/_sections.md +50 -0
- package/.agent/skills/python-pro/rules/_template.md +32 -0
- package/.agent/skills/python-pro/rules/async-patterns.md +168 -0
- package/.agent/skills/python-pro/rules/django-patterns.md +194 -0
- package/.agent/skills/python-pro/rules/engineering-spec.md +442 -0
- package/.agent/skills/python-pro/rules/fastapi-patterns.md +179 -0
- package/.agent/skills/python-pro/rules/framework-selection.md +167 -0
- package/.agent/skills/python-pro/rules/project-structure.md +181 -0
- package/.agent/skills/python-pro/rules/testing-patterns.md +212 -0
- package/.agent/skills/python-pro/rules/type-hints.md +159 -0
- package/.agent/skills/react-pro/AGENTS.md +963 -0
- package/.agent/skills/react-pro/SKILL.md +232 -0
- package/.agent/skills/react-pro/rules/_sections.md +40 -0
- package/.agent/skills/react-pro/rules/_template.md +32 -0
- package/.agent/skills/react-pro/rules/component-patterns.md +145 -0
- package/.agent/skills/react-pro/rules/composition-compound.md +82 -0
- package/.agent/skills/react-pro/rules/data-fetching.md +133 -0
- package/.agent/skills/react-pro/rules/engineering-spec.md +453 -0
- package/.agent/skills/react-pro/rules/error-boundary.md +61 -0
- package/.agent/skills/react-pro/rules/file-organization.md +158 -0
- package/.agent/skills/react-pro/rules/hooks-custom.md +61 -0
- package/.agent/skills/react-pro/rules/mui-styling.md +138 -0
- package/.agent/skills/react-pro/rules/patterns.md +24 -0
- package/.agent/skills/react-pro/rules/performance-optimization.md +65 -0
- package/.agent/skills/react-pro/rules/performance.md +137 -0
- package/.agent/skills/react-pro/rules/react19-hooks.md +85 -0
- package/.agent/skills/react-pro/rules/state-management.md +90 -0
- package/.agent/skills/react-pro/rules/testing-patterns.md +52 -0
- package/.agent/skills/registry.json +1251 -0
- package/.agent/skills/security-scanner/AGENTS.md +851 -0
- package/.agent/skills/security-scanner/SKILL.md +182 -0
- package/.agent/skills/security-scanner/rules/_sections.md +15 -0
- package/.agent/skills/security-scanner/rules/_template.md +32 -0
- package/.agent/skills/security-scanner/rules/auth-patterns.md +281 -0
- package/.agent/skills/security-scanner/rules/checklists.md +186 -0
- package/.agent/skills/security-scanner/rules/engineering-spec.md +440 -0
- package/.agent/skills/security-scanner/scripts/security_scan.ts +513 -0
- package/.agent/skills/seo-optimizer/AGENTS.md +839 -0
- package/.agent/skills/seo-optimizer/SKILL.md +180 -0
- package/.agent/skills/seo-optimizer/rules/_sections.md +15 -0
- package/.agent/skills/seo-optimizer/rules/_template.md +32 -0
- package/.agent/skills/seo-optimizer/rules/engineering-spec.md +433 -0
- package/.agent/skills/seo-optimizer/scripts/geo_checker.ts +109 -0
- package/.agent/skills/seo-optimizer/scripts/seo_checker.ts +308 -0
- package/.agent/skills/server-ops/AGENTS.md +643 -0
- package/.agent/skills/server-ops/SKILL.md +194 -0
- package/.agent/skills/server-ops/rules/_sections.md +15 -0
- package/.agent/skills/server-ops/rules/_template.md +32 -0
- package/.agent/skills/server-ops/rules/engineering-spec.md +450 -0
- package/.agent/skills/shell-script/AGENTS.md +499 -0
- package/.agent/skills/shell-script/SKILL.md +205 -0
- package/.agent/skills/shell-script/rules/_sections.md +15 -0
- package/.agent/skills/shell-script/rules/_template.md +32 -0
- package/.agent/skills/shell-script/rules/engineering-spec.md +463 -0
- package/.agent/skills/skill-generator/SKILL.md +147 -0
- package/.agent/skills/smart-router/SKILL.md +95 -0
- package/.agent/skills/studio/AGENTS.md +636 -0
- package/.agent/skills/studio/SKILL.md +178 -0
- package/.agent/skills/studio/data/charts.csv +26 -0
- package/.agent/skills/studio/data/colors.csv +97 -0
- package/.agent/skills/studio/data/icons.csv +101 -0
- package/.agent/skills/studio/data/landing.csv +31 -0
- package/.agent/skills/studio/data/products.csv +97 -0
- package/.agent/skills/studio/data/prompts.csv +24 -0
- package/.agent/skills/studio/data/react-performance.csv +45 -0
- package/.agent/skills/studio/data/stacks/flutter.csv +52 -0
- package/.agent/skills/studio/data/stacks/html-tailwind.csv +56 -0
- package/.agent/skills/studio/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/skills/studio/data/stacks/nextjs.csv +53 -0
- package/.agent/skills/studio/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/skills/studio/data/stacks/nuxtjs.csv +59 -0
- package/.agent/skills/studio/data/stacks/react-native.csv +52 -0
- package/.agent/skills/studio/data/stacks/react.csv +54 -0
- package/.agent/skills/studio/data/stacks/shadcn.csv +61 -0
- package/.agent/skills/studio/data/stacks/svelte.csv +54 -0
- package/.agent/skills/studio/data/stacks/swiftui.csv +51 -0
- package/.agent/skills/studio/data/stacks/vue.csv +50 -0
- package/.agent/skills/studio/data/styles.csv +59 -0
- package/.agent/skills/studio/data/typography.csv +58 -0
- package/.agent/skills/studio/data/ui-reasoning.csv +101 -0
- package/.agent/skills/studio/data/ux-guidelines.csv +100 -0
- package/.agent/skills/studio/data/web-interface.csv +31 -0
- package/.agent/skills/studio/rules/_sections.md +15 -0
- package/.agent/skills/studio/rules/_template.md +32 -0
- package/.agent/skills/studio/rules/engineering-spec.md +455 -0
- package/.agent/skills/studio/scripts/core.ts +345 -0
- package/.agent/skills/studio/scripts/design_system.ts +953 -0
- package/.agent/skills/studio/scripts/search.ts +197 -0
- package/.agent/skills/studio/scripts/types.ts +147 -0
- package/.agent/skills/studio/scripts/utils/component-specs.ts +154 -0
- package/.agent/skills/studio/scripts/utils/config-loader.ts +165 -0
- package/.agent/skills/studio/scripts/utils/css-templates.ts +169 -0
- package/.agent/skills/studio/scripts/utils/css-validator.ts +95 -0
- package/.agent/skills/studio/scripts/utils/csv-loader.ts +52 -0
- package/.agent/skills/studio/scripts/utils/intelligent-overrides.ts +129 -0
- package/.agent/skills/studio/scripts/utils/page-override-formatter.ts +143 -0
- package/.agent/skills/studio/scripts/utils/page-type-detector.ts +124 -0
- package/.agent/skills/studio/scripts/utils/search-cache.ts +165 -0
- package/.agent/skills/studio/scripts/utils/text-utils.ts +44 -0
- package/.agent/skills/system-design/AGENTS.md +597 -0
- package/.agent/skills/system-design/SKILL.md +153 -0
- package/.agent/skills/system-design/rules/_sections.md +15 -0
- package/.agent/skills/system-design/rules/_template.md +32 -0
- package/.agent/skills/system-design/rules/context-discovery.md +117 -0
- package/.agent/skills/system-design/rules/engineering-spec.md +437 -0
- package/.agent/skills/system-design/rules/examples.md +180 -0
- package/.agent/skills/system-design/rules/pattern-selection.md +130 -0
- package/.agent/skills/system-design/rules/patterns-reference.md +110 -0
- package/.agent/skills/system-design/rules/trade-off-analysis.md +169 -0
- package/.agent/skills/tailwind-kit/AGENTS.md +1135 -0
- package/.agent/skills/tailwind-kit/SKILL.md +171 -0
- package/.agent/skills/tailwind-kit/rules/_sections.md +20 -0
- package/.agent/skills/tailwind-kit/rules/_template.md +32 -0
- package/.agent/skills/tailwind-kit/rules/components.md +232 -0
- package/.agent/skills/tailwind-kit/rules/engineering-spec.md +435 -0
- package/.agent/skills/tailwind-kit/rules/responsive.md +221 -0
- package/.agent/skills/tailwind-kit/rules/v4-config.md +72 -0
- package/.agent/skills/test-architect/AGENTS.md +851 -0
- package/.agent/skills/test-architect/SKILL.md +176 -0
- package/.agent/skills/test-architect/rules/_sections.md +15 -0
- package/.agent/skills/test-architect/rules/_template.md +32 -0
- package/.agent/skills/test-architect/rules/engineering-spec.md +434 -0
- package/.agent/skills/test-architect/scripts/test_runner.ts +265 -0
- package/.agent/skills/typescript-expert/AGENTS.md +1045 -0
- package/.agent/skills/typescript-expert/SKILL.md +200 -0
- package/.agent/skills/typescript-expert/rules/_sections.md +20 -0
- package/.agent/skills/typescript-expert/rules/_template.md +32 -0
- package/.agent/skills/typescript-expert/rules/engineering-spec.md +433 -0
- package/.agent/skills/typescript-expert/rules/tsconfig-strict.json +92 -0
- package/.agent/skills/typescript-expert/rules/typescript-cheatsheet.md +407 -0
- package/.agent/skills/typescript-expert/rules/utility-types.ts +264 -0
- package/.agent/skills/typescript-expert/scripts/ts_diagnostic.ts +321 -0
- package/.agent/skills/vercel-deploy/AGENTS.md +490 -0
- package/.agent/skills/vercel-deploy/SKILL.md +175 -0
- package/.agent/skills/vercel-deploy/rules/_sections.md +15 -0
- package/.agent/skills/vercel-deploy/rules/_template.md +32 -0
- package/.agent/skills/vercel-deploy/rules/engineering-spec.md +463 -0
- package/.agent/skills/vercel-deploy/scripts/deploy.sh +310 -0
- package/.agent/workflows/api.md +377 -0
- package/.agent/workflows/autopilot.md +344 -0
- package/.agent/workflows/build.md +338 -0
- package/.agent/workflows/chronicle.md +279 -0
- package/.agent/workflows/cook.md +217 -0
- package/.agent/workflows/diagnose.md +302 -0
- package/.agent/workflows/fix.md +253 -0
- package/.agent/workflows/game.md +329 -0
- package/.agent/workflows/inspect.md +276 -0
- package/.agent/workflows/knowledge.md +212 -0
- package/.agent/workflows/launch.md +345 -0
- package/.agent/workflows/mobile.md +354 -0
- package/.agent/workflows/monitor.md +239 -0
- package/.agent/workflows/optimize.md +269 -0
- package/.agent/workflows/plan.md +278 -0
- package/.agent/workflows/stage.md +286 -0
- package/.agent/workflows/studio.md +276 -0
- package/.agent/workflows/think.md +262 -0
- package/.agent/workflows/validate.md +289 -0
- package/.agentignore +161 -0
- package/.gitattributes +16 -0
- package/CHANGELOG.md +198 -0
- package/LICENSE +40 -0
- package/README.md +173 -0
- package/docs/SKILL_DESIGN_GUIDE.md +561 -0
- package/docs/The-Complete-Guide-to-Building-Skills-for-Claude.md +1207 -0
- package/docs/WORKFLOW_DESIGN_GUIDE.md +325 -0
- package/package.json +33 -0
- package/tsconfig.json +28 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: react-pro
|
|
3
|
+
description: >-
|
|
4
|
+
React component architecture, hooks, state management, and performance patterns.
|
|
5
|
+
Use when creating components, fixing hooks, managing state, or working with .tsx/.jsx files.
|
|
6
|
+
NOT for Next.js routing (use nextjs-pro) or CSS styling (use design-system/tailwind-kit).
|
|
7
|
+
category: frontend-specialist
|
|
8
|
+
triggers: ["React", "component", "hooks", "state management", "Redux", "Zustand", "TypeScript", "TanStack Query", "MUI", "frontend"]
|
|
9
|
+
coordinates_with: ["nextjs-pro", "typescript-expert", "design-system", "tailwind-kit", "problem-checker", "knowledge-compiler"]
|
|
10
|
+
success_metrics: ["Component Render Efficiency", "Accessibility Score", "Core Web Vitals"]
|
|
11
|
+
metadata:
|
|
12
|
+
author: pikakit
|
|
13
|
+
version: "3.9.134"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# React Architect — Component & State Architecture
|
|
17
|
+
|
|
18
|
+
> 4 component types. 4 state levels. Composition over inheritance. Profile before memoizing.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 5 Must-Ask Questions (Before Architecture Decision)
|
|
23
|
+
|
|
24
|
+
| # | Question | Options |
|
|
25
|
+
|---|----------|---------|
|
|
26
|
+
| 1 | Target Framework? | React SPA / Next.js App Router / Vite / Vue |
|
|
27
|
+
| 2 | Styling Approach? | Tailwind / CSS Modules / Styled Components / MUI |
|
|
28
|
+
| 3 | State Complexity? | Local only / Shared subtree / Server state / Global |
|
|
29
|
+
| 4 | Render Strategy? | CSR / SSR / SSG / Streaming |
|
|
30
|
+
| 5 | Accessibility Needs? | Standard WCAG / Enhanced (screen reader, focus mgmt) |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## When to Use
|
|
35
|
+
|
|
36
|
+
| Situation | Approach |
|
|
37
|
+
|-----------|----------|
|
|
38
|
+
| Component design | Check component type classification |
|
|
39
|
+
| State management | Use complexity → solution routing |
|
|
40
|
+
| Hook reuse | Check extraction criteria |
|
|
41
|
+
| Performance issues | Use signal → action mapping |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## System Boundaries
|
|
46
|
+
|
|
47
|
+
| Owned by This Skill | NOT Owned |
|
|
48
|
+
|---------------------|-----------|
|
|
49
|
+
| Component classification (4 types) | Next.js patterns (→ nextjs-pro) |
|
|
50
|
+
| State management routing (4 levels) | TypeScript patterns (→ typescript-expert) |
|
|
51
|
+
| Hook extraction criteria | UI design (→ design-system) |
|
|
52
|
+
| Performance signal→action | Code implementation |
|
|
53
|
+
|
|
54
|
+
**Expert decision skill:** Produces architecture decisions. Does not write code.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Component Types (4 — Deterministic)
|
|
59
|
+
|
|
60
|
+
| Type | Use For | State Model |
|
|
61
|
+
|------|---------|-------------|
|
|
62
|
+
| **Server** | Data fetching, static content | None |
|
|
63
|
+
| **Client** | Interactivity, browser APIs | useState, effects |
|
|
64
|
+
| **Presentational** | UI display | Props only |
|
|
65
|
+
| **Container** | Logic/orchestration | Heavy state |
|
|
66
|
+
|
|
67
|
+
**Design Rules:**
|
|
68
|
+
- One responsibility per component (≤ 150 lines)
|
|
69
|
+
- Props down, events up
|
|
70
|
+
- Composition over inheritance
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## State Management Routing (Deterministic)
|
|
75
|
+
|
|
76
|
+
| Complexity | Solution |
|
|
77
|
+
|------------|----------|
|
|
78
|
+
| Simple (single component) | `useState`, `useReducer` |
|
|
79
|
+
| Shared local (subtree) | `Context` |
|
|
80
|
+
| Server state (API data) | React Query, SWR |
|
|
81
|
+
| Complex global (app-wide) | Zustand, Redux Toolkit |
|
|
82
|
+
|
|
83
|
+
## State Placement (4 Scopes)
|
|
84
|
+
|
|
85
|
+
| Scope | Where |
|
|
86
|
+
|-------|-------|
|
|
87
|
+
| Single component | `useState` |
|
|
88
|
+
| Parent-child | Lift state up |
|
|
89
|
+
| Subtree | Context |
|
|
90
|
+
| App-wide | Global store |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Hook Patterns
|
|
95
|
+
|
|
96
|
+
### When to Extract Custom Hook
|
|
97
|
+
|
|
98
|
+
| Pattern | Extract When |
|
|
99
|
+
|---------|-------------|
|
|
100
|
+
| `useLocalStorage` | Same storage logic in 2+ components |
|
|
101
|
+
| `useDebounce` | Multiple debounced values |
|
|
102
|
+
| `useFetch` | Repeated fetch patterns |
|
|
103
|
+
| `useForm` | Complex form state reused |
|
|
104
|
+
|
|
105
|
+
### Hook Rules (Non-Negotiable)
|
|
106
|
+
|
|
107
|
+
- Hooks at top level only (no conditionals)
|
|
108
|
+
- Same order every render
|
|
109
|
+
- Custom hooks prefix with `use`
|
|
110
|
+
- Clean up effects on unmount
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Performance Signals (4 — Fixed)
|
|
115
|
+
|
|
116
|
+
| Signal | Action |
|
|
117
|
+
|--------|--------|
|
|
118
|
+
| Slow renders | Profile first (DevTools) |
|
|
119
|
+
| Large lists (> 100 items) | Virtualize |
|
|
120
|
+
| Expensive calculation | `useMemo` |
|
|
121
|
+
| Unstable callbacks causing re-renders | `useCallback` |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Error Taxonomy
|
|
126
|
+
|
|
127
|
+
| Code | Recoverable | Trigger |
|
|
128
|
+
|------|-------------|---------|
|
|
129
|
+
| `ERR_INVALID_REQUEST_TYPE` | No | Request type not supported |
|
|
130
|
+
| `ERR_UNKNOWN_COMPLEXITY` | Yes | State complexity not one of 4 |
|
|
131
|
+
| `ERR_UNKNOWN_SCOPE` | Yes | State scope not one of 4 |
|
|
132
|
+
|
|
133
|
+
**Zero internal retries.** Same context = same recommendation.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Audit Logging (OpenTelemetry)
|
|
138
|
+
|
|
139
|
+
| Event | Metadata Payload | Severity |
|
|
140
|
+
|-------|------------------|----------|
|
|
141
|
+
| `architecture_started` | `{"framework": "...", "component_count": 0}` | `INFO` |
|
|
142
|
+
| `component_type_classified` | `{"type": "Server", "reason": "..."}` | `INFO` |
|
|
143
|
+
| `state_management_selected` | `{"solution": "zustand", "complexity": "global"}` | `INFO` |
|
|
144
|
+
| `performance_signal_detected` | `{"signal": "slow_renders", "action": "profile"}` | `WARN` |
|
|
145
|
+
| `architecture_completed` | `{"components_designed": 5, "hooks_extracted": 2}` | `INFO` |
|
|
146
|
+
|
|
147
|
+
All architecture outputs MUST emit `architecture_started` and `architecture_completed` events.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Anti-Patterns
|
|
152
|
+
|
|
153
|
+
| ❌ Don't | ✅ Do |
|
|
154
|
+
|---------|-------|
|
|
155
|
+
| Use global state for local concerns | Start with useState, escalate as needed |
|
|
156
|
+
| Prop drill > 3 levels | Use Context or state library |
|
|
157
|
+
| Memoize everything | Profile first, memoize measured bottlenecks |
|
|
158
|
+
| Mix data fetching with UI | Separate server/container from presentational |
|
|
159
|
+
| Create God components (> 300 lines) | Split into focused components (≤ 150 lines) |
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Rule Categories by Priority
|
|
164
|
+
|
|
165
|
+
| Priority | Category | Impact | Prefix |
|
|
166
|
+
|----------|----------|--------|--------|
|
|
167
|
+
| 1 | React 19 Patterns | HIGH | `react19-` |
|
|
168
|
+
| 2 | Composition | HIGH | `composition-` |
|
|
169
|
+
| 3 | State Management | HIGH | `state-` |
|
|
170
|
+
| 4 | Error Handling | HIGH | `error-` |
|
|
171
|
+
| 5 | Component Patterns | HIGH | `component-` |
|
|
172
|
+
| 6 | Data Fetching | HIGH | `data-` |
|
|
173
|
+
| 7 | Performance | HIGH | `performance-` |
|
|
174
|
+
| 8 | Custom Hooks | MEDIUM | `hooks-` |
|
|
175
|
+
| 9 | Testing | MEDIUM | `testing-` |
|
|
176
|
+
| 10 | File Organization | MEDIUM | `file-` |
|
|
177
|
+
| 11 | MUI Styling | MEDIUM | `mui-` |
|
|
178
|
+
| 12 | Engineering Spec | MEDIUM | `engineering-` |
|
|
179
|
+
|
|
180
|
+
## Quick Reference
|
|
181
|
+
|
|
182
|
+
### Architecture & Patterns (HIGH)
|
|
183
|
+
|
|
184
|
+
- `react19-hooks` - useActionState & useOptimistic
|
|
185
|
+
- `composition-compound` - Compound components with context
|
|
186
|
+
- `state-management` - Zustand (global) & React Query (server)
|
|
187
|
+
- `error-boundary` - Error boundary with fallback UI
|
|
188
|
+
- `component-patterns` - Component type classification
|
|
189
|
+
- `data-fetching` - TanStack Query patterns
|
|
190
|
+
|
|
191
|
+
### Optimization (HIGH-MEDIUM)
|
|
192
|
+
|
|
193
|
+
- `performance-optimization` - Waterfalls, bundle, re-renders, virtualization
|
|
194
|
+
- `hooks-custom` - useDebounce, useLocalStorage, extraction criteria
|
|
195
|
+
- `testing-patterns` - React Testing Library + userEvent
|
|
196
|
+
|
|
197
|
+
### Structure (MEDIUM)
|
|
198
|
+
|
|
199
|
+
- `file-organization` - Project file structure
|
|
200
|
+
- `mui-styling` - MUI v7 styling patterns
|
|
201
|
+
- `engineering-spec` - Full architecture specification
|
|
202
|
+
|
|
203
|
+
## How to Use
|
|
204
|
+
|
|
205
|
+
Read individual rule files for detailed explanations and code examples:
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
rules/react19-hooks.md
|
|
209
|
+
rules/state-management.md
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Each rule file contains:
|
|
213
|
+
- Brief explanation of why it matters
|
|
214
|
+
- Code examples with correct patterns
|
|
215
|
+
- Anti-patterns to avoid
|
|
216
|
+
|
|
217
|
+
**Selective reading:** Read ONLY the category relevant to current task.
|
|
218
|
+
|
|
219
|
+
## Full Compiled Document
|
|
220
|
+
|
|
221
|
+
For the complete guide with all rules expanded: AGENTS.md\n
|
|
222
|
+
## 🔗 Related
|
|
223
|
+
|
|
224
|
+
| Item | Type | Purpose |
|
|
225
|
+
|------|------|---------|
|
|
226
|
+
| `nextjs-pro` | Skill | Next.js patterns |
|
|
227
|
+
| `typescript-expert` | Skill | TypeScript |
|
|
228
|
+
| `design-system` | Skill | UI design |
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Sections
|
|
2
|
+
|
|
3
|
+
This file defines all sections, their ordering, impact levels, and descriptions.
|
|
4
|
+
The section ID (in parentheses) is the filename prefix used to group rules.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. General (general)
|
|
9
|
+
|
|
10
|
+
**Impact:** LOW
|
|
11
|
+
**Description:** General patterns and best practices.
|
|
12
|
+
|
|
13
|
+
## 2. Component Architecture (component)
|
|
14
|
+
|
|
15
|
+
**Impact:** HIGH
|
|
16
|
+
**Description:** Proper component structure ensures maintainability and reusability.
|
|
17
|
+
|
|
18
|
+
## 3. Data Management (data)
|
|
19
|
+
|
|
20
|
+
**Impact:** HIGH
|
|
21
|
+
**Description:** Efficient data handling, fetching, and state management patterns.
|
|
22
|
+
|
|
23
|
+
## 4. Engineering Specification (engineering)
|
|
24
|
+
|
|
25
|
+
**Impact:** MEDIUM
|
|
26
|
+
**Description:** Full engineering specification covering contracts, security, and scalability.
|
|
27
|
+
|
|
28
|
+
## 5. File (file)
|
|
29
|
+
|
|
30
|
+
**Impact:** LOW
|
|
31
|
+
**Description:** File patterns and best practices.
|
|
32
|
+
|
|
33
|
+
## 6. Mui (mui)
|
|
34
|
+
|
|
35
|
+
**Impact:** LOW
|
|
36
|
+
**Description:** Mui patterns and best practices.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Rule Title Here
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: Optional description of impact (e.g., "20-50% improvement")
|
|
5
|
+
tags: tag1, tag2
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Rule Title Here
|
|
9
|
+
|
|
10
|
+
**Impact: MEDIUM (optional impact description)**
|
|
11
|
+
|
|
12
|
+
Brief explanation of the rule and why it matters. This should be clear and concise, explaining the performance implications.
|
|
13
|
+
|
|
14
|
+
**Incorrect (description of what's wrong):**
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
// Bad code example here
|
|
18
|
+
const bad = example()
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Correct (description of what's right):**
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// Good code example here
|
|
25
|
+
const good = example()
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Reference: [Link to documentation or resource](https://example.com)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: component-patterns
|
|
3
|
+
description: React.FC with TypeScript — Suspense-first, useCallback rules, props patterns, named/default exports
|
|
4
|
+
title: "React.FC with TypeScript, useCallback for handlers, default export."
|
|
5
|
+
impact: HIGH
|
|
6
|
+
impactDescription: "Important architectural or correctness impact"
|
|
7
|
+
tags: component, patterns
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Component Patterns
|
|
11
|
+
|
|
12
|
+
> React.FC with TypeScript, useCallback for handlers, default export.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Standard Component Structure
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import React, { useState, useCallback } from 'react';
|
|
20
|
+
import { Box, Paper, Typography, Button } from '@mui/material';
|
|
21
|
+
import { useSuspenseQuery } from '@tanstack/react-query';
|
|
22
|
+
import { featureApi } from '../api/featureApi';
|
|
23
|
+
import type { FeatureData } from '~types/feature';
|
|
24
|
+
|
|
25
|
+
interface MyComponentProps {
|
|
26
|
+
id: number;
|
|
27
|
+
title?: string;
|
|
28
|
+
onAction?: (id: number) => void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const MyComponent: React.FC<MyComponentProps> = ({
|
|
32
|
+
id,
|
|
33
|
+
title = 'Default Title',
|
|
34
|
+
onAction
|
|
35
|
+
}) => {
|
|
36
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
37
|
+
|
|
38
|
+
const { data } = useSuspenseQuery({
|
|
39
|
+
queryKey: ['feature', id],
|
|
40
|
+
queryFn: () => featureApi.getById(id),
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const handleToggle = useCallback(() => {
|
|
44
|
+
setIsOpen(prev => !prev);
|
|
45
|
+
}, []);
|
|
46
|
+
|
|
47
|
+
const handleAction = useCallback(() => {
|
|
48
|
+
onAction?.(id);
|
|
49
|
+
}, [id, onAction]);
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<Box sx={{ p: 2 }}>
|
|
53
|
+
<Paper sx={{ p: 3 }}>
|
|
54
|
+
<Typography variant="h6">{title}</Typography>
|
|
55
|
+
<Typography>{data.content}</Typography>
|
|
56
|
+
<Button onClick={handleAction}>Action</Button>
|
|
57
|
+
</Paper>
|
|
58
|
+
</Box>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default MyComponent;
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Key Patterns
|
|
68
|
+
|
|
69
|
+
| Pattern | Rule |
|
|
70
|
+
|---------|------|
|
|
71
|
+
| Props Interface | Explicit, named `ComponentNameProps` |
|
|
72
|
+
| Default Props | Destructure with defaults |
|
|
73
|
+
| Event Handlers | `useCallback` if passed to children |
|
|
74
|
+
| Named Export | `export const Component` |
|
|
75
|
+
| Default Export | At bottom for lazy loading |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## useCallback Rules
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
// ✅ USE - Handler passed to child component
|
|
83
|
+
const handleClick = useCallback(() => {
|
|
84
|
+
doSomething();
|
|
85
|
+
}, []);
|
|
86
|
+
<ChildComponent onClick={handleClick} />
|
|
87
|
+
|
|
88
|
+
// ✅ USE - Handler depends on props/state
|
|
89
|
+
const handleSubmit = useCallback(() => {
|
|
90
|
+
onSubmit(formData);
|
|
91
|
+
}, [onSubmit, formData]);
|
|
92
|
+
|
|
93
|
+
// ❌ SKIP - Handler used inline only
|
|
94
|
+
<Button onClick={() => setOpen(true)}>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Props Patterns
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// Required vs Optional
|
|
103
|
+
interface Props {
|
|
104
|
+
id: number; // Required
|
|
105
|
+
title?: string; // Optional
|
|
106
|
+
onChange?: () => void; // Optional callback
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Children
|
|
110
|
+
interface Props {
|
|
111
|
+
children: React.ReactNode;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Render Props
|
|
115
|
+
interface Props {
|
|
116
|
+
renderItem: (item: Item) => React.ReactNode;
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Exports
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
// Named export (for direct imports)
|
|
126
|
+
export const MyComponent: React.FC<Props> = () => { ... };
|
|
127
|
+
|
|
128
|
+
// Default export (for lazy loading)
|
|
129
|
+
export default MyComponent;
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 🔗 Related
|
|
135
|
+
|
|
136
|
+
| File | When to Read |
|
|
137
|
+
|------|-------------|
|
|
138
|
+
| [data-fetching.md](data-fetching.md) | useSuspenseQuery for data layer |
|
|
139
|
+
| [mui-styling.md](mui-styling.md) | MUI v7 sx prop patterns |
|
|
140
|
+
| [file-organization.md](file-organization.md) | Where to place components |
|
|
141
|
+
| [../SKILL.md](../SKILL.md) | Core rules and anti-patterns |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Compound Components Pattern"
|
|
3
|
+
impact: HIGH
|
|
4
|
+
impactDescription: "Compound components eliminate prop drilling and provide flexible APIs"
|
|
5
|
+
tags: composition, compound, context, slots
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Compound Components Pattern
|
|
9
|
+
|
|
10
|
+
> Context-based compound components for flexible, slot-based APIs.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Implementation
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
import { createContext, useContext, useState, type ReactNode } from 'react'
|
|
18
|
+
|
|
19
|
+
// Context for internal state
|
|
20
|
+
const TabsContext = createContext<{
|
|
21
|
+
active: string
|
|
22
|
+
setActive: (id: string) => void
|
|
23
|
+
} | null>(null)
|
|
24
|
+
|
|
25
|
+
function useTabs() {
|
|
26
|
+
const ctx = useContext(TabsContext)
|
|
27
|
+
if (!ctx) throw new Error('Tabs components must be used within <Tabs>')
|
|
28
|
+
return ctx
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Parent — provides context
|
|
32
|
+
function Tabs({ defaultTab, children }: { defaultTab: string; children: ReactNode }) {
|
|
33
|
+
const [active, setActive] = useState(defaultTab)
|
|
34
|
+
return (
|
|
35
|
+
<TabsContext.Provider value={{ active, setActive }}>
|
|
36
|
+
<div className="tabs">{children}</div>
|
|
37
|
+
</TabsContext.Provider>
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Child — consumes context
|
|
42
|
+
function TabList({ children }: { children: ReactNode }) {
|
|
43
|
+
return <div className="tab-list" role="tablist">{children}</div>
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function Tab({ id, children }: { id: string; children: ReactNode }) {
|
|
47
|
+
const { active, setActive } = useTabs()
|
|
48
|
+
return (
|
|
49
|
+
<button role="tab" aria-selected={active === id} onClick={() => setActive(id)}>
|
|
50
|
+
{children}
|
|
51
|
+
</button>
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function TabPanel({ id, children }: { id: string; children: ReactNode }) {
|
|
56
|
+
const { active } = useTabs()
|
|
57
|
+
if (active !== id) return null
|
|
58
|
+
return <div role="tabpanel">{children}</div>
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Attach sub-components
|
|
62
|
+
Tabs.List = TabList
|
|
63
|
+
Tabs.Tab = Tab
|
|
64
|
+
Tabs.Panel = TabPanel
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Usage
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
<Tabs defaultTab="overview">
|
|
71
|
+
<Tabs.List>
|
|
72
|
+
<Tabs.Tab id="overview">Overview</Tabs.Tab>
|
|
73
|
+
<Tabs.Tab id="settings">Settings</Tabs.Tab>
|
|
74
|
+
</Tabs.List>
|
|
75
|
+
<Tabs.Panel id="overview">Overview content</Tabs.Panel>
|
|
76
|
+
<Tabs.Panel id="settings">Settings content</Tabs.Panel>
|
|
77
|
+
</Tabs>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data-fetching
|
|
3
|
+
description: TanStack Query patterns — useSuspenseQuery, mutations, query keys, API service layer
|
|
4
|
+
title: "Data Fetching with TanStack Query"
|
|
5
|
+
impact: HIGH
|
|
6
|
+
impactDescription: "Important architectural or correctness impact"
|
|
7
|
+
tags: data, fetching
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Data Fetching with TanStack Query
|
|
11
|
+
|
|
12
|
+
> Use `useSuspenseQuery` - data is guaranteed, no null checks.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Primary Pattern: useSuspenseQuery
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
import { useSuspenseQuery } from '@tanstack/react-query';
|
|
20
|
+
|
|
21
|
+
// Inside component
|
|
22
|
+
const { data } = useSuspenseQuery({
|
|
23
|
+
queryKey: ['posts', { status: 'published' }],
|
|
24
|
+
queryFn: () => postsApi.getPosts({ status: 'published' }),
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
// data is GUARANTEED defined (no null checks needed)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Query Key Patterns
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
// Simple key
|
|
36
|
+
queryKey: ['posts']
|
|
37
|
+
|
|
38
|
+
// With parameters
|
|
39
|
+
queryKey: ['posts', { status, page }]
|
|
40
|
+
|
|
41
|
+
// Nested resource
|
|
42
|
+
queryKey: ['posts', postId, 'comments']
|
|
43
|
+
|
|
44
|
+
// User-specific
|
|
45
|
+
queryKey: ['user', userId, 'settings']
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Mutations
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
54
|
+
|
|
55
|
+
const queryClient = useQueryClient();
|
|
56
|
+
|
|
57
|
+
const createPost = useMutation({
|
|
58
|
+
mutationFn: (data: CreatePostData) => postsApi.create(data),
|
|
59
|
+
onSuccess: () => {
|
|
60
|
+
// Invalidate and refetch
|
|
61
|
+
queryClient.invalidateQueries({ queryKey: ['posts'] });
|
|
62
|
+
showSnackbar('Post created!', 'success');
|
|
63
|
+
},
|
|
64
|
+
onError: (error) => {
|
|
65
|
+
showSnackbar(error.message, 'error');
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// Usage
|
|
70
|
+
createPost.mutate({ title: 'New Post', content: '...' });
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## API Service Layer
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// src/features/posts/api/postsApi.ts
|
|
79
|
+
import { apiClient } from '@/lib/apiClient';
|
|
80
|
+
import type { Post, CreatePostData } from '../types';
|
|
81
|
+
|
|
82
|
+
export const postsApi = {
|
|
83
|
+
getAll: async (): Promise<Post[]> => {
|
|
84
|
+
const { data } = await apiClient.get('/posts');
|
|
85
|
+
return data;
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
getById: async (id: number): Promise<Post> => {
|
|
89
|
+
const { data } = await apiClient.get(`/posts/${id}`);
|
|
90
|
+
return data;
|
|
91
|
+
},
|
|
92
|
+
|
|
93
|
+
create: async (payload: CreatePostData): Promise<Post> => {
|
|
94
|
+
const { data } = await apiClient.post('/posts', payload);
|
|
95
|
+
return data;
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
update: async (id: number, payload: Partial<Post>): Promise<Post> => {
|
|
99
|
+
const { data } = await apiClient.patch(`/posts/${id}`, payload);
|
|
100
|
+
return data;
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
delete: async (id: number): Promise<void> => {
|
|
104
|
+
await apiClient.delete(`/posts/${id}`);
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Anti-Patterns
|
|
112
|
+
|
|
113
|
+
| ❌ Don't | ✅ Do |
|
|
114
|
+
|---------|-------|
|
|
115
|
+
| `const { data, isLoading }` + early return | `useSuspenseQuery` + Suspense |
|
|
116
|
+
| Inline fetch in component | API service layer |
|
|
117
|
+
| `useEffect` + `fetch` | `useSuspenseQuery` |
|
|
118
|
+
| Manual loading states | Suspense boundaries |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 🔗 Related
|
|
123
|
+
|
|
124
|
+
| File | When to Read |
|
|
125
|
+
|------|-------------|
|
|
126
|
+
| [component-patterns.md](component-patterns.md) | Component structure using useSuspenseQuery |
|
|
127
|
+
| [performance.md](performance.md) | Lazy loading and memoization |
|
|
128
|
+
| [file-organization.md](file-organization.md) | Where to place api/ services |
|
|
129
|
+
| [../SKILL.md](../SKILL.md) | No early returns rule |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
⚡ PikaKit v3.9.134
|