@mytechtoday/augment-extensions 0.2.0 → 0.5.0
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/README.md +614 -39
- package/augment-extensions/coding-standards/bash/README.md +196 -0
- package/augment-extensions/coding-standards/bash/module.json +163 -0
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
- package/augment-extensions/coding-standards/css/README.md +40 -0
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/css/module.json +44 -0
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html/README.md +40 -0
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html/module.json +44 -0
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/js/README.md +46 -0
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/js/module.json +49 -0
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/php/README.md +248 -0
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
- package/augment-extensions/coding-standards/php/module.json +166 -0
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
- package/augment-extensions/coding-standards/php/rules/security.md +358 -0
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
- package/augment-extensions/coding-standards/powershell/README.md +154 -0
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
- package/augment-extensions/coding-standards/powershell/module.json +165 -0
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
- package/augment-extensions/coding-standards/python/README.md +12 -8
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
- package/augment-extensions/coding-standards/python/module.json +8 -4
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
- package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
- package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
- package/augment-extensions/collections/html-css-js/README.md +82 -0
- package/augment-extensions/collections/html-css-js/collection.json +41 -0
- package/augment-extensions/domain-rules/database/README.md +161 -0
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
- package/augment-extensions/domain-rules/database/module.json +28 -0
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/README.md +136 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/SCHEMA-VALIDATION-REPORT.md +216 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/brand-kit-example.yaml +292 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/campaign-brief-example.yaml +389 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/content-calendar-example.yaml +643 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/email-newsletter-example.md +376 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/landing-page-example.md +934 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/ppc-ad-copy-example.md +301 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/seo-blog-post-example.md +347 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/social-media-campaign-example.md +606 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/module.json +50 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/affiliate-influencer-marketing.md +593 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/asset-management.md +418 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/brand-consistency.md +210 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/content-marketing.md +337 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/conversion-optimization.md +455 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/direct-sales.md +499 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/email-marketing.md +439 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/legal-compliance.md +227 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/ppc-advertising.md +569 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/seo-optimization.md +470 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/social-media-marketing.md +414 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/universal-marketing.md +177 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/asset-inventory.schema.json +247 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/brand-kit.schema.json +326 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/campaign-brief.schema.json +342 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/color-palette.schema.json +223 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/content-template.schema.json +383 -0
- package/augment-extensions/domain-rules/mcp/README.md +150 -0
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
- package/augment-extensions/domain-rules/mcp/module.json +49 -0
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
- package/augment-extensions/workflows/beads/module.json +4 -3
- package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -0
- package/augment-extensions/workflows/beads-integration/README.md +143 -0
- package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -0
- package/augment-extensions/workflows/beads-integration/config/schema.json +140 -0
- package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -0
- package/augment-extensions/workflows/beads-integration/module.json +75 -0
- package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -0
- package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -0
- package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -0
- package/augment-extensions/workflows/database/README.md +195 -0
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
- package/augment-extensions/workflows/database/module.json +42 -0
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
- package/augment-extensions/workflows/database/rules/workflow.md +458 -0
- package/augment-extensions/workflows/openspec/module.json +4 -3
- package/augment-extensions/writing-standards/screenplay/README.md +300 -0
- package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -0
- package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -0
- package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -0
- package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -0
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
- package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -0
- package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -0
- package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -0
- package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -0
- package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -0
- package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -0
- package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -0
- package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -0
- package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -0
- package/augment-extensions/writing-standards/screenplay/module.json +124 -0
- package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -0
- package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -0
- package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -0
- package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -0
- package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -0
- package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -0
- package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -0
- package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -0
- package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -0
- package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -0
- package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -0
- package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -0
- package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -0
- package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -0
- package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -0
- package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -0
- package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -0
- package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -0
- package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -0
- package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -0
- package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -0
- package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -0
- package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -0
- package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -0
- package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -0
- package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -0
- package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -0
- package/cli/MODULES.md +302 -0
- package/cli/dist/cli.js +168 -10
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/catalog.d.ts +13 -0
- package/cli/dist/commands/catalog.d.ts.map +1 -0
- package/cli/dist/commands/catalog.js +104 -0
- package/cli/dist/commands/catalog.js.map +1 -0
- package/cli/dist/commands/gui.d.ts +6 -0
- package/cli/dist/commands/gui.d.ts.map +1 -0
- package/cli/dist/commands/gui.js +211 -0
- package/cli/dist/commands/gui.js.map +1 -0
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +12 -0
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/install-rules.d.ts +14 -0
- package/cli/dist/commands/install-rules.d.ts.map +1 -0
- package/cli/dist/commands/install-rules.js +127 -0
- package/cli/dist/commands/install-rules.js.map +1 -0
- package/cli/dist/commands/link.d.ts.map +1 -1
- package/cli/dist/commands/link.js +9 -11
- package/cli/dist/commands/link.js.map +1 -1
- package/cli/dist/commands/list.d.ts.map +1 -1
- package/cli/dist/commands/list.js +11 -28
- package/cli/dist/commands/list.js.map +1 -1
- package/cli/dist/commands/mcp.d.ts +48 -0
- package/cli/dist/commands/mcp.d.ts.map +1 -0
- package/cli/dist/commands/mcp.js +229 -0
- package/cli/dist/commands/mcp.js.map +1 -0
- package/cli/dist/commands/self-remove.d.ts +7 -0
- package/cli/dist/commands/self-remove.d.ts.map +1 -0
- package/cli/dist/commands/self-remove.js +179 -0
- package/cli/dist/commands/self-remove.js.map +1 -0
- package/cli/dist/commands/show.d.ts +19 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +478 -63
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/skill.d.ts +67 -0
- package/cli/dist/commands/skill.d.ts.map +1 -0
- package/cli/dist/commands/skill.js +513 -0
- package/cli/dist/commands/skill.js.map +1 -0
- package/cli/dist/commands/unlink.d.ts +6 -0
- package/cli/dist/commands/unlink.d.ts.map +1 -0
- package/cli/dist/commands/unlink.js +115 -0
- package/cli/dist/commands/unlink.js.map +1 -0
- package/cli/dist/commands/validate.d.ts +6 -0
- package/cli/dist/commands/validate.d.ts.map +1 -0
- package/cli/dist/commands/validate.js +159 -0
- package/cli/dist/commands/validate.js.map +1 -0
- package/cli/dist/types/gui.d.ts +62 -0
- package/cli/dist/types/gui.d.ts.map +1 -0
- package/cli/dist/types/gui.js +30 -0
- package/cli/dist/types/gui.js.map +1 -0
- package/cli/dist/utils/catalog-sync.d.ts +22 -0
- package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
- package/cli/dist/utils/catalog-sync.js +157 -0
- package/cli/dist/utils/catalog-sync.js.map +1 -0
- package/cli/dist/utils/character-count.d.ts +56 -0
- package/cli/dist/utils/character-count.d.ts.map +1 -0
- package/cli/dist/utils/character-count.js +190 -0
- package/cli/dist/utils/character-count.js.map +1 -0
- package/cli/dist/utils/documentation-validator.d.ts +18 -0
- package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
- package/cli/dist/utils/documentation-validator.js +233 -0
- package/cli/dist/utils/documentation-validator.js.map +1 -0
- package/cli/dist/utils/gui-helpers.d.ts +23 -0
- package/cli/dist/utils/gui-helpers.d.ts.map +1 -0
- package/cli/dist/utils/gui-helpers.js +159 -0
- package/cli/dist/utils/gui-helpers.js.map +1 -0
- package/cli/dist/utils/install-rules.d.ts +32 -0
- package/cli/dist/utils/install-rules.d.ts.map +1 -0
- package/cli/dist/utils/install-rules.js +375 -0
- package/cli/dist/utils/install-rules.js.map +1 -0
- package/cli/dist/utils/mcp-integration.d.ts +70 -0
- package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
- package/cli/dist/utils/mcp-integration.js +292 -0
- package/cli/dist/utils/mcp-integration.js.map +1 -0
- package/cli/dist/utils/module-system.d.ts +232 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -0
- package/cli/dist/utils/module-system.js +900 -0
- package/cli/dist/utils/module-system.js.map +1 -0
- package/cli/dist/utils/modules-catalog.d.ts +33 -0
- package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
- package/cli/dist/utils/modules-catalog.js +163 -0
- package/cli/dist/utils/modules-catalog.js.map +1 -0
- package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
- package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
- package/cli/dist/utils/rule-install-hooks.js +224 -0
- package/cli/dist/utils/rule-install-hooks.js.map +1 -0
- package/cli/dist/utils/skill-system.d.ts +95 -0
- package/cli/dist/utils/skill-system.d.ts.map +1 -0
- package/cli/dist/utils/skill-system.js +313 -0
- package/cli/dist/utils/skill-system.js.map +1 -0
- package/modules.md +559 -105
- package/package.json +17 -6
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
# Universal Database Best Practices
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document covers universal best practices that apply to all database types: relational (SQL), NoSQL (document, key-value, graph), vector databases, and flat file databases.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Data Security
|
|
10
|
+
|
|
11
|
+
### Encryption at Rest
|
|
12
|
+
|
|
13
|
+
**Encrypt sensitive data stored in databases:**
|
|
14
|
+
|
|
15
|
+
```sql
|
|
16
|
+
-- PostgreSQL: Enable transparent data encryption (TDE)
|
|
17
|
+
-- Use pgcrypto extension for column-level encryption
|
|
18
|
+
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
19
|
+
|
|
20
|
+
-- Encrypt sensitive columns
|
|
21
|
+
CREATE TABLE users (
|
|
22
|
+
id SERIAL PRIMARY KEY,
|
|
23
|
+
email VARCHAR(255) NOT NULL,
|
|
24
|
+
ssn BYTEA, -- Encrypted field
|
|
25
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
-- Insert encrypted data
|
|
29
|
+
INSERT INTO users (email, ssn)
|
|
30
|
+
VALUES ('user@example.com', pgp_sym_encrypt('123-45-6789', 'encryption-key'));
|
|
31
|
+
|
|
32
|
+
-- Query encrypted data
|
|
33
|
+
SELECT email, pgp_sym_decrypt(ssn, 'encryption-key') AS ssn
|
|
34
|
+
FROM users;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Best Practices:**
|
|
38
|
+
- ✅ Use database-native encryption features (TDE, column-level encryption)
|
|
39
|
+
- ✅ Encrypt entire database volumes using OS/cloud provider encryption
|
|
40
|
+
- ✅ Store encryption keys in secure key management systems (AWS KMS, Azure Key Vault, HashiCorp Vault)
|
|
41
|
+
- ✅ Rotate encryption keys regularly
|
|
42
|
+
- ❌ Never store encryption keys in application code or version control
|
|
43
|
+
|
|
44
|
+
### Encryption in Transit
|
|
45
|
+
|
|
46
|
+
**Always use encrypted connections:**
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
// Node.js with PostgreSQL
|
|
50
|
+
const { Pool } = require('pg');
|
|
51
|
+
|
|
52
|
+
const pool = new Pool({
|
|
53
|
+
host: 'db.example.com',
|
|
54
|
+
database: 'mydb',
|
|
55
|
+
user: 'dbuser',
|
|
56
|
+
password: process.env.DB_PASSWORD,
|
|
57
|
+
ssl: {
|
|
58
|
+
rejectUnauthorized: true,
|
|
59
|
+
ca: fs.readFileSync('/path/to/ca-cert.pem').toString(),
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Best Practices:**
|
|
65
|
+
- ✅ Require SSL/TLS for all database connections
|
|
66
|
+
- ✅ Use certificate-based authentication when possible
|
|
67
|
+
- ✅ Verify server certificates (reject unauthorized connections)
|
|
68
|
+
- ✅ Use TLS 1.2 or higher
|
|
69
|
+
- ❌ Never allow unencrypted connections in production
|
|
70
|
+
|
|
71
|
+
### Access Controls
|
|
72
|
+
|
|
73
|
+
**Implement least privilege access:**
|
|
74
|
+
|
|
75
|
+
```sql
|
|
76
|
+
-- PostgreSQL: Create role with minimal permissions
|
|
77
|
+
CREATE ROLE app_reader;
|
|
78
|
+
GRANT CONNECT ON DATABASE mydb TO app_reader;
|
|
79
|
+
GRANT USAGE ON SCHEMA public TO app_reader;
|
|
80
|
+
GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_reader;
|
|
81
|
+
|
|
82
|
+
-- Create role for application writes
|
|
83
|
+
CREATE ROLE app_writer;
|
|
84
|
+
GRANT CONNECT ON DATABASE mydb TO app_writer;
|
|
85
|
+
GRANT USAGE ON SCHEMA public TO app_writer;
|
|
86
|
+
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO app_writer;
|
|
87
|
+
|
|
88
|
+
-- Create user with specific role
|
|
89
|
+
CREATE USER app_user WITH PASSWORD 'secure-password';
|
|
90
|
+
GRANT app_writer TO app_user;
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Best Practices:**
|
|
94
|
+
- ✅ Use role-based access control (RBAC)
|
|
95
|
+
- ✅ Grant minimum necessary permissions
|
|
96
|
+
- ✅ Separate read-only and read-write access
|
|
97
|
+
- ✅ Use different credentials for different application components
|
|
98
|
+
- ✅ Regularly audit and review permissions
|
|
99
|
+
- ❌ Never use superuser/admin accounts for applications
|
|
100
|
+
- ❌ Never share database credentials between environments
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Authentication & Authorization
|
|
105
|
+
|
|
106
|
+
### Secure Authentication
|
|
107
|
+
|
|
108
|
+
**Best Practices:**
|
|
109
|
+
- ✅ Use strong, unique passwords (minimum 16 characters)
|
|
110
|
+
- ✅ Store passwords in secure secret management systems
|
|
111
|
+
- ✅ Use certificate-based authentication for service accounts
|
|
112
|
+
- ✅ Enable multi-factor authentication (MFA) for admin access
|
|
113
|
+
- ✅ Implement account lockout after failed login attempts
|
|
114
|
+
- ❌ Never hardcode credentials in application code
|
|
115
|
+
- ❌ Never commit credentials to version control
|
|
116
|
+
|
|
117
|
+
### Connection String Security
|
|
118
|
+
|
|
119
|
+
```javascript
|
|
120
|
+
// ❌ BAD: Hardcoded credentials
|
|
121
|
+
const connectionString = 'postgresql://admin:password123@db.example.com:5432/mydb';
|
|
122
|
+
|
|
123
|
+
// ✅ GOOD: Use environment variables
|
|
124
|
+
const connectionString = process.env.DATABASE_URL;
|
|
125
|
+
|
|
126
|
+
// ✅ BETTER: Use secret management
|
|
127
|
+
const AWS = require('aws-sdk');
|
|
128
|
+
const secretsManager = new AWS.SecretsManager();
|
|
129
|
+
|
|
130
|
+
async function getDatabaseCredentials() {
|
|
131
|
+
const secret = await secretsManager.getSecretValue({
|
|
132
|
+
SecretId: 'prod/database/credentials'
|
|
133
|
+
}).promise();
|
|
134
|
+
|
|
135
|
+
return JSON.parse(secret.SecretString);
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Data Privacy & Compliance
|
|
142
|
+
|
|
143
|
+
### GDPR Compliance
|
|
144
|
+
|
|
145
|
+
**Right to be forgotten:**
|
|
146
|
+
|
|
147
|
+
```sql
|
|
148
|
+
-- Implement soft delete for audit trail
|
|
149
|
+
ALTER TABLE users ADD COLUMN deleted_at TIMESTAMP;
|
|
150
|
+
ALTER TABLE users ADD COLUMN deletion_reason TEXT;
|
|
151
|
+
|
|
152
|
+
-- Delete user data (GDPR request)
|
|
153
|
+
UPDATE users
|
|
154
|
+
SET
|
|
155
|
+
email = 'deleted@example.com',
|
|
156
|
+
name = 'DELETED',
|
|
157
|
+
deleted_at = CURRENT_TIMESTAMP,
|
|
158
|
+
deletion_reason = 'GDPR request'
|
|
159
|
+
WHERE id = 12345;
|
|
160
|
+
|
|
161
|
+
-- Permanently delete after retention period
|
|
162
|
+
DELETE FROM users
|
|
163
|
+
WHERE deleted_at < CURRENT_TIMESTAMP - INTERVAL '30 days';
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### HIPAA Compliance
|
|
167
|
+
|
|
168
|
+
**Audit logging for protected health information (PHI):**
|
|
169
|
+
|
|
170
|
+
```sql
|
|
171
|
+
-- Create audit log table
|
|
172
|
+
CREATE TABLE audit_log (
|
|
173
|
+
id SERIAL PRIMARY KEY,
|
|
174
|
+
table_name VARCHAR(255) NOT NULL,
|
|
175
|
+
record_id BIGINT NOT NULL,
|
|
176
|
+
action VARCHAR(50) NOT NULL, -- INSERT, UPDATE, DELETE, SELECT
|
|
177
|
+
user_id BIGINT NOT NULL,
|
|
178
|
+
user_ip INET,
|
|
179
|
+
changed_fields JSONB,
|
|
180
|
+
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
-- Trigger for audit logging
|
|
184
|
+
CREATE OR REPLACE FUNCTION audit_trigger_func()
|
|
185
|
+
RETURNS TRIGGER AS $$
|
|
186
|
+
BEGIN
|
|
187
|
+
INSERT INTO audit_log (table_name, record_id, action, user_id, changed_fields)
|
|
188
|
+
VALUES (
|
|
189
|
+
TG_TABLE_NAME,
|
|
190
|
+
NEW.id,
|
|
191
|
+
TG_OP,
|
|
192
|
+
current_setting('app.user_id')::BIGINT,
|
|
193
|
+
to_jsonb(NEW)
|
|
194
|
+
);
|
|
195
|
+
RETURN NEW;
|
|
196
|
+
END;
|
|
197
|
+
$$ LANGUAGE plpgsql;
|
|
198
|
+
|
|
199
|
+
-- Apply trigger to sensitive tables
|
|
200
|
+
CREATE TRIGGER audit_patients
|
|
201
|
+
AFTER INSERT OR UPDATE OR DELETE ON patients
|
|
202
|
+
FOR EACH ROW EXECUTE FUNCTION audit_trigger_func();
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### CCPA Compliance
|
|
206
|
+
|
|
207
|
+
**Data portability and disclosure:**
|
|
208
|
+
|
|
209
|
+
```sql
|
|
210
|
+
-- Export user data (CCPA request)
|
|
211
|
+
SELECT
|
|
212
|
+
u.id,
|
|
213
|
+
u.email,
|
|
214
|
+
u.name,
|
|
215
|
+
u.created_at,
|
|
216
|
+
json_agg(o.*) AS orders,
|
|
217
|
+
json_agg(p.*) AS preferences
|
|
218
|
+
FROM users u
|
|
219
|
+
LEFT JOIN orders o ON o.user_id = u.id
|
|
220
|
+
LEFT JOIN user_preferences p ON p.user_id = u.id
|
|
221
|
+
WHERE u.id = 12345
|
|
222
|
+
GROUP BY u.id;
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Best Practices:**
|
|
226
|
+
- ✅ Implement data export functionality
|
|
227
|
+
- ✅ Maintain audit logs for all data access
|
|
228
|
+
- ✅ Document data retention policies
|
|
229
|
+
- ✅ Implement data anonymization for analytics
|
|
230
|
+
- ✅ Provide clear consent mechanisms
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Backup & Disaster Recovery
|
|
235
|
+
|
|
236
|
+
### Backup Strategy
|
|
237
|
+
|
|
238
|
+
**3-2-1 Backup Rule:**
|
|
239
|
+
- **3** copies of data
|
|
240
|
+
- **2** different storage media
|
|
241
|
+
- **1** off-site backup
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
#!/bin/bash
|
|
245
|
+
# PostgreSQL backup script
|
|
246
|
+
|
|
247
|
+
# Full backup
|
|
248
|
+
pg_dump -h localhost -U postgres -F c -b -v -f "/backups/mydb_$(date +%Y%m%d_%H%M%S).backup" mydb
|
|
249
|
+
|
|
250
|
+
# Incremental backup using WAL archiving
|
|
251
|
+
# In postgresql.conf:
|
|
252
|
+
# wal_level = replica
|
|
253
|
+
# archive_mode = on
|
|
254
|
+
# archive_command = 'cp %p /archive/%f'
|
|
255
|
+
|
|
256
|
+
# Point-in-time recovery (PITR)
|
|
257
|
+
pg_basebackup -h localhost -D /backups/base -U replication -v -P --wal-method=stream
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**Best Practices:**
|
|
261
|
+
- ✅ Automate backups (daily full, hourly incremental)
|
|
262
|
+
- ✅ Test restore procedures regularly (monthly)
|
|
263
|
+
- ✅ Store backups in multiple geographic locations
|
|
264
|
+
- ✅ Encrypt backups at rest and in transit
|
|
265
|
+
- ✅ Monitor backup success/failure
|
|
266
|
+
- ✅ Document recovery time objective (RTO) and recovery point objective (RPO)
|
|
267
|
+
- ❌ Never rely on a single backup location
|
|
268
|
+
|
|
269
|
+
### Disaster Recovery Plan
|
|
270
|
+
|
|
271
|
+
**Key Components:**
|
|
272
|
+
1. **Backup verification**: Regularly test backup integrity
|
|
273
|
+
2. **Failover procedures**: Document and test failover to standby
|
|
274
|
+
3. **Recovery procedures**: Step-by-step recovery instructions
|
|
275
|
+
4. **Communication plan**: Who to notify during incidents
|
|
276
|
+
5. **Post-incident review**: Learn from failures
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Monitoring & Observability
|
|
281
|
+
|
|
282
|
+
### Key Metrics to Monitor
|
|
283
|
+
|
|
284
|
+
**Performance Metrics:**
|
|
285
|
+
- Query execution time (p50, p95, p99)
|
|
286
|
+
- Connection pool utilization
|
|
287
|
+
- Cache hit ratio
|
|
288
|
+
- Disk I/O (IOPS, throughput)
|
|
289
|
+
- CPU and memory usage
|
|
290
|
+
- Replication lag (for replicas)
|
|
291
|
+
|
|
292
|
+
**Health Metrics:**
|
|
293
|
+
- Database uptime
|
|
294
|
+
- Failed connection attempts
|
|
295
|
+
- Deadlocks and lock waits
|
|
296
|
+
- Transaction rollback rate
|
|
297
|
+
- Error rate
|
|
298
|
+
|
|
299
|
+
### Monitoring Implementation
|
|
300
|
+
|
|
301
|
+
```javascript
|
|
302
|
+
// Node.js with Prometheus metrics
|
|
303
|
+
const client = require('prom-client');
|
|
304
|
+
|
|
305
|
+
// Query duration histogram
|
|
306
|
+
const queryDuration = new client.Histogram({
|
|
307
|
+
name: 'db_query_duration_seconds',
|
|
308
|
+
help: 'Database query duration in seconds',
|
|
309
|
+
labelNames: ['query_type', 'table'],
|
|
310
|
+
buckets: [0.001, 0.01, 0.1, 1, 5, 10]
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
// Connection pool gauge
|
|
314
|
+
const poolConnections = new client.Gauge({
|
|
315
|
+
name: 'db_pool_connections',
|
|
316
|
+
help: 'Number of database connections',
|
|
317
|
+
labelNames: ['state'] // active, idle, waiting
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
// Instrument queries
|
|
321
|
+
async function executeQuery(query, params) {
|
|
322
|
+
const end = queryDuration.startTimer({ query_type: 'SELECT', table: 'users' });
|
|
323
|
+
try {
|
|
324
|
+
const result = await pool.query(query, params);
|
|
325
|
+
return result;
|
|
326
|
+
} finally {
|
|
327
|
+
end();
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**Best Practices:**
|
|
333
|
+
- ✅ Set up alerts for critical metrics (high CPU, slow queries, connection exhaustion)
|
|
334
|
+
- ✅ Use centralized logging (ELK stack, Splunk, CloudWatch)
|
|
335
|
+
- ✅ Monitor query performance trends over time
|
|
336
|
+
- ✅ Track slow query logs
|
|
337
|
+
- ✅ Implement health check endpoints
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Performance Profiling
|
|
342
|
+
|
|
343
|
+
### Query Analysis
|
|
344
|
+
|
|
345
|
+
```sql
|
|
346
|
+
-- PostgreSQL: Enable query logging
|
|
347
|
+
-- In postgresql.conf:
|
|
348
|
+
-- log_min_duration_statement = 1000 -- Log queries > 1 second
|
|
349
|
+
-- log_statement = 'all'
|
|
350
|
+
|
|
351
|
+
-- Analyze query execution plan
|
|
352
|
+
EXPLAIN ANALYZE
|
|
353
|
+
SELECT u.name, COUNT(o.id) AS order_count
|
|
354
|
+
FROM users u
|
|
355
|
+
LEFT JOIN orders o ON o.user_id = u.id
|
|
356
|
+
WHERE u.created_at > '2024-01-01'
|
|
357
|
+
GROUP BY u.id, u.name
|
|
358
|
+
ORDER BY order_count DESC
|
|
359
|
+
LIMIT 10;
|
|
360
|
+
|
|
361
|
+
-- Find slow queries
|
|
362
|
+
SELECT
|
|
363
|
+
query,
|
|
364
|
+
calls,
|
|
365
|
+
total_time,
|
|
366
|
+
mean_time,
|
|
367
|
+
max_time
|
|
368
|
+
FROM pg_stat_statements
|
|
369
|
+
ORDER BY mean_time DESC
|
|
370
|
+
LIMIT 20;
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
**Best Practices:**
|
|
374
|
+
- ✅ Use EXPLAIN ANALYZE to understand query execution
|
|
375
|
+
- ✅ Identify and optimize N+1 queries
|
|
376
|
+
- ✅ Monitor query execution time trends
|
|
377
|
+
- ✅ Set up slow query alerts
|
|
378
|
+
- ✅ Regularly review and optimize top queries
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## Version Control for Schemas
|
|
383
|
+
|
|
384
|
+
### Migration-Based Schema Management
|
|
385
|
+
|
|
386
|
+
**Best Practices:**
|
|
387
|
+
- ✅ Use migration tools (Flyway, Liquibase, Alembic, Prisma Migrate)
|
|
388
|
+
- ✅ Version all schema changes
|
|
389
|
+
- ✅ Make migrations reversible (up/down migrations)
|
|
390
|
+
- ✅ Test migrations in staging before production
|
|
391
|
+
- ✅ Include migrations in version control
|
|
392
|
+
- ❌ Never manually modify production schemas
|
|
393
|
+
|
|
394
|
+
### Example Migration Structure
|
|
395
|
+
|
|
396
|
+
```
|
|
397
|
+
migrations/
|
|
398
|
+
├── 001_create_users_table.sql
|
|
399
|
+
├── 002_add_email_index.sql
|
|
400
|
+
├── 003_create_orders_table.sql
|
|
401
|
+
└── 004_add_user_preferences.sql
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
```sql
|
|
405
|
+
-- migrations/001_create_users_table.sql
|
|
406
|
+
-- Up migration
|
|
407
|
+
CREATE TABLE users (
|
|
408
|
+
id SERIAL PRIMARY KEY,
|
|
409
|
+
email VARCHAR(255) UNIQUE NOT NULL,
|
|
410
|
+
name VARCHAR(255) NOT NULL,
|
|
411
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
412
|
+
);
|
|
413
|
+
|
|
414
|
+
-- Down migration (in separate file or section)
|
|
415
|
+
DROP TABLE users;
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## CI/CD Integration
|
|
421
|
+
|
|
422
|
+
### Automated Testing
|
|
423
|
+
|
|
424
|
+
```yaml
|
|
425
|
+
# .github/workflows/database-tests.yml
|
|
426
|
+
name: Database Tests
|
|
427
|
+
|
|
428
|
+
on: [push, pull_request]
|
|
429
|
+
|
|
430
|
+
jobs:
|
|
431
|
+
test:
|
|
432
|
+
runs-on: ubuntu-latest
|
|
433
|
+
|
|
434
|
+
services:
|
|
435
|
+
postgres:
|
|
436
|
+
image: postgres:15
|
|
437
|
+
env:
|
|
438
|
+
POSTGRES_PASSWORD: postgres
|
|
439
|
+
options: >-
|
|
440
|
+
--health-cmd pg_isready
|
|
441
|
+
--health-interval 10s
|
|
442
|
+
--health-timeout 5s
|
|
443
|
+
--health-retries 5
|
|
444
|
+
|
|
445
|
+
steps:
|
|
446
|
+
- uses: actions/checkout@v3
|
|
447
|
+
|
|
448
|
+
- name: Run migrations
|
|
449
|
+
run: npm run migrate
|
|
450
|
+
|
|
451
|
+
- name: Run tests
|
|
452
|
+
run: npm test
|
|
453
|
+
|
|
454
|
+
- name: Run integration tests
|
|
455
|
+
run: npm run test:integration
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
**Best Practices:**
|
|
459
|
+
- ✅ Run migrations in CI/CD pipeline
|
|
460
|
+
- ✅ Test migrations on fresh database
|
|
461
|
+
- ✅ Test rollback procedures
|
|
462
|
+
- ✅ Run integration tests against real database
|
|
463
|
+
- ✅ Validate schema changes don't break existing queries
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## Summary
|
|
468
|
+
|
|
469
|
+
**Key Takeaways:**
|
|
470
|
+
|
|
471
|
+
1. **Security First**: Encrypt data at rest and in transit, implement least privilege access
|
|
472
|
+
2. **Compliance**: Understand and implement GDPR, HIPAA, CCPA requirements
|
|
473
|
+
3. **Backup & Recovery**: Automate backups, test restores regularly, maintain disaster recovery plan
|
|
474
|
+
4. **Monitoring**: Track performance and health metrics, set up alerts
|
|
475
|
+
5. **Version Control**: Use migration-based schema management, never manual changes
|
|
476
|
+
6. **CI/CD**: Automate testing, validate migrations, run integration tests
|
|
477
|
+
|
|
478
|
+
**Common Pitfalls:**
|
|
479
|
+
- ❌ Storing credentials in code or version control
|
|
480
|
+
- ❌ Not testing backup restore procedures
|
|
481
|
+
- ❌ Ignoring slow query warnings
|
|
482
|
+
- ❌ Manual schema changes in production
|
|
483
|
+
- ❌ Not monitoring database health metrics
|
|
484
|
+
- ❌ Insufficient access controls
|
|
485
|
+
|