thanh-kit 2.5.0 → 2.5.2
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/dist/index.js +20 -61
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/.ck.json +60 -0
- package/templates/.ckignore +27 -0
- package/templates/.mcp.json.example +23 -0
- package/templates/agents/brainstormer.md +18 -2
- package/templates/agents/code-reviewer.md +122 -142
- package/templates/agents/code-simplifier.md +50 -100
- package/templates/agents/debugger.md +27 -11
- package/templates/agents/docs-manager.md +100 -38
- package/templates/agents/fullstack-developer.md +15 -3
- package/templates/agents/git-manager.md +11 -386
- package/templates/agents/journal-writer.md +13 -8
- package/templates/agents/mcp-manager.md +21 -6
- package/templates/agents/planner.md +24 -8
- package/templates/agents/project-manager.md +17 -121
- package/templates/agents/researcher.md +22 -7
- package/templates/agents/tester.md +23 -7
- package/templates/agents/ui-ux-designer.md +23 -14
- package/templates/{commands → command-archive}/ask.md +5 -5
- package/templates/{commands → command-archive}/ck-help.md +18 -2
- package/templates/command-archive/docs/init.md +38 -0
- package/templates/command-archive/docs/summarize.md +22 -0
- package/templates/command-archive/docs/update.md +76 -0
- package/templates/command-archive/journal.md +18 -0
- package/templates/{commands → command-archive}/kanban.md +5 -7
- package/templates/{commands → command-archive}/plan/archive.md +2 -2
- package/templates/command-archive/plan/red-team.md +200 -0
- package/templates/command-archive/plan/validate.md +188 -0
- package/templates/command-archive/preview.md +283 -0
- package/templates/command-archive/review/codebase/parallel.md +122 -0
- package/templates/{commands → command-archive}/test/ui.md +3 -3
- package/templates/{commands → command-archive}/use-mcp.md +6 -2
- package/templates/command-archive/worktree.md +109 -0
- package/templates/hooks/__tests__/ck-config-utils.test.cjs +557 -0
- package/templates/hooks/__tests__/descriptive-name.test.cjs +292 -0
- package/templates/hooks/__tests__/dev-rules-reminder.test.cjs +336 -0
- package/templates/hooks/__tests__/integration/path-resolution.test.cjs +319 -0
- package/templates/hooks/__tests__/privacy-block.test.cjs +273 -0
- package/templates/hooks/__tests__/session-init.test.cjs +308 -0
- package/templates/hooks/__tests__/skill-dedup.test.cjs +527 -0
- package/templates/hooks/__tests__/subagent-init.test.cjs +622 -0
- package/templates/hooks/__tests__/task-completed-handler.test.cjs +246 -0
- package/templates/hooks/__tests__/team-context-inject.test.cjs +804 -0
- package/templates/hooks/__tests__/teammate-idle-handler.test.cjs +254 -0
- package/templates/hooks/cook-after-plan-reminder.cjs +72 -0
- package/templates/hooks/descriptive-name.cjs +47 -0
- package/templates/hooks/dev-rules-reminder.cjs +37 -214
- package/templates/hooks/lib/__tests__/README.md +240 -0
- package/templates/hooks/lib/__tests__/ck-config-utils.test.cjs +613 -1
- package/templates/hooks/lib/__tests__/context-builder.test.cjs +468 -0
- package/templates/hooks/lib/__tests__/project-detector.test.cjs +754 -0
- package/templates/hooks/lib/__tests__/statusline-integration.test.cjs +678 -0
- package/templates/hooks/lib/__tests__/statusline.test.cjs +689 -0
- package/templates/hooks/lib/ck-config-utils.cjs +146 -21
- package/templates/hooks/lib/colors.cjs +95 -0
- package/templates/hooks/lib/config-counter.cjs +103 -0
- package/templates/hooks/lib/context-builder.cjs +616 -0
- package/templates/hooks/lib/git-info-cache.cjs +143 -0
- package/templates/hooks/lib/hook-logger.cjs +92 -0
- package/templates/hooks/lib/privacy-checker.cjs +297 -0
- package/templates/hooks/lib/project-detector.cjs +474 -0
- package/templates/hooks/lib/scout-checker.cjs +263 -0
- package/templates/hooks/lib/transcript-parser.cjs +181 -0
- package/templates/hooks/notifications/discord_notify.sh +17 -4
- package/templates/hooks/notifications/docs/discord-hook-setup.md +26 -10
- package/templates/hooks/notifications/docs/telegram-hook-setup.md +24 -6
- package/templates/hooks/notifications/notify.cjs +0 -0
- package/templates/hooks/notifications/send-discord.sh +0 -0
- package/templates/hooks/notifications/telegram_notify.sh +17 -4
- package/templates/hooks/post-edit-simplify-reminder.cjs +156 -0
- package/templates/hooks/privacy-block.cjs +97 -188
- package/templates/hooks/scout-block/broad-pattern-detector.cjs +4 -6
- package/templates/hooks/scout-block/error-formatter.cjs +0 -0
- package/templates/hooks/scout-block/path-extractor.cjs +102 -13
- package/templates/hooks/scout-block/pattern-matcher.cjs +16 -1
- package/templates/hooks/scout-block/tests/{test-broad-pattern-detector.js → test-broad-pattern-detector.cjs} +1 -61
- package/templates/hooks/scout-block/tests/{test-build-command-allowlist.js → test-build-command-allowlist.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-error-formatter.js → test-error-formatter.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-full-flow-edge-cases.js → test-full-flow-edge-cases.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-monorepo-scenarios.js → test-monorepo-scenarios.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-path-extractor.js → test-path-extractor.cjs} +1 -1
- package/templates/hooks/scout-block/tests/{test-pattern-matcher.js → test-pattern-matcher.cjs} +1 -1
- package/templates/hooks/scout-block.cjs +100 -87
- package/templates/hooks/session-init.cjs +197 -330
- package/templates/hooks/skill-dedup.cjs +268 -0
- package/templates/hooks/subagent-init.cjs +75 -22
- package/templates/hooks/task-completed-handler.cjs +118 -0
- package/templates/hooks/team-context-inject.cjs +176 -0
- package/templates/hooks/teammate-idle-handler.cjs +121 -0
- package/templates/hooks/tests/scout-block/broad-pattern-detector.test.cjs +231 -0
- package/templates/hooks/tests/scout-block/fixtures/ckignore-custom.txt +6 -0
- package/templates/hooks/tests/scout-block/fixtures/ckignore-default.txt +13 -0
- package/templates/hooks/tests/scout-block/fixtures/ckignore-negation.txt +8 -0
- package/templates/hooks/tests/scout-block/path-extractor.test.cjs +527 -0
- package/templates/hooks/tests/scout-block/pattern-matcher.test.cjs +293 -0
- package/templates/hooks/tests/scout-block/scout-checker.test.cjs +741 -0
- package/templates/hooks/tests/{test-ckignore.js → test-ckignore.cjs} +0 -0
- package/templates/hooks/tests/{test-modularization-hook.js → test-modularization-hook.cjs} +0 -0
- package/templates/hooks/tests/{test-privacy-block.js → test-privacy-block.cjs} +1 -1
- package/templates/hooks/tests/test-scout-block.cjs +315 -0
- package/templates/hooks/usage-context-awareness.cjs +179 -0
- package/templates/metadata.json +104 -0
- package/templates/{workflows → rules}/development-rules.md +12 -53
- package/templates/rules/orchestration-protocol.md +43 -0
- package/templates/{workflows → rules}/primary-workflow.md +16 -4
- package/templates/rules/team-coordination-rules.md +90 -0
- package/templates/schemas/ck-config.schema.json +381 -0
- package/templates/scripts/README.md +94 -198
- package/templates/scripts/ck-help.py +19 -855
- package/templates/scripts/commands_data.yaml +3 -621
- package/templates/scripts/fix-shebang-permissions.sh +50 -0
- package/templates/scripts/generate_catalogs.py +37 -8
- package/templates/scripts/resolve_env.py +0 -0
- package/templates/scripts/scan_commands.py +14 -96
- package/templates/scripts/scan_skills.py +59 -19
- package/templates/scripts/set-active-plan.cjs +8 -3
- package/templates/scripts/skills_data.yaml +2 -596
- package/templates/scripts/test-ck-help.py +15 -0
- package/templates/scripts/test_ck_help.py +139 -0
- package/templates/scripts/test_ck_help_integration.py +72 -0
- package/templates/scripts/validate-docs.cjs +342 -0
- package/templates/scripts/win_compat.py +0 -0
- package/templates/scripts/worktree.cjs +4 -652
- package/templates/scripts/worktree.test.cjs +5 -330
- package/templates/settings.json +104 -239
- package/templates/skills/README.md +95 -255
- package/templates/skills/THIRD_PARTY_NOTICES.md +405 -0
- package/templates/skills/agent-browser/SKILL.md +294 -0
- package/templates/skills/agent-browser/references/.gitkeep +0 -0
- package/templates/skills/agent-browser/references/agent-browser-vs-chrome-devtools.md +112 -0
- package/templates/skills/agent-browser/references/browserbase-cloud-setup.md +161 -0
- package/templates/skills/ai-artist/SKILL.md +103 -56
- package/templates/skills/ai-artist/data/awesome-prompts.csv +3592 -0
- package/templates/skills/ai-artist/data/lighting.csv +19 -0
- package/templates/skills/ai-artist/data/nano-banana-templates.csv +17 -0
- package/templates/skills/ai-artist/data/platforms.csv +11 -0
- package/templates/skills/ai-artist/data/styles.csv +26 -0
- package/templates/skills/ai-artist/data/techniques.csv +19 -0
- package/templates/skills/ai-artist/data/use-cases.csv +16 -0
- package/templates/skills/ai-artist/references/awesome-nano-banana-pro-prompts.md +8575 -0
- package/templates/skills/ai-artist/references/nano-banana.md +78 -1
- package/templates/skills/ai-artist/references/validation-workflow.md +117 -0
- package/templates/skills/ai-artist/scripts/core.py +197 -0
- package/templates/skills/ai-artist/scripts/extract_prompts.py +102 -0
- package/templates/skills/ai-artist/scripts/generate.py +370 -0
- package/templates/skills/ai-artist/scripts/search.py +147 -0
- package/templates/skills/ai-multimodal/SKILL.md +4 -3
- package/templates/skills/ai-multimodal/scripts/check_setup.py +12 -2
- package/templates/skills/ai-multimodal/scripts/document_converter.py +0 -0
- package/templates/skills/ai-multimodal/scripts/gemini_batch_process.py +3 -2
- package/templates/skills/ai-multimodal/scripts/media_optimizer.py +0 -0
- package/templates/skills/ask/SKILL.md +58 -0
- package/templates/skills/backend-development/SKILL.md +3 -2
- package/templates/skills/better-auth/SKILL.md +3 -2
- package/templates/skills/better-auth/scripts/better_auth_init.py +3 -3
- package/templates/skills/bootstrap/SKILL.md +101 -0
- package/templates/skills/bootstrap/references/shared-phases.md +59 -0
- package/templates/skills/bootstrap/references/workflow-auto.md +52 -0
- package/templates/skills/bootstrap/references/workflow-fast.md +50 -0
- package/templates/skills/bootstrap/references/workflow-full.md +60 -0
- package/templates/skills/bootstrap/references/workflow-parallel.md +59 -0
- package/templates/{commands/brainstorm.md → skills/brainstorm/SKILL.md} +21 -18
- package/templates/skills/chrome-devtools/SKILL.md +221 -68
- package/templates/skills/chrome-devtools/scripts/README.md +18 -0
- package/templates/skills/chrome-devtools/scripts/__tests__/error-handling.test.js +102 -0
- package/templates/skills/chrome-devtools/scripts/aria-snapshot.js +2 -1
- package/templates/skills/chrome-devtools/scripts/click.js +2 -1
- package/templates/skills/chrome-devtools/scripts/connect-chrome.js +146 -0
- package/templates/skills/chrome-devtools/scripts/console.js +3 -1
- package/templates/skills/chrome-devtools/scripts/evaluate.js +6 -3
- package/templates/skills/chrome-devtools/scripts/fill.js +2 -1
- package/templates/skills/chrome-devtools/scripts/import-cookies.js +205 -0
- package/templates/skills/chrome-devtools/scripts/inject-auth.js +2 -1
- package/templates/skills/chrome-devtools/scripts/install-deps.sh +0 -0
- package/templates/skills/chrome-devtools/scripts/install.sh +0 -0
- package/templates/skills/chrome-devtools/scripts/lib/browser.js +60 -4
- package/templates/skills/chrome-devtools/scripts/navigate.js +86 -2
- package/templates/skills/chrome-devtools/scripts/network.js +3 -1
- package/templates/skills/chrome-devtools/scripts/performance.js +3 -1
- package/templates/skills/chrome-devtools/scripts/screenshot.js +2 -1
- package/templates/skills/chrome-devtools/scripts/select-ref.js +2 -1
- package/templates/skills/chrome-devtools/scripts/snapshot.js +2 -1
- package/templates/skills/chrome-devtools/scripts/ws-debug.js +44 -0
- package/templates/skills/chrome-devtools/scripts/ws-full-debug.js +107 -0
- package/templates/skills/ck-help/SKILL.md +102 -0
- package/templates/skills/ck-help/scripts/ck-help.py +1321 -0
- package/templates/skills/ck-help/scripts/commands_data.yaml +3 -0
- package/templates/skills/ck-help/scripts/skills_data.yaml +593 -0
- package/templates/skills/code-review/SKILL.md +97 -93
- package/templates/skills/code-review/references/code-review-reception.md +113 -209
- package/templates/skills/code-review/references/codebase-scan-workflow.md +29 -0
- package/templates/skills/code-review/references/edge-case-scouting.md +119 -0
- package/templates/skills/code-review/references/parallel-review-workflow.md +69 -0
- package/templates/skills/code-review/references/requesting-code-review.md +115 -104
- package/templates/skills/code-review/references/task-management-reviews.md +140 -0
- package/templates/skills/code-review/references/verification-before-completion.md +138 -138
- package/templates/skills/coding-level/SKILL.md +56 -0
- package/templates/skills/common/README.md +120 -0
- package/templates/skills/common/api_key_helper.py +411 -0
- package/templates/skills/common/api_key_rotator.py +248 -0
- package/templates/skills/context-engineering/SKILL.md +108 -0
- package/templates/skills/context-engineering/references/context-compression.md +84 -0
- package/templates/skills/context-engineering/references/context-degradation.md +93 -0
- package/templates/skills/context-engineering/references/context-fundamentals.md +75 -0
- package/templates/skills/context-engineering/references/context-optimization.md +82 -0
- package/templates/skills/context-engineering/references/evaluation.md +89 -0
- package/templates/skills/context-engineering/references/memory-systems.md +88 -0
- package/templates/skills/context-engineering/references/multi-agent-patterns.md +90 -0
- package/templates/skills/context-engineering/references/project-development.md +97 -0
- package/templates/skills/context-engineering/references/runtime-awareness.md +202 -0
- package/templates/skills/context-engineering/references/tool-design.md +86 -0
- package/templates/skills/context-engineering/scripts/compression_evaluator.py +349 -0
- package/templates/skills/context-engineering/scripts/context_analyzer.py +317 -0
- package/templates/skills/context-engineering/scripts/tests/test_edge_cases.py +246 -0
- package/templates/skills/cook/README.md +86 -0
- package/templates/skills/cook/SKILL.md +113 -0
- package/templates/skills/cook/references/intent-detection.md +101 -0
- package/templates/skills/cook/references/review-cycle.md +75 -0
- package/templates/skills/cook/references/subagent-patterns.md +75 -0
- package/templates/skills/cook/references/workflow-steps.md +172 -0
- package/templates/skills/copywriting/SKILL.md +94 -0
- package/templates/skills/copywriting/references/copy-formulas.md +150 -0
- package/templates/skills/copywriting/references/cta-patterns.md +168 -0
- package/templates/skills/copywriting/references/email-copy.md +193 -0
- package/templates/skills/copywriting/references/headline-templates.md +140 -0
- package/templates/skills/copywriting/references/landing-page-copy.md +175 -0
- package/templates/skills/copywriting/references/power-words.md +189 -0
- package/templates/skills/copywriting/references/social-media-copy.md +222 -0
- package/templates/skills/copywriting/references/workflow-cro.md +83 -0
- package/templates/skills/copywriting/references/workflow-enhance.md +32 -0
- package/templates/skills/copywriting/references/workflow-fast.md +29 -0
- package/templates/skills/copywriting/references/workflow-good.md +39 -0
- package/templates/skills/copywriting/references/writing-styles.md +247 -0
- package/templates/skills/copywriting/scripts/extract-writing-styles.py +308 -0
- package/templates/skills/copywriting/templates/copy-brief.md +49 -0
- package/templates/skills/databases/SKILL.md +7 -155
- package/templates/skills/databases/analytics.md +198 -0
- package/templates/skills/databases/db-design.md +188 -0
- package/templates/skills/databases/incremental-etl.md +213 -0
- package/templates/skills/databases/scripts/db_backup.py +0 -0
- package/templates/skills/databases/scripts/db_migrate.py +3 -2
- package/templates/skills/databases/scripts/db_performance_check.py +3 -2
- package/templates/skills/databases/stacks/bigquery.md +231 -0
- package/templates/skills/databases/stacks/d1_cloudflare.md +137 -0
- package/templates/skills/databases/stacks/mysql.md +216 -0
- package/templates/skills/databases/stacks/postgres.md +235 -0
- package/templates/skills/databases/stacks/sqlite.md +244 -0
- package/templates/skills/databases/transactional.md +176 -0
- package/templates/skills/debug/SKILL.md +121 -0
- package/templates/skills/debug/references/frontend-verification.md +103 -0
- package/templates/skills/debug/references/investigation-methodology.md +101 -0
- package/templates/skills/debug/references/log-and-ci-analysis.md +97 -0
- package/templates/skills/debug/references/performance-diagnostics.md +113 -0
- package/templates/skills/debug/references/reporting-standards.md +122 -0
- package/templates/skills/debug/references/task-management-debugging.md +155 -0
- package/templates/skills/devops/SKILL.md +65 -253
- package/templates/skills/devops/references/kubernetes-basics.md +99 -0
- package/templates/skills/devops/references/kubernetes-helm-advanced.md +75 -0
- package/templates/skills/devops/references/kubernetes-helm.md +81 -0
- package/templates/skills/devops/references/kubernetes-kubectl.md +74 -0
- package/templates/skills/devops/references/kubernetes-security-advanced.md +98 -0
- package/templates/skills/devops/references/kubernetes-security.md +95 -0
- package/templates/skills/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
- package/templates/skills/devops/references/kubernetes-troubleshooting.md +49 -0
- package/templates/skills/devops/references/kubernetes-workflows-advanced.md +75 -0
- package/templates/skills/devops/references/kubernetes-workflows.md +78 -0
- package/templates/skills/devops/scripts/cloudflare_deploy.py +0 -0
- package/templates/skills/devops/scripts/docker_optimize.py +3 -2
- package/templates/skills/docs/SKILL.md +55 -0
- package/templates/skills/docs/references/init-workflow.md +32 -0
- package/templates/skills/docs/references/summarize-workflow.md +18 -0
- package/templates/skills/docs/references/update-workflow.md +59 -0
- package/templates/skills/docs-seeker/SKILL.md +3 -2
- package/templates/skills/docs-seeker/scripts/analyze-llms-txt.js +0 -0
- package/templates/skills/docs-seeker/scripts/detect-topic.js +0 -0
- package/templates/skills/docs-seeker/scripts/fetch-docs.js +0 -0
- package/templates/skills/docs-seeker/scripts/tests/run-tests.js +0 -0
- package/templates/skills/docs-seeker/scripts/tests/test-analyze-llms.js +0 -0
- package/templates/skills/docs-seeker/scripts/tests/test-detect-topic.js +0 -0
- package/templates/skills/docs-seeker/scripts/tests/test-fetch-docs.js +0 -0
- package/templates/skills/docs-seeker/scripts/utils/env-loader.js +0 -0
- package/templates/skills/document-skills/docx/SKILL.md +2 -2
- package/templates/skills/document-skills/docx/ooxml/scripts/pack.py +0 -0
- package/templates/skills/document-skills/docx/ooxml/scripts/unpack.py +0 -0
- package/templates/skills/document-skills/docx/ooxml/scripts/validate.py +0 -0
- package/templates/skills/document-skills/docx/scripts/document.py +0 -0
- package/templates/skills/document-skills/docx/scripts/utilities.py +0 -0
- package/templates/skills/document-skills/pdf/SKILL.md +2 -2
- package/templates/skills/document-skills/pptx/SKILL.md +2 -2
- package/templates/skills/document-skills/pptx/ooxml/scripts/pack.py +0 -0
- package/templates/skills/document-skills/pptx/ooxml/scripts/unpack.py +0 -0
- package/templates/skills/document-skills/pptx/ooxml/scripts/validate.py +0 -0
- package/templates/skills/document-skills/pptx/scripts/inventory.py +0 -0
- package/templates/skills/document-skills/pptx/scripts/rearrange.py +0 -0
- package/templates/skills/document-skills/pptx/scripts/replace.py +0 -0
- package/templates/skills/document-skills/pptx/scripts/thumbnail.py +0 -0
- package/templates/skills/document-skills/xlsx/SKILL.md +2 -2
- package/templates/skills/document-skills/xlsx/recalc.py +3 -2
- package/templates/skills/find-skills/SKILL.md +134 -0
- package/templates/skills/fix/SKILL.md +111 -0
- package/templates/skills/fix/references/complexity-assessment.md +72 -0
- package/templates/skills/fix/references/mode-selection.md +46 -0
- package/templates/skills/fix/references/parallel-exploration.md +100 -0
- package/templates/skills/fix/references/review-cycle.md +77 -0
- package/templates/skills/fix/references/skill-activation-matrix.md +78 -0
- package/templates/skills/fix/references/task-orchestration.md +103 -0
- package/templates/skills/fix/references/workflow-ci.md +28 -0
- package/templates/skills/fix/references/workflow-deep.md +122 -0
- package/templates/skills/fix/references/workflow-logs.md +72 -0
- package/templates/skills/fix/references/workflow-quick.md +59 -0
- package/templates/skills/fix/references/workflow-standard.md +111 -0
- package/templates/skills/fix/references/workflow-test.md +75 -0
- package/templates/skills/fix/references/workflow-types.md +33 -0
- package/templates/skills/fix/references/workflow-ui.md +75 -0
- package/templates/skills/frontend-design/SKILL.md +78 -91
- package/templates/skills/frontend-design/references/ai-multimodal-overview.md +6 -6
- package/templates/skills/frontend-design/references/animejs.md +395 -395
- package/templates/skills/frontend-design/references/asset-generation.md +4 -4
- package/templates/skills/frontend-design/references/visual-analysis-overview.md +1 -1
- package/templates/skills/frontend-design/references/workflow-3d.md +102 -0
- package/templates/skills/frontend-design/references/workflow-describe.md +87 -0
- package/templates/skills/frontend-design/references/workflow-immersive.md +87 -0
- package/templates/skills/frontend-design/references/workflow-quick.md +57 -0
- package/templates/skills/frontend-design/references/workflow-screenshot.md +63 -0
- package/templates/skills/frontend-design/references/workflow-video.md +74 -0
- package/templates/skills/frontend-development/SKILL.md +4 -3
- package/templates/skills/git/SKILL.md +114 -0
- package/templates/skills/git/references/branch-management.md +88 -0
- package/templates/skills/git/references/commit-standards.md +46 -0
- package/templates/skills/git/references/gh-cli-guide.md +109 -0
- package/templates/skills/git/references/safety-protocols.md +69 -0
- package/templates/skills/git/references/workflow-commit.md +58 -0
- package/templates/skills/git/references/workflow-merge.md +48 -0
- package/templates/skills/git/references/workflow-pr.md +58 -0
- package/templates/skills/git/references/workflow-push.md +52 -0
- package/templates/skills/gkg/SKILL.md +91 -0
- package/templates/skills/gkg/references/cli-commands.md +106 -0
- package/templates/skills/gkg/references/http-api.md +102 -0
- package/templates/skills/gkg/references/language-support.md +57 -0
- package/templates/skills/gkg/references/mcp-tools.md +99 -0
- package/templates/skills/google-adk-python/SKILL.md +91 -195
- package/templates/skills/google-adk-python/references/agent-types-and-architecture.md +128 -0
- package/templates/skills/google-adk-python/references/callbacks-plugins-observability.md +117 -0
- package/templates/skills/google-adk-python/references/deployment-cloud-run-vertex-gke.md +138 -0
- package/templates/skills/google-adk-python/references/evaluation-testing-cli.md +112 -0
- package/templates/skills/google-adk-python/references/multi-agent-and-a2a-protocol.md +145 -0
- package/templates/skills/google-adk-python/references/sessions-state-memory-artifacts.md +131 -0
- package/templates/skills/google-adk-python/references/tools-and-mcp-integration.md +146 -0
- package/templates/skills/install.ps1 +130 -26
- package/templates/skills/install.sh +383 -63
- package/templates/{commands/journal.md → skills/journal/SKILL.md} +5 -1
- package/templates/skills/kanban/SKILL.md +99 -0
- package/templates/skills/markdown-novel-viewer/SKILL.md +314 -0
- package/templates/skills/markdown-novel-viewer/assets/directory-browser.css +215 -0
- package/templates/skills/markdown-novel-viewer/assets/favicon.png +0 -0
- package/templates/skills/markdown-novel-viewer/assets/novel-theme.css +16 -0
- package/templates/skills/markdown-novel-viewer/assets/reader.js +838 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-base.css +54 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-components.css +180 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-content.css +176 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-header.css +217 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-mermaid.css +153 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-overlays.css +202 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-responsive.css +285 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-sidebar.css +359 -0
- package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-variables.css +56 -0
- package/templates/skills/markdown-novel-viewer/assets/template.html +149 -0
- package/templates/skills/markdown-novel-viewer/bun.lock +38 -0
- package/templates/skills/markdown-novel-viewer/package.json +15 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +335 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/plan-navigator.cjs +571 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
- package/templates/skills/markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
- package/templates/skills/markdown-novel-viewer/scripts/server.cjs +411 -0
- package/templates/skills/markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
- package/templates/skills/markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
- package/templates/skills/markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
- package/templates/skills/markdown-novel-viewer/tests/http-server.test.cjs +271 -0
- package/templates/skills/markdown-novel-viewer/tests/run-tests.cjs +51 -0
- package/templates/skills/markdown-novel-viewer/tests/test-framework.cjs +154 -0
- package/templates/skills/markdown-novel-viewer/tests/verify-xss.cjs +90 -0
- package/templates/skills/mcp-builder/SKILL.md +3 -2
- package/templates/skills/mcp-builder/scripts/evaluation.py +9 -1
- package/templates/skills/mcp-management/SKILL.md +8 -7
- package/templates/skills/mcp-management/references/gemini-cli-integration.md +16 -10
- package/templates/skills/mcp-management/scripts/cli.ts +0 -0
- package/templates/skills/mcp-management/scripts/dist/analyze-tools.js +0 -0
- package/templates/skills/mcp-management/scripts/dist/cli.js +0 -0
- package/templates/skills/mcp-management/scripts/dist/mcp-client.js +0 -0
- package/templates/skills/mcp-management/scripts/mcp-client.ts +0 -0
- package/templates/skills/media-processing/SKILL.md +3 -2
- package/templates/skills/media-processing/scripts/batch-remove-background.sh +0 -0
- package/templates/skills/media-processing/scripts/batch_resize.py +0 -0
- package/templates/skills/media-processing/scripts/media_convert.py +0 -0
- package/templates/skills/media-processing/scripts/remove-background.sh +0 -0
- package/templates/skills/media-processing/scripts/remove-bg-node.js +0 -0
- package/templates/skills/media-processing/scripts/tests/test_batch_resize.py +0 -0
- package/templates/skills/media-processing/scripts/tests/test_media_convert.py +0 -0
- package/templates/skills/media-processing/scripts/tests/test_video_optimize.py +0 -0
- package/templates/skills/media-processing/scripts/video_optimize.py +0 -0
- package/templates/skills/mermaidjs-v11/SKILL.md +116 -0
- package/templates/skills/mermaidjs-v11/references/cli-usage.md +228 -0
- package/templates/skills/mermaidjs-v11/references/configuration.md +232 -0
- package/templates/skills/mermaidjs-v11/references/diagram-types.md +315 -0
- package/templates/skills/mermaidjs-v11/references/examples.md +344 -0
- package/templates/skills/mermaidjs-v11/references/integration.md +310 -0
- package/templates/skills/mintlify/SKILL.md +121 -0
- package/templates/skills/mintlify/references/ai-features-and-integrations-reference.md +756 -0
- package/templates/skills/mintlify/references/api-documentation-components-reference.md +873 -0
- package/templates/skills/mintlify/references/deployment-and-continuous-integration-reference.md +674 -0
- package/templates/skills/mintlify/references/docs-json-configuration-reference.md +724 -0
- package/templates/skills/mintlify/references/mdx-components-reference.md +551 -0
- package/templates/skills/mintlify/references/navigation-structure-and-organization-reference.md +775 -0
- package/templates/skills/mobile-development/SKILL.md +3 -2
- package/templates/skills/payment-integration/README.md +44 -12
- package/templates/skills/payment-integration/SKILL.md +82 -97
- package/templates/skills/payment-integration/references/creem/api.md +139 -0
- package/templates/skills/payment-integration/references/creem/checkouts.md +99 -0
- package/templates/skills/payment-integration/references/creem/licensing.md +136 -0
- package/templates/skills/payment-integration/references/creem/overview.md +65 -0
- package/templates/skills/payment-integration/references/creem/sdk.md +161 -0
- package/templates/skills/payment-integration/references/creem/subscriptions.md +129 -0
- package/templates/skills/payment-integration/references/creem/webhooks.md +120 -0
- package/templates/skills/payment-integration/references/implementation-workflows.md +43 -0
- package/templates/skills/payment-integration/references/multi-provider-order-management-patterns.md +821 -0
- package/templates/skills/payment-integration/references/paddle/api.md +116 -0
- package/templates/skills/payment-integration/references/paddle/best-practices.md +130 -0
- package/templates/skills/payment-integration/references/paddle/overview.md +57 -0
- package/templates/skills/payment-integration/references/paddle/paddle-js.md +106 -0
- package/templates/skills/payment-integration/references/paddle/sdk.md +131 -0
- package/templates/skills/payment-integration/references/paddle/subscriptions.md +118 -0
- package/templates/skills/payment-integration/references/paddle/webhooks.md +112 -0
- package/templates/skills/payment-integration/references/polar/best-practices.md +781 -361
- package/templates/skills/payment-integration/references/sepay/best-practices.md +870 -268
- package/templates/skills/payment-integration/references/stripe/stripe-best-practices.md +32 -0
- package/templates/skills/payment-integration/references/stripe/stripe-cli.md +148 -0
- package/templates/skills/payment-integration/references/stripe/stripe-js.md +116 -0
- package/templates/skills/payment-integration/references/stripe/stripe-sdks.md +84 -0
- package/templates/skills/payment-integration/references/stripe/stripe-upgrade.md +175 -0
- package/templates/skills/payment-integration/scripts/checkout-helper.js +0 -0
- package/templates/skills/payment-integration/scripts/polar-webhook-verify.js +0 -0
- package/templates/skills/payment-integration/scripts/sepay-webhook-verify.js +0 -0
- package/templates/skills/payment-integration/scripts/test-scripts.js +0 -0
- package/templates/skills/plan/SKILL.md +137 -0
- package/templates/skills/plan/references/archive-workflow.md +53 -0
- package/templates/skills/{planning → plan}/references/codebase-understanding.md +1 -1
- package/templates/skills/{planning → plan}/references/output-standards.md +15 -1
- package/templates/skills/{planning → plan}/references/plan-organization.md +12 -19
- package/templates/skills/plan/references/red-team-personas.md +69 -0
- package/templates/skills/plan/references/red-team-workflow.md +77 -0
- package/templates/skills/{planning → plan}/references/research-phase.md +2 -2
- package/templates/skills/plan/references/task-management.md +132 -0
- package/templates/skills/plan/references/validate-question-framework.md +80 -0
- package/templates/skills/plan/references/validate-workflow.md +65 -0
- package/templates/skills/plan/references/workflow-modes.md +145 -0
- package/templates/skills/plans-kanban/SKILL.md +167 -0
- package/templates/skills/plans-kanban/assets/dashboard-template.html +119 -0
- package/templates/skills/plans-kanban/assets/dashboard.css +1594 -0
- package/templates/skills/plans-kanban/assets/dashboard.js +596 -0
- package/templates/skills/plans-kanban/assets/favicon.png +0 -0
- package/templates/skills/plans-kanban/package.json +13 -0
- package/templates/skills/plans-kanban/scripts/lib/dashboard-renderer.cjs +884 -0
- package/templates/skills/plans-kanban/scripts/lib/http-server.cjs +310 -0
- package/templates/skills/plans-kanban/scripts/lib/plan-metadata-extractor.cjs +489 -0
- package/templates/skills/plans-kanban/scripts/lib/plan-parser.cjs +175 -0
- package/templates/skills/plans-kanban/scripts/lib/plan-scanner.cjs +272 -0
- package/templates/skills/plans-kanban/scripts/lib/port-finder.cjs +48 -0
- package/templates/skills/plans-kanban/scripts/lib/process-mgr.cjs +128 -0
- package/templates/skills/plans-kanban/scripts/server.cjs +260 -0
- package/templates/skills/preview/SKILL.md +75 -0
- package/templates/skills/preview/references/generation-modes.md +95 -0
- package/templates/skills/preview/references/view-mode.md +42 -0
- package/templates/skills/problem-solving/SKILL.md +3 -2
- package/templates/skills/project-management/SKILL.md +122 -0
- package/templates/skills/project-management/references/documentation-triggers.md +60 -0
- package/templates/skills/project-management/references/hydration-workflow.md +85 -0
- package/templates/skills/project-management/references/progress-tracking.md +96 -0
- package/templates/skills/project-management/references/reporting-patterns.md +94 -0
- package/templates/skills/project-management/references/task-operations.md +85 -0
- package/templates/skills/react-best-practices/AGENTS.md +2249 -0
- package/templates/skills/react-best-practices/README.md +123 -0
- package/templates/skills/react-best-practices/SKILL.md +122 -0
- package/templates/skills/react-best-practices/metadata.json +15 -0
- package/templates/skills/react-best-practices/rules/_sections.md +46 -0
- package/templates/skills/react-best-practices/rules/_template.md +28 -0
- package/templates/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/templates/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/templates/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/templates/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/templates/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/templates/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/templates/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/templates/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/templates/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/templates/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/templates/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/templates/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/templates/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/templates/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/templates/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/templates/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/templates/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/templates/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/templates/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/templates/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/templates/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/templates/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/templates/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/templates/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/templates/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/templates/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/templates/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/templates/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/templates/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/templates/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/templates/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/templates/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/templates/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/templates/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/templates/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/templates/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/templates/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/templates/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/templates/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/templates/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/templates/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/templates/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/templates/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/templates/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/templates/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/templates/skills/remotion/SKILL.md +44 -0
- package/templates/skills/remotion/rules/3d.md +86 -0
- package/templates/skills/remotion/rules/animations.md +29 -0
- package/templates/skills/remotion/rules/assets/charts-bar-chart.tsx +173 -0
- package/templates/skills/remotion/rules/assets/text-animations-typewriter.tsx +100 -0
- package/templates/skills/remotion/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/templates/skills/remotion/rules/assets.md +78 -0
- package/templates/skills/remotion/rules/audio.md +172 -0
- package/templates/skills/remotion/rules/calculate-metadata.md +104 -0
- package/templates/skills/remotion/rules/can-decode.md +75 -0
- package/templates/skills/remotion/rules/charts.md +58 -0
- package/templates/skills/remotion/rules/compositions.md +146 -0
- package/templates/skills/remotion/rules/display-captions.md +126 -0
- package/templates/skills/remotion/rules/extract-frames.md +229 -0
- package/templates/skills/remotion/rules/fonts.md +152 -0
- package/templates/skills/remotion/rules/get-audio-duration.md +58 -0
- package/templates/skills/remotion/rules/get-video-dimensions.md +68 -0
- package/templates/skills/remotion/rules/get-video-duration.md +58 -0
- package/templates/skills/remotion/rules/gifs.md +138 -0
- package/templates/skills/remotion/rules/images.md +130 -0
- package/templates/skills/remotion/rules/import-srt-captions.md +67 -0
- package/templates/skills/remotion/rules/lottie.md +68 -0
- package/templates/skills/remotion/rules/measuring-dom-nodes.md +35 -0
- package/templates/skills/remotion/rules/measuring-text.md +143 -0
- package/templates/skills/remotion/rules/sequencing.md +106 -0
- package/templates/skills/remotion/rules/tailwind.md +11 -0
- package/templates/skills/remotion/rules/text-animations.md +20 -0
- package/templates/skills/remotion/rules/timing.md +179 -0
- package/templates/skills/remotion/rules/transcribe-captions.md +19 -0
- package/templates/skills/remotion/rules/transitions.md +122 -0
- package/templates/skills/remotion/rules/trimming.md +53 -0
- package/templates/skills/remotion/rules/videos.md +171 -0
- package/templates/skills/repomix/SKILL.md +3 -2
- package/templates/skills/repomix/scripts/repomix_batch.py +0 -0
- package/templates/skills/research/SKILL.md +9 -6
- package/templates/skills/scout/SKILL.md +89 -0
- package/templates/skills/scout/references/external-scouting.md +140 -0
- package/templates/skills/scout/references/internal-scouting.md +119 -0
- package/templates/skills/scout/references/task-management-scouting.md +125 -0
- package/templates/skills/sequential-thinking/SKILL.md +3 -2
- package/templates/skills/sequential-thinking/scripts/format-thought.js +0 -0
- package/templates/skills/sequential-thinking/scripts/process-thought.js +0 -0
- package/templates/skills/shader/SKILL.md +113 -0
- package/templates/skills/shader/references/glsl-cellular-voronoi-worley-noise-patterns.md +142 -0
- package/templates/skills/shader/references/glsl-colors-rgb-hsb-gradients-mixing-color-spaces.md +143 -0
- package/templates/skills/shader/references/glsl-fbm-fractional-brownian-motion-turbulence-octaves.md +146 -0
- package/templates/skills/shader/references/glsl-fundamentals-data-types-vectors-precision-coordinates.md +104 -0
- package/templates/skills/shader/references/glsl-noise-random-perlin-simplex-cellular-voronoi.md +115 -0
- package/templates/skills/shader/references/glsl-pattern-symmetry-truchet-domain-warping.md +134 -0
- package/templates/skills/shader/references/glsl-patterns-tiling-fract-matrices-transformations.md +133 -0
- package/templates/skills/shader/references/glsl-procedural-textures-clouds-marble-wood-terrain.md +144 -0
- package/templates/skills/shader/references/glsl-shader-builtin-functions-complete-api-reference.md +112 -0
- package/templates/skills/shader/references/glsl-shapes-polygon-star-polar-sdf-combinations.md +124 -0
- package/templates/skills/shader/references/glsl-shapes-sdf-circles-rectangles-polar-distance-fields.md +106 -0
- package/templates/skills/shader/references/glsl-shaping-functions-step-smoothstep-curves-interpolation.md +141 -0
- package/templates/skills/shopify/SKILL.md +3 -2
- package/templates/skills/shopify/scripts/shopify_init.py +5 -5
- package/templates/skills/skill-creator/SKILL.md +91 -238
- package/templates/skills/skill-creator/references/benchmark-optimization-guide.md +86 -0
- package/templates/skills/skill-creator/references/distribution-guide.md +79 -0
- package/templates/skills/skill-creator/references/mcp-skills-integration.md +71 -0
- package/templates/skills/skill-creator/references/metadata-quality-criteria.md +76 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-hosting.md +104 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-overview.md +89 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-schema.md +93 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-sources.md +103 -0
- package/templates/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +76 -0
- package/templates/skills/skill-creator/references/script-quality-criteria.md +106 -0
- package/templates/skills/skill-creator/references/skill-anatomy-and-requirements.md +76 -0
- package/templates/skills/skill-creator/references/skill-creation-workflow.md +95 -0
- package/templates/skills/skill-creator/references/skill-design-patterns.md +75 -0
- package/templates/skills/skill-creator/references/skillmark-benchmark-criteria.md +102 -0
- package/templates/skills/skill-creator/references/structure-organization-criteria.md +114 -0
- package/templates/skills/skill-creator/references/testing-and-iteration.md +78 -0
- package/templates/skills/skill-creator/references/token-efficiency-criteria.md +74 -0
- package/templates/skills/skill-creator/references/troubleshooting-guide.md +80 -0
- package/templates/skills/skill-creator/references/validation-checklist.md +83 -0
- package/templates/skills/skill-creator/references/writing-effective-instructions.md +88 -0
- package/templates/skills/skill-creator/references/yaml-frontmatter-reference.md +91 -0
- package/templates/skills/skill-creator/scripts/debug.zip +0 -0
- package/templates/skills/skill-creator/scripts/encoding_utils.py +36 -0
- package/templates/skills/skill-creator/scripts/init_skill.py +9 -4
- package/templates/skills/skill-creator/scripts/package_skill.py +5 -0
- package/templates/skills/skill-creator/scripts/quick_validate.py +6 -2
- package/templates/skills/tanstack/SKILL.md +141 -0
- package/templates/skills/tanstack/references/tanstack-ai.md +97 -0
- package/templates/skills/tanstack/references/tanstack-form.md +125 -0
- package/templates/skills/tanstack/references/tanstack-start.md +100 -0
- package/templates/skills/team/SKILL.md +285 -0
- package/templates/skills/team/references/agent-teams-controls-and-modes.md +107 -0
- package/templates/skills/team/references/agent-teams-examples-and-best-practices.md +182 -0
- package/templates/skills/team/references/agent-teams-official-docs.md +175 -0
- package/templates/skills/template-skill/SKILL.md +1 -1
- package/templates/skills/test/SKILL.md +109 -0
- package/templates/skills/test/references/report-format.md +58 -0
- package/templates/skills/test/references/test-execution-workflow.md +103 -0
- package/templates/skills/test/references/ui-testing-workflow.md +65 -0
- package/templates/skills/threejs/SKILL.md +106 -53
- package/templates/skills/threejs/data/api-reference.csv +61 -0
- package/templates/skills/threejs/data/categories.csv +14 -0
- package/templates/skills/threejs/data/examples-all.csv +557 -0
- package/templates/skills/threejs/data/use-cases.csv +21 -0
- package/templates/skills/threejs/references/00-fundamentals.md +487 -0
- package/templates/skills/threejs/references/11-materials-advanced.md +1 -1
- package/templates/skills/threejs/references/11-materials.md +519 -0
- package/templates/skills/threejs/references/17-shader.md +641 -0
- package/templates/skills/threejs/references/18-geometry.md +547 -0
- package/templates/skills/threejs/scripts/core.py +236 -0
- package/templates/skills/threejs/scripts/extract_examples.py +688 -0
- package/templates/skills/threejs/scripts/generate_csv_from_json.py +135 -0
- package/templates/skills/threejs/scripts/search.py +77 -0
- package/templates/skills/ui-styling/SKILL.md +3 -2
- package/templates/skills/ui-styling/scripts/shadcn_add.py +0 -0
- package/templates/skills/ui-styling/scripts/tailwind_config_gen.py +1 -1
- package/templates/skills/ui-ux-pro-max/SKILL.md +69 -32
- package/templates/skills/ui-ux-pro-max/data/charts.csv +25 -25
- package/templates/skills/ui-ux-pro-max/data/colors.csv +96 -96
- package/templates/skills/ui-ux-pro-max/data/landing.csv +30 -30
- package/templates/skills/ui-ux-pro-max/data/products.csv +96 -96
- package/templates/skills/ui-ux-pro-max/data/prompts.csv +20 -20
- package/templates/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/templates/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/templates/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/templates/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/templates/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/templates/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/templates/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/templates/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/templates/skills/ui-ux-pro-max/data/styles.csv +58 -58
- package/templates/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/templates/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/templates/skills/ui-ux-pro-max/scripts/design_system.py +494 -0
- package/templates/skills/ui-ux-pro-max/scripts/search.py +84 -61
- package/templates/skills/use-mcp/SKILL.md +42 -0
- package/templates/skills/watzup/SKILL.md +12 -0
- package/templates/skills/web-design-guidelines/SKILL.md +36 -0
- package/templates/skills/web-frameworks/SKILL.md +4 -3
- package/templates/skills/web-frameworks/scripts/nextjs_init.py +13 -13
- package/templates/skills/web-frameworks/scripts/turborepo_migrate.py +0 -0
- package/templates/skills/web-testing/SKILL.md +97 -0
- package/templates/skills/web-testing/references/accessibility-testing.md +84 -0
- package/templates/skills/web-testing/references/api-testing.md +78 -0
- package/templates/skills/web-testing/references/ci-cd-testing-workflows.md +121 -0
- package/templates/skills/web-testing/references/component-testing.md +94 -0
- package/templates/skills/web-testing/references/contract-testing.md +146 -0
- package/templates/skills/web-testing/references/cross-browser-checklist.md +72 -0
- package/templates/skills/web-testing/references/database-testing.md +139 -0
- package/templates/skills/web-testing/references/e2e-testing-playwright.md +119 -0
- package/templates/skills/web-testing/references/functional-testing-checklist.md +88 -0
- package/templates/skills/web-testing/references/interactive-testing-patterns.md +89 -0
- package/templates/skills/web-testing/references/load-testing-k6.md +93 -0
- package/templates/skills/web-testing/references/mobile-gesture-testing.md +85 -0
- package/templates/skills/web-testing/references/performance-core-web-vitals.md +124 -0
- package/templates/skills/web-testing/references/playwright-component-testing.md +115 -0
- package/templates/skills/web-testing/references/pre-release-checklist.md +75 -0
- package/templates/skills/web-testing/references/security-checklists.md +81 -0
- package/templates/skills/web-testing/references/security-testing-overview.md +92 -0
- package/templates/skills/web-testing/references/shadow-dom-testing.md +70 -0
- package/templates/skills/web-testing/references/test-data-management.md +131 -0
- package/templates/skills/web-testing/references/test-flakiness-mitigation.md +86 -0
- package/templates/skills/web-testing/references/testing-pyramid-strategy.md +76 -0
- package/templates/skills/web-testing/references/unit-integration-testing.md +138 -0
- package/templates/skills/web-testing/references/visual-regression.md +92 -0
- package/templates/skills/web-testing/references/vulnerability-payloads.md +93 -0
- package/templates/skills/web-testing/scripts/analyze-test-results.js +280 -0
- package/templates/skills/web-testing/scripts/init-playwright.js +233 -0
- package/templates/skills/worktree/SKILL.md +96 -0
- package/templates/skills/worktree/scripts/worktree.cjs +916 -0
- package/templates/skills/worktree/scripts/worktree.test.cjs +792 -0
- package/templates/statusline.cjs +477 -244
- package/templates/statusline.ps1 +0 -1
- package/templates/statusline.sh +0 -1
- package/templates/agents/README.md +0 -172
- package/templates/agents/copywriter.md +0 -113
- package/templates/agents/database-admin.md +0 -97
- package/templates/agents/scout-external.md +0 -146
- package/templates/agents/scout.md +0 -260
- package/templates/commands/README.md +0 -251
- package/templates/commands/bootstrap/auto/fast.md +0 -111
- package/templates/commands/bootstrap/auto/parallel.md +0 -66
- package/templates/commands/bootstrap/auto.md +0 -115
- package/templates/commands/bootstrap.md +0 -137
- package/templates/commands/build.md +0 -39
- package/templates/commands/checkpoint.md +0 -156
- package/templates/commands/code/auto.md +0 -170
- package/templates/commands/code/no-test.md +0 -158
- package/templates/commands/code/parallel.md +0 -55
- package/templates/commands/code-simplifier.md +0 -71
- package/templates/commands/code.md +0 -176
- package/templates/commands/compact.md +0 -57
- package/templates/commands/content/cro.md +0 -43
- package/templates/commands/content/enhance.md +0 -14
- package/templates/commands/content/fast.md +0 -13
- package/templates/commands/content/good.md +0 -16
- package/templates/commands/context.md +0 -48
- package/templates/commands/cook/auto/fast.md +0 -26
- package/templates/commands/cook/auto/parallel.md +0 -49
- package/templates/commands/cook/auto.md +0 -15
- package/templates/commands/cook/fast.md +0 -47
- package/templates/commands/cook/hard.md +0 -80
- package/templates/commands/cook/parallel.md +0 -90
- package/templates/commands/cook.md +0 -105
- package/templates/commands/create-feature.md +0 -48
- package/templates/commands/db-migrate.md +0 -52
- package/templates/commands/debug.md +0 -13
- package/templates/commands/design/3d.md +0 -83
- package/templates/commands/design/describe.md +0 -23
- package/templates/commands/design/fast.md +0 -31
- package/templates/commands/design/good.md +0 -35
- package/templates/commands/design/screenshot.md +0 -34
- package/templates/commands/design/video.md +0 -34
- package/templates/commands/docs/init.md +0 -39
- package/templates/commands/docs/summarize.md +0 -31
- package/templates/commands/docs/update.md +0 -57
- package/templates/commands/feature.md +0 -62
- package/templates/commands/fix/ci.md +0 -17
- package/templates/commands/fix/fast.md +0 -19
- package/templates/commands/fix/hard.md +0 -39
- package/templates/commands/fix/logs.md +0 -26
- package/templates/commands/fix/parallel.md +0 -54
- package/templates/commands/fix/test.md +0 -20
- package/templates/commands/fix/types.md +0 -9
- package/templates/commands/fix/ui.md +0 -48
- package/templates/commands/fix-issue.md +0 -177
- package/templates/commands/fix.md +0 -43
- package/templates/commands/generate-dto.md +0 -67
- package/templates/commands/git/cm.md +0 -5
- package/templates/commands/git/cp.md +0 -4
- package/templates/commands/git/merge.md +0 -40
- package/templates/commands/git/pr.md +0 -48
- package/templates/commands/integrate/polar.md +0 -28
- package/templates/commands/integrate/sepay.md +0 -28
- package/templates/commands/investigate.md +0 -324
- package/templates/commands/lint.md +0 -47
- package/templates/commands/migration.md +0 -111
- package/templates/commands/performance.md +0 -110
- package/templates/commands/plan/ci.md +0 -33
- package/templates/commands/plan/cro.md +0 -69
- package/templates/commands/plan/fast.md +0 -86
- package/templates/commands/plan/hard.md +0 -103
- package/templates/commands/plan/parallel.md +0 -152
- package/templates/commands/plan/preview.md +0 -40
- package/templates/commands/plan/two.md +0 -52
- package/templates/commands/plan/validate.md +0 -132
- package/templates/commands/plan.md +0 -36
- package/templates/commands/pr.md +0 -49
- package/templates/commands/preview.md +0 -87
- package/templates/commands/release-notes.md +0 -144
- package/templates/commands/review/post-task.md +0 -157
- package/templates/commands/review-changes.md +0 -46
- package/templates/commands/review.md +0 -56
- package/templates/commands/scout/ext.md +0 -35
- package/templates/commands/scout.md +0 -283
- package/templates/commands/security.md +0 -119
- package/templates/commands/skill/add.md +0 -36
- package/templates/commands/skill/create.md +0 -29
- package/templates/commands/skill/fix-logs.md +0 -22
- package/templates/commands/skill/optimize/auto.md +0 -25
- package/templates/commands/skill/optimize.md +0 -34
- package/templates/commands/skill/plan.md +0 -45
- package/templates/commands/worktree.md +0 -126
- package/templates/hooks/.python-cache.json +0 -1
- package/templates/hooks/README.md +0 -246
- package/templates/hooks/backend-csharp-context.cjs +0 -223
- package/templates/hooks/design-system-context.cjs +0 -185
- package/templates/hooks/frontend-typescript-context.cjs +0 -233
- package/templates/hooks/lib/ck-paths.cjs +0 -110
- package/templates/hooks/lib/context-tracker.cjs +0 -335
- package/templates/hooks/notify-waiting.js +0 -117
- package/templates/hooks/post-edit-prettier.cjs +0 -189
- package/templates/hooks/post-task-review.cjs +0 -142
- package/templates/hooks/scss-styling-context.cjs +0 -213
- package/templates/hooks/session-end.cjs +0 -35
- package/templates/hooks/tests/test-context-tracker.cjs +0 -454
- package/templates/hooks/tests/test-scout-block.js +0 -163
- package/templates/hooks/workflow-router.cjs +0 -326
- package/templates/hooks/write-compact-marker.cjs +0 -159
- package/templates/memory/session-log.md +0 -186
- package/templates/router/README.md +0 -294
- package/templates/router/agents-guide.md +0 -38
- package/templates/router/commands-guide.md +0 -122
- package/templates/router/decision-flow.md +0 -92
- package/templates/router/skills-guide.md +0 -127
- package/templates/router/workflows-guide.md +0 -68
- package/templates/scripts/__pycache__/win_compat.cpython-312.pyc +0 -0
- package/templates/scripts/plan-preview.cjs +0 -921
- package/templates/skills/arch-cross-service-integration/SKILL.md +0 -48
- package/templates/skills/arch-performance-optimization/SKILL.md +0 -306
- package/templates/skills/arch-security-review/SKILL.md +0 -344
- package/templates/skills/branch-comparison/SKILL.md +0 -150
- package/templates/skills/bug-diagnosis/SKILL.md +0 -309
- package/templates/skills/claude-code/references/advanced-features.md +0 -399
- package/templates/skills/claude-code/references/agent-skills.md +0 -399
- package/templates/skills/claude-code/references/api-reference.md +0 -498
- package/templates/skills/claude-code/references/best-practices.md +0 -447
- package/templates/skills/claude-code/references/cicd-integration.md +0 -428
- package/templates/skills/claude-code/references/common-workflows.md +0 -119
- package/templates/skills/claude-code/references/configuration.md +0 -480
- package/templates/skills/claude-code/references/enterprise-features.md +0 -472
- package/templates/skills/claude-code/references/getting-started.md +0 -252
- package/templates/skills/claude-code/references/hooks-and-plugins.md +0 -444
- package/templates/skills/claude-code/references/hooks-comprehensive.md +0 -622
- package/templates/skills/claude-code/references/ide-integration.md +0 -316
- package/templates/skills/claude-code/references/mcp-integration.md +0 -386
- package/templates/skills/claude-code/references/slash-commands.md +0 -489
- package/templates/skills/claude-code/references/troubleshooting.md +0 -456
- package/templates/skills/claude-code/skill.md +0 -60
- package/templates/skills/debugging/SKILL.md +0 -84
- package/templates/skills/developer-growth-analysis/SKILL.md +0 -322
- package/templates/skills/documentation/SKILL.md +0 -134
- package/templates/skills/domain-name-brainstormer/SKILL.md +0 -212
- package/templates/skills/dual-pass-review/SKILL.md +0 -249
- package/templates/skills/feature-docs/SKILL.md +0 -294
- package/templates/skills/feature-implementation/SKILL.md +0 -262
- package/templates/skills/feature-investigation/SKILL.md +0 -346
- package/templates/skills/frontend-design-pro/SKILL.md +0 -58
- package/templates/skills/package-upgrade/SKILL.md +0 -189
- package/templates/skills/plan-analysis/SKILL.md +0 -191
- package/templates/skills/planning/SKILL.md +0 -115
- package/templates/skills/planning-with-files/SKILL.md +0 -160
- package/templates/skills/planning-with-files/examples.md +0 -202
- package/templates/skills/planning-with-files/reference.md +0 -110
- package/templates/skills/project-index/SKILL.md +0 -97
- package/templates/skills/project-index/scripts/scan-structure.js +0 -417
- package/templates/skills/project-index/scripts/scan_structure.py +0 -450
- package/templates/skills/readme-improvement/SKILL.md +0 -177
- package/templates/skills/skill-share/SKILL.md +0 -80
- package/templates/skills/tasks-code-review/SKILL.md +0 -298
- package/templates/skills/tasks-documentation/SKILL.md +0 -328
- package/templates/skills/tasks-spec-update/SKILL.md +0 -318
- package/templates/skills/tasks-test-generation/SKILL.md +0 -433
- package/templates/skills/test-generation/SKILL.md +0 -203
- package/templates/skills/webapp-testing/LICENSE.txt +0 -202
- package/templates/skills/webapp-testing/SKILL.md +0 -96
- package/templates/skills/webapp-testing/examples/console_logging.py +0 -35
- package/templates/skills/webapp-testing/examples/element_discovery.py +0 -40
- package/templates/skills/webapp-testing/examples/static_html_automation.py +0 -33
- package/templates/skills/webapp-testing/scripts/with_server.py +0 -106
- package/templates/workflows/README.md +0 -241
- package/templates/workflows/orchestration-protocol.md +0 -16
- /package/templates/{commands → command-archive}/coding-level.md +0 -0
- /package/templates/{commands → command-archive}/review/codebase.md +0 -0
- /package/templates/{commands → command-archive}/test.md +0 -0
- /package/templates/{commands → command-archive}/watzup.md +0 -0
- /package/templates/hooks/scout-block/vendor/{ignore.js → ignore.cjs} +0 -0
- /package/templates/{workflows → rules}/documentation-management.md +0 -0
- /package/templates/skills/{debugging → debug}/references/defense-in-depth.md +0 -0
- /package/templates/skills/{debugging → debug}/references/root-cause-tracing.md +0 -0
- /package/templates/skills/{debugging → debug}/references/systematic-debugging.md +0 -0
- /package/templates/skills/{debugging → debug}/references/verification.md +0 -0
- /package/templates/skills/{debugging → debug}/scripts/find-polluter.sh +0 -0
- /package/templates/skills/{debugging → debug}/scripts/find-polluter.test.md +0 -0
- /package/templates/skills/{planning → plan}/references/solution-design.md +0 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# PostgreSQL Rules
|
|
2
|
+
|
|
3
|
+
Guidelines for designing schemas specific to PostgreSQL.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Data Types
|
|
8
|
+
|
|
9
|
+
| Use case | Type | Notes |
|
|
10
|
+
|----------|------|-------|
|
|
11
|
+
| Primary key | `BIGSERIAL` | Auto-increment BIGINT |
|
|
12
|
+
| Primary key (small) | `SERIAL` | Auto-increment INT |
|
|
13
|
+
| Foreign key | Match with PK type | |
|
|
14
|
+
| Money/Price | `NUMERIC(18,2)` | Precise |
|
|
15
|
+
| Boolean | `BOOLEAN` | TRUE/FALSE/NULL |
|
|
16
|
+
| Short text | `VARCHAR(n)` or `TEXT` | TEXT has no limit |
|
|
17
|
+
| JSON | `JSONB` | **Queryable**, prefer over JSON |
|
|
18
|
+
| Timestamp | `TIMESTAMPTZ` | **Always use with timezone** |
|
|
19
|
+
| Date | `DATE` | |
|
|
20
|
+
| UUID | `UUID` | Native type |
|
|
21
|
+
| Array | `TEXT[]`, `INT[]` | |
|
|
22
|
+
| IP Address | `INET` | |
|
|
23
|
+
|
|
24
|
+
### TIMESTAMPTZ vs TIMESTAMP
|
|
25
|
+
**IMPORTANT**: Always use `TIMESTAMPTZ` to avoid timezone issues.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Comments (NO metadata tables needed)
|
|
30
|
+
|
|
31
|
+
PostgreSQL supports `COMMENT ON`:
|
|
32
|
+
|
|
33
|
+
### Table comment
|
|
34
|
+
```sql
|
|
35
|
+
COMMENT ON TABLE orders IS 'Table storing customer orders';
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Column comments
|
|
39
|
+
```sql
|
|
40
|
+
COMMENT ON COLUMN orders.id IS 'Primary key, auto increment';
|
|
41
|
+
COMMENT ON COLUMN orders.order_number IS 'Unique order code, format: ORD-YYYYMMDD-XXXXX';
|
|
42
|
+
COMMENT ON COLUMN orders.status IS 'Status: pending|confirmed|shipped|cancelled';
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Query comments
|
|
46
|
+
```sql
|
|
47
|
+
-- Table comment
|
|
48
|
+
SELECT obj_description('orders'::regclass);
|
|
49
|
+
|
|
50
|
+
-- Column comments
|
|
51
|
+
SELECT
|
|
52
|
+
c.column_name,
|
|
53
|
+
pgd.description
|
|
54
|
+
FROM information_schema.columns c
|
|
55
|
+
LEFT JOIN pg_catalog.pg_statio_all_tables st
|
|
56
|
+
ON c.table_schema = st.schemaname AND c.table_name = st.relname
|
|
57
|
+
LEFT JOIN pg_catalog.pg_description pgd
|
|
58
|
+
ON pgd.objoid = st.relid AND pgd.objsubid = c.ordinal_position
|
|
59
|
+
WHERE c.table_name = 'orders';
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Index Types
|
|
65
|
+
|
|
66
|
+
### B-Tree (default)
|
|
67
|
+
```sql
|
|
68
|
+
CREATE INDEX idx_orders_status ON orders(status);
|
|
69
|
+
CREATE INDEX idx_orders_user_status_created ON orders(user_id, status, created_at DESC);
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Partial Index (very useful)
|
|
73
|
+
```sql
|
|
74
|
+
-- Only index non-deleted records
|
|
75
|
+
CREATE INDEX idx_orders_active ON orders(user_id, status)
|
|
76
|
+
WHERE deleted_at IS NULL;
|
|
77
|
+
|
|
78
|
+
-- Only index pending orders
|
|
79
|
+
CREATE INDEX idx_orders_pending ON orders(created_at)
|
|
80
|
+
WHERE status = 'pending';
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### GIN (for JSONB, Arrays, Full-text)
|
|
84
|
+
```sql
|
|
85
|
+
CREATE INDEX idx_orders_metadata ON orders USING GIN(metadata);
|
|
86
|
+
CREATE INDEX idx_products_tags ON products USING GIN(tags);
|
|
87
|
+
|
|
88
|
+
-- Full-text search
|
|
89
|
+
CREATE INDEX idx_products_search ON products
|
|
90
|
+
USING GIN(to_tsvector('english', name || ' ' || description));
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### BRIN (for large tables with ordered data)
|
|
94
|
+
```sql
|
|
95
|
+
CREATE INDEX idx_logs_created ON logs USING BRIN(created_at);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Sequences (Auto Increment)
|
|
101
|
+
|
|
102
|
+
```sql
|
|
103
|
+
-- SERIAL/BIGSERIAL auto-creates sequence
|
|
104
|
+
CREATE TABLE users (id BIGSERIAL PRIMARY KEY);
|
|
105
|
+
|
|
106
|
+
-- Identity columns (PostgreSQL 10+)
|
|
107
|
+
CREATE TABLE users (
|
|
108
|
+
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
-- Custom sequence
|
|
112
|
+
CREATE SEQUENCE order_number_seq START 1000;
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Auto update timestamp (requires trigger)
|
|
118
|
+
|
|
119
|
+
PostgreSQL **does not have** `ON UPDATE CURRENT_TIMESTAMP`. Need to create trigger:
|
|
120
|
+
|
|
121
|
+
```sql
|
|
122
|
+
-- Function
|
|
123
|
+
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
124
|
+
RETURNS TRIGGER AS $$
|
|
125
|
+
BEGIN
|
|
126
|
+
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
127
|
+
RETURN NEW;
|
|
128
|
+
END;
|
|
129
|
+
$$ LANGUAGE plpgsql;
|
|
130
|
+
|
|
131
|
+
-- Apply to table
|
|
132
|
+
CREATE TRIGGER trg_orders_updated_at
|
|
133
|
+
BEFORE UPDATE ON orders
|
|
134
|
+
FOR EACH ROW
|
|
135
|
+
EXECUTE FUNCTION update_updated_at_column();
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## ENUM Type
|
|
141
|
+
|
|
142
|
+
```sql
|
|
143
|
+
-- Create enum type
|
|
144
|
+
CREATE TYPE order_status AS ENUM (
|
|
145
|
+
'pending', 'confirmed', 'shipped', 'cancelled', 'completed'
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
-- Use in table
|
|
149
|
+
CREATE TABLE orders (
|
|
150
|
+
status order_status NOT NULL DEFAULT 'pending'
|
|
151
|
+
);
|
|
152
|
+
|
|
153
|
+
-- Add new value
|
|
154
|
+
ALTER TYPE order_status ADD VALUE 'refunded' AFTER 'completed';
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Note:** Cannot remove values from ENUM.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Partitioning
|
|
162
|
+
|
|
163
|
+
### Range partitioning
|
|
164
|
+
```sql
|
|
165
|
+
CREATE TABLE fact_orders (
|
|
166
|
+
id BIGSERIAL,
|
|
167
|
+
order_date DATE NOT NULL,
|
|
168
|
+
...
|
|
169
|
+
) PARTITION BY RANGE (order_date);
|
|
170
|
+
|
|
171
|
+
CREATE TABLE fact_orders_2024 PARTITION OF fact_orders
|
|
172
|
+
FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');
|
|
173
|
+
|
|
174
|
+
CREATE TABLE fact_orders_default PARTITION OF fact_orders DEFAULT;
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Hash partitioning
|
|
178
|
+
```sql
|
|
179
|
+
CREATE TABLE logs PARTITION BY HASH (user_id);
|
|
180
|
+
CREATE TABLE logs_0 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 0);
|
|
181
|
+
CREATE TABLE logs_1 PARTITION OF logs FOR VALUES WITH (MODULUS 4, REMAINDER 1);
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Example DDL
|
|
187
|
+
|
|
188
|
+
```sql
|
|
189
|
+
-- Create enum
|
|
190
|
+
CREATE TYPE order_status AS ENUM ('pending', 'confirmed', 'shipped', 'cancelled');
|
|
191
|
+
|
|
192
|
+
-- Create table
|
|
193
|
+
CREATE TABLE orders (
|
|
194
|
+
id BIGSERIAL PRIMARY KEY,
|
|
195
|
+
order_number VARCHAR(50) NOT NULL,
|
|
196
|
+
user_id BIGINT NOT NULL,
|
|
197
|
+
status order_status NOT NULL DEFAULT 'pending',
|
|
198
|
+
subtotal NUMERIC(18,2) NOT NULL DEFAULT 0,
|
|
199
|
+
discount_amount NUMERIC(18,2) NOT NULL DEFAULT 0,
|
|
200
|
+
total_amount NUMERIC(18,2) NOT NULL DEFAULT 0,
|
|
201
|
+
metadata JSONB DEFAULT '{}',
|
|
202
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
203
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
204
|
+
|
|
205
|
+
CONSTRAINT uk_orders_number UNIQUE (order_number),
|
|
206
|
+
CONSTRAINT fk_orders_user FOREIGN KEY (user_id) REFERENCES users(id)
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
-- Indexes
|
|
210
|
+
CREATE INDEX idx_orders_user ON orders(user_id);
|
|
211
|
+
CREATE INDEX idx_orders_status ON orders(status);
|
|
212
|
+
CREATE INDEX idx_orders_user_status_created ON orders(user_id, status, created_at DESC);
|
|
213
|
+
CREATE INDEX idx_orders_metadata ON orders USING GIN(metadata);
|
|
214
|
+
|
|
215
|
+
-- Comments
|
|
216
|
+
COMMENT ON TABLE orders IS 'Table storing order information';
|
|
217
|
+
COMMENT ON COLUMN orders.order_number IS 'Unique order code';
|
|
218
|
+
COMMENT ON COLUMN orders.status IS 'Order status';
|
|
219
|
+
|
|
220
|
+
-- Trigger for updated_at
|
|
221
|
+
CREATE TRIGGER trg_orders_updated_at
|
|
222
|
+
BEFORE UPDATE ON orders
|
|
223
|
+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Checklist
|
|
229
|
+
|
|
230
|
+
- [ ] Use `TIMESTAMPTZ` instead of `TIMESTAMP`
|
|
231
|
+
- [ ] Use `JSONB` instead of `JSON`
|
|
232
|
+
- [ ] `COMMENT ON` for tables and columns
|
|
233
|
+
- [ ] Trigger for `updated_at`
|
|
234
|
+
- [ ] Partial indexes for soft delete / filtered queries
|
|
235
|
+
- [ ] GIN index for JSONB columns
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# SQLite Rules
|
|
2
|
+
|
|
3
|
+
Guidelines for designing schemas specific to SQLite.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Data Types
|
|
8
|
+
|
|
9
|
+
SQLite has **dynamic typing**, with only 5 storage classes:
|
|
10
|
+
|
|
11
|
+
| Storage Class | Use case | Notes |
|
|
12
|
+
|---------------|----------|-------|
|
|
13
|
+
| `INTEGER` | PK, FK, counts, booleans | |
|
|
14
|
+
| `REAL` | Floats, decimals | |
|
|
15
|
+
| `TEXT` | Strings, dates, JSON, enums | |
|
|
16
|
+
| `BLOB` | Binary data | |
|
|
17
|
+
| `NULL` | Null values | |
|
|
18
|
+
|
|
19
|
+
### Type affinity
|
|
20
|
+
SQLite does not strictly enforce types. Type declaration is just a "hint":
|
|
21
|
+
```sql
|
|
22
|
+
-- All of these will be stored
|
|
23
|
+
CREATE TABLE test (price REAL);
|
|
24
|
+
INSERT INTO test VALUES (100); -- Stored as INTEGER
|
|
25
|
+
INSERT INTO test VALUES (99.99); -- Stored as REAL
|
|
26
|
+
INSERT INTO test VALUES ('free'); -- Stored as TEXT (!)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Date/Time
|
|
30
|
+
SQLite **does not have** DATE/TIME type. Store as TEXT with ISO format:
|
|
31
|
+
```sql
|
|
32
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
33
|
+
-- Format: YYYY-MM-DD HH:MM:SS
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Metadata Tables (REQUIRED)
|
|
39
|
+
|
|
40
|
+
SQLite **does not support comments** on tables and columns. Need to create metadata tables:
|
|
41
|
+
|
|
42
|
+
### Create metadata tables
|
|
43
|
+
|
|
44
|
+
```sql
|
|
45
|
+
CREATE TABLE IF NOT EXISTS metadata_tables (
|
|
46
|
+
table_name TEXT PRIMARY KEY,
|
|
47
|
+
description TEXT NOT NULL,
|
|
48
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
49
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
CREATE TABLE IF NOT EXISTS metadata_columns (
|
|
53
|
+
table_name TEXT NOT NULL,
|
|
54
|
+
column_name TEXT NOT NULL,
|
|
55
|
+
description TEXT NOT NULL,
|
|
56
|
+
data_type TEXT,
|
|
57
|
+
is_nullable INTEGER DEFAULT 1, -- 0=NOT NULL, 1=NULL
|
|
58
|
+
default_value TEXT,
|
|
59
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
60
|
+
PRIMARY KEY (table_name, column_name),
|
|
61
|
+
FOREIGN KEY (table_name) REFERENCES metadata_tables(table_name) ON DELETE CASCADE
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
CREATE INDEX idx_metadata_columns_table ON metadata_columns(table_name);
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Insert metadata after creating table
|
|
68
|
+
|
|
69
|
+
```sql
|
|
70
|
+
-- Table metadata
|
|
71
|
+
INSERT INTO metadata_tables (table_name, description)
|
|
72
|
+
VALUES ('orders', 'Table storing customer order information');
|
|
73
|
+
|
|
74
|
+
-- Column metadata
|
|
75
|
+
INSERT INTO metadata_columns (table_name, column_name, description, data_type, is_nullable)
|
|
76
|
+
VALUES
|
|
77
|
+
('orders', 'id', 'Primary key, auto increment', 'INTEGER', 0),
|
|
78
|
+
('orders', 'order_number', 'Unique order code', 'TEXT', 0),
|
|
79
|
+
('orders', 'user_id', 'FK to users.id', 'INTEGER', 0),
|
|
80
|
+
('orders', 'status', 'pending|confirmed|shipped|cancelled', 'TEXT', 0),
|
|
81
|
+
('orders', 'total_amount', 'Total value', 'REAL', 0);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Query metadata
|
|
85
|
+
|
|
86
|
+
```sql
|
|
87
|
+
-- View schema with descriptions
|
|
88
|
+
SELECT
|
|
89
|
+
t.table_name,
|
|
90
|
+
t.description AS table_description,
|
|
91
|
+
c.column_name,
|
|
92
|
+
c.description AS column_description,
|
|
93
|
+
c.data_type
|
|
94
|
+
FROM metadata_tables t
|
|
95
|
+
LEFT JOIN metadata_columns c ON t.table_name = c.table_name
|
|
96
|
+
ORDER BY t.table_name, c.column_name;
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Auto Increment
|
|
102
|
+
|
|
103
|
+
```sql
|
|
104
|
+
-- Option 1: INTEGER PRIMARY KEY (recommended)
|
|
105
|
+
-- SQLite auto-increments INTEGER PRIMARY KEY automatically
|
|
106
|
+
CREATE TABLE users (
|
|
107
|
+
id INTEGER PRIMARY KEY,
|
|
108
|
+
name TEXT
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
-- Option 2: AUTOINCREMENT keyword
|
|
112
|
+
-- Ensures deleted IDs are not reused (slower)
|
|
113
|
+
CREATE TABLE users (
|
|
114
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
115
|
+
name TEXT
|
|
116
|
+
);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Foreign Keys
|
|
122
|
+
|
|
123
|
+
**IMPORTANT**: FK is disabled by default in SQLite!
|
|
124
|
+
|
|
125
|
+
```sql
|
|
126
|
+
-- Enable FK for each connection
|
|
127
|
+
PRAGMA foreign_keys = ON;
|
|
128
|
+
|
|
129
|
+
-- Create table with FK
|
|
130
|
+
CREATE TABLE order_items (
|
|
131
|
+
id INTEGER PRIMARY KEY,
|
|
132
|
+
order_id INTEGER NOT NULL,
|
|
133
|
+
product_id INTEGER NOT NULL,
|
|
134
|
+
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
|
|
135
|
+
FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE RESTRICT
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
-- Create index for FK
|
|
139
|
+
CREATE INDEX idx_order_items_order ON order_items(order_id);
|
|
140
|
+
CREATE INDEX idx_order_items_product ON order_items(product_id);
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## ENUM substitute
|
|
146
|
+
|
|
147
|
+
SQLite does not have ENUM. Use CHECK constraint:
|
|
148
|
+
|
|
149
|
+
```sql
|
|
150
|
+
CREATE TABLE orders (
|
|
151
|
+
status TEXT NOT NULL DEFAULT 'pending'
|
|
152
|
+
CHECK (status IN ('pending', 'confirmed', 'shipped', 'cancelled'))
|
|
153
|
+
);
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Index Types
|
|
159
|
+
|
|
160
|
+
SQLite only supports B-Tree indexes:
|
|
161
|
+
|
|
162
|
+
```sql
|
|
163
|
+
-- Standard index
|
|
164
|
+
CREATE INDEX idx_orders_status ON orders(status);
|
|
165
|
+
|
|
166
|
+
-- Composite index
|
|
167
|
+
CREATE INDEX idx_orders_user_status ON orders(user_id, status);
|
|
168
|
+
|
|
169
|
+
-- Unique index
|
|
170
|
+
CREATE UNIQUE INDEX idx_orders_number ON orders(order_number);
|
|
171
|
+
|
|
172
|
+
-- Partial index (SQLite 3.8.0+)
|
|
173
|
+
CREATE INDEX idx_orders_active ON orders(user_id)
|
|
174
|
+
WHERE deleted_at IS NULL;
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Limitations
|
|
180
|
+
|
|
181
|
+
| Feature | Status | Workaround |
|
|
182
|
+
|---------|--------|------------|
|
|
183
|
+
| `ALTER COLUMN` | ❌ Not supported | Recreate table |
|
|
184
|
+
| `DROP COLUMN` | ✅ SQLite 3.35+ | Recreate table (older) |
|
|
185
|
+
| Comments | ❌ Not supported | Metadata tables |
|
|
186
|
+
| ENUM | ❌ Not supported | CHECK constraint |
|
|
187
|
+
| Stored procedures | ❌ Not supported | App logic |
|
|
188
|
+
| Concurrent writes | ⚠️ Limited | Single writer |
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Example DDL
|
|
193
|
+
|
|
194
|
+
```sql
|
|
195
|
+
-- Enable foreign keys
|
|
196
|
+
PRAGMA foreign_keys = ON;
|
|
197
|
+
|
|
198
|
+
-- Create table
|
|
199
|
+
CREATE TABLE orders (
|
|
200
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
201
|
+
order_number TEXT NOT NULL,
|
|
202
|
+
user_id INTEGER NOT NULL,
|
|
203
|
+
status TEXT NOT NULL DEFAULT 'pending'
|
|
204
|
+
CHECK (status IN ('pending', 'confirmed', 'shipped', 'cancelled')),
|
|
205
|
+
subtotal REAL NOT NULL DEFAULT 0,
|
|
206
|
+
discount_amount REAL NOT NULL DEFAULT 0,
|
|
207
|
+
total_amount REAL NOT NULL DEFAULT 0,
|
|
208
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
209
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
210
|
+
deleted_at TEXT,
|
|
211
|
+
|
|
212
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE RESTRICT
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
-- Indexes
|
|
216
|
+
CREATE UNIQUE INDEX idx_orders_number ON orders(order_number);
|
|
217
|
+
CREATE INDEX idx_orders_user ON orders(user_id);
|
|
218
|
+
CREATE INDEX idx_orders_status ON orders(status);
|
|
219
|
+
CREATE INDEX idx_orders_updated ON orders(updated_at);
|
|
220
|
+
|
|
221
|
+
-- Metadata
|
|
222
|
+
INSERT INTO metadata_tables (table_name, description)
|
|
223
|
+
VALUES ('orders', 'Table storing order information');
|
|
224
|
+
|
|
225
|
+
INSERT INTO metadata_columns (table_name, column_name, description, data_type, is_nullable)
|
|
226
|
+
VALUES
|
|
227
|
+
('orders', 'id', 'Primary key', 'INTEGER', 0),
|
|
228
|
+
('orders', 'order_number', 'Unique order code', 'TEXT', 0),
|
|
229
|
+
('orders', 'user_id', 'FK to users.id', 'INTEGER', 0),
|
|
230
|
+
('orders', 'status', 'pending|confirmed|shipped|cancelled', 'TEXT', 0),
|
|
231
|
+
('orders', 'total_amount', 'Total payment', 'REAL', 0);
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Checklist
|
|
237
|
+
|
|
238
|
+
- [ ] `PRAGMA foreign_keys = ON` at start of each connection
|
|
239
|
+
- [ ] Metadata tables created
|
|
240
|
+
- [ ] INSERT metadata after each CREATE TABLE
|
|
241
|
+
- [ ] Use `TEXT` for dates (ISO format: YYYY-MM-DD HH:MM:SS)
|
|
242
|
+
- [ ] CHECK constraint instead of ENUM
|
|
243
|
+
- [ ] Index for FK columns
|
|
244
|
+
- [ ] Update metadata when ALTER/DROP table
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Transactional (OLTP) Rules
|
|
2
|
+
|
|
3
|
+
> **Note:** Core naming conventions, workflow, and checklist are in `SKILL.md` or `db-design.md` (always loaded).
|
|
4
|
+
|
|
5
|
+
Guidelines for designing schemas for day-to-day business operations.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Normalization Principles
|
|
10
|
+
|
|
11
|
+
### Prefer 3NF (Third Normal Form)
|
|
12
|
+
|
|
13
|
+
- Each table represents one clear entity/relationship
|
|
14
|
+
- No repeating information that can be referenced (use FK)
|
|
15
|
+
- Clear separation:
|
|
16
|
+
- `orders` (header) vs `order_items` (line items)
|
|
17
|
+
- `products` vs `product_variants`, `product_prices`
|
|
18
|
+
|
|
19
|
+
### Foreign Key Constraints
|
|
20
|
+
|
|
21
|
+
Use FK with appropriate ON DELETE / ON UPDATE:
|
|
22
|
+
|
|
23
|
+
```sql
|
|
24
|
+
-- Cascade: delete order → delete order_items
|
|
25
|
+
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE
|
|
26
|
+
|
|
27
|
+
-- Restrict: cannot delete user if orders exist
|
|
28
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE RESTRICT
|
|
29
|
+
|
|
30
|
+
-- Set null: delete category → product.category_id = NULL
|
|
31
|
+
FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Indexing Rules
|
|
37
|
+
|
|
38
|
+
### 1. Primary Key
|
|
39
|
+
- Usually `BIGINT` auto-increment or UUID
|
|
40
|
+
- Format: `PRIMARY KEY (id)`
|
|
41
|
+
|
|
42
|
+
### 2. Foreign Key Indexes
|
|
43
|
+
**IMPORTANT**: Create indexes for ALL foreign keys for efficient JOINs:
|
|
44
|
+
```sql
|
|
45
|
+
CREATE INDEX idx_orders_user_id ON orders(user_id);
|
|
46
|
+
CREATE INDEX idx_order_items_order_id ON order_items(order_id);
|
|
47
|
+
CREATE INDEX idx_order_items_product_id ON order_items(product_id);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 3. Frequently Filtered Columns
|
|
51
|
+
Index columns commonly used in WHERE:
|
|
52
|
+
- `status`, `created_at`, `updated_at`
|
|
53
|
+
- Code/reference columns: `order_number`, `sku`
|
|
54
|
+
|
|
55
|
+
### 4. Composite Indexes
|
|
56
|
+
Based on actual query patterns:
|
|
57
|
+
```sql
|
|
58
|
+
-- Query: WHERE user_id = ? AND status = ? ORDER BY created_at DESC
|
|
59
|
+
CREATE INDEX idx_orders_user_status_created ON orders(user_id, status, created_at DESC);
|
|
60
|
+
|
|
61
|
+
-- Query: WHERE store_id = ? AND created_at BETWEEN ...
|
|
62
|
+
CREATE INDEX idx_orders_store_created ON orders(store_id, created_at);
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Composite index rules:**
|
|
66
|
+
- Put columns with **high selectivity** (fewer duplicate values) first
|
|
67
|
+
- Avoid duplicate/redundant indexes
|
|
68
|
+
- Index should cover WHERE + ORDER BY of query
|
|
69
|
+
|
|
70
|
+
### 5. Unique Constraints
|
|
71
|
+
```sql
|
|
72
|
+
UNIQUE (order_number)
|
|
73
|
+
UNIQUE (sku)
|
|
74
|
+
UNIQUE (user_id, email) -- compound unique
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Soft Delete Pattern
|
|
80
|
+
|
|
81
|
+
When you need to keep deleted data instead of permanently deleting:
|
|
82
|
+
|
|
83
|
+
```sql
|
|
84
|
+
-- Add deleted_at column
|
|
85
|
+
deleted_at TIMESTAMP NULL
|
|
86
|
+
|
|
87
|
+
-- Partial index for non-deleted records (PostgreSQL)
|
|
88
|
+
CREATE INDEX idx_orders_active ON orders(user_id, status)
|
|
89
|
+
WHERE deleted_at IS NULL;
|
|
90
|
+
|
|
91
|
+
-- Query only active records
|
|
92
|
+
SELECT * FROM orders WHERE deleted_at IS NULL;
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Anti-patterns to Avoid
|
|
98
|
+
|
|
99
|
+
### Missing FK Index
|
|
100
|
+
```sql
|
|
101
|
+
-- ❌ BAD: FK without index → slow JOINs
|
|
102
|
+
FOREIGN KEY (user_id) REFERENCES users(id)
|
|
103
|
+
-- Forgot CREATE INDEX
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Over-indexing
|
|
107
|
+
```sql
|
|
108
|
+
-- ❌ BAD: Indexing each column separately
|
|
109
|
+
CREATE INDEX idx_a ON orders(user_id);
|
|
110
|
+
CREATE INDEX idx_b ON orders(status);
|
|
111
|
+
CREATE INDEX idx_c ON orders(created_at);
|
|
112
|
+
|
|
113
|
+
-- ✅ GOOD: Composite index based on query pattern
|
|
114
|
+
CREATE INDEX idx_orders_user_status_created ON orders(user_id, status, created_at DESC);
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Using TEXT instead of ENUM
|
|
118
|
+
```sql
|
|
119
|
+
-- ❌ BAD: Cannot validate values
|
|
120
|
+
status TEXT
|
|
121
|
+
|
|
122
|
+
-- ✅ GOOD: Use ENUM or CHECK
|
|
123
|
+
status ENUM('pending', 'confirmed', 'shipped', 'cancelled')
|
|
124
|
+
-- or
|
|
125
|
+
status VARCHAR(32) CHECK (status IN ('pending', 'confirmed', 'shipped'))
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Missing Audit Columns
|
|
129
|
+
```sql
|
|
130
|
+
-- ❌ BAD
|
|
131
|
+
CREATE TABLE products (id INT, name VARCHAR(255));
|
|
132
|
+
|
|
133
|
+
-- ✅ GOOD
|
|
134
|
+
CREATE TABLE products (
|
|
135
|
+
id INT,
|
|
136
|
+
name VARCHAR(255),
|
|
137
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
138
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
139
|
+
);
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Example DDL
|
|
145
|
+
|
|
146
|
+
```sql
|
|
147
|
+
CREATE TABLE orders (
|
|
148
|
+
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
|
149
|
+
order_number VARCHAR(50) NOT NULL,
|
|
150
|
+
user_id BIGINT NOT NULL,
|
|
151
|
+
status VARCHAR(32) NOT NULL DEFAULT 'pending',
|
|
152
|
+
subtotal DECIMAL(18,2) NOT NULL DEFAULT 0,
|
|
153
|
+
discount_amount DECIMAL(18,2) NOT NULL DEFAULT 0,
|
|
154
|
+
total_amount DECIMAL(18,2) NOT NULL DEFAULT 0,
|
|
155
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
156
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
157
|
+
|
|
158
|
+
UNIQUE (order_number),
|
|
159
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE RESTRICT
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
CREATE INDEX idx_orders_user_id ON orders(user_id);
|
|
163
|
+
CREATE INDEX idx_orders_status ON orders(status);
|
|
164
|
+
CREATE INDEX idx_orders_user_status_created ON orders(user_id, status, created_at DESC);
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Checklist
|
|
170
|
+
|
|
171
|
+
- [ ] Audit columns: `created_at`, `updated_at`
|
|
172
|
+
- [ ] All FKs have indexes
|
|
173
|
+
- [ ] Unique constraints for business keys (`order_number`, `sku`, `email`)
|
|
174
|
+
- [ ] ENUM or CHECK for status/type columns
|
|
175
|
+
- [ ] Composite index based on main query patterns
|
|
176
|
+
- [ ] Soft delete if needed: `deleted_at` + partial index
|