cokit-cli 1.0.1 → 1.0.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/AGENTS.md +103 -0
- package/README.FLOW.md +237 -0
- package/README.md +153 -94
- package/agents/brainstormer.agent.md +71 -0
- package/agents/code-reviewer.agent.md +128 -0
- package/agents/database-admin.agent.md +91 -0
- package/agents/debugger.agent.md +128 -0
- package/agents/docs-manager.agent.md +121 -0
- package/agents/fullstack-developer.agent.md +96 -0
- package/agents/git-manager.agent.md +392 -0
- package/agents/mcp-manager.agent.md +93 -0
- package/agents/planner.agent.md +94 -0
- package/agents/project-manager.agent.md +124 -0
- package/agents/researcher.agent.md +32 -0
- package/agents/scout-external.agent.md +141 -0
- package/agents/scout.agent.md +107 -0
- package/agents/tester.agent.md +106 -0
- package/agents/ui-ux-designer.agent.md +225 -0
- package/collections/ck-core.collection.yml +30 -0
- package/collections/ck-development-rules.collection.yml +18 -0
- package/collections/ck-documentation.collection.yml +18 -0
- package/collections/ck-git-workflow.collection.yml +18 -0
- package/collections/ck-orchestration.collection.yml +22 -0
- package/collections/ck-ui-design.collection.yml +18 -0
- package/docs/README.md +85 -0
- package/docs/copilot-processing-flow.md +128 -0
- package/instructions/ck-backend.instructions.md +48 -0
- package/instructions/ck-development.instructions.md +40 -0
- package/instructions/ck-frontend-design-pro.instructions.md +58 -0
- package/instructions/ck-frontend.instructions.md +44 -0
- package/instructions/ck-google-adk-python.instructions.md +242 -0
- package/instructions/ck-research.instructions.md +167 -0
- package/instructions/ck-testing.instructions.md +36 -0
- package/package.json +9 -2
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-01-restructure-folders.md +183 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-02-convert-agents.md +206 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-03-convert-commands-to-prompts.md +284 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-04-convert-skills-to-instructions.md +349 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-05-create-collections.md +320 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-06-update-cli-build-scripts.md +450 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/phase-07-update-documentation.md +407 -0
- package/plans/260108-0924-rebuild-cokit-awesome-copilot-format/plan.md +136 -0
- package/prompts/ck-ask.prompt.md +57 -0
- package/prompts/ck-bootstrap-auto-fast.prompt.md +108 -0
- package/prompts/ck-bootstrap-auto-parallel.prompt.md +66 -0
- package/prompts/ck-bootstrap-auto.prompt.md +114 -0
- package/prompts/ck-bootstrap.prompt.md +136 -0
- package/prompts/ck-brainstorm.prompt.md +68 -0
- package/prompts/ck-ck-help.prompt.md +114 -0
- package/prompts/ck-code-auto.prompt.md +171 -0
- package/prompts/ck-code-no-test.prompt.md +159 -0
- package/prompts/ck-code-parallel.prompt.md +56 -0
- package/prompts/ck-code.prompt.md +177 -0
- package/prompts/ck-coding-level.prompt.md +54 -0
- package/prompts/ck-cook-auto-fast.prompt.md +26 -0
- package/prompts/ck-cook-auto-parallel.prompt.md +49 -0
- package/prompts/ck-cook-auto.prompt.md +15 -0
- package/prompts/ck-cook.prompt.md +96 -0
- package/prompts/ck-debug.prompt.md +14 -0
- package/prompts/ck-design-3d.prompt.md +84 -0
- package/prompts/ck-design-describe.prompt.md +24 -0
- package/prompts/ck-design-fast.prompt.md +32 -0
- package/prompts/ck-design-good.prompt.md +36 -0
- package/prompts/ck-design-screenshot.prompt.md +35 -0
- package/prompts/ck-design-video.prompt.md +35 -0
- package/prompts/ck-docs-init.prompt.md +27 -0
- package/prompts/ck-docs-summarize.prompt.md +23 -0
- package/prompts/ck-docs-update.prompt.md +36 -0
- package/prompts/ck-fix-ci.prompt.md +18 -0
- package/prompts/ck-fix-fast.prompt.md +18 -0
- package/prompts/ck-fix-hard.prompt.md +36 -0
- package/prompts/ck-fix-logs.prompt.md +27 -0
- package/prompts/ck-fix-parallel.prompt.md +54 -0
- package/prompts/ck-fix-test.prompt.md +19 -0
- package/prompts/ck-fix-types.prompt.md +11 -0
- package/prompts/ck-fix-ui.prompt.md +49 -0
- package/prompts/ck-fix.prompt.md +44 -0
- package/prompts/ck-git-cm.prompt.md +8 -0
- package/prompts/ck-git-cp.prompt.md +7 -0
- package/prompts/ck-git-merge.prompt.md +41 -0
- package/prompts/ck-git-pr.prompt.md +49 -0
- package/prompts/ck-kanban.prompt.md +77 -0
- package/prompts/ck-plan-archive.prompt.md +58 -0
- package/prompts/ck-plan-ci.prompt.md +34 -0
- package/prompts/ck-plan-cro.prompt.md +66 -0
- package/prompts/ck-plan-fast.prompt.md +67 -0
- package/prompts/ck-plan-hard.prompt.md +89 -0
- package/prompts/ck-plan-parallel.prompt.md +126 -0
- package/prompts/ck-plan-two.prompt.md +43 -0
- package/prompts/ck-plan-validate.prompt.md +118 -0
- package/prompts/ck-plan.prompt.md +29 -1
- package/prompts/ck-preview.prompt.md +65 -0
- package/prompts/ck-review-codebase.prompt.md +44 -0
- package/prompts/ck-scout-ext.prompt.md +35 -0
- package/prompts/ck-scout.prompt.md +25 -0
- package/prompts/ck-skill-add.prompt.md +36 -0
- package/prompts/ck-skill-create.prompt.md +29 -0
- package/prompts/ck-skill-fix-logs.prompt.md +22 -0
- package/prompts/ck-skill-optimize-auto.prompt.md +25 -0
- package/prompts/ck-skill-optimize.prompt.md +34 -0
- package/prompts/ck-skill-plan.prompt.md +46 -0
- package/prompts/ck-test-ui.prompt.md +92 -0
- package/prompts/ck-test.prompt.md +10 -0
- package/prompts/ck-use-mcp.prompt.md +27 -0
- package/prompts/ck-watzup.prompt.md +11 -0
- package/prompts/ck-worktree.prompt.md +127 -0
- package/rules/README.agents.md +55 -0
- package/rules/README.collections.md +78 -0
- package/rules/README.copilot-instructions.md +66 -0
- package/rules/README.instructions.md +73 -0
- package/rules/README.md +39 -0
- package/rules/README.prompts.md +76 -0
- package/rules/README.skills.md +71 -0
- package/skills/ck-ai-artist/SKILL.md +73 -0
- package/skills/ck-ai-artist/references/advanced-techniques.md +184 -0
- package/skills/ck-ai-artist/references/domain-code.md +66 -0
- package/skills/ck-ai-artist/references/domain-data.md +72 -0
- package/skills/ck-ai-artist/references/domain-marketing.md +66 -0
- package/skills/ck-ai-artist/references/domain-patterns.md +33 -0
- package/skills/ck-ai-artist/references/domain-writing.md +68 -0
- package/skills/ck-ai-artist/references/image-prompting.md +141 -0
- package/skills/ck-ai-artist/references/llm-prompting.md +165 -0
- package/skills/ck-ai-artist/references/nano-banana.md +59 -0
- package/skills/ck-ai-artist/references/reasoning-techniques.md +201 -0
- package/skills/ck-backend-development/SKILL.md +93 -0
- package/skills/ck-backend-development/references/backend-api-design.md +495 -0
- package/skills/ck-backend-development/references/backend-architecture.md +454 -0
- package/skills/ck-backend-development/references/backend-authentication.md +338 -0
- package/skills/ck-backend-development/references/backend-code-quality.md +659 -0
- package/skills/ck-backend-development/references/backend-debugging.md +904 -0
- package/skills/ck-backend-development/references/backend-devops.md +494 -0
- package/skills/ck-backend-development/references/backend-mindset.md +387 -0
- package/skills/ck-backend-development/references/backend-performance.md +397 -0
- package/skills/ck-backend-development/references/backend-security.md +290 -0
- package/skills/ck-backend-development/references/backend-technologies.md +256 -0
- package/skills/ck-backend-development/references/backend-testing.md +429 -0
- package/skills/ck-better-auth/SKILL.md +202 -0
- package/skills/ck-better-auth/references/advanced-features.md +553 -0
- package/skills/ck-better-auth/references/database-integration.md +577 -0
- package/skills/ck-better-auth/references/email-password-auth.md +416 -0
- package/skills/ck-better-auth/references/oauth-providers.md +430 -0
- package/skills/ck-better-auth/scripts/.coverage +0 -0
- package/skills/ck-better-auth/scripts/better_auth_init.py +521 -0
- package/skills/ck-better-auth/scripts/requirements.txt +15 -0
- package/skills/ck-better-auth/scripts/tests/.coverage +0 -0
- package/skills/ck-better-auth/scripts/tests/test_better_auth_init.py +421 -0
- package/skills/ck-chrome-devtools/SKILL.md +470 -0
- package/skills/ck-chrome-devtools/references/cdp-domains.md +694 -0
- package/skills/ck-chrome-devtools/references/performance-guide.md +940 -0
- package/skills/ck-chrome-devtools/references/puppeteer-reference.md +953 -0
- package/skills/ck-chrome-devtools/scripts/README.md +272 -0
- package/skills/ck-chrome-devtools/scripts/__tests__/selector.test.js +210 -0
- package/skills/ck-chrome-devtools/scripts/aria-snapshot.js +362 -0
- package/skills/ck-chrome-devtools/scripts/click.js +83 -0
- package/skills/ck-chrome-devtools/scripts/console.js +79 -0
- package/skills/ck-chrome-devtools/scripts/evaluate.js +53 -0
- package/skills/ck-chrome-devtools/scripts/fill.js +76 -0
- package/skills/ck-chrome-devtools/scripts/inject-auth.js +229 -0
- package/skills/ck-chrome-devtools/scripts/install-deps.sh +181 -0
- package/skills/ck-chrome-devtools/scripts/install.sh +83 -0
- package/skills/ck-chrome-devtools/scripts/lib/browser.js +318 -0
- package/skills/ck-chrome-devtools/scripts/lib/selector.js +178 -0
- package/skills/ck-chrome-devtools/scripts/navigate.js +54 -0
- package/skills/ck-chrome-devtools/scripts/network.js +106 -0
- package/skills/ck-chrome-devtools/scripts/package-lock.json +1589 -0
- package/skills/ck-chrome-devtools/scripts/package.json +16 -0
- package/skills/ck-chrome-devtools/scripts/performance.js +149 -0
- package/skills/ck-chrome-devtools/scripts/screenshot.js +198 -0
- package/skills/ck-chrome-devtools/scripts/select-ref.js +131 -0
- package/skills/ck-chrome-devtools/scripts/snapshot.js +135 -0
- package/skills/ck-code-review/SKILL.md +110 -53
- package/skills/ck-code-review/references/code-review-reception.md +182 -49
- package/skills/ck-code-review/references/requesting-code-review.md +105 -0
- package/skills/ck-code-review/references/verification-before-completion.md +111 -58
- package/skills/ck-databases/SKILL.md +231 -0
- package/skills/ck-databases/references/mongodb-aggregation.md +447 -0
- package/skills/ck-databases/references/mongodb-atlas.md +465 -0
- package/skills/ck-databases/references/mongodb-crud.md +408 -0
- package/skills/ck-databases/references/mongodb-indexing.md +442 -0
- package/skills/ck-databases/references/postgresql-administration.md +594 -0
- package/skills/ck-databases/references/postgresql-performance.md +527 -0
- package/skills/ck-databases/references/postgresql-psql-cli.md +467 -0
- package/skills/ck-databases/references/postgresql-queries.md +475 -0
- package/skills/ck-databases/scripts/.coverage +0 -0
- package/skills/ck-databases/scripts/db_backup.py +502 -0
- package/skills/ck-databases/scripts/db_migrate.py +425 -0
- package/skills/ck-databases/scripts/db_performance_check.py +456 -0
- package/skills/ck-databases/scripts/requirements.txt +20 -0
- package/skills/ck-databases/scripts/tests/coverage-db.json +1 -0
- package/skills/ck-databases/scripts/tests/requirements.txt +4 -0
- package/skills/ck-databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/ck-databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/ck-databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/ck-debugging/SKILL.md +55 -43
- package/skills/ck-debugging/references/defense-in-depth.md +124 -0
- package/skills/ck-debugging/references/root-cause-tracing.md +100 -43
- package/skills/ck-debugging/references/systematic-debugging.md +80 -52
- package/skills/ck-debugging/references/verification.md +101 -52
- package/skills/ck-debugging/scripts/find-polluter.sh +63 -0
- package/skills/ck-debugging/scripts/find-polluter.test.md +102 -0
- package/skills/ck-devops/.env.example +76 -0
- package/skills/ck-devops/SKILL.md +283 -0
- package/skills/ck-devops/references/browser-rendering.md +305 -0
- package/skills/ck-devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/ck-devops/references/cloudflare-platform.md +271 -0
- package/skills/ck-devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/ck-devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/ck-devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/ck-devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/ck-devops/references/docker-basics.md +297 -0
- package/skills/ck-devops/references/docker-compose.md +292 -0
- package/skills/ck-devops/references/gcloud-platform.md +297 -0
- package/skills/ck-devops/references/gcloud-services.md +304 -0
- package/skills/ck-devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/ck-devops/scripts/docker_optimize.py +331 -0
- package/skills/ck-devops/scripts/requirements.txt +20 -0
- package/skills/ck-devops/scripts/tests/requirements.txt +3 -0
- package/skills/ck-devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/ck-devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/ck-docs-seeker/.env.example +15 -0
- package/skills/ck-docs-seeker/SKILL.md +70 -65
- package/skills/ck-docs-seeker/package.json +25 -0
- package/skills/ck-docs-seeker/references/advanced.md +79 -0
- package/skills/ck-docs-seeker/references/context7-patterns.md +68 -0
- package/skills/ck-docs-seeker/references/errors.md +68 -0
- package/skills/ck-docs-seeker/scripts/analyze-llms-txt.js +211 -0
- package/skills/ck-docs-seeker/scripts/detect-topic.js +172 -0
- package/skills/ck-docs-seeker/scripts/fetch-docs.js +213 -0
- package/skills/ck-docs-seeker/scripts/tests/run-tests.js +72 -0
- package/skills/ck-docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
- package/skills/ck-docs-seeker/scripts/tests/test-detect-topic.js +112 -0
- package/skills/ck-docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
- package/skills/ck-docs-seeker/scripts/utils/env-loader.js +94 -0
- package/skills/ck-docs-seeker/workflows/library-search.md +87 -0
- package/skills/ck-docs-seeker/workflows/repo-analysis.md +91 -0
- package/skills/ck-docs-seeker/workflows/topic-search.md +77 -0
- package/skills/ck-frontend-design/SKILL.md +79 -0
- package/skills/ck-frontend-design/references/analysis-best-practices.md +80 -0
- package/skills/ck-frontend-design/references/analysis-prompts.md +141 -0
- package/skills/ck-frontend-design/references/analysis-techniques.md +118 -0
- package/skills/ck-frontend-design/references/animejs.md +396 -0
- package/skills/ck-frontend-design/references/design-extraction-overview.md +71 -0
- package/skills/ck-frontend-design/references/extraction-best-practices.md +141 -0
- package/skills/ck-frontend-design/references/extraction-output-templates.md +162 -0
- package/skills/ck-frontend-design/references/extraction-prompts.md +127 -0
- package/skills/ck-frontend-design/references/technical-accessibility.md +119 -0
- package/skills/ck-frontend-design/references/technical-best-practices.md +97 -0
- package/skills/ck-frontend-design/references/technical-optimization.md +44 -0
- package/skills/ck-frontend-design/references/technical-overview.md +90 -0
- package/skills/ck-frontend-design/references/technical-workflows.md +150 -0
- package/skills/ck-frontend-design/references/visual-analysis-overview.md +95 -0
- package/skills/ck-frontend-development/SKILL.md +399 -0
- package/skills/ck-frontend-development/resources/common-patterns.md +331 -0
- package/skills/ck-frontend-development/resources/complete-examples.md +872 -0
- package/skills/ck-frontend-development/resources/component-patterns.md +502 -0
- package/skills/ck-frontend-development/resources/data-fetching.md +767 -0
- package/skills/ck-frontend-development/resources/file-organization.md +502 -0
- package/skills/ck-frontend-development/resources/loading-and-error-states.md +501 -0
- package/skills/ck-frontend-development/resources/performance.md +406 -0
- package/skills/ck-frontend-development/resources/routing-guide.md +364 -0
- package/skills/ck-frontend-development/resources/styling-guide.md +428 -0
- package/skills/ck-frontend-development/resources/typescript-standards.md +418 -0
- package/skills/ck-markdown-novel-viewer/SKILL.md +190 -0
- package/skills/ck-markdown-novel-viewer/assets/directory-browser.css +215 -0
- package/skills/ck-markdown-novel-viewer/assets/favicon.png +0 -0
- package/skills/ck-markdown-novel-viewer/assets/novel-theme.css +818 -0
- package/skills/ck-markdown-novel-viewer/assets/reader.js +262 -0
- package/skills/ck-markdown-novel-viewer/assets/template.html +80 -0
- package/skills/ck-markdown-novel-viewer/package.json +15 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +272 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
- package/skills/ck-markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
- package/skills/ck-markdown-novel-viewer/scripts/server.cjs +411 -0
- package/skills/ck-markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
- package/skills/ck-markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
- package/skills/ck-markdown-novel-viewer/tests/http-server.test.cjs +271 -0
- package/skills/ck-markdown-novel-viewer/tests/run-tests.cjs +51 -0
- package/skills/ck-markdown-novel-viewer/tests/test-framework.cjs +154 -0
- package/skills/ck-markdown-novel-viewer/tests/verify-xss.cjs +90 -0
- package/skills/ck-mcp-builder/LICENSE.txt +202 -0
- package/skills/ck-mcp-builder/SKILL.md +327 -0
- package/skills/ck-mcp-builder/reference/evaluation.md +602 -0
- package/skills/ck-mcp-builder/reference/mcp_best_practices.md +915 -0
- package/skills/ck-mcp-builder/reference/node_mcp_server.md +916 -0
- package/skills/ck-mcp-builder/reference/python_mcp_server.md +752 -0
- package/skills/ck-mcp-builder/scripts/connections.py +151 -0
- package/skills/ck-mcp-builder/scripts/evaluation.py +373 -0
- package/skills/ck-mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/ck-mcp-builder/scripts/requirements.txt +2 -0
- package/skills/ck-mcp-management/README.md +219 -0
- package/skills/ck-mcp-management/SKILL.md +209 -0
- package/skills/ck-mcp-management/assets/tools.json +3146 -0
- package/skills/ck-mcp-management/references/configuration.md +114 -0
- package/skills/ck-mcp-management/references/gemini-cli-integration.md +215 -0
- package/skills/ck-mcp-management/references/mcp-protocol.md +116 -0
- package/skills/ck-mcp-management/scripts/.env.example +10 -0
- package/skills/ck-mcp-management/scripts/cli.ts +195 -0
- package/skills/ck-mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/ck-mcp-management/scripts/dist/cli.js +160 -0
- package/skills/ck-mcp-management/scripts/dist/mcp-client.js +183 -0
- package/skills/ck-mcp-management/scripts/mcp-client.ts +230 -0
- package/skills/ck-mcp-management/scripts/package.json +20 -0
- package/skills/ck-mcp-management/scripts/tsconfig.json +15 -0
- package/skills/ck-media-processing/SKILL.md +90 -0
- package/skills/ck-media-processing/references/common-workflows.md +132 -0
- package/skills/ck-media-processing/references/ffmpeg-encoding.md +358 -0
- package/skills/ck-media-processing/references/ffmpeg-filters.md +503 -0
- package/skills/ck-media-processing/references/ffmpeg-streaming.md +403 -0
- package/skills/ck-media-processing/references/format-compatibility.md +375 -0
- package/skills/ck-media-processing/references/imagemagick-batch.md +612 -0
- package/skills/ck-media-processing/references/imagemagick-editing.md +623 -0
- package/skills/ck-media-processing/references/rmbg-background-removal.md +66 -0
- package/skills/ck-media-processing/references/troubleshooting.md +109 -0
- package/skills/ck-media-processing/scripts/README.md +111 -0
- package/skills/ck-media-processing/scripts/batch-remove-background.sh +124 -0
- package/skills/ck-media-processing/scripts/batch_resize.py +342 -0
- package/skills/ck-media-processing/scripts/media_convert.py +311 -0
- package/skills/ck-media-processing/scripts/remove-background.sh +96 -0
- package/skills/ck-media-processing/scripts/remove-bg-node.js +158 -0
- package/skills/ck-media-processing/scripts/requirements.txt +24 -0
- package/skills/ck-media-processing/scripts/tests/.coverage +0 -0
- package/skills/ck-media-processing/scripts/tests/requirements.txt +2 -0
- package/skills/ck-media-processing/scripts/tests/test_batch_resize.py +372 -0
- package/skills/ck-media-processing/scripts/tests/test_media_convert.py +259 -0
- package/skills/ck-media-processing/scripts/tests/test_video_optimize.py +397 -0
- package/skills/ck-media-processing/scripts/video_optimize.py +414 -0
- package/skills/ck-mobile-development/SKILL.md +210 -0
- package/skills/ck-mobile-development/references/mobile-android.md +604 -0
- package/skills/ck-mobile-development/references/mobile-best-practices.md +545 -0
- package/skills/ck-mobile-development/references/mobile-debugging.md +1089 -0
- package/skills/ck-mobile-development/references/mobile-frameworks.md +465 -0
- package/skills/ck-mobile-development/references/mobile-ios.md +496 -0
- package/skills/ck-mobile-development/references/mobile-mindset.md +544 -0
- package/skills/ck-payment-integration/README.md +185 -0
- package/skills/ck-payment-integration/SKILL.md +116 -0
- package/skills/ck-payment-integration/references/polar/benefits.md +396 -0
- package/skills/ck-payment-integration/references/polar/best-practices.md +482 -0
- package/skills/ck-payment-integration/references/polar/checkouts.md +266 -0
- package/skills/ck-payment-integration/references/polar/overview.md +184 -0
- package/skills/ck-payment-integration/references/polar/products.md +244 -0
- package/skills/ck-payment-integration/references/polar/sdk.md +436 -0
- package/skills/ck-payment-integration/references/polar/subscriptions.md +340 -0
- package/skills/ck-payment-integration/references/polar/webhooks.md +405 -0
- package/skills/ck-payment-integration/references/sepay/api.md +140 -0
- package/skills/ck-payment-integration/references/sepay/best-practices.md +337 -0
- package/skills/ck-payment-integration/references/sepay/overview.md +138 -0
- package/skills/ck-payment-integration/references/sepay/qr-codes.md +228 -0
- package/skills/ck-payment-integration/references/sepay/sdk.md +213 -0
- package/skills/ck-payment-integration/references/sepay/webhooks.md +208 -0
- package/skills/ck-payment-integration/scripts/.env.example +20 -0
- package/skills/ck-payment-integration/scripts/checkout-helper.js +244 -0
- package/skills/ck-payment-integration/scripts/package.json +17 -0
- package/skills/ck-payment-integration/scripts/polar-webhook-verify.js +202 -0
- package/skills/ck-payment-integration/scripts/sepay-webhook-verify.js +193 -0
- package/skills/ck-payment-integration/scripts/test-scripts.js +237 -0
- package/skills/ck-planning/SKILL.md +79 -49
- package/skills/ck-planning/references/codebase-understanding.md +62 -0
- package/skills/ck-planning/references/output-standards.md +127 -0
- package/skills/ck-planning/references/plan-organization.md +122 -60
- package/skills/ck-planning/references/research-phase.md +49 -56
- package/skills/ck-planning/references/solution-design.md +61 -63
- package/skills/ck-problem-solving/SKILL.md +95 -0
- package/skills/ck-problem-solving/references/attribution.md +69 -0
- package/skills/ck-problem-solving/references/collision-zone-thinking.md +79 -0
- package/skills/ck-problem-solving/references/inversion-exercise.md +91 -0
- package/skills/ck-problem-solving/references/meta-pattern-recognition.md +87 -0
- package/skills/ck-problem-solving/references/scale-game.md +95 -0
- package/skills/ck-problem-solving/references/simplification-cascades.md +80 -0
- package/skills/ck-problem-solving/references/when-stuck.md +72 -0
- package/skills/ck-repomix/SKILL.md +247 -0
- package/skills/ck-repomix/references/configuration.md +211 -0
- package/skills/ck-repomix/references/usage-patterns.md +232 -0
- package/skills/ck-repomix/scripts/.coverage +0 -0
- package/skills/ck-repomix/scripts/README.md +179 -0
- package/skills/ck-repomix/scripts/repomix_batch.py +455 -0
- package/skills/ck-repomix/scripts/repos.example.json +15 -0
- package/skills/ck-repomix/scripts/requirements.txt +15 -0
- package/skills/ck-repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/ck-sequential-thinking/.env.example +8 -0
- package/skills/ck-sequential-thinking/README.md +183 -0
- package/skills/ck-sequential-thinking/SKILL.md +14 -2
- package/skills/ck-sequential-thinking/package.json +31 -0
- package/skills/ck-sequential-thinking/references/advanced-strategies.md +79 -0
- package/skills/ck-sequential-thinking/references/advanced-techniques.md +2 -14
- package/skills/ck-sequential-thinking/references/core-patterns.md +8 -0
- package/skills/ck-sequential-thinking/references/examples-api.md +88 -0
- package/skills/ck-sequential-thinking/references/examples-architecture.md +94 -0
- package/skills/ck-sequential-thinking/references/examples-debug.md +90 -0
- package/skills/ck-sequential-thinking/scripts/format-thought.js +159 -0
- package/skills/ck-sequential-thinking/scripts/process-thought.js +236 -0
- package/skills/ck-sequential-thinking/tests/format-thought.test.js +133 -0
- package/skills/ck-sequential-thinking/tests/process-thought.test.js +215 -0
- package/skills/ck-shopify/README.md +66 -0
- package/skills/ck-shopify/SKILL.md +319 -0
- package/skills/ck-shopify/references/app-development.md +470 -0
- package/skills/ck-shopify/references/extensions.md +493 -0
- package/skills/ck-shopify/references/themes.md +498 -0
- package/skills/ck-shopify/scripts/.coverage +0 -0
- package/skills/ck-shopify/scripts/requirements.txt +19 -0
- package/skills/ck-shopify/scripts/shopify_init.py +423 -0
- package/skills/ck-shopify/scripts/tests/.coverage +0 -0
- package/skills/ck-shopify/scripts/tests/test_shopify_init.py +385 -0
- package/skills/ck-skill-creator/LICENSE.txt +202 -0
- package/skills/ck-skill-creator/SKILL.md +265 -0
- package/skills/ck-skill-creator/scripts/init_skill.py +303 -0
- package/skills/ck-skill-creator/scripts/package_skill.py +110 -0
- package/skills/ck-skill-creator/scripts/quick_validate.py +65 -0
- package/skills/ck-threejs/SKILL.md +87 -0
- package/skills/ck-threejs/references/01-getting-started.md +177 -0
- package/skills/ck-threejs/references/02-loaders.md +169 -0
- package/skills/ck-threejs/references/03-textures.md +170 -0
- package/skills/ck-threejs/references/04-cameras.md +195 -0
- package/skills/ck-threejs/references/05-lights.md +183 -0
- package/skills/ck-threejs/references/06-animations.md +214 -0
- package/skills/ck-threejs/references/07-math.md +260 -0
- package/skills/ck-threejs/references/08-interaction.md +267 -0
- package/skills/ck-threejs/references/09-postprocessing.md +240 -0
- package/skills/ck-threejs/references/10-controls.md +259 -0
- package/skills/ck-threejs/references/11-materials-advanced.md +270 -0
- package/skills/ck-threejs/references/12-performance.md +269 -0
- package/skills/ck-threejs/references/13-node-materials.md +298 -0
- package/skills/ck-threejs/references/14-physics-vr.md +304 -0
- package/skills/ck-threejs/references/15-specialized-loaders.md +333 -0
- package/skills/ck-threejs/references/16-webgpu.md +302 -0
- package/skills/ck-ui-styling/LICENSE.txt +202 -0
- package/skills/ck-ui-styling/SKILL.md +319 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/ck-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/ck-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/ck-ui-styling/references/canvas-design-system.md +320 -0
- package/skills/ck-ui-styling/references/shadcn-accessibility.md +471 -0
- package/skills/ck-ui-styling/references/shadcn-components.md +424 -0
- package/skills/ck-ui-styling/references/shadcn-theming.md +373 -0
- package/skills/ck-ui-styling/references/tailwind-customization.md +483 -0
- package/skills/ck-ui-styling/references/tailwind-responsive.md +382 -0
- package/skills/ck-ui-styling/references/tailwind-utilities.md +455 -0
- package/skills/ck-ui-styling/scripts/.coverage +0 -0
- package/skills/ck-ui-styling/scripts/requirements.txt +17 -0
- package/skills/ck-ui-styling/scripts/shadcn_add.py +292 -0
- package/skills/ck-ui-styling/scripts/tailwind_config_gen.py +456 -0
- package/skills/ck-ui-styling/scripts/tests/coverage-ui.json +1 -0
- package/skills/ck-ui-styling/scripts/tests/requirements.txt +3 -0
- package/skills/ck-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/skills/ck-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/skills/ck-ui-ux-pro-max/SKILL.md +227 -0
- package/skills/ck-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ck-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/ck-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/ck-ui-ux-pro-max/data/prompts.csv +24 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/ck-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/ck-ui-ux-pro-max/data/styles.csv +59 -0
- package/skills/ck-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/ck-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ck-ui-ux-pro-max/scripts/core.py +236 -0
- package/skills/ck-ui-ux-pro-max/scripts/search.py +76 -0
- package/skills/ck-web-frameworks/SKILL.md +322 -0
- package/skills/ck-web-frameworks/references/nextjs-app-router.md +465 -0
- package/skills/ck-web-frameworks/references/nextjs-data-fetching.md +459 -0
- package/skills/ck-web-frameworks/references/nextjs-optimization.md +511 -0
- package/skills/ck-web-frameworks/references/nextjs-server-components.md +495 -0
- package/skills/ck-web-frameworks/references/remix-icon-integration.md +603 -0
- package/skills/ck-web-frameworks/references/turborepo-caching.md +551 -0
- package/skills/ck-web-frameworks/references/turborepo-pipelines.md +517 -0
- package/skills/ck-web-frameworks/references/turborepo-setup.md +542 -0
- package/skills/ck-web-frameworks/scripts/.coverage +0 -0
- package/skills/ck-web-frameworks/scripts/__init__.py +0 -0
- package/skills/ck-web-frameworks/scripts/nextjs_init.py +547 -0
- package/skills/ck-web-frameworks/scripts/requirements.txt +16 -0
- package/skills/ck-web-frameworks/scripts/tests/coverage-web.json +1 -0
- package/skills/ck-web-frameworks/scripts/tests/requirements.txt +3 -0
- package/skills/ck-web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
- package/skills/ck-web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
- package/skills/ck-web-frameworks/scripts/turborepo_migrate.py +394 -0
- package/src/commands/init.js +61 -30
- package/src/utils/paths.js +35 -4
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
# PostgreSQL Performance Optimization
|
|
2
|
+
|
|
3
|
+
Query optimization, indexing strategies, EXPLAIN analysis, and performance tuning for PostgreSQL.
|
|
4
|
+
|
|
5
|
+
## EXPLAIN Command
|
|
6
|
+
|
|
7
|
+
### Basic EXPLAIN
|
|
8
|
+
```sql
|
|
9
|
+
-- Show query plan
|
|
10
|
+
EXPLAIN SELECT * FROM users WHERE id = 1;
|
|
11
|
+
|
|
12
|
+
-- Output shows:
|
|
13
|
+
-- - Execution plan nodes
|
|
14
|
+
-- - Estimated costs
|
|
15
|
+
-- - Estimated rows
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### EXPLAIN ANALYZE
|
|
19
|
+
```sql
|
|
20
|
+
-- Execute query and show actual performance
|
|
21
|
+
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 18;
|
|
22
|
+
|
|
23
|
+
-- Shows:
|
|
24
|
+
-- - Actual execution time
|
|
25
|
+
-- - Actual rows returned
|
|
26
|
+
-- - Planning time
|
|
27
|
+
-- - Execution time
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### EXPLAIN Options
|
|
31
|
+
```sql
|
|
32
|
+
-- Verbose output
|
|
33
|
+
EXPLAIN (VERBOSE) SELECT * FROM users;
|
|
34
|
+
|
|
35
|
+
-- Show buffer usage
|
|
36
|
+
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM users WHERE active = true;
|
|
37
|
+
|
|
38
|
+
-- JSON format
|
|
39
|
+
EXPLAIN (FORMAT JSON, ANALYZE) SELECT * FROM users;
|
|
40
|
+
|
|
41
|
+
-- All options
|
|
42
|
+
EXPLAIN (ANALYZE, BUFFERS, VERBOSE, TIMING, COSTS)
|
|
43
|
+
SELECT * FROM users WHERE id = 1;
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Understanding Query Plans
|
|
47
|
+
|
|
48
|
+
### Scan Methods
|
|
49
|
+
|
|
50
|
+
#### Sequential Scan
|
|
51
|
+
```sql
|
|
52
|
+
-- Full table scan (reads all rows)
|
|
53
|
+
EXPLAIN SELECT * FROM users WHERE name = 'Alice';
|
|
54
|
+
|
|
55
|
+
-- Output: Seq Scan on users
|
|
56
|
+
-- Indicates: no suitable index or small table
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
#### Index Scan
|
|
60
|
+
```sql
|
|
61
|
+
-- Uses index to find rows
|
|
62
|
+
EXPLAIN SELECT * FROM users WHERE id = 1;
|
|
63
|
+
|
|
64
|
+
-- Output: Index Scan using users_pkey on users
|
|
65
|
+
-- Best for: selective queries, small result sets
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
#### Index Only Scan
|
|
69
|
+
```sql
|
|
70
|
+
-- Query covered by index (no table access)
|
|
71
|
+
CREATE INDEX idx_users_email_name ON users(email, name);
|
|
72
|
+
EXPLAIN SELECT email, name FROM users WHERE email = 'alice@example.com';
|
|
73
|
+
|
|
74
|
+
-- Output: Index Only Scan using idx_users_email_name
|
|
75
|
+
-- Best performance: no heap fetch needed
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### Bitmap Scan
|
|
79
|
+
```sql
|
|
80
|
+
-- Combines multiple indexes or handles large result sets
|
|
81
|
+
EXPLAIN SELECT * FROM users WHERE age > 18 AND status = 'active';
|
|
82
|
+
|
|
83
|
+
-- Output:
|
|
84
|
+
-- Bitmap Heap Scan on users
|
|
85
|
+
-- Recheck Cond: ...
|
|
86
|
+
-- -> Bitmap Index Scan on idx_age
|
|
87
|
+
|
|
88
|
+
-- Good for: moderate selectivity
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Join Methods
|
|
92
|
+
|
|
93
|
+
#### Nested Loop
|
|
94
|
+
```sql
|
|
95
|
+
-- For each row in outer table, scan inner table
|
|
96
|
+
EXPLAIN SELECT * FROM orders o
|
|
97
|
+
JOIN customers c ON o.customer_id = c.id
|
|
98
|
+
WHERE c.id = 1;
|
|
99
|
+
|
|
100
|
+
-- Output: Nested Loop
|
|
101
|
+
-- Best for: small outer table, indexed inner table
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Hash Join
|
|
105
|
+
```sql
|
|
106
|
+
-- Build hash table from smaller table
|
|
107
|
+
EXPLAIN SELECT * FROM orders o
|
|
108
|
+
JOIN customers c ON o.customer_id = c.id;
|
|
109
|
+
|
|
110
|
+
-- Output: Hash Join
|
|
111
|
+
-- Best for: large tables, equality conditions
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### Merge Join
|
|
115
|
+
```sql
|
|
116
|
+
-- Both inputs sorted on join key
|
|
117
|
+
EXPLAIN SELECT * FROM orders o
|
|
118
|
+
JOIN customers c ON o.customer_id = c.id
|
|
119
|
+
ORDER BY o.customer_id;
|
|
120
|
+
|
|
121
|
+
-- Output: Merge Join
|
|
122
|
+
-- Best for: pre-sorted data, large sorted inputs
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Indexing Strategies
|
|
126
|
+
|
|
127
|
+
### B-tree Index (Default)
|
|
128
|
+
```sql
|
|
129
|
+
-- General purpose index
|
|
130
|
+
CREATE INDEX idx_users_email ON users(email);
|
|
131
|
+
CREATE INDEX idx_orders_date ON orders(order_date);
|
|
132
|
+
|
|
133
|
+
-- Supports: =, <, <=, >, >=, BETWEEN, IN, IS NULL
|
|
134
|
+
-- Supports: ORDER BY, MIN/MAX
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Composite Index
|
|
138
|
+
```sql
|
|
139
|
+
-- Multiple columns (order matters!)
|
|
140
|
+
CREATE INDEX idx_users_status_created ON users(status, created_at);
|
|
141
|
+
|
|
142
|
+
-- Supports queries on:
|
|
143
|
+
-- - status
|
|
144
|
+
-- - status, created_at
|
|
145
|
+
-- Does NOT support: created_at alone
|
|
146
|
+
|
|
147
|
+
-- Column order: most selective first
|
|
148
|
+
-- Exception: match query WHERE/ORDER BY patterns
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Partial Index
|
|
152
|
+
```sql
|
|
153
|
+
-- Index subset of rows
|
|
154
|
+
CREATE INDEX idx_active_users ON users(email)
|
|
155
|
+
WHERE status = 'active';
|
|
156
|
+
|
|
157
|
+
-- Smaller index, faster queries with matching WHERE clause
|
|
158
|
+
-- Query must include WHERE status = 'active' to use index
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Expression Index
|
|
162
|
+
```sql
|
|
163
|
+
-- Index on computed value
|
|
164
|
+
CREATE INDEX idx_users_lower_email ON users(LOWER(email));
|
|
165
|
+
|
|
166
|
+
-- Query must use same expression
|
|
167
|
+
SELECT * FROM users WHERE LOWER(email) = 'alice@example.com';
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### GIN Index (Generalized Inverted Index)
|
|
171
|
+
```sql
|
|
172
|
+
-- For array, JSONB, full-text search
|
|
173
|
+
CREATE INDEX idx_products_tags ON products USING GIN(tags);
|
|
174
|
+
CREATE INDEX idx_documents_data ON documents USING GIN(data);
|
|
175
|
+
|
|
176
|
+
-- Array queries
|
|
177
|
+
SELECT * FROM products WHERE tags @> ARRAY['featured'];
|
|
178
|
+
|
|
179
|
+
-- JSONB queries
|
|
180
|
+
SELECT * FROM documents WHERE data @> '{"status": "active"}';
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### GiST Index (Generalized Search Tree)
|
|
184
|
+
```sql
|
|
185
|
+
-- For geometric data, range types, full-text
|
|
186
|
+
CREATE INDEX idx_locations_geom ON locations USING GiST(geom);
|
|
187
|
+
|
|
188
|
+
-- Geometric queries
|
|
189
|
+
SELECT * FROM locations WHERE geom && ST_MakeEnvelope(...);
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Hash Index
|
|
193
|
+
```sql
|
|
194
|
+
-- Equality comparisons only
|
|
195
|
+
CREATE INDEX idx_users_hash_email ON users USING HASH(email);
|
|
196
|
+
|
|
197
|
+
-- Only supports: =
|
|
198
|
+
-- Rarely used (B-tree usually better)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### BRIN Index (Block Range Index)
|
|
202
|
+
```sql
|
|
203
|
+
-- For very large tables with natural clustering
|
|
204
|
+
CREATE INDEX idx_logs_brin_created ON logs USING BRIN(created_at);
|
|
205
|
+
|
|
206
|
+
-- Tiny index size, good for append-only data
|
|
207
|
+
-- Best for: time-series, logging, large tables
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Query Optimization Techniques
|
|
211
|
+
|
|
212
|
+
### Avoid SELECT *
|
|
213
|
+
```sql
|
|
214
|
+
-- Bad
|
|
215
|
+
SELECT * FROM users WHERE id = 1;
|
|
216
|
+
|
|
217
|
+
-- Good (only needed columns)
|
|
218
|
+
SELECT id, name, email FROM users WHERE id = 1;
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Use LIMIT
|
|
222
|
+
```sql
|
|
223
|
+
-- Limit result set
|
|
224
|
+
SELECT * FROM users ORDER BY created_at DESC LIMIT 10;
|
|
225
|
+
|
|
226
|
+
-- PostgreSQL can stop early with LIMIT
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Index for ORDER BY
|
|
230
|
+
```sql
|
|
231
|
+
-- Create index matching sort order
|
|
232
|
+
CREATE INDEX idx_users_created_desc ON users(created_at DESC);
|
|
233
|
+
|
|
234
|
+
-- Query uses index for sorting
|
|
235
|
+
SELECT * FROM users ORDER BY created_at DESC LIMIT 10;
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Covering Index
|
|
239
|
+
```sql
|
|
240
|
+
-- Include all queried columns in index
|
|
241
|
+
CREATE INDEX idx_users_email_name_status ON users(email, name, status);
|
|
242
|
+
|
|
243
|
+
-- Query covered by index (no table access)
|
|
244
|
+
SELECT name, status FROM users WHERE email = 'alice@example.com';
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### EXISTS vs IN
|
|
248
|
+
```sql
|
|
249
|
+
-- Prefer EXISTS for large subqueries
|
|
250
|
+
-- Bad
|
|
251
|
+
SELECT * FROM customers
|
|
252
|
+
WHERE id IN (SELECT customer_id FROM orders WHERE total > 1000);
|
|
253
|
+
|
|
254
|
+
-- Good
|
|
255
|
+
SELECT * FROM customers c
|
|
256
|
+
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id AND o.total > 1000);
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### JOIN Order
|
|
260
|
+
```sql
|
|
261
|
+
-- Filter before joining
|
|
262
|
+
-- Bad
|
|
263
|
+
SELECT * FROM orders o
|
|
264
|
+
JOIN customers c ON o.customer_id = c.id
|
|
265
|
+
WHERE o.status = 'completed' AND c.country = 'USA';
|
|
266
|
+
|
|
267
|
+
-- Good (filter in subquery)
|
|
268
|
+
SELECT * FROM (
|
|
269
|
+
SELECT * FROM orders WHERE status = 'completed'
|
|
270
|
+
) o
|
|
271
|
+
JOIN (
|
|
272
|
+
SELECT * FROM customers WHERE country = 'USA'
|
|
273
|
+
) c ON o.customer_id = c.id;
|
|
274
|
+
|
|
275
|
+
-- Or use CTE
|
|
276
|
+
WITH filtered_orders AS (
|
|
277
|
+
SELECT * FROM orders WHERE status = 'completed'
|
|
278
|
+
),
|
|
279
|
+
filtered_customers AS (
|
|
280
|
+
SELECT * FROM customers WHERE country = 'USA'
|
|
281
|
+
)
|
|
282
|
+
SELECT * FROM filtered_orders o
|
|
283
|
+
JOIN filtered_customers c ON o.customer_id = c.id;
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Avoid Functions in WHERE
|
|
287
|
+
```sql
|
|
288
|
+
-- Bad (index not used)
|
|
289
|
+
SELECT * FROM users WHERE LOWER(email) = 'alice@example.com';
|
|
290
|
+
|
|
291
|
+
-- Good (create expression index)
|
|
292
|
+
CREATE INDEX idx_users_lower_email ON users(LOWER(email));
|
|
293
|
+
-- Then query uses index
|
|
294
|
+
|
|
295
|
+
-- Or store lowercase separately
|
|
296
|
+
ALTER TABLE users ADD COLUMN email_lower TEXT;
|
|
297
|
+
UPDATE users SET email_lower = LOWER(email);
|
|
298
|
+
CREATE INDEX idx_users_email_lower ON users(email_lower);
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Statistics and ANALYZE
|
|
302
|
+
|
|
303
|
+
### Update Statistics
|
|
304
|
+
```sql
|
|
305
|
+
-- Analyze table (update statistics)
|
|
306
|
+
ANALYZE users;
|
|
307
|
+
|
|
308
|
+
-- Analyze specific columns
|
|
309
|
+
ANALYZE users(email, status);
|
|
310
|
+
|
|
311
|
+
-- Analyze all tables
|
|
312
|
+
ANALYZE;
|
|
313
|
+
|
|
314
|
+
-- Auto-analyze (configured in postgresql.conf)
|
|
315
|
+
autovacuum_analyze_threshold = 50
|
|
316
|
+
autovacuum_analyze_scale_factor = 0.1
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Check Statistics
|
|
320
|
+
```sql
|
|
321
|
+
-- Last analyze time
|
|
322
|
+
SELECT schemaname, tablename, last_analyze, last_autoanalyze
|
|
323
|
+
FROM pg_stat_user_tables;
|
|
324
|
+
|
|
325
|
+
-- Statistics targets (adjust for important columns)
|
|
326
|
+
ALTER TABLE users ALTER COLUMN email SET STATISTICS 1000;
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## VACUUM and Maintenance
|
|
330
|
+
|
|
331
|
+
### VACUUM
|
|
332
|
+
```sql
|
|
333
|
+
-- Reclaim storage, update statistics
|
|
334
|
+
VACUUM users;
|
|
335
|
+
|
|
336
|
+
-- Verbose output
|
|
337
|
+
VACUUM VERBOSE users;
|
|
338
|
+
|
|
339
|
+
-- Full vacuum (rewrites table, locks table)
|
|
340
|
+
VACUUM FULL users;
|
|
341
|
+
|
|
342
|
+
-- Analyze after vacuum
|
|
343
|
+
VACUUM ANALYZE users;
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Auto-Vacuum
|
|
347
|
+
```sql
|
|
348
|
+
-- Check autovacuum status
|
|
349
|
+
SELECT schemaname, tablename, last_vacuum, last_autovacuum
|
|
350
|
+
FROM pg_stat_user_tables;
|
|
351
|
+
|
|
352
|
+
-- Configure in postgresql.conf
|
|
353
|
+
autovacuum = on
|
|
354
|
+
autovacuum_vacuum_threshold = 50
|
|
355
|
+
autovacuum_vacuum_scale_factor = 0.2
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### REINDEX
|
|
359
|
+
```sql
|
|
360
|
+
-- Rebuild index
|
|
361
|
+
REINDEX INDEX idx_users_email;
|
|
362
|
+
|
|
363
|
+
-- Rebuild all indexes on table
|
|
364
|
+
REINDEX TABLE users;
|
|
365
|
+
|
|
366
|
+
-- Rebuild all indexes in schema
|
|
367
|
+
REINDEX SCHEMA public;
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
## Monitoring Queries
|
|
371
|
+
|
|
372
|
+
### Active Queries
|
|
373
|
+
```sql
|
|
374
|
+
-- Current queries
|
|
375
|
+
SELECT pid, usename, state, query, query_start
|
|
376
|
+
FROM pg_stat_activity
|
|
377
|
+
WHERE state != 'idle';
|
|
378
|
+
|
|
379
|
+
-- Long-running queries
|
|
380
|
+
SELECT pid, now() - query_start AS duration, query
|
|
381
|
+
FROM pg_stat_activity
|
|
382
|
+
WHERE state != 'idle' AND now() - query_start > interval '5 minutes'
|
|
383
|
+
ORDER BY duration DESC;
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Slow Query Log
|
|
387
|
+
```sql
|
|
388
|
+
-- Enable slow query logging (postgresql.conf)
|
|
389
|
+
log_min_duration_statement = 100 -- milliseconds
|
|
390
|
+
|
|
391
|
+
-- Or per session
|
|
392
|
+
SET log_min_duration_statement = 100;
|
|
393
|
+
|
|
394
|
+
-- Logs appear in PostgreSQL log files
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### pg_stat_statements Extension
|
|
398
|
+
```sql
|
|
399
|
+
-- Enable extension
|
|
400
|
+
CREATE EXTENSION pg_stat_statements;
|
|
401
|
+
|
|
402
|
+
-- View query statistics
|
|
403
|
+
SELECT query, calls, total_exec_time, mean_exec_time, rows
|
|
404
|
+
FROM pg_stat_statements
|
|
405
|
+
ORDER BY mean_exec_time DESC
|
|
406
|
+
LIMIT 10;
|
|
407
|
+
|
|
408
|
+
-- Reset statistics
|
|
409
|
+
SELECT pg_stat_statements_reset();
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
## Index Usage Analysis
|
|
413
|
+
|
|
414
|
+
### Check Index Usage
|
|
415
|
+
```sql
|
|
416
|
+
-- Index usage statistics
|
|
417
|
+
SELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch
|
|
418
|
+
FROM pg_stat_user_indexes
|
|
419
|
+
ORDER BY idx_scan;
|
|
420
|
+
|
|
421
|
+
-- Unused indexes (idx_scan = 0)
|
|
422
|
+
SELECT schemaname, tablename, indexname
|
|
423
|
+
FROM pg_stat_user_indexes
|
|
424
|
+
WHERE idx_scan = 0 AND indexname NOT LIKE '%_pkey';
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Index Size
|
|
428
|
+
```sql
|
|
429
|
+
-- Index sizes
|
|
430
|
+
SELECT schemaname, tablename, indexname,
|
|
431
|
+
pg_size_pretty(pg_relation_size(indexrelid)) AS index_size
|
|
432
|
+
FROM pg_stat_user_indexes
|
|
433
|
+
ORDER BY pg_relation_size(indexrelid) DESC;
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
### Missing Indexes
|
|
437
|
+
```sql
|
|
438
|
+
-- Tables with sequential scans
|
|
439
|
+
SELECT schemaname, tablename, seq_scan, seq_tup_read
|
|
440
|
+
FROM pg_stat_user_tables
|
|
441
|
+
WHERE seq_scan > 0
|
|
442
|
+
ORDER BY seq_tup_read DESC;
|
|
443
|
+
|
|
444
|
+
-- Consider adding indexes to high seq_scan tables
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
## Configuration Tuning
|
|
448
|
+
|
|
449
|
+
### Memory Settings (postgresql.conf)
|
|
450
|
+
```conf
|
|
451
|
+
# Shared buffers (25% of RAM)
|
|
452
|
+
shared_buffers = 4GB
|
|
453
|
+
|
|
454
|
+
# Work memory (per operation)
|
|
455
|
+
work_mem = 64MB
|
|
456
|
+
|
|
457
|
+
# Maintenance work memory (VACUUM, CREATE INDEX)
|
|
458
|
+
maintenance_work_mem = 512MB
|
|
459
|
+
|
|
460
|
+
# Effective cache size (estimate of OS cache)
|
|
461
|
+
effective_cache_size = 12GB
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
### Query Planner Settings
|
|
465
|
+
```conf
|
|
466
|
+
# Random page cost (lower for SSD)
|
|
467
|
+
random_page_cost = 1.1
|
|
468
|
+
|
|
469
|
+
# Effective IO concurrency (number of concurrent disk operations)
|
|
470
|
+
effective_io_concurrency = 200
|
|
471
|
+
|
|
472
|
+
# Cost of parallel query startup
|
|
473
|
+
parallel_setup_cost = 1000
|
|
474
|
+
parallel_tuple_cost = 0.1
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
### Connection Settings
|
|
478
|
+
```conf
|
|
479
|
+
# Max connections
|
|
480
|
+
max_connections = 100
|
|
481
|
+
|
|
482
|
+
# Connection pooling recommended (pgBouncer)
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
## Best Practices
|
|
486
|
+
|
|
487
|
+
1. **Index strategy**
|
|
488
|
+
- Index foreign keys
|
|
489
|
+
- Index WHERE clause columns
|
|
490
|
+
- Index ORDER BY columns
|
|
491
|
+
- Use composite indexes for multi-column queries
|
|
492
|
+
- Keep index count reasonable (5-10 per table)
|
|
493
|
+
|
|
494
|
+
2. **Query optimization**
|
|
495
|
+
- Use EXPLAIN ANALYZE
|
|
496
|
+
- Avoid SELECT *
|
|
497
|
+
- Use LIMIT when possible
|
|
498
|
+
- Filter before joining
|
|
499
|
+
- Use appropriate join type
|
|
500
|
+
|
|
501
|
+
3. **Statistics**
|
|
502
|
+
- Regular ANALYZE
|
|
503
|
+
- Increase statistics target for skewed distributions
|
|
504
|
+
- Monitor autovacuum
|
|
505
|
+
|
|
506
|
+
4. **Monitoring**
|
|
507
|
+
- Enable pg_stat_statements
|
|
508
|
+
- Log slow queries
|
|
509
|
+
- Monitor index usage
|
|
510
|
+
- Check table bloat
|
|
511
|
+
|
|
512
|
+
5. **Maintenance**
|
|
513
|
+
- Regular VACUUM
|
|
514
|
+
- REINDEX periodically
|
|
515
|
+
- Update PostgreSQL version
|
|
516
|
+
- Monitor disk space
|
|
517
|
+
|
|
518
|
+
6. **Configuration**
|
|
519
|
+
- Tune memory settings
|
|
520
|
+
- Adjust for workload (OLTP vs OLAP)
|
|
521
|
+
- Use connection pooling
|
|
522
|
+
- Enable query logging
|
|
523
|
+
|
|
524
|
+
7. **Testing**
|
|
525
|
+
- Test queries with production-like data volume
|
|
526
|
+
- Benchmark before/after changes
|
|
527
|
+
- Monitor production metrics
|