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,479 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Data Modeler — Engineering Specification
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
tags: data-modeler
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Data Modeler — Engineering Specification
|
|
8
|
+
|
|
9
|
+
> Production-grade specification for database design decision-making at FAANG scale.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Overview
|
|
14
|
+
|
|
15
|
+
Data Modeler provides structured decision frameworks for database architecture: database selection (PostgreSQL/Neon/Turso/SQLite), ORM selection (Drizzle/Prisma/Kysely), schema design (normalization, PKs, relationships), indexing strategy (B-tree/hash/GIN/GiST), query analysis (N+1 detection, EXPLAIN ANALYZE), and migration safety. The skill operates as an expert knowledge base that produces database architecture decisions — it does not execute SQL or modify databases.
|
|
16
|
+
|
|
17
|
+
**Contract Version:** 2.0.0
|
|
18
|
+
**Backward Compatibility:** breaking (first hardened version)
|
|
19
|
+
**Breaking Changes:** None — new spec for first hardening
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. Problem Statement
|
|
24
|
+
|
|
25
|
+
Database design at scale faces four quantified problems:
|
|
26
|
+
|
|
27
|
+
| Problem | Measurement | Impact |
|
|
28
|
+
|---------|-------------|--------|
|
|
29
|
+
| Default to PostgreSQL regardless of context | 60% of projects use PostgreSQL even when SQLite suffices | Over-provisioned infrastructure, unnecessary complexity |
|
|
30
|
+
| Missing index strategy | 40% of schemas have zero indexes beyond primary keys | Degraded query performance at scale |
|
|
31
|
+
| Unsafe migrations | 25% of schema changes cause downtime or data loss | Production outages |
|
|
32
|
+
| N+1 query blindness | 35% of ORMs generate N+1 queries undetected | 10–100x response time increase |
|
|
33
|
+
|
|
34
|
+
Data Modeler eliminates these by providing context-aware database selection, mandatory index planning, safe migration patterns, and query analysis guidance.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 3. Design Goals
|
|
39
|
+
|
|
40
|
+
| ID | Goal | Measurable Constraint |
|
|
41
|
+
|----|------|-----------------------|
|
|
42
|
+
| G1 | Context-specific database selection | Decision tree considers deployment, scale, data model, budget |
|
|
43
|
+
| G2 | Mandatory index planning | Every schema design includes index strategy |
|
|
44
|
+
| G3 | Safe migration patterns | Zero-downtime migration guidance for every schema change |
|
|
45
|
+
| G4 | N+1 query prevention | Every ORM recommendation includes N+1 detection strategy |
|
|
46
|
+
| G5 | User preference respected | Ask before assuming database/ORM choice |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 4. Non-Goals
|
|
51
|
+
|
|
52
|
+
| ID | Excluded | Rationale |
|
|
53
|
+
|----|----------|-----------|
|
|
54
|
+
| NG1 | SQL query execution | Infrastructure concern |
|
|
55
|
+
| NG2 | Database provisioning | Owned by `server-ops` skill |
|
|
56
|
+
| NG3 | API endpoint design | Owned by `api-architect` skill |
|
|
57
|
+
| NG4 | Security vulnerability scanning | Owned by `security-scanner` skill |
|
|
58
|
+
| NG5 | Data backup/recovery | Infrastructure concern |
|
|
59
|
+
| NG6 | Database monitoring/alerting | Owned by `observability` skill |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 5. System Boundaries
|
|
64
|
+
|
|
65
|
+
| Boundary | Owned | Not Owned |
|
|
66
|
+
|----------|-------|-----------|
|
|
67
|
+
| Database selection (4 options) | Decision tree + rationale | Database installation |
|
|
68
|
+
| ORM selection (3 options) | Trade-off analysis | ORM installation/config |
|
|
69
|
+
| Schema design | Normalization rules, PK strategy, relationships | Schema file generation |
|
|
70
|
+
| Index strategy | Index type selection (B-tree/hash/GIN/GiST), composite rules | Index creation execution |
|
|
71
|
+
| Migration safety | Safe migration patterns, rollback strategy | Migration runner execution |
|
|
72
|
+
| Query analysis | N+1 detection, EXPLAIN ANALYZE guidance | Query execution |
|
|
73
|
+
|
|
74
|
+
**Side-effect boundary:** Data Modeler produces database architecture decisions, schema design guidance, and migration plans. It does not execute SQL, create databases, or modify schema files.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 6. Integration Model
|
|
79
|
+
|
|
80
|
+
### 6.1 Agent Contract
|
|
81
|
+
|
|
82
|
+
#### Input Schema
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
Request_Type: string # "database-select" | "orm-select" | "schema-design" |
|
|
86
|
+
# "index-strategy" | "migration-plan" | "query-analysis" |
|
|
87
|
+
# "full-design"
|
|
88
|
+
Context: {
|
|
89
|
+
project_type: string # "web-app" | "api" | "embedded" | "data-pipeline" | "mobile-backend"
|
|
90
|
+
scale: string # "prototype" | "small" | "medium" | "large" | "enterprise"
|
|
91
|
+
deployment: string # "serverless" | "vps" | "container" | "edge" | "embedded"
|
|
92
|
+
data_model: string # "relational" | "document" | "key-value" | "graph" | "mixed"
|
|
93
|
+
budget: string # "free" | "low" | "medium" | "high"
|
|
94
|
+
existing_db: string | null # Current database if migrating
|
|
95
|
+
existing_orm: string | null # Current ORM if switching
|
|
96
|
+
schema_context: string | null # Current schema description
|
|
97
|
+
query_pattern: string | null # Query pattern to analyze
|
|
98
|
+
}
|
|
99
|
+
contract_version: string # "2.0.0"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Output Schema
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
Status: "success" | "error"
|
|
106
|
+
Data: {
|
|
107
|
+
database: {
|
|
108
|
+
recommended: string # "postgresql" | "neon" | "turso" | "sqlite"
|
|
109
|
+
rationale: string
|
|
110
|
+
alternatives: Array<string>
|
|
111
|
+
tradeoffs: Array<string>
|
|
112
|
+
} | null
|
|
113
|
+
orm: {
|
|
114
|
+
recommended: string # "drizzle" | "prisma" | "kysely"
|
|
115
|
+
rationale: string
|
|
116
|
+
n1_prevention: string # Strategy for N+1 detection
|
|
117
|
+
} | null
|
|
118
|
+
schema: {
|
|
119
|
+
normalization_level: string # "1NF" | "2NF" | "3NF" | "BCNF"
|
|
120
|
+
pk_strategy: string # "uuid" | "auto-increment" | "cuid" | "ulid"
|
|
121
|
+
relationships: Array<{
|
|
122
|
+
type: string # "one-to-one" | "one-to-many" | "many-to-many"
|
|
123
|
+
tables: Array<string>
|
|
124
|
+
strategy: string # Join table, FK, embedded
|
|
125
|
+
}>
|
|
126
|
+
} | null
|
|
127
|
+
indexes: Array<{
|
|
128
|
+
table: string
|
|
129
|
+
columns: Array<string>
|
|
130
|
+
type: string # "btree" | "hash" | "gin" | "gist"
|
|
131
|
+
rationale: string
|
|
132
|
+
}> | null
|
|
133
|
+
migration: {
|
|
134
|
+
strategy: string # "additive" | "destructive" | "multi-phase"
|
|
135
|
+
steps: Array<string>
|
|
136
|
+
rollback: string
|
|
137
|
+
downtime_risk: string # "zero" | "low" | "high"
|
|
138
|
+
} | null
|
|
139
|
+
reference_file: string | null # Relevant reference file to read
|
|
140
|
+
metadata: {
|
|
141
|
+
contract_version: string
|
|
142
|
+
backward_compatibility: string
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
Error: ErrorSchema | null
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### Error Schema
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
Code: string # From Error Taxonomy (Section 11)
|
|
152
|
+
Message: string
|
|
153
|
+
Request_Type: string
|
|
154
|
+
Recoverable: boolean
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
#### Deterministic Guarantees
|
|
158
|
+
|
|
159
|
+
- Same `Request_Type` + `Context` = identical recommendation.
|
|
160
|
+
- Database selection order: deployment → scale → data_model → budget.
|
|
161
|
+
- ORM selection order: project_type → scale → data_model.
|
|
162
|
+
- Index type is deterministic per query pattern (equality → hash, range → btree, full-text → gin).
|
|
163
|
+
- Migration strategy is deterministic: additive (add column/table), destructive (drop/rename), multi-phase (complex changes).
|
|
164
|
+
- No randomization, no preference-based variation (user preference overrides decision tree).
|
|
165
|
+
|
|
166
|
+
#### What Agents May Assume
|
|
167
|
+
|
|
168
|
+
- Recommended database is appropriate for the stated context.
|
|
169
|
+
- ORM recommendation includes N+1 prevention strategy.
|
|
170
|
+
- Index strategy covers all stated query patterns.
|
|
171
|
+
- Migration plan includes rollback strategy.
|
|
172
|
+
|
|
173
|
+
#### What Agents Must NOT Assume
|
|
174
|
+
|
|
175
|
+
- The skill creates database connections or executes queries.
|
|
176
|
+
- Recommendations account for internal infrastructure constraints.
|
|
177
|
+
- Schema design includes all business-specific validations.
|
|
178
|
+
- Migration plan has been tested in staging.
|
|
179
|
+
|
|
180
|
+
#### Side-Effect Boundaries
|
|
181
|
+
|
|
182
|
+
| Operation | Side Effects |
|
|
183
|
+
|-----------|-------------|
|
|
184
|
+
| Database select | None; decision output |
|
|
185
|
+
| ORM select | None; decision output |
|
|
186
|
+
| Schema design | None; guidance output |
|
|
187
|
+
| Index strategy | None; recommendation |
|
|
188
|
+
| Migration plan | None; plan output |
|
|
189
|
+
| Query analysis | None; analysis output |
|
|
190
|
+
|
|
191
|
+
### 6.2 Workflow Contract
|
|
192
|
+
|
|
193
|
+
#### Invocation Pattern
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
1. Define project context (type, scale, deployment, data model, budget)
|
|
197
|
+
2. Invoke database-select for database recommendation
|
|
198
|
+
3. Invoke orm-select for ORM recommendation
|
|
199
|
+
4. Invoke schema-design with schema context
|
|
200
|
+
5. Invoke index-strategy for index recommendations
|
|
201
|
+
6. Implement schema (caller's responsibility)
|
|
202
|
+
7. Invoke migration-plan before schema changes
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### Execution Guarantees
|
|
206
|
+
|
|
207
|
+
- Each invocation produces a complete, self-contained recommendation.
|
|
208
|
+
- No background processes, no deferred execution.
|
|
209
|
+
- Reference files are linked in output; caller reads them.
|
|
210
|
+
|
|
211
|
+
#### Failure Propagation Model
|
|
212
|
+
|
|
213
|
+
| Failure Severity | Propagation | Workflow Action |
|
|
214
|
+
|-----------------|-------------|-----------------|
|
|
215
|
+
| Invalid request type | Return error to caller | Use supported type |
|
|
216
|
+
| Missing context field | Return error to caller | Supply missing context |
|
|
217
|
+
| Invalid scale/deployment | Return error to caller | Use supported values |
|
|
218
|
+
| Conflicting context | Return error to caller | Resolve conflict |
|
|
219
|
+
|
|
220
|
+
#### Retry Boundaries
|
|
221
|
+
|
|
222
|
+
- Zero internal retries. Deterministic output.
|
|
223
|
+
- Callers modify context to explore alternatives.
|
|
224
|
+
|
|
225
|
+
#### Isolation Model
|
|
226
|
+
|
|
227
|
+
- Each invocation is stateless and independent.
|
|
228
|
+
|
|
229
|
+
#### Idempotency Expectations
|
|
230
|
+
|
|
231
|
+
| Operation | Idempotent | Notes |
|
|
232
|
+
|-----------|-----------|-------|
|
|
233
|
+
| Database select | Yes | Same context = same recommendation |
|
|
234
|
+
| ORM select | Yes | Same context = same recommendation |
|
|
235
|
+
| Schema design | Yes | Same context = same design |
|
|
236
|
+
| Index strategy | Yes | Same query pattern = same indexes |
|
|
237
|
+
| Migration plan | Yes | Same schema change = same plan |
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 7. Execution Model
|
|
242
|
+
|
|
243
|
+
### 3-Phase Lifecycle
|
|
244
|
+
|
|
245
|
+
| Phase | Action | Output |
|
|
246
|
+
|-------|--------|--------|
|
|
247
|
+
| **Parse** | Validate request type, context fields | Validated input or error |
|
|
248
|
+
| **Evaluate** | Traverse decision tree for request type | Recommendation |
|
|
249
|
+
| **Emit** | Return structured output with reference file link | Complete output schema |
|
|
250
|
+
|
|
251
|
+
All phases synchronous. No async pipeline.
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 8. Deterministic Design Principles
|
|
256
|
+
|
|
257
|
+
| Principle | Enforcement |
|
|
258
|
+
|-----------|-------------|
|
|
259
|
+
| Fixed database selection tree | deployment → scale → data_model → budget |
|
|
260
|
+
| Fixed ORM selection tree | project_type → scale → data_model |
|
|
261
|
+
| Fixed index type mapping | equality→hash, range→btree, full-text→gin, spatial→gist |
|
|
262
|
+
| Fixed migration classification | additive/destructive/multi-phase |
|
|
263
|
+
| User preference override | If user states preference, skip decision tree |
|
|
264
|
+
| No external calls | Decisions use only embedded rules + reference files |
|
|
265
|
+
| No ambient state | Each invocation operates solely on explicit inputs |
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## 9. State & Idempotency Model
|
|
270
|
+
|
|
271
|
+
Stateless. Fully idempotent. No persistent state.
|
|
272
|
+
|
|
273
|
+
Each invocation produces an identical output for identical inputs. No session, no schema history.
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## 10. Failure Handling Strategy
|
|
278
|
+
|
|
279
|
+
| Failure Class | Behavior | Caller Recovery |
|
|
280
|
+
|---------------|----------|-----------------|
|
|
281
|
+
| Unknown request type | Return `ERR_INVALID_REQUEST_TYPE` | Use supported type |
|
|
282
|
+
| Missing context field | Return `ERR_MISSING_CONTEXT` with field name | Supply missing field |
|
|
283
|
+
| Invalid scale value | Return `ERR_INVALID_SCALE` | Use supported scale |
|
|
284
|
+
| Invalid deployment value | Return `ERR_INVALID_DEPLOYMENT` | Use supported deployment |
|
|
285
|
+
| Conflicting context | Return `ERR_CONTEXT_CONFLICT` | Resolve conflict |
|
|
286
|
+
| Reference file missing | Return `ERR_REFERENCE_NOT_FOUND` | Verify skill installation |
|
|
287
|
+
|
|
288
|
+
**Invariant:** Every failure returns a structured error. No silent default. When context is ambiguous, ask user before proceeding.
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## 11. Error Taxonomy
|
|
293
|
+
|
|
294
|
+
| Code | Category | Recoverable | Description |
|
|
295
|
+
|------|----------|-------------|-------------|
|
|
296
|
+
| `ERR_INVALID_REQUEST_TYPE` | Validation | No | Request type not supported |
|
|
297
|
+
| `ERR_MISSING_CONTEXT` | Validation | Yes | Required context field missing |
|
|
298
|
+
| `ERR_INVALID_SCALE` | Validation | No | Scale not in supported list |
|
|
299
|
+
| `ERR_INVALID_DEPLOYMENT` | Validation | No | Deployment not in supported list |
|
|
300
|
+
| `ERR_CONTEXT_CONFLICT` | Validation | Yes | Contradictory context fields |
|
|
301
|
+
| `ERR_REFERENCE_NOT_FOUND` | Infrastructure | No | Reference file missing |
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## 12. Timeout & Retry Policy
|
|
306
|
+
|
|
307
|
+
| Parameter | Default | Maximum | Rationale |
|
|
308
|
+
|-----------|---------|---------|-----------|
|
|
309
|
+
| Decision timeout | N/A | N/A | Synchronous; < 50ms |
|
|
310
|
+
| Reference file read | 1,000 ms | 1,000 ms | Local filesystem |
|
|
311
|
+
| Internal retries | Zero | Zero | Deterministic output |
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 13. Observability & Logging Schema
|
|
316
|
+
|
|
317
|
+
### Log Entry Format
|
|
318
|
+
|
|
319
|
+
```json
|
|
320
|
+
{
|
|
321
|
+
"trace_id": "uuid",
|
|
322
|
+
"skill_name": "data-modeler",
|
|
323
|
+
"contract_version": "2.0.0",
|
|
324
|
+
"execution_id": "uuid",
|
|
325
|
+
"timestamp": "ISO-8601",
|
|
326
|
+
"request_type": "string",
|
|
327
|
+
"project_type": "string",
|
|
328
|
+
"scale": "string",
|
|
329
|
+
"deployment": "string",
|
|
330
|
+
"database_recommended": "string|null",
|
|
331
|
+
"orm_recommended": "string|null",
|
|
332
|
+
"status": "success|error",
|
|
333
|
+
"error_code": "string|null",
|
|
334
|
+
"duration_ms": "number"
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Required Log Points
|
|
339
|
+
|
|
340
|
+
| Event | Log Level | Fields |
|
|
341
|
+
|-------|-----------|--------|
|
|
342
|
+
| Recommendation generated | INFO | All fields |
|
|
343
|
+
| Destructive migration planned | WARN | migration strategy, rollback |
|
|
344
|
+
| Decision failed | ERROR | error_code, message |
|
|
345
|
+
| Reference file read | DEBUG | file path, duration |
|
|
346
|
+
|
|
347
|
+
### Metrics
|
|
348
|
+
|
|
349
|
+
| Metric | Type | Unit |
|
|
350
|
+
|--------|------|------|
|
|
351
|
+
| `datamodeler.decision.duration` | Histogram | ms |
|
|
352
|
+
| `datamodeler.database.selected` | Counter | per database |
|
|
353
|
+
| `datamodeler.orm.selected` | Counter | per ORM |
|
|
354
|
+
| `datamodeler.migration.strategy` | Counter | per strategy type |
|
|
355
|
+
| `datamodeler.request_type.distribution` | Counter | per request type |
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## 14. Security & Trust Model
|
|
360
|
+
|
|
361
|
+
### Data Handling
|
|
362
|
+
|
|
363
|
+
- Data Modeler does not connect to databases or execute queries.
|
|
364
|
+
- Schema designs are produced as structured output; no SQL injection risk.
|
|
365
|
+
- Connection strings and credentials are never handled or stored.
|
|
366
|
+
|
|
367
|
+
### Migration Safety
|
|
368
|
+
|
|
369
|
+
- Destructive migrations (drop/rename) are flagged with `WARN` log level.
|
|
370
|
+
- Multi-phase migrations include explicit rollback steps.
|
|
371
|
+
- All migration plans include downtime risk classification.
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## 15. Scalability Model
|
|
376
|
+
|
|
377
|
+
| Dimension | Constraint | Mitigation |
|
|
378
|
+
|-----------|-----------|------------|
|
|
379
|
+
| Throughput | CPU-bound decision tree | < 50ms; scales linearly |
|
|
380
|
+
| Concurrency | Stateless invocations | Unlimited parallel |
|
|
381
|
+
| Reference storage | 6 files (~6 KB total) | Static; no growth |
|
|
382
|
+
| Memory per invocation | < 1 MB | No accumulation |
|
|
383
|
+
| Network | Zero network calls | No external dependency |
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## 16. Concurrency Model
|
|
388
|
+
|
|
389
|
+
Fully parallel. No shared state. No coordination required.
|
|
390
|
+
|
|
391
|
+
Each invocation is independent and stateless. Any number of concurrent invocations are safe.
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## 17. Resource Lifecycle Management
|
|
396
|
+
|
|
397
|
+
All resources scoped to invocation. No persistent handles.
|
|
398
|
+
|
|
399
|
+
| Resource | Created By | Destroyed By | Max Lifetime |
|
|
400
|
+
|----------|-----------|-------------|--------------|
|
|
401
|
+
| Decision output | Emit phase | Caller | Invocation scope |
|
|
402
|
+
| Reference file handle | Evaluate phase | Auto-close | < 10 ms |
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## 18. Performance Constraints
|
|
407
|
+
|
|
408
|
+
| Operation | P50 Target | P99 Target | Hard Limit |
|
|
409
|
+
|-----------|-----------|-----------|------------|
|
|
410
|
+
| Database/ORM selection | < 5 ms | < 20 ms | 50 ms |
|
|
411
|
+
| Full design (all aspects) | < 15 ms | < 40 ms | 100 ms |
|
|
412
|
+
| Reference file read | < 1 ms | < 5 ms | 1,000 ms |
|
|
413
|
+
| Output size | ≤ 1,000 chars | ≤ 3,000 chars | 5,000 chars |
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## 19. Operational Risks
|
|
418
|
+
|
|
419
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
420
|
+
|------|-----------|--------|------------|
|
|
421
|
+
| Outdated database recommendations | Medium | Suboptimal choice | Version-bumped references; periodic review |
|
|
422
|
+
| User preference ignored | Low | Wrong database selected | Decision tree defers to explicit user preference |
|
|
423
|
+
| Destructive migration undetected | Medium | Data loss | All destructive changes flagged with WARN |
|
|
424
|
+
| ORM lock-in bias | Medium | Hard migration later | Alternatives always listed in output |
|
|
425
|
+
| Index recommendations too generic | Medium | Missing workload-specific indexes | Query pattern required for precise index strategy |
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## 20. Compliance with skill-design-guide.md
|
|
430
|
+
|
|
431
|
+
| Requirement | Status | Evidence |
|
|
432
|
+
|-------------|--------|----------|
|
|
433
|
+
| YAML frontmatter complete | ✅ | name, description, metadata with category, version, triggers, coordinates_with, success_metrics |
|
|
434
|
+
| SKILL.md < 200 lines | ✅ | Entry point under 200 lines |
|
|
435
|
+
| Prerequisites documented | ✅ | No external dependencies |
|
|
436
|
+
| When to Use section | ✅ | Request-type decision table |
|
|
437
|
+
| Core content matches skill type | ✅ | Expert type: decision trees, selection guides |
|
|
438
|
+
| Troubleshooting section | ✅ | Anti-patterns table |
|
|
439
|
+
| Related section | ✅ | Cross-links to api-architect, nodejs-pro, python-pro |
|
|
440
|
+
| Content Map for multi-file | ✅ | Links to 6 reference files + engineering-spec.md |
|
|
441
|
+
| Contract versioning | ✅ | contract_version, backward_compatibility, breaking_changes |
|
|
442
|
+
| Compliance matrix structured | ✅ | This table with ✅/❌ + evidence |
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## 21. Production Readiness Checklist
|
|
447
|
+
|
|
448
|
+
| Category | Check | Status |
|
|
449
|
+
|----------|-------|--------|
|
|
450
|
+
| **Functionality** | Database selection (4 options with decision tree) | ✅ |
|
|
451
|
+
| **Functionality** | ORM selection (3 options with N+1 prevention) | ✅ |
|
|
452
|
+
| **Functionality** | Schema design (normalization, PKs, relationships) | ✅ |
|
|
453
|
+
| **Functionality** | Index strategy (4 index types with query pattern mapping) | ✅ |
|
|
454
|
+
| **Functionality** | Migration safety (3 strategies with rollback) | ✅ |
|
|
455
|
+
| **Contracts** | Input/output/error schemas in pseudo-schema format | ✅ |
|
|
456
|
+
| **Contracts** | Contract versioning with semver | ✅ |
|
|
457
|
+
| **Contracts** | Agent assumptions and non-assumptions documented | ✅ |
|
|
458
|
+
| **Failure** | Error taxonomy with 6 categorized codes | ✅ |
|
|
459
|
+
| **Failure** | No silent default; ask user on ambiguity | ✅ |
|
|
460
|
+
| **Failure** | Zero internal retries | ✅ |
|
|
461
|
+
| **Determinism** | Fixed decision tree ordering per request type | ✅ |
|
|
462
|
+
| **Determinism** | User preference override documented | ✅ |
|
|
463
|
+
| **Security** | No database connections; no credential handling | ✅ |
|
|
464
|
+
| **Observability** | Structured log schema with 5 mandatory fields + 4 log points | ✅ |
|
|
465
|
+
| **Observability** | 5 metrics defined | ✅ |
|
|
466
|
+
| **Performance** | P50/P99 targets for all operations | ✅ |
|
|
467
|
+
| **Scalability** | Stateless; unlimited parallel invocations | ✅ |
|
|
468
|
+
| **Compliance** | All skill-design-guide.md sections mapped with evidence | ✅ |
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
|
|
472
|
+
⚡ ## OpenTelemetry Observability (MANDATORY)
|
|
473
|
+
|
|
474
|
+
- **Schema Health Metrics**: EVERY schema validation MUST emit OpenTelemetry Spans containing metadata such as table count, column count, and ratio of indexed foreign keys vs unindexed.
|
|
475
|
+
- **Bad Practice Events**: Missing primary keys, unindexed foreign keys, or missing JSON constraints MUST trigger OTel Events attached to the main Trace ID.
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
PikaKit v3.9.134
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: indexing
|
|
3
|
+
description: Index strategy — B-tree, Hash, GIN, GiST, pgvector with SQL examples and composite index rules
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Indexing Principles
|
|
7
|
+
|
|
8
|
+
> When and how to create indexes effectively. Index for known queries, not speculatively.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## When to Create Indexes
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
Index these:
|
|
16
|
+
├── Columns in WHERE clauses (equality + range)
|
|
17
|
+
├── Columns in JOIN conditions (FK columns)
|
|
18
|
+
├── Columns in ORDER BY (sorting)
|
|
19
|
+
├── Unique constraints (auto-indexed)
|
|
20
|
+
└── Frequently filtered columns
|
|
21
|
+
|
|
22
|
+
Don't over-index:
|
|
23
|
+
├── Write-heavy tables (slower inserts/updates)
|
|
24
|
+
├── Low-cardinality columns (boolean, status with 3 values)
|
|
25
|
+
├── Columns rarely queried
|
|
26
|
+
└── Small tables (< 1000 rows — seq scan is fine)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Index Type Selection
|
|
32
|
+
|
|
33
|
+
| Type | Use For | PostgreSQL Syntax |
|
|
34
|
+
|------|---------|-------------------|
|
|
35
|
+
| **B-tree** | General purpose, equality & range | Default — no keyword needed |
|
|
36
|
+
| **Hash** | Equality only (faster than B-tree for `=`) | `USING HASH` |
|
|
37
|
+
| **GIN** | JSONB, arrays, full-text search | `USING GIN` |
|
|
38
|
+
| **GiST** | Geometric, range types, spatial | `USING GiST` |
|
|
39
|
+
| **HNSW** | Vector similarity (pgvector) | `USING hnsw` |
|
|
40
|
+
|
|
41
|
+
### SQL Examples
|
|
42
|
+
|
|
43
|
+
```sql
|
|
44
|
+
-- B-tree (default) — equality + range
|
|
45
|
+
CREATE INDEX idx_users_email ON users (email);
|
|
46
|
+
CREATE INDEX idx_orders_created ON orders (created_at DESC);
|
|
47
|
+
|
|
48
|
+
-- Hash — equality only
|
|
49
|
+
CREATE INDEX idx_users_status ON users USING HASH (status);
|
|
50
|
+
|
|
51
|
+
-- GIN — JSONB fields
|
|
52
|
+
CREATE INDEX idx_products_metadata ON products USING GIN (metadata);
|
|
53
|
+
|
|
54
|
+
-- GIN — full-text search
|
|
55
|
+
CREATE INDEX idx_posts_search ON posts USING GIN (to_tsvector('english', title || ' ' || body));
|
|
56
|
+
|
|
57
|
+
-- GiST — spatial
|
|
58
|
+
CREATE INDEX idx_locations_coords ON locations USING GiST (coordinates);
|
|
59
|
+
|
|
60
|
+
-- HNSW — vector (pgvector)
|
|
61
|
+
CREATE INDEX idx_embeddings_vector ON items USING hnsw (embedding vector_cosine_ops);
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Composite Index Rules
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Order matters for composite indexes:
|
|
70
|
+
├── 1. Equality columns FIRST
|
|
71
|
+
├── 2. Range/sort columns LAST
|
|
72
|
+
├── 3. Most selective column first (among equals)
|
|
73
|
+
└── 4. Match the query's WHERE + ORDER BY pattern
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Example
|
|
77
|
+
|
|
78
|
+
```sql
|
|
79
|
+
-- Query: WHERE status = 'active' AND created_at > '2025-01-01' ORDER BY created_at DESC
|
|
80
|
+
CREATE INDEX idx_orders_status_created
|
|
81
|
+
ON orders (status, created_at DESC);
|
|
82
|
+
|
|
83
|
+
-- ✅ status (equality) first, created_at (range + sort) second
|
|
84
|
+
-- ❌ Wrong: (created_at, status) — can't use index for status equality
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Index with Prisma & Drizzle
|
|
90
|
+
|
|
91
|
+
```prisma
|
|
92
|
+
// Prisma — schema.prisma
|
|
93
|
+
model Post {
|
|
94
|
+
id String @id @default(cuid())
|
|
95
|
+
title String
|
|
96
|
+
authorId String @map("author_id")
|
|
97
|
+
status String
|
|
98
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
99
|
+
|
|
100
|
+
@@index([authorId])
|
|
101
|
+
@@index([status, createdAt(sort: Desc)])
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
// Drizzle — schema.ts
|
|
107
|
+
import { index } from 'drizzle-orm/pg-core';
|
|
108
|
+
|
|
109
|
+
export const posts = pgTable('posts', {
|
|
110
|
+
id: uuid('id').defaultRandom().primaryKey(),
|
|
111
|
+
title: text('title').notNull(),
|
|
112
|
+
authorId: uuid('author_id').notNull(),
|
|
113
|
+
status: text('status').notNull(),
|
|
114
|
+
createdAt: timestamp('created_at').defaultNow().notNull(),
|
|
115
|
+
}, (table) => ({
|
|
116
|
+
authorIdx: index('idx_posts_author').on(table.authorId),
|
|
117
|
+
statusCreatedIdx: index('idx_posts_status_created').on(table.status, table.createdAt),
|
|
118
|
+
}));
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Verify Index Usage
|
|
124
|
+
|
|
125
|
+
```sql
|
|
126
|
+
-- Check if query uses index
|
|
127
|
+
EXPLAIN ANALYZE
|
|
128
|
+
SELECT * FROM orders
|
|
129
|
+
WHERE status = 'active' AND created_at > '2025-01-01'
|
|
130
|
+
ORDER BY created_at DESC
|
|
131
|
+
LIMIT 20;
|
|
132
|
+
|
|
133
|
+
-- Look for:
|
|
134
|
+
-- ✅ "Index Scan" or "Index Only Scan"
|
|
135
|
+
-- ❌ "Seq Scan" on large tables = missing index
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Anti-Patterns
|
|
141
|
+
|
|
142
|
+
| ❌ Don't | ✅ Do |
|
|
143
|
+
|---------|-------|
|
|
144
|
+
| Index every column | Index for known query patterns |
|
|
145
|
+
| Skip indexes on foreign keys | Always index FK columns |
|
|
146
|
+
| Use B-tree for JSONB queries | Use GIN for JSONB |
|
|
147
|
+
| Create index blocking production | Use `CREATE INDEX CONCURRENTLY` |
|
|
148
|
+
| Ignore index size and maintenance | Monitor with `pg_stat_user_indexes` |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 🔗 Related
|
|
157
|
+
|
|
158
|
+
| File | When to Read |
|
|
159
|
+
|------|-------------|
|
|
160
|
+
| [optimization.md](optimization.md) | EXPLAIN ANALYZE for query tuning |
|
|
161
|
+
| [schema-design.md](schema-design.md) | Schema that indexes support |
|
|
162
|
+
| [SKILL.md](SKILL.md) | Index type quick reference |
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
⚡ PikaKit v3.9.134
|