cokit-cli 1.0.0 → 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/FAQ.md +5 -5
- package/QUICK-START.md +4 -4
- package/README.FLOW.md +237 -0
- package/README.md +153 -92
- 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/docs/migration-guide.md +12 -12
- 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 +143 -0
- package/skills/ck-code-review/references/code-review-reception.md +209 -0
- package/skills/ck-code-review/references/requesting-code-review.md +105 -0
- package/skills/ck-code-review/references/verification-before-completion.md +139 -0
- 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 +82 -0
- package/skills/ck-debugging/references/defense-in-depth.md +124 -0
- package/skills/ck-debugging/references/root-cause-tracing.md +122 -0
- package/skills/ck-debugging/references/systematic-debugging.md +102 -0
- package/skills/ck-debugging/references/verification.md +123 -0
- 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 +96 -0
- 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 +112 -0
- 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 +150 -0
- package/skills/ck-planning/references/research-phase.md +49 -0
- package/skills/ck-planning/references/solution-design.md +63 -0
- 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/{sequential-thinking → 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/{sequential-thinking → ck-sequential-thinking}/references/advanced-techniques.md +2 -14
- package/skills/{sequential-thinking → 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 +62 -31
- package/src/utils/paths.js +35 -4
- package/skills/code-review/SKILL.md +0 -86
- package/skills/code-review/references/code-review-reception.md +0 -76
- package/skills/code-review/references/verification-before-completion.md +0 -86
- package/skills/debugging/SKILL.md +0 -70
- package/skills/debugging/references/root-cause-tracing.md +0 -65
- package/skills/debugging/references/systematic-debugging.md +0 -74
- package/skills/debugging/references/verification.md +0 -74
- package/skills/docs-seeker/SKILL.md +0 -91
- package/skills/planning/SKILL.md +0 -82
- package/skills/planning/references/plan-organization.md +0 -88
- package/skills/planning/references/research-phase.md +0 -56
- package/skills/planning/references/solution-design.md +0 -65
- package/templates/repo/prompts/code.prompt.md +0 -40
- package/templates/repo/prompts/docs.prompt.md +0 -29
- package/templates/repo/prompts/fix.prompt.md +0 -35
- package/templates/repo/prompts/plan.prompt.md +0 -41
- package/templates/repo/prompts/review.prompt.md +0 -38
- package/templates/repo/prompts/test.prompt.md +0 -29
- /package/skills/{docs-seeker → ck-docs-seeker}/references/search-patterns.md +0 -0
- /package/skills/{docs-seeker → ck-docs-seeker}/references/source-evaluation.md +0 -0
- /package/templates/repo/.github/instructions/{backend.instructions.md → ck-backend.instructions.md} +0 -0
- /package/templates/repo/.github/instructions/{development.instructions.md → ck-development.instructions.md} +0 -0
- /package/templates/repo/.github/instructions/{frontend.instructions.md → ck-frontend.instructions.md} +0 -0
- /package/templates/repo/.github/instructions/{testing.instructions.md → ck-testing.instructions.md} +0 -0
- /package/templates/repo/.github/prompts/{code.prompt.md → ck-code.prompt.md} +0 -0
- /package/templates/repo/.github/prompts/{docs.prompt.md → ck-docs.prompt.md} +0 -0
- /package/templates/repo/.github/prompts/{fix.prompt.md → ck-fix.prompt.md} +0 -0
- /package/templates/repo/.github/prompts/{plan.prompt.md → ck-plan.prompt.md} +0 -0
- /package/templates/repo/.github/prompts/{review.prompt.md → ck-review.prompt.md} +0 -0
- /package/templates/repo/.github/prompts/{test.prompt.md → ck-test.prompt.md} +0 -0
- /package/templates/repo/.github/skills/{code-review → ck-code-review}/SKILL.md +0 -0
- /package/templates/repo/.github/skills/{debugging → ck-debugging}/SKILL.md +0 -0
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
# PostgreSQL Administration
|
|
2
|
+
|
|
3
|
+
User management, backups, replication, maintenance, and production database administration.
|
|
4
|
+
|
|
5
|
+
## User and Role Management
|
|
6
|
+
|
|
7
|
+
### Create Users
|
|
8
|
+
```sql
|
|
9
|
+
-- Create user with password
|
|
10
|
+
CREATE USER appuser WITH PASSWORD 'secure_password';
|
|
11
|
+
|
|
12
|
+
-- Create superuser
|
|
13
|
+
CREATE USER admin WITH SUPERUSER PASSWORD 'admin_password';
|
|
14
|
+
|
|
15
|
+
-- Create role without login
|
|
16
|
+
CREATE ROLE readonly;
|
|
17
|
+
|
|
18
|
+
-- Create user with attributes
|
|
19
|
+
CREATE USER developer WITH
|
|
20
|
+
PASSWORD 'dev_pass'
|
|
21
|
+
CREATEDB
|
|
22
|
+
VALID UNTIL '2025-12-31';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Alter Users
|
|
26
|
+
```sql
|
|
27
|
+
-- Change password
|
|
28
|
+
ALTER USER appuser WITH PASSWORD 'new_password';
|
|
29
|
+
|
|
30
|
+
-- Add attributes
|
|
31
|
+
ALTER USER appuser WITH CREATEDB CREATEROLE;
|
|
32
|
+
|
|
33
|
+
-- Remove attributes
|
|
34
|
+
ALTER USER appuser WITH NOSUPERUSER;
|
|
35
|
+
|
|
36
|
+
-- Rename user
|
|
37
|
+
ALTER USER oldname RENAME TO newname;
|
|
38
|
+
|
|
39
|
+
-- Set connection limit
|
|
40
|
+
ALTER USER appuser CONNECTION LIMIT 10;
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Roles and Inheritance
|
|
44
|
+
```sql
|
|
45
|
+
-- Create role hierarchy
|
|
46
|
+
CREATE ROLE readonly;
|
|
47
|
+
CREATE ROLE readwrite;
|
|
48
|
+
|
|
49
|
+
-- Grant role to user
|
|
50
|
+
GRANT readonly TO appuser;
|
|
51
|
+
GRANT readwrite TO developer;
|
|
52
|
+
|
|
53
|
+
-- Revoke role
|
|
54
|
+
REVOKE readonly FROM appuser;
|
|
55
|
+
|
|
56
|
+
-- Role membership
|
|
57
|
+
\du
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Permissions
|
|
61
|
+
|
|
62
|
+
#### Database Level
|
|
63
|
+
```sql
|
|
64
|
+
-- Grant database access
|
|
65
|
+
GRANT CONNECT ON DATABASE mydb TO appuser;
|
|
66
|
+
|
|
67
|
+
-- Grant schema usage
|
|
68
|
+
GRANT USAGE ON SCHEMA public TO appuser;
|
|
69
|
+
|
|
70
|
+
-- Revoke access
|
|
71
|
+
REVOKE CONNECT ON DATABASE mydb FROM appuser;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Table Level
|
|
75
|
+
```sql
|
|
76
|
+
-- Grant table permissions
|
|
77
|
+
GRANT SELECT ON users TO appuser;
|
|
78
|
+
GRANT SELECT, INSERT, UPDATE ON orders TO appuser;
|
|
79
|
+
GRANT ALL PRIVILEGES ON products TO appuser;
|
|
80
|
+
|
|
81
|
+
-- Grant on all tables
|
|
82
|
+
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
|
|
83
|
+
|
|
84
|
+
-- Revoke permissions
|
|
85
|
+
REVOKE INSERT ON users FROM appuser;
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
#### Column Level
|
|
89
|
+
```sql
|
|
90
|
+
-- Grant specific columns
|
|
91
|
+
GRANT SELECT (id, name, email) ON users TO appuser;
|
|
92
|
+
GRANT UPDATE (status) ON orders TO appuser;
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Sequence Permissions
|
|
96
|
+
```sql
|
|
97
|
+
-- Grant sequence usage (for SERIAL/auto-increment)
|
|
98
|
+
GRANT USAGE, SELECT ON SEQUENCE users_id_seq TO appuser;
|
|
99
|
+
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO appuser;
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Function Permissions
|
|
103
|
+
```sql
|
|
104
|
+
-- Grant execute on function
|
|
105
|
+
GRANT EXECUTE ON FUNCTION get_user(integer) TO appuser;
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Default Privileges
|
|
109
|
+
```sql
|
|
110
|
+
-- Set default privileges for future objects
|
|
111
|
+
ALTER DEFAULT PRIVILEGES IN SCHEMA public
|
|
112
|
+
GRANT SELECT ON TABLES TO readonly;
|
|
113
|
+
|
|
114
|
+
ALTER DEFAULT PRIVILEGES IN SCHEMA public
|
|
115
|
+
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite;
|
|
116
|
+
|
|
117
|
+
ALTER DEFAULT PRIVILEGES IN SCHEMA public
|
|
118
|
+
GRANT USAGE ON SEQUENCES TO readwrite;
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### View Permissions
|
|
122
|
+
```sql
|
|
123
|
+
-- Show table permissions
|
|
124
|
+
\dp users
|
|
125
|
+
|
|
126
|
+
-- Show role memberships
|
|
127
|
+
\du
|
|
128
|
+
|
|
129
|
+
-- Query permissions
|
|
130
|
+
SELECT grantee, privilege_type
|
|
131
|
+
FROM information_schema.role_table_grants
|
|
132
|
+
WHERE table_name = 'users';
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Backup and Restore
|
|
136
|
+
|
|
137
|
+
### pg_dump (Logical Backup)
|
|
138
|
+
```bash
|
|
139
|
+
# Dump database to SQL file
|
|
140
|
+
pg_dump mydb > mydb.sql
|
|
141
|
+
|
|
142
|
+
# Custom format (compressed, allows selective restore)
|
|
143
|
+
pg_dump -Fc mydb > mydb.dump
|
|
144
|
+
|
|
145
|
+
# Directory format (parallel dump)
|
|
146
|
+
pg_dump -Fd mydb -j 4 -f mydb_dir
|
|
147
|
+
|
|
148
|
+
# Specific table
|
|
149
|
+
pg_dump -t users mydb > users.sql
|
|
150
|
+
|
|
151
|
+
# Multiple tables
|
|
152
|
+
pg_dump -t users -t orders mydb > tables.sql
|
|
153
|
+
|
|
154
|
+
# Schema only
|
|
155
|
+
pg_dump -s mydb > schema.sql
|
|
156
|
+
|
|
157
|
+
# Data only
|
|
158
|
+
pg_dump -a mydb > data.sql
|
|
159
|
+
|
|
160
|
+
# Exclude table
|
|
161
|
+
pg_dump --exclude-table=logs mydb > mydb.sql
|
|
162
|
+
|
|
163
|
+
# With compression
|
|
164
|
+
pg_dump -Fc -Z 9 mydb > mydb.dump
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### pg_dumpall (All Databases)
|
|
168
|
+
```bash
|
|
169
|
+
# Dump all databases
|
|
170
|
+
pg_dumpall > all_databases.sql
|
|
171
|
+
|
|
172
|
+
# Only globals (roles, tablespaces)
|
|
173
|
+
pg_dumpall --globals-only > globals.sql
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### pg_restore
|
|
177
|
+
```bash
|
|
178
|
+
# Restore from custom format
|
|
179
|
+
pg_restore -d mydb mydb.dump
|
|
180
|
+
|
|
181
|
+
# Restore specific table
|
|
182
|
+
pg_restore -d mydb -t users mydb.dump
|
|
183
|
+
|
|
184
|
+
# List contents
|
|
185
|
+
pg_restore -l mydb.dump
|
|
186
|
+
|
|
187
|
+
# Parallel restore
|
|
188
|
+
pg_restore -d mydb -j 4 mydb.dump
|
|
189
|
+
|
|
190
|
+
# Clean database first
|
|
191
|
+
pg_restore -d mydb --clean mydb.dump
|
|
192
|
+
|
|
193
|
+
# Create database if not exists
|
|
194
|
+
pg_restore -C -d postgres mydb.dump
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Restore from SQL
|
|
198
|
+
```bash
|
|
199
|
+
# Restore SQL dump
|
|
200
|
+
psql mydb < mydb.sql
|
|
201
|
+
|
|
202
|
+
# Create database and restore
|
|
203
|
+
createdb mydb
|
|
204
|
+
psql mydb < mydb.sql
|
|
205
|
+
|
|
206
|
+
# Single transaction
|
|
207
|
+
psql -1 mydb < mydb.sql
|
|
208
|
+
|
|
209
|
+
# Stop on error
|
|
210
|
+
psql --set ON_ERROR_STOP=on mydb < mydb.sql
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Automated Backup Script
|
|
214
|
+
```bash
|
|
215
|
+
#!/bin/bash
|
|
216
|
+
# backup.sh
|
|
217
|
+
|
|
218
|
+
# Configuration
|
|
219
|
+
DB_NAME="mydb"
|
|
220
|
+
BACKUP_DIR="/backups"
|
|
221
|
+
DATE=$(date +%Y%m%d_%H%M%S)
|
|
222
|
+
RETENTION_DAYS=7
|
|
223
|
+
|
|
224
|
+
# Create backup
|
|
225
|
+
pg_dump -Fc "$DB_NAME" > "$BACKUP_DIR/${DB_NAME}_${DATE}.dump"
|
|
226
|
+
|
|
227
|
+
# Remove old backups
|
|
228
|
+
find "$BACKUP_DIR" -name "${DB_NAME}_*.dump" -mtime +$RETENTION_DAYS -delete
|
|
229
|
+
|
|
230
|
+
# Log
|
|
231
|
+
echo "Backup completed: ${DB_NAME}_${DATE}.dump"
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Point-in-Time Recovery (PITR)
|
|
235
|
+
```bash
|
|
236
|
+
# Enable WAL archiving (postgresql.conf)
|
|
237
|
+
wal_level = replica
|
|
238
|
+
archive_mode = on
|
|
239
|
+
archive_command = 'cp %p /archive/%f'
|
|
240
|
+
max_wal_senders = 3
|
|
241
|
+
|
|
242
|
+
# Base backup
|
|
243
|
+
pg_basebackup -D /backup/base -Ft -z -P
|
|
244
|
+
|
|
245
|
+
# Restore to point in time
|
|
246
|
+
# 1. Stop PostgreSQL
|
|
247
|
+
# 2. Restore base backup
|
|
248
|
+
# 3. Create recovery.conf with recovery_target_time
|
|
249
|
+
# 4. Start PostgreSQL
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Replication
|
|
253
|
+
|
|
254
|
+
### Streaming Replication (Primary-Replica)
|
|
255
|
+
|
|
256
|
+
#### Primary Setup
|
|
257
|
+
```sql
|
|
258
|
+
-- Create replication user
|
|
259
|
+
CREATE USER replicator WITH REPLICATION PASSWORD 'replica_pass';
|
|
260
|
+
|
|
261
|
+
-- Configure postgresql.conf
|
|
262
|
+
wal_level = replica
|
|
263
|
+
max_wal_senders = 3
|
|
264
|
+
wal_keep_size = 64MB
|
|
265
|
+
|
|
266
|
+
-- Configure pg_hba.conf
|
|
267
|
+
host replication replicator replica_ip/32 md5
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
#### Replica Setup
|
|
271
|
+
```bash
|
|
272
|
+
# Stop replica PostgreSQL
|
|
273
|
+
systemctl stop postgresql
|
|
274
|
+
|
|
275
|
+
# Remove data directory
|
|
276
|
+
rm -rf /var/lib/postgresql/data/*
|
|
277
|
+
|
|
278
|
+
# Clone from primary
|
|
279
|
+
pg_basebackup -h primary_host -D /var/lib/postgresql/data -U replicator -P -R
|
|
280
|
+
|
|
281
|
+
# Start replica
|
|
282
|
+
systemctl start postgresql
|
|
283
|
+
|
|
284
|
+
# Check replication status
|
|
285
|
+
SELECT * FROM pg_stat_replication; -- On primary
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Logical Replication
|
|
289
|
+
|
|
290
|
+
#### Publisher (Primary)
|
|
291
|
+
```sql
|
|
292
|
+
-- Create publication
|
|
293
|
+
CREATE PUBLICATION my_publication FOR ALL TABLES;
|
|
294
|
+
|
|
295
|
+
-- Or specific tables
|
|
296
|
+
CREATE PUBLICATION my_publication FOR TABLE users, orders;
|
|
297
|
+
|
|
298
|
+
-- Check publications
|
|
299
|
+
\dRp
|
|
300
|
+
SELECT * FROM pg_publication;
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
#### Subscriber (Replica)
|
|
304
|
+
```sql
|
|
305
|
+
-- Create subscription
|
|
306
|
+
CREATE SUBSCRIPTION my_subscription
|
|
307
|
+
CONNECTION 'host=primary_host dbname=mydb user=replicator password=replica_pass'
|
|
308
|
+
PUBLICATION my_publication;
|
|
309
|
+
|
|
310
|
+
-- Check subscriptions
|
|
311
|
+
\dRs
|
|
312
|
+
SELECT * FROM pg_subscription;
|
|
313
|
+
|
|
314
|
+
-- Monitor replication
|
|
315
|
+
SELECT * FROM pg_stat_subscription;
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
## Monitoring
|
|
319
|
+
|
|
320
|
+
### Database Size
|
|
321
|
+
```sql
|
|
322
|
+
-- Database size
|
|
323
|
+
SELECT pg_size_pretty(pg_database_size('mydb'));
|
|
324
|
+
|
|
325
|
+
-- Table sizes
|
|
326
|
+
SELECT schemaname, tablename,
|
|
327
|
+
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size
|
|
328
|
+
FROM pg_tables
|
|
329
|
+
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
|
|
330
|
+
|
|
331
|
+
-- Index sizes
|
|
332
|
+
SELECT schemaname, tablename, indexname,
|
|
333
|
+
pg_size_pretty(pg_relation_size(indexrelid)) AS size
|
|
334
|
+
FROM pg_stat_user_indexes
|
|
335
|
+
ORDER BY pg_relation_size(indexrelid) DESC;
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Connections
|
|
339
|
+
```sql
|
|
340
|
+
-- Current connections
|
|
341
|
+
SELECT count(*) FROM pg_stat_activity;
|
|
342
|
+
|
|
343
|
+
-- Connections by database
|
|
344
|
+
SELECT datname, count(*) FROM pg_stat_activity GROUP BY datname;
|
|
345
|
+
|
|
346
|
+
-- Connection limit
|
|
347
|
+
SHOW max_connections;
|
|
348
|
+
|
|
349
|
+
-- Kill connection
|
|
350
|
+
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid = 12345;
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Activity
|
|
354
|
+
```sql
|
|
355
|
+
-- Active queries
|
|
356
|
+
SELECT pid, usename, state, query, query_start
|
|
357
|
+
FROM pg_stat_activity
|
|
358
|
+
WHERE state != 'idle';
|
|
359
|
+
|
|
360
|
+
-- Long-running queries
|
|
361
|
+
SELECT pid, now() - query_start AS duration, query
|
|
362
|
+
FROM pg_stat_activity
|
|
363
|
+
WHERE state != 'idle'
|
|
364
|
+
ORDER BY duration DESC;
|
|
365
|
+
|
|
366
|
+
-- Blocking queries
|
|
367
|
+
SELECT blocked.pid AS blocked_pid,
|
|
368
|
+
blocked.query AS blocked_query,
|
|
369
|
+
blocking.pid AS blocking_pid,
|
|
370
|
+
blocking.query AS blocking_query
|
|
371
|
+
FROM pg_stat_activity blocked
|
|
372
|
+
JOIN pg_stat_activity blocking
|
|
373
|
+
ON blocking.pid = ANY(pg_blocking_pids(blocked.pid));
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### Cache Hit Ratio
|
|
377
|
+
```sql
|
|
378
|
+
-- Should be > 0.99 for good performance
|
|
379
|
+
SELECT
|
|
380
|
+
sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) AS cache_hit_ratio
|
|
381
|
+
FROM pg_statio_user_tables;
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Table Bloat
|
|
385
|
+
```sql
|
|
386
|
+
-- Check for table bloat (requires pgstattuple extension)
|
|
387
|
+
CREATE EXTENSION pgstattuple;
|
|
388
|
+
|
|
389
|
+
SELECT schemaname, tablename,
|
|
390
|
+
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size,
|
|
391
|
+
pgstattuple(schemaname||'.'||tablename) AS stats
|
|
392
|
+
FROM pg_tables
|
|
393
|
+
WHERE schemaname = 'public';
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## Maintenance
|
|
397
|
+
|
|
398
|
+
### VACUUM
|
|
399
|
+
```sql
|
|
400
|
+
-- Reclaim storage
|
|
401
|
+
VACUUM users;
|
|
402
|
+
|
|
403
|
+
-- Verbose
|
|
404
|
+
VACUUM VERBOSE users;
|
|
405
|
+
|
|
406
|
+
-- Full (locks table, rewrites)
|
|
407
|
+
VACUUM FULL users;
|
|
408
|
+
|
|
409
|
+
-- With analyze
|
|
410
|
+
VACUUM ANALYZE users;
|
|
411
|
+
|
|
412
|
+
-- All tables
|
|
413
|
+
VACUUM;
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### Auto-Vacuum
|
|
417
|
+
```sql
|
|
418
|
+
-- Check last vacuum
|
|
419
|
+
SELECT schemaname, tablename, last_vacuum, last_autovacuum
|
|
420
|
+
FROM pg_stat_user_tables;
|
|
421
|
+
|
|
422
|
+
-- Configure postgresql.conf
|
|
423
|
+
autovacuum = on
|
|
424
|
+
autovacuum_vacuum_threshold = 50
|
|
425
|
+
autovacuum_vacuum_scale_factor = 0.2
|
|
426
|
+
autovacuum_analyze_threshold = 50
|
|
427
|
+
autovacuum_analyze_scale_factor = 0.1
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### REINDEX
|
|
431
|
+
```sql
|
|
432
|
+
-- Rebuild index
|
|
433
|
+
REINDEX INDEX idx_users_email;
|
|
434
|
+
|
|
435
|
+
-- Rebuild all indexes on table
|
|
436
|
+
REINDEX TABLE users;
|
|
437
|
+
|
|
438
|
+
-- Rebuild database indexes
|
|
439
|
+
REINDEX DATABASE mydb;
|
|
440
|
+
|
|
441
|
+
-- Concurrently (doesn't lock)
|
|
442
|
+
REINDEX INDEX CONCURRENTLY idx_users_email;
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### ANALYZE
|
|
446
|
+
```sql
|
|
447
|
+
-- Update statistics
|
|
448
|
+
ANALYZE users;
|
|
449
|
+
|
|
450
|
+
-- Specific columns
|
|
451
|
+
ANALYZE users(email, status);
|
|
452
|
+
|
|
453
|
+
-- All tables
|
|
454
|
+
ANALYZE;
|
|
455
|
+
|
|
456
|
+
-- Verbose
|
|
457
|
+
ANALYZE VERBOSE users;
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
## Configuration
|
|
461
|
+
|
|
462
|
+
### postgresql.conf Location
|
|
463
|
+
```sql
|
|
464
|
+
SHOW config_file;
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
### Key Settings
|
|
468
|
+
```conf
|
|
469
|
+
# Memory
|
|
470
|
+
shared_buffers = 4GB # 25% of RAM
|
|
471
|
+
work_mem = 64MB # Per operation
|
|
472
|
+
maintenance_work_mem = 512MB # VACUUM, CREATE INDEX
|
|
473
|
+
effective_cache_size = 12GB # OS cache estimate
|
|
474
|
+
|
|
475
|
+
# Query Planner
|
|
476
|
+
random_page_cost = 1.1 # Lower for SSD
|
|
477
|
+
effective_io_concurrency = 200 # Concurrent disk ops
|
|
478
|
+
|
|
479
|
+
# Connections
|
|
480
|
+
max_connections = 100
|
|
481
|
+
superuser_reserved_connections = 3
|
|
482
|
+
|
|
483
|
+
# Logging
|
|
484
|
+
log_destination = 'stderr'
|
|
485
|
+
logging_collector = on
|
|
486
|
+
log_directory = 'log'
|
|
487
|
+
log_filename = 'postgresql-%Y-%m-%d.log'
|
|
488
|
+
log_rotation_age = 1d
|
|
489
|
+
log_min_duration_statement = 100 # Log slow queries
|
|
490
|
+
|
|
491
|
+
# Replication
|
|
492
|
+
wal_level = replica
|
|
493
|
+
max_wal_senders = 3
|
|
494
|
+
wal_keep_size = 64MB
|
|
495
|
+
|
|
496
|
+
# Autovacuum
|
|
497
|
+
autovacuum = on
|
|
498
|
+
autovacuum_vacuum_scale_factor = 0.2
|
|
499
|
+
autovacuum_analyze_scale_factor = 0.1
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
### Reload Configuration
|
|
503
|
+
```sql
|
|
504
|
+
-- Reload config without restart
|
|
505
|
+
SELECT pg_reload_conf();
|
|
506
|
+
|
|
507
|
+
-- Or from shell
|
|
508
|
+
pg_ctl reload
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
## Security
|
|
512
|
+
|
|
513
|
+
### SSL/TLS
|
|
514
|
+
```conf
|
|
515
|
+
# postgresql.conf
|
|
516
|
+
ssl = on
|
|
517
|
+
ssl_cert_file = '/path/to/server.crt'
|
|
518
|
+
ssl_key_file = '/path/to/server.key'
|
|
519
|
+
ssl_ca_file = '/path/to/ca.crt'
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
### pg_hba.conf (Host-Based Authentication)
|
|
523
|
+
```conf
|
|
524
|
+
# TYPE DATABASE USER ADDRESS METHOD
|
|
525
|
+
|
|
526
|
+
# Local connections
|
|
527
|
+
local all postgres peer
|
|
528
|
+
local all all md5
|
|
529
|
+
|
|
530
|
+
# Remote connections
|
|
531
|
+
host all all 0.0.0.0/0 md5
|
|
532
|
+
host all all ::0/0 md5
|
|
533
|
+
|
|
534
|
+
# Replication
|
|
535
|
+
host replication replicator replica_ip/32 md5
|
|
536
|
+
|
|
537
|
+
# SSL required
|
|
538
|
+
hostssl all all 0.0.0.0/0 md5
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
### Row Level Security
|
|
542
|
+
```sql
|
|
543
|
+
-- Enable RLS
|
|
544
|
+
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
545
|
+
|
|
546
|
+
-- Create policy
|
|
547
|
+
CREATE POLICY user_policy ON users
|
|
548
|
+
USING (user_id = current_user_id());
|
|
549
|
+
|
|
550
|
+
-- Drop policy
|
|
551
|
+
DROP POLICY user_policy ON users;
|
|
552
|
+
|
|
553
|
+
-- View policies
|
|
554
|
+
\d+ users
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
## Best Practices
|
|
558
|
+
|
|
559
|
+
1. **Backups**
|
|
560
|
+
- Daily automated backups
|
|
561
|
+
- Test restores regularly
|
|
562
|
+
- Store backups off-site
|
|
563
|
+
- Use pg_dump custom format for flexibility
|
|
564
|
+
|
|
565
|
+
2. **Monitoring**
|
|
566
|
+
- Monitor connections, queries, cache hit ratio
|
|
567
|
+
- Set up alerts for critical metrics
|
|
568
|
+
- Log slow queries
|
|
569
|
+
- Use pg_stat_statements
|
|
570
|
+
|
|
571
|
+
3. **Security**
|
|
572
|
+
- Use strong passwords
|
|
573
|
+
- Restrict network access (pg_hba.conf)
|
|
574
|
+
- Enable SSL/TLS
|
|
575
|
+
- Regular security updates
|
|
576
|
+
- Principle of least privilege
|
|
577
|
+
|
|
578
|
+
4. **Maintenance**
|
|
579
|
+
- Regular VACUUM and ANALYZE
|
|
580
|
+
- Monitor autovacuum
|
|
581
|
+
- REINDEX periodically
|
|
582
|
+
- Check for table bloat
|
|
583
|
+
|
|
584
|
+
5. **Configuration**
|
|
585
|
+
- Tune for workload
|
|
586
|
+
- Use connection pooling (pgBouncer)
|
|
587
|
+
- Monitor and adjust memory settings
|
|
588
|
+
- Keep PostgreSQL updated
|
|
589
|
+
|
|
590
|
+
6. **Replication**
|
|
591
|
+
- At least one replica for HA
|
|
592
|
+
- Monitor replication lag
|
|
593
|
+
- Test failover procedures
|
|
594
|
+
- Use logical replication for selective replication
|