@ngxtm/devkit 3.0.3 → 3.2.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/package.json +2 -1
- package/skills/SPDD/1-research.md +22 -0
- package/skills/SPDD/2-spec.md +20 -0
- package/skills/SPDD/3-implementation.md +20 -0
- package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
- package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
- package/skills/active-directory-attacks/references/advanced-attacks.md +382 -382
- package/skills/agent-framework-azure-hosted-agents/SKILL.md +0 -3
- package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
- package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
- package/skills/ai-engineer/SKILL.md +171 -0
- package/skills/airflow-dag-patterns/SKILL.md +41 -0
- package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
- package/skills/angular-migration/SKILL.md +428 -0
- package/skills/anti-reversing-techniques/SKILL.md +42 -0
- package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
- package/skills/api-design-principles/SKILL.md +37 -0
- package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/skills/api-documenter/SKILL.md +184 -0
- package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
- package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
- package/skills/application-performance-performance-optimization/SKILL.md +154 -0
- package/skills/architect-review/SKILL.md +174 -0
- package/skills/architecture-decision-records/SKILL.md +441 -0
- package/skills/architecture-patterns/SKILL.md +37 -0
- package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
- package/skills/arm-cortex-expert/SKILL.md +306 -0
- package/skills/artifacts-builder/scripts/bundle-artifact.sh +0 -0
- package/skills/artifacts-builder/scripts/init-artifact.sh +0 -0
- package/skills/async-python-patterns/SKILL.md +39 -0
- package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
- package/skills/attack-tree-construction/SKILL.md +38 -0
- package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
- package/skills/auth-implementation-patterns/SKILL.md +39 -0
- package/skills/auth-implementation-patterns/resources/implementation-playbook.md +633 -0
- package/skills/automate-whatsapp/SKILL.md +257 -0
- package/skills/aws-agentic-ai/services/gateway/deploy-template.sh +0 -0
- package/skills/aws-agentic-ai/services/gateway/validate-deployment.sh +0 -0
- package/skills/aws-cdk-development/scripts/validate-stack.sh +0 -0
- package/skills/aws-penetration-testing/references/advanced-aws-pentesting.md +469 -469
- package/skills/aws-skills/SKILL.md +22 -0
- package/skills/azd-deployment/SKILL.md +0 -2
- package/skills/backend-architect/SKILL.md +333 -0
- package/skills/backend-development-feature-development/SKILL.md +180 -0
- package/skills/backend-security-coder/SKILL.md +156 -0
- package/skills/backtesting-frameworks/SKILL.md +39 -0
- package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
- package/skills/bash-defensive-patterns/SKILL.md +43 -0
- package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
- package/skills/bash-pro/SKILL.md +310 -0
- package/skills/bats-testing-patterns/SKILL.md +34 -0
- package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
- package/skills/bazel-build-optimization/SKILL.md +397 -0
- package/skills/beautiful-prose/SKILL.md +22 -0
- package/skills/billing-automation/SKILL.md +42 -0
- package/skills/billing-automation/resources/implementation-playbook.md +544 -0
- package/skills/binary-analysis-patterns/SKILL.md +450 -0
- package/skills/blockchain-developer/SKILL.md +208 -0
- package/skills/business-analyst/SKILL.md +182 -0
- package/skills/c-pro/SKILL.md +56 -0
- package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
- package/skills/c4-code/SKILL.md +244 -0
- package/skills/c4-component/SKILL.md +153 -0
- package/skills/c4-container/SKILL.md +171 -0
- package/skills/c4-context/SKILL.md +150 -0
- package/skills/cc-skill-continuous-learning/evaluate-session.sh +0 -0
- package/skills/cc-skill-strategic-compact/suggest-compact.sh +0 -0
- package/skills/changelog-automation/SKILL.md +38 -0
- package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
- package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
- package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
- package/skills/clarity-gate/SKILL.md +22 -0
- package/skills/claude-ally-health/SKILL.md +22 -0
- package/skills/claude-scientific-skills/SKILL.md +22 -0
- package/skills/claude-speed-reader/SKILL.md +22 -0
- package/skills/claude-win11-speckit-update-skill/SKILL.md +22 -0
- package/skills/cloud-architect/SKILL.md +131 -102
- package/skills/cloud-penetration-testing/references/advanced-cloud-scripts.md +318 -318
- package/skills/code-documentation-code-explain/SKILL.md +46 -0
- package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
- package/skills/code-documentation-doc-generate/SKILL.md +48 -0
- package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/code-refactoring-context-restore/SKILL.md +179 -0
- package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
- package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
- package/skills/code-review-ai-ai-review/SKILL.md +450 -0
- package/skills/code-review-excellence/SKILL.md +40 -0
- package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
- package/skills/code-reviewer/SKILL.md +174 -205
- package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
- package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
- package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
- package/skills/commit/SKILL.md +171 -0
- package/skills/competitive-landscape/SKILL.md +34 -0
- package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
- package/skills/comprehensive-review-full-review/SKILL.md +146 -0
- package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
- package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
- package/skills/conductor-implement/SKILL.md +388 -0
- package/skills/conductor-manage/SKILL.md +39 -0
- package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
- package/skills/conductor-new-track/SKILL.md +433 -0
- package/skills/conductor-revert/SKILL.md +372 -0
- package/skills/conductor-setup/SKILL.md +426 -0
- package/skills/conductor-status/SKILL.md +338 -0
- package/skills/conductor-validator/SKILL.md +62 -0
- package/skills/content-marketer/SKILL.md +170 -0
- package/skills/context-compression/SKILL.md +266 -0
- package/skills/context-degradation/SKILL.md +238 -0
- package/skills/context-driven-development/SKILL.md +400 -0
- package/skills/context-fundamentals/SKILL.md +192 -0
- package/skills/context-management-context-restore/SKILL.md +179 -0
- package/skills/context-management-context-save/SKILL.md +177 -0
- package/skills/context-manager/SKILL.md +185 -0
- package/skills/context-optimization/SKILL.md +186 -0
- package/skills/cost-optimization/SKILL.md +286 -0
- package/skills/cpp-pro/SKILL.md +42 -80
- package/skills/cqrs-implementation/SKILL.md +35 -0
- package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
- package/skills/create-pr/SKILL.md +192 -0
- package/skills/csharp-pro/SKILL.md +59 -0
- package/skills/culture-index/SKILL.md +43 -0
- package/skills/customer-support/SKILL.md +170 -0
- package/skills/daily-news-report/SKILL.md +178 -179
- package/skills/data-engineer/SKILL.md +224 -0
- package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
- package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
- package/skills/data-quality-frameworks/SKILL.md +40 -0
- package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
- package/skills/data-scientist/SKILL.md +199 -0
- package/skills/data-storytelling/SKILL.md +465 -0
- package/skills/database-admin/SKILL.md +165 -0
- package/skills/database-architect/SKILL.md +268 -0
- package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
- package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
- package/skills/database-migration/SKILL.md +436 -0
- package/skills/database-migrations-migration-observability/SKILL.md +420 -0
- package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
- package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
- package/skills/database-optimizer/SKILL.md +163 -91
- package/skills/dbt-transformation-patterns/SKILL.md +34 -0
- package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
- package/skills/debugger/SKILL.md +49 -0
- package/skills/debugging-strategies/SKILL.md +34 -0
- package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
- package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
- package/skills/deep-research/SKILL.md +114 -0
- package/skills/defi-protocol-templates/SKILL.md +466 -0
- package/skills/dependency-management-deps-audit/SKILL.md +44 -0
- package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/dependency-upgrade/SKILL.md +421 -0
- package/skills/deployment-engineer/SKILL.md +170 -0
- package/skills/deployment-pipeline-design/SKILL.md +371 -0
- package/skills/deployment-validation-config-validate/SKILL.md +496 -0
- package/skills/design-md/SKILL.md +178 -0
- package/skills/devops-troubleshooter/SKILL.md +161 -0
- package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
- package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
- package/skills/distributed-tracing/SKILL.md +450 -0
- package/skills/django-pro/SKILL.md +180 -0
- package/skills/docs-architect/SKILL.md +98 -0
- package/skills/document-skills/docx/ooxml/scripts/pack.py +0 -0
- package/skills/document-skills/docx/ooxml/scripts/unpack.py +0 -0
- package/skills/document-skills/docx/ooxml/scripts/validate.py +0 -0
- package/skills/document-skills/docx/scripts/__init__.py +0 -0
- package/skills/document-skills/docx/scripts/document.py +0 -0
- package/skills/document-skills/docx/scripts/utilities.py +0 -0
- package/skills/document-skills/pptx/ooxml/scripts/pack.py +0 -0
- package/skills/document-skills/pptx/ooxml/scripts/unpack.py +0 -0
- package/skills/document-skills/pptx/ooxml/scripts/validate.py +0 -0
- package/skills/document-skills/pptx/scripts/html2pptx.js +0 -0
- package/skills/document-skills/pptx/scripts/inventory.py +0 -0
- package/skills/document-skills/pptx/scripts/rearrange.py +0 -0
- package/skills/document-skills/pptx/scripts/replace.py +0 -0
- package/skills/document-skills/pptx/scripts/thumbnail.py +0 -0
- package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
- package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/docx/LICENSE.txt +30 -0
- package/skills/docx/SKILL.md +172 -69
- package/skills/docx/docx-js.md +350 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/docx/ooxml/scripts/pack.py +159 -0
- package/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/skills/docx/ooxml/scripts/validate.py +69 -0
- package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/docx/ooxml.md +610 -0
- package/skills/docx/scripts/__init__.py +1 -0
- package/skills/docx/scripts/document.py +1276 -0
- package/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/docx/scripts/utilities.py +374 -0
- package/skills/docx-official/ooxml/scripts/pack.py +0 -0
- package/skills/docx-official/ooxml/scripts/unpack.py +0 -0
- package/skills/docx-official/ooxml/scripts/validate.py +0 -0
- package/skills/docx-official/scripts/__init__.py +0 -0
- package/skills/docx-official/scripts/document.py +0 -0
- package/skills/docx-official/scripts/utilities.py +0 -0
- package/skills/dotnet-architect/SKILL.md +197 -0
- package/skills/dotnet-backend-patterns/SKILL.md +37 -0
- package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
- package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
- package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
- package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
- package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
- package/skills/dx-optimizer/SKILL.md +83 -0
- package/skills/e2e-testing-patterns/SKILL.md +41 -0
- package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
- package/skills/elixir-pro/SKILL.md +59 -0
- package/skills/embedding-strategies/SKILL.md +491 -0
- package/skills/employment-contract-templates/SKILL.md +39 -0
- package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
- package/skills/error-debugging-error-analysis/SKILL.md +47 -0
- package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-debugging-error-trace/SKILL.md +43 -0
- package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
- package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
- package/skills/error-detective/SKILL.md +53 -0
- package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
- package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
- package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
- package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
- package/skills/error-handling-patterns/SKILL.md +35 -0
- package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
- package/skills/evaluation/SKILL.md +238 -0
- package/skills/event-sourcing-architect/SKILL.md +58 -0
- package/skills/event-store-design/SKILL.md +449 -0
- package/skills/expo-deployment/SKILL.md +62 -12
- package/skills/fal-audio/SKILL.md +22 -0
- package/skills/fal-generate/SKILL.md +22 -0
- package/skills/fal-image-edit/SKILL.md +22 -0
- package/skills/fal-platform/SKILL.md +22 -0
- package/skills/fal-upscale/SKILL.md +22 -0
- package/skills/fal-workflow/SKILL.md +22 -0
- package/skills/fastapi-pro/SKILL.md +192 -0
- package/skills/fastapi-templates/SKILL.md +32 -0
- package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
- package/skills/ffuf-claude-skill/SKILL.md +22 -0
- package/skills/find-bugs/SKILL.md +86 -0
- package/skills/firmware-analyst/SKILL.md +320 -0
- package/skills/fix-review/SKILL.md +53 -0
- package/skills/flutter-expert/SKILL.md +196 -84
- package/skills/foundry-iq-agent/SKILL.md +15 -0
- package/skills/foundry-iq-python/SKILL.md +0 -3
- package/skills/fp-ts-errors/SKILL.md +856 -0
- package/skills/fp-ts-pragmatic/SKILL.md +598 -0
- package/skills/fp-ts-react/SKILL.md +796 -0
- package/skills/framework-migration-code-migrate/SKILL.md +48 -0
- package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
- package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
- package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
- package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
- package/skills/frontend-developer/SKILL.md +171 -0
- package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
- package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
- package/skills/frontend-security-coder/SKILL.md +170 -0
- package/skills/frontend-slides/SKILL.md +770 -0
- package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
- package/skills/gdpr-data-handling/SKILL.md +33 -0
- package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
- package/skills/git-advanced-workflows/SKILL.md +412 -0
- package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
- package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
- package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
- package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
- package/skills/github-actions-templates/SKILL.md +345 -0
- package/skills/gitlab-ci-patterns/SKILL.md +283 -0
- package/skills/gitops-workflow/SKILL.md +303 -0
- package/skills/gitops-workflow/references/argocd-setup.md +134 -0
- package/skills/gitops-workflow/references/sync-policies.md +131 -0
- package/skills/go-concurrency-patterns/SKILL.md +33 -0
- package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
- package/skills/godot-gdscript-patterns/SKILL.md +33 -0
- package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
- package/skills/golang-pro/SKILL.md +176 -91
- package/skills/grafana-dashboards/SKILL.md +381 -0
- package/skills/graphql-architect/SKILL.md +168 -83
- package/skills/haskell-pro/SKILL.md +56 -0
- package/skills/helm-chart-scaffolding/SKILL.md +34 -0
- package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
- package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
- package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
- package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
- package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
- package/skills/hr-pro/SKILL.md +126 -0
- package/skills/hugging-face-cli/SKILL.md +198 -0
- package/skills/hugging-face-jobs/SKILL.md +1038 -0
- package/skills/hybrid-cloud-architect/SKILL.md +168 -0
- package/skills/hybrid-cloud-networking/SKILL.md +238 -0
- package/skills/hybrid-search-implementation/SKILL.md +32 -0
- package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
- package/skills/imagen/SKILL.md +77 -0
- package/skills/incident-responder/SKILL.md +213 -0
- package/skills/incident-response-incident-response/SKILL.md +168 -0
- package/skills/incident-response-smart-fix/SKILL.md +29 -0
- package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
- package/skills/incident-runbook-templates/SKILL.md +395 -0
- package/skills/infinite-gratitude/SKILL.md +26 -0
- package/skills/ios-developer/SKILL.md +219 -0
- package/skills/istio-traffic-management/SKILL.md +337 -0
- package/skills/iterate-pr/SKILL.md +150 -0
- package/skills/java-pro/SKILL.md +177 -0
- package/skills/javascript-pro/SKILL.md +41 -79
- package/skills/javascript-testing-patterns/SKILL.md +35 -0
- package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
- package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
- package/skills/julia-pro/SKILL.md +209 -0
- package/skills/k8s-manifest-generator/SKILL.md +35 -0
- package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
- package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
- package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
- package/skills/k8s-security-policies/SKILL.md +346 -0
- package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
- package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
- package/skills/kpi-dashboard-design/SKILL.md +440 -0
- package/skills/kubernetes-architect/SKILL.md +170 -0
- package/skills/langchain-architecture/SKILL.md +350 -0
- package/skills/legacy-modernizer/SKILL.md +39 -79
- package/skills/legal-advisor/SKILL.md +70 -0
- package/skills/linear-claude-skill/SKILL.md +543 -0
- package/skills/linkerd-patterns/SKILL.md +321 -0
- package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
- package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
- package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
- package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
- package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
- package/skills/llm-evaluation/SKILL.md +483 -0
- package/skills/loki-mode/autonomy/run.sh +0 -0
- package/skills/loki-mode/benchmarks/prepare-submission.sh +0 -0
- package/skills/loki-mode/benchmarks/run-benchmarks.sh +0 -0
- package/skills/loki-mode/demo/record-demo.sh +0 -0
- package/skills/loki-mode/demo/record-full-demo.sh +0 -0
- package/skills/loki-mode/demo/run-demo-auto.sh +0 -0
- package/skills/loki-mode/demo/run-demo.sh +0 -0
- package/skills/loki-mode/scripts/export-to-vibe-kanban.sh +0 -0
- package/skills/loki-mode/scripts/loki-wrapper.sh +0 -0
- package/skills/loki-mode/tests/run-all-tests.sh +0 -0
- package/skills/loki-mode/tests/test-agent-timeout.sh +0 -0
- package/skills/loki-mode/tests/test-bootstrap.sh +0 -0
- package/skills/loki-mode/tests/test-circuit-breaker.sh +0 -0
- package/skills/loki-mode/tests/test-state-recovery.sh +0 -0
- package/skills/loki-mode/tests/test-task-queue.sh +0 -0
- package/skills/loki-mode/tests/test-wrapper.sh +0 -0
- package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
- package/skills/makepad-skills/SKILL.md +22 -0
- package/skills/malware-analyst/SKILL.md +247 -0
- package/skills/market-sizing-analysis/SKILL.md +425 -0
- package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
- package/skills/market-sizing-analysis/references/data-sources.md +360 -0
- package/skills/memory-forensics/SKILL.md +491 -0
- package/skills/memory-safety-patterns/SKILL.md +33 -0
- package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
- package/skills/memory-systems/SKILL.md +228 -0
- package/skills/mermaid-expert/SKILL.md +59 -0
- package/skills/microservices-patterns/SKILL.md +35 -0
- package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
- package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
- package/skills/ml-engineer/SKILL.md +168 -0
- package/skills/ml-pipeline-workflow/SKILL.md +257 -0
- package/skills/mlops-engineer/SKILL.md +219 -0
- package/skills/mobile-developer/SKILL.md +205 -0
- package/skills/mobile-security-coder/SKILL.md +184 -0
- package/skills/modern-javascript-patterns/SKILL.md +35 -0
- package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
- package/skills/monorepo-architect/SKILL.md +61 -0
- package/skills/monorepo-management/SKILL.md +35 -0
- package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
- package/skills/mtls-configuration/SKILL.md +359 -0
- package/skills/multi-agent-patterns/SKILL.md +262 -0
- package/skills/multi-cloud-architecture/SKILL.md +189 -0
- package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
- package/skills/n8n-code-python/SKILL.md +750 -0
- package/skills/n8n-mcp-tools-expert/SKILL.md +654 -0
- package/skills/n8n-node-configuration/SKILL.md +796 -0
- package/skills/nanobanana-ppt-skills/SKILL.md +22 -0
- package/skills/network-engineer/SKILL.md +169 -0
- package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
- package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
- package/skills/nft-standards/SKILL.md +395 -0
- package/skills/nodejs-backend-patterns/SKILL.md +35 -0
- package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
- package/skills/notebooklm/AUTHENTICATION.md +0 -0
- package/skills/notebooklm/CHANGELOG.md +0 -0
- package/skills/notebooklm/LICENSE +0 -0
- package/skills/notebooklm/README.md +0 -0
- package/skills/notebooklm/SKILL.md +0 -0
- package/skills/notebooklm/images/example_notebookchat.png +0 -0
- package/skills/notebooklm/references/api_reference.md +0 -0
- package/skills/notebooklm/references/troubleshooting.md +0 -0
- package/skills/notebooklm/references/usage_patterns.md +0 -0
- package/skills/notebooklm/requirements.txt +0 -0
- package/skills/notebooklm/scripts/__init__.py +0 -0
- package/skills/notebooklm/scripts/ask_question.py +0 -0
- package/skills/notebooklm/scripts/auth_manager.py +0 -0
- package/skills/notebooklm/scripts/browser_session.py +0 -0
- package/skills/notebooklm/scripts/browser_utils.py +0 -0
- package/skills/notebooklm/scripts/cleanup_manager.py +0 -0
- package/skills/notebooklm/scripts/config.py +0 -0
- package/skills/notebooklm/scripts/notebook_manager.py +0 -0
- package/skills/notebooklm/scripts/run.py +0 -0
- package/skills/notebooklm/scripts/setup_environment.py +0 -0
- package/skills/notebooklm-skill/AUTHENTICATION.md +0 -0
- package/skills/notebooklm-skill/SKILL.md +0 -0
- package/skills/notebooklm-skill/references/api_reference.md +0 -0
- package/skills/notebooklm-skill/references/troubleshooting.md +0 -0
- package/skills/notebooklm-skill/references/usage_patterns.md +0 -0
- package/skills/notebooklm-skill/scripts/__init__.py +0 -0
- package/skills/notebooklm-skill/scripts/ask_question.py +0 -0
- package/skills/notebooklm-skill/scripts/auth_manager.py +0 -0
- package/skills/notebooklm-skill/scripts/browser_session.py +0 -0
- package/skills/notebooklm-skill/scripts/browser_utils.py +0 -0
- package/skills/notebooklm-skill/scripts/cleanup_manager.py +0 -0
- package/skills/notebooklm-skill/scripts/config.py +0 -0
- package/skills/notebooklm-skill/scripts/notebook_manager.py +0 -0
- package/skills/notebooklm-skill/scripts/run.py +0 -0
- package/skills/notebooklm-skill/scripts/setup_environment.py +0 -0
- package/skills/nx-workspace-patterns/SKILL.md +464 -0
- package/skills/observability-engineer/SKILL.md +237 -0
- package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
- package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
- package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
- package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
- package/skills/observe-whatsapp/SKILL.md +109 -0
- package/skills/on-call-handoff-patterns/SKILL.md +453 -0
- package/skills/openapi-spec-generation/SKILL.md +33 -0
- package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
- package/skills/payment-integration/SKILL.md +69 -110
- package/skills/paypal-integration/SKILL.md +479 -0
- package/skills/pci-compliance/SKILL.md +478 -0
- package/skills/pdf/LICENSE.txt +30 -0
- package/skills/pdf/SKILL.md +196 -6
- package/skills/pdf/forms.md +205 -0
- package/skills/pdf/reference.md +612 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/pdf/scripts/create_validation_image.py +41 -0
- package/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/skills/performance-engineer/SKILL.md +180 -0
- package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
- package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
- package/skills/php-pro/SKILL.md +46 -78
- package/skills/playwright-skill/run.js +0 -0
- package/skills/podcast-generation/SKILL.md +0 -2
- package/skills/posix-shell-pro/SKILL.md +304 -0
- package/skills/postgresql/SKILL.md +230 -0
- package/skills/postmortem-writing/SKILL.md +386 -0
- package/skills/pptx/LICENSE.txt +30 -0
- package/skills/pptx/SKILL.md +456 -86
- package/skills/pptx/html2pptx.md +625 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/pptx/ooxml.md +427 -0
- package/skills/pptx/scripts/html2pptx.js +979 -0
- package/skills/pptx/scripts/inventory.py +1020 -0
- package/skills/pptx/scripts/rearrange.py +231 -0
- package/skills/pptx/scripts/replace.py +385 -0
- package/skills/pptx/scripts/thumbnail.py +450 -0
- package/skills/pptx-official/ooxml/scripts/pack.py +0 -0
- package/skills/pptx-official/ooxml/scripts/unpack.py +0 -0
- package/skills/pptx-official/ooxml/scripts/validate.py +0 -0
- package/skills/pptx-official/scripts/html2pptx.js +0 -0
- package/skills/pptx-official/scripts/inventory.py +0 -0
- package/skills/pptx-official/scripts/rearrange.py +0 -0
- package/skills/pptx-official/scripts/replace.py +0 -0
- package/skills/pptx-official/scripts/thumbnail.py +0 -0
- package/skills/projection-patterns/SKILL.md +33 -0
- package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
- package/skills/prometheus-configuration/SKILL.md +404 -0
- package/skills/prompt-engineer/SKILL.md +243 -64
- package/skills/prompt-engineering-patterns/SKILL.md +213 -0
- package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
- package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
- package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
- package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
- package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
- package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
- package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
- package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
- package/skills/protocol-reverse-engineering/SKILL.md +29 -0
- package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
- package/skills/pypict-skill/SKILL.md +22 -0
- package/skills/python-development-python-scaffold/SKILL.md +331 -0
- package/skills/python-packaging/SKILL.md +36 -0
- package/skills/python-packaging/resources/implementation-playbook.md +869 -0
- package/skills/python-performance-optimization/SKILL.md +36 -0
- package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
- package/skills/python-pro/SKILL.md +155 -89
- package/skills/python-testing-patterns/SKILL.md +37 -0
- package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
- package/skills/quant-analyst/SKILL.md +53 -0
- package/skills/radix-ui-design-system/SKILL.md +847 -0
- package/skills/radix-ui-design-system/examples/README.md +63 -0
- package/skills/radix-ui-design-system/examples/dialog-example.tsx +128 -0
- package/skills/radix-ui-design-system/examples/dropdown-example.tsx +162 -0
- package/skills/radix-ui-design-system/templates/component-template.tsx +148 -0
- package/skills/rag-implementation/SKILL.md +395 -37
- package/skills/react-modernization/SKILL.md +34 -0
- package/skills/react-modernization/resources/implementation-playbook.md +512 -0
- package/skills/react-native-architecture/SKILL.md +33 -0
- package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
- package/skills/react-state-management/SKILL.md +441 -0
- package/skills/readme/SKILL.md +775 -0
- package/skills/reference-builder/SKILL.md +188 -0
- package/skills/reverse-engineer/SKILL.md +173 -0
- package/skills/risk-manager/SKILL.md +61 -0
- package/skills/risk-metrics-calculation/SKILL.md +33 -0
- package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
- package/skills/ruby-pro/SKILL.md +56 -0
- package/skills/rust-async-patterns/SKILL.md +33 -0
- package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
- package/skills/rust-pro/SKILL.md +178 -0
- package/skills/saga-orchestration/SKILL.md +496 -0
- package/skills/sales-automator/SKILL.md +55 -0
- package/skills/sast-configuration/SKILL.md +212 -0
- package/skills/scala-pro/SKILL.md +82 -0
- package/skills/screen-reader-testing/SKILL.md +33 -0
- package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
- package/skills/screenshots/SKILL.md +401 -0
- package/skills/search-specialist/SKILL.md +80 -0
- package/skills/secrets-management/SKILL.md +364 -0
- package/skills/security-auditor/SKILL.md +169 -0
- package/skills/security-bluebook-builder/SKILL.md +22 -0
- package/skills/security-compliance-compliance-check/SKILL.md +55 -0
- package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
- package/skills/security-requirement-extraction/SKILL.md +33 -0
- package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
- package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
- package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
- package/skills/security-scanning-security-hardening/SKILL.md +147 -0
- package/skills/security-scanning-security-sast/SKILL.md +495 -0
- package/skills/senior-architect/scripts/architecture_diagram_generator.py +0 -0
- package/skills/senior-architect/scripts/dependency_analyzer.py +0 -0
- package/skills/senior-architect/scripts/project_architect.py +0 -0
- package/skills/senior-backend/scripts/api_load_tester.py +0 -0
- package/skills/senior-backend/scripts/api_scaffolder.py +0 -0
- package/skills/senior-backend/scripts/database_migration_tool.py +0 -0
- package/skills/senior-computer-vision/scripts/dataset_pipeline_builder.py +0 -0
- package/skills/senior-computer-vision/scripts/inference_optimizer.py +0 -0
- package/skills/senior-computer-vision/scripts/vision_model_trainer.py +0 -0
- package/skills/senior-data-engineer/scripts/data_quality_validator.py +0 -0
- package/skills/senior-data-engineer/scripts/etl_performance_optimizer.py +0 -0
- package/skills/senior-data-engineer/scripts/pipeline_orchestrator.py +0 -0
- package/skills/senior-data-scientist/scripts/experiment_designer.py +0 -0
- package/skills/senior-data-scientist/scripts/feature_engineering_pipeline.py +0 -0
- package/skills/senior-data-scientist/scripts/model_evaluation_suite.py +0 -0
- package/skills/senior-devops/scripts/deployment_manager.py +0 -0
- package/skills/senior-devops/scripts/pipeline_generator.py +0 -0
- package/skills/senior-devops/scripts/terraform_scaffolder.py +0 -0
- package/skills/senior-frontend/scripts/bundle_analyzer.py +0 -0
- package/skills/senior-frontend/scripts/component_generator.py +0 -0
- package/skills/senior-frontend/scripts/frontend_scaffolder.py +0 -0
- package/skills/senior-fullstack/scripts/code_quality_analyzer.py +0 -0
- package/skills/senior-fullstack/scripts/fullstack_scaffolder.py +0 -0
- package/skills/senior-fullstack/scripts/project_scaffolder.py +0 -0
- package/skills/senior-ml-engineer/scripts/ml_monitoring_suite.py +0 -0
- package/skills/senior-ml-engineer/scripts/model_deployment_pipeline.py +0 -0
- package/skills/senior-ml-engineer/scripts/rag_system_builder.py +0 -0
- package/skills/senior-prompt-engineer/scripts/agent_orchestrator.py +0 -0
- package/skills/senior-prompt-engineer/scripts/prompt_optimizer.py +0 -0
- package/skills/senior-prompt-engineer/scripts/rag_evaluator.py +0 -0
- package/skills/senior-qa/scripts/coverage_analyzer.py +0 -0
- package/skills/senior-qa/scripts/e2e_test_scaffolder.py +0 -0
- package/skills/senior-qa/scripts/test_suite_generator.py +0 -0
- package/skills/senior-secops/scripts/compliance_checker.py +0 -0
- package/skills/senior-secops/scripts/security_scanner.py +0 -0
- package/skills/senior-secops/scripts/vulnerability_assessor.py +0 -0
- package/skills/senior-security/scripts/pentest_automator.py +0 -0
- package/skills/senior-security/scripts/security_auditor.py +0 -0
- package/skills/senior-security/scripts/threat_modeler.py +0 -0
- package/skills/seo-authority-builder/SKILL.md +136 -0
- package/skills/seo-cannibalization-detector/SKILL.md +123 -0
- package/skills/seo-content-auditor/SKILL.md +83 -0
- package/skills/seo-content-planner/SKILL.md +108 -0
- package/skills/seo-content-refresher/SKILL.md +118 -0
- package/skills/seo-content-writer/SKILL.md +96 -0
- package/skills/seo-keyword-strategist/SKILL.md +95 -0
- package/skills/seo-meta-optimizer/SKILL.md +92 -0
- package/skills/seo-snippet-hunter/SKILL.md +114 -0
- package/skills/seo-structure-architect/SKILL.md +108 -0
- package/skills/service-mesh-expert/SKILL.md +58 -0
- package/skills/service-mesh-observability/SKILL.md +395 -0
- package/skills/sharp-edges/SKILL.md +70 -0
- package/skills/shellcheck-configuration/SKILL.md +466 -0
- package/skills/similarity-search-patterns/SKILL.md +33 -0
- package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
- package/skills/skill-creator/scripts/init_skill.py +0 -0
- package/skills/skill-creator/scripts/package_skill.py +0 -0
- package/skills/skill-creator/scripts/quick_validate.py +0 -0
- package/skills/skill-rails-upgrade/SKILL.md +408 -0
- package/skills/skill-seekers/SKILL.md +22 -0
- package/skills/slack-gif-creator/core/easing.py +0 -0
- package/skills/slack-gif-creator/core/frame_composer.py +0 -0
- package/skills/slack-gif-creator/core/gif_builder.py +0 -0
- package/skills/slack-gif-creator/core/validators.py +0 -0
- package/skills/slo-implementation/SKILL.md +341 -0
- package/skills/solidity-security/SKILL.md +34 -0
- package/skills/solidity-security/resources/implementation-playbook.md +524 -0
- package/skills/spark-optimization/SKILL.md +427 -0
- package/skills/sql-optimization-patterns/SKILL.md +35 -0
- package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
- package/skills/sql-pro/SKILL.md +170 -94
- package/skills/startup-analyst/SKILL.md +328 -0
- package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
- package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
- package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
- package/skills/startup-financial-modeling/SKILL.md +467 -0
- package/skills/startup-metrics-framework/SKILL.md +34 -0
- package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
- package/skills/stitch-ui-design/README.md +165 -0
- package/skills/stitch-ui-design/SKILL.md +378 -0
- package/skills/stitch-ui-design/references/advanced-techniques.md +541 -0
- package/skills/stitch-ui-design/references/prompt-examples.md +601 -0
- package/skills/stride-analysis-patterns/SKILL.md +33 -0
- package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
- package/skills/stripe-integration/SKILL.md +429 -44
- package/skills/superpowers-lab/SKILL.md +22 -0
- package/skills/swiftui-expert-skill/SKILL.md +275 -0
- package/skills/systematic-debugging/find-polluter.sh +0 -0
- package/skills/systems-programming-rust-project/SKILL.md +440 -0
- package/skills/tailwind-design-system/SKILL.md +33 -0
- package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
- package/skills/tdd-orchestrator/SKILL.md +205 -0
- package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
- package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
- package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
- package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
- package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
- package/skills/team-collaboration-issue/SKILL.md +37 -0
- package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
- package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
- package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
- package/skills/team-composition-analysis/SKILL.md +413 -0
- package/skills/temporal-python-pro/SKILL.md +370 -0
- package/skills/temporal-python-testing/SKILL.md +170 -0
- package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
- package/skills/temporal-python-testing/resources/local-setup.md +553 -0
- package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
- package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
- package/skills/terraform-module-library/SKILL.md +261 -0
- package/skills/terraform-module-library/references/aws-modules.md +63 -0
- package/skills/terraform-skill/SKILL.md +517 -0
- package/skills/terraform-specialist/SKILL.md +166 -0
- package/skills/test-automator/SKILL.md +224 -0
- package/skills/threat-mitigation-mapping/SKILL.md +33 -0
- package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
- package/skills/threat-modeling-expert/SKILL.md +60 -0
- package/skills/threejs-skills/SKILL.md +22 -0
- package/skills/tool-design/SKILL.md +318 -0
- package/skills/track-management/SKILL.md +38 -0
- package/skills/track-management/resources/implementation-playbook.md +591 -0
- package/skills/turborepo-caching/SKILL.md +419 -0
- package/skills/tutorial-engineer/SKILL.md +139 -0
- package/skills/typescript-advanced-types/SKILL.md +35 -0
- package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
- package/skills/typescript-pro/SKILL.md +52 -91
- package/skills/ui-skills/SKILL.md +22 -0
- package/skills/ui-ux-designer/SKILL.md +209 -0
- package/skills/ui-ux-pro-max/SKILL.md +351 -351
- package/skills/ui-ux-pro-max/data/charts.csv +25 -25
- package/skills/ui-ux-pro-max/data/colors.csv +96 -96
- package/skills/ui-ux-pro-max/data/landing.csv +30 -30
- package/skills/ui-ux-pro-max/data/products.csv +96 -96
- package/skills/ui-ux-pro-max/data/prompts.csv +20 -20
- package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
- package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
- package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
- package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
- package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
- package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
- package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
- package/skills/ui-ux-pro-max/data/styles.csv +58 -58
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
- package/skills/ui-ux-pro-max/scripts/search.py +76 -76
- package/skills/ui-visual-validator/SKILL.md +214 -0
- package/skills/unit-testing-test-generate/SKILL.md +319 -0
- package/skills/unity-developer/SKILL.md +230 -0
- package/skills/unity-ecs-patterns/SKILL.md +33 -0
- package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
- package/skills/unreal-engine-cpp-pro/SKILL.md +114 -0
- package/skills/unreal-engine-cpp-pro/examples/ExampleActor.cpp +43 -0
- package/skills/unreal-engine-cpp-pro/examples/ExampleActor.h +57 -0
- package/skills/upgrading-expo/SKILL.md +108 -12
- package/skills/using-neon/SKILL.md +84 -0
- package/skills/uv-package-manager/SKILL.md +37 -0
- package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
- package/skills/varlock-claude-skill/SKILL.md +22 -0
- package/skills/vector-database-engineer/SKILL.md +60 -0
- package/skills/vector-index-tuning/SKILL.md +42 -0
- package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
- package/skills/vercel-deploy-claimable/SKILL.md +120 -0
- package/skills/vercel-deployment/SKILL.md +10 -0
- package/skills/vexor/SKILL.md +22 -0
- package/skills/wcag-audit-patterns/SKILL.md +41 -0
- package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
- package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +0 -0
- package/skills/web-artifacts-builder/scripts/init-artifact.sh +0 -0
- package/skills/web3-testing/SKILL.md +427 -0
- package/skills/webapp-testing/scripts/with_server.py +0 -0
- package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
- package/skills/workflow-patterns/SKILL.md +38 -0
- package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
- package/skills/writing-skills/SKILL.md +84 -696
- package/skills/writing-skills/examples.md +282 -0
- package/skills/writing-skills/gotchas.md +197 -0
- package/skills/writing-skills/references/anti-rationalization/README.md +255 -0
- package/skills/writing-skills/references/cso/README.md +268 -0
- package/skills/writing-skills/references/standards/README.md +152 -0
- package/skills/writing-skills/references/standards/metadata-standard.md +65 -0
- package/skills/writing-skills/references/templates/discipline.md +54 -0
- package/skills/writing-skills/references/templates/pattern.md +48 -0
- package/skills/writing-skills/references/templates/reference.md +35 -0
- package/skills/writing-skills/references/templates/technique.md +59 -0
- package/skills/writing-skills/references/templates/tier-3-platform.md +19 -0
- package/skills/writing-skills/references/testing/README.md +204 -0
- package/skills/writing-skills/references/tier-1-simple/README.md +75 -0
- package/skills/writing-skills/references/tier-2-expanded/README.md +69 -0
- package/skills/writing-skills/references/tier-3-platform/README.md +98 -0
- package/skills/writing-skills/render-graphs.js +0 -0
- package/skills/x-article-publisher-skill/SKILL.md +22 -0
- package/skills/xlsx/LICENSE.txt +30 -0
- package/skills/xlsx/SKILL.md +217 -28
- package/skills/xlsx/recalc.py +178 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: postgresql
|
|
3
|
+
description: Design a PostgreSQL-specific schema. Covers best-practices, data types, indexing, constraints, performance patterns, and advanced features
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PostgreSQL Table Design
|
|
7
|
+
|
|
8
|
+
## Use this skill when
|
|
9
|
+
|
|
10
|
+
- Designing a schema for PostgreSQL
|
|
11
|
+
- Selecting data types and constraints
|
|
12
|
+
- Planning indexes, partitions, or RLS policies
|
|
13
|
+
- Reviewing tables for scale and maintainability
|
|
14
|
+
|
|
15
|
+
## Do not use this skill when
|
|
16
|
+
|
|
17
|
+
- You are targeting a non-PostgreSQL database
|
|
18
|
+
- You only need query tuning without schema changes
|
|
19
|
+
- You require a DB-agnostic modeling guide
|
|
20
|
+
|
|
21
|
+
## Instructions
|
|
22
|
+
|
|
23
|
+
1. Capture entities, access patterns, and scale targets (rows, QPS, retention).
|
|
24
|
+
2. Choose data types and constraints that enforce invariants.
|
|
25
|
+
3. Add indexes for real query paths and validate with `EXPLAIN`.
|
|
26
|
+
4. Plan partitioning or RLS where required by scale or access control.
|
|
27
|
+
5. Review migration impact and apply changes safely.
|
|
28
|
+
|
|
29
|
+
## Safety
|
|
30
|
+
|
|
31
|
+
- Avoid destructive DDL on production without backups and a rollback plan.
|
|
32
|
+
- Use migrations and staging validation before applying schema changes.
|
|
33
|
+
|
|
34
|
+
## Core Rules
|
|
35
|
+
|
|
36
|
+
- Define a **PRIMARY KEY** for reference tables (users, orders, etc.). Not always needed for time-series/event/log data. When used, prefer `BIGINT GENERATED ALWAYS AS IDENTITY`; use `UUID` only when global uniqueness/opacity is needed.
|
|
37
|
+
- **Normalize first (to 3NF)** to eliminate data redundancy and update anomalies; denormalize **only** for measured, high-ROI reads where join performance is proven problematic. Premature denormalization creates maintenance burden.
|
|
38
|
+
- Add **NOT NULL** everywhere it’s semantically required; use **DEFAULT**s for common values.
|
|
39
|
+
- Create **indexes for access paths you actually query**: PK/unique (auto), **FK columns (manual!)**, frequent filters/sorts, and join keys.
|
|
40
|
+
- Prefer **TIMESTAMPTZ** for event time; **NUMERIC** for money; **TEXT** for strings; **BIGINT** for integer values, **DOUBLE PRECISION** for floats (or `NUMERIC` for exact decimal arithmetic).
|
|
41
|
+
|
|
42
|
+
## PostgreSQL “Gotchas”
|
|
43
|
+
|
|
44
|
+
- **Identifiers**: unquoted → lowercased. Avoid quoted/mixed-case names. Convention: use `snake_case` for table/column names.
|
|
45
|
+
- **Unique + NULLs**: UNIQUE allows multiple NULLs. Use `UNIQUE (...) NULLS NOT DISTINCT` (PG15+) to restrict to one NULL.
|
|
46
|
+
- **FK indexes**: PostgreSQL **does not** auto-index FK columns. Add them.
|
|
47
|
+
- **No silent coercions**: length/precision overflows error out (no truncation). Example: inserting 999 into `NUMERIC(2,0)` fails with error, unlike some databases that silently truncate or round.
|
|
48
|
+
- **Sequences/identity have gaps** (normal; don't "fix"). Rollbacks, crashes, and concurrent transactions create gaps in ID sequences (1, 2, 5, 6...). This is expected behavior—don't try to make IDs consecutive.
|
|
49
|
+
- **Heap storage**: no clustered PK by default (unlike SQL Server/MySQL InnoDB); `CLUSTER` is one-off reorganization, not maintained on subsequent inserts. Row order on disk is insertion order unless explicitly clustered.
|
|
50
|
+
- **MVCC**: updates/deletes leave dead tuples; vacuum handles them—design to avoid hot wide-row churn.
|
|
51
|
+
|
|
52
|
+
## Data Types
|
|
53
|
+
|
|
54
|
+
- **IDs**: `BIGINT GENERATED ALWAYS AS IDENTITY` preferred (`GENERATED BY DEFAULT` also fine); `UUID` when merging/federating/used in a distributed system or for opaque IDs. Generate with `uuidv7()` (preferred if using PG18+) or `gen_random_uuid()` (if using an older PG version).
|
|
55
|
+
- **Integers**: prefer `BIGINT` unless storage space is critical; `INTEGER` for smaller ranges; avoid `SMALLINT` unless constrained.
|
|
56
|
+
- **Floats**: prefer `DOUBLE PRECISION` over `REAL` unless storage space is critical. Use `NUMERIC` for exact decimal arithmetic.
|
|
57
|
+
- **Strings**: prefer `TEXT`; if length limits needed, use `CHECK (LENGTH(col) <= n)` instead of `VARCHAR(n)`; avoid `CHAR(n)`. Use `BYTEA` for binary data. Large strings/binary (>2KB default threshold) automatically stored in TOAST with compression. TOAST storage: `PLAIN` (no TOAST), `EXTENDED` (compress + out-of-line), `EXTERNAL` (out-of-line, no compress), `MAIN` (compress, keep in-line if possible). Default `EXTENDED` usually optimal. Control with `ALTER TABLE tbl ALTER COLUMN col SET STORAGE strategy` and `ALTER TABLE tbl SET (toast_tuple_target = 4096)` for threshold. Case-insensitive: for locale/accent handling use non-deterministic collations; for plain ASCII use expression indexes on `LOWER(col)` (preferred unless column needs case-insensitive PK/FK/UNIQUE) or `CITEXT`.
|
|
58
|
+
- **Money**: `NUMERIC(p,s)` (never float).
|
|
59
|
+
- **Time**: `TIMESTAMPTZ` for timestamps; `DATE` for date-only; `INTERVAL` for durations. Avoid `TIMESTAMP` (without timezone). Use `now()` for transaction start time, `clock_timestamp()` for current wall-clock time.
|
|
60
|
+
- **Booleans**: `BOOLEAN` with `NOT NULL` constraint unless tri-state values are required.
|
|
61
|
+
- **Enums**: `CREATE TYPE ... AS ENUM` for small, stable sets (e.g. US states, days of week). For business-logic-driven and evolving values (e.g. order statuses) → use TEXT (or INT) + CHECK or lookup table.
|
|
62
|
+
- **Arrays**: `TEXT[]`, `INTEGER[]`, etc. Use for ordered lists where you query elements. Index with **GIN** for containment (`@>`, `<@`) and overlap (`&&`) queries. Access: `arr[1]` (1-indexed), `arr[1:3]` (slicing). Good for tags, categories; avoid for relations—use junction tables instead. Literal syntax: `'{val1,val2}'` or `ARRAY[val1,val2]`.
|
|
63
|
+
- **Range types**: `daterange`, `numrange`, `tstzrange` for intervals. Support overlap (`&&`), containment (`@>`), operators. Index with **GiST**. Good for scheduling, versioning, numeric ranges. Pick a bounds scheme and use it consistently; prefer `[)` (inclusive/exclusive) by default.
|
|
64
|
+
- **Network types**: `INET` for IP addresses, `CIDR` for network ranges, `MACADDR` for MAC addresses. Support network operators (`<<`, `>>`, `&&`).
|
|
65
|
+
- **Geometric types**: `POINT`, `LINE`, `POLYGON`, `CIRCLE` for 2D spatial data. Index with **GiST**. Consider **PostGIS** for advanced spatial features.
|
|
66
|
+
- **Text search**: `TSVECTOR` for full-text search documents, `TSQUERY` for search queries. Index `tsvector` with **GIN**. Always specify language: `to_tsvector('english', col)` and `to_tsquery('english', 'query')`. Never use single-argument versions. This applies to both index expressions and queries.
|
|
67
|
+
- **Domain types**: `CREATE DOMAIN email AS TEXT CHECK (VALUE ~ '^[^@]+@[^@]+$')` for reusable custom types with validation. Enforces constraints across tables.
|
|
68
|
+
- **Composite types**: `CREATE TYPE address AS (street TEXT, city TEXT, zip TEXT)` for structured data within columns. Access with `(col).field` syntax.
|
|
69
|
+
- **JSONB**: preferred over JSON; index with **GIN**. Use only for optional/semi-structured attrs. ONLY use JSON if the original ordering of the contents MUST be preserved.
|
|
70
|
+
- **Vector types**: `vector` type by `pgvector` for vector similarity search for embeddings.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
### Do not use the following data types
|
|
74
|
+
- DO NOT use `timestamp` (without time zone); DO use `timestamptz` instead.
|
|
75
|
+
- DO NOT use `char(n)` or `varchar(n)`; DO use `text` instead.
|
|
76
|
+
- DO NOT use `money` type; DO use `numeric` instead.
|
|
77
|
+
- DO NOT use `timetz` type; DO use `timestamptz` instead.
|
|
78
|
+
- DO NOT use `timestamptz(0)` or any other precision specification; DO use `timestamptz` instead
|
|
79
|
+
- DO NOT use `serial` type; DO use `generated always as identity` instead.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## Table Types
|
|
83
|
+
|
|
84
|
+
- **Regular**: default; fully durable, logged.
|
|
85
|
+
- **TEMPORARY**: session-scoped, auto-dropped, not logged. Faster for scratch work.
|
|
86
|
+
- **UNLOGGED**: persistent but not crash-safe. Faster writes; good for caches/staging.
|
|
87
|
+
|
|
88
|
+
## Row-Level Security
|
|
89
|
+
|
|
90
|
+
Enable with `ALTER TABLE tbl ENABLE ROW LEVEL SECURITY`. Create policies: `CREATE POLICY user_access ON orders FOR SELECT TO app_users USING (user_id = current_user_id())`. Built-in user-based access control at the row level.
|
|
91
|
+
|
|
92
|
+
## Constraints
|
|
93
|
+
|
|
94
|
+
- **PK**: implicit UNIQUE + NOT NULL; creates a B-tree index.
|
|
95
|
+
- **FK**: specify `ON DELETE/UPDATE` action (`CASCADE`, `RESTRICT`, `SET NULL`, `SET DEFAULT`). Add explicit index on referencing column—speeds up joins and prevents locking issues on parent deletes/updates. Use `DEFERRABLE INITIALLY DEFERRED` for circular FK dependencies checked at transaction end.
|
|
96
|
+
- **UNIQUE**: creates a B-tree index; allows multiple NULLs unless `NULLS NOT DISTINCT` (PG15+). Standard behavior: `(1, NULL)` and `(1, NULL)` are allowed. With `NULLS NOT DISTINCT`: only one `(1, NULL)` allowed. Prefer `NULLS NOT DISTINCT` unless you specifically need duplicate NULLs.
|
|
97
|
+
- **CHECK**: row-local constraints; NULL values pass the check (three-valued logic). Example: `CHECK (price > 0)` allows NULL prices. Combine with `NOT NULL` to enforce: `price NUMERIC NOT NULL CHECK (price > 0)`.
|
|
98
|
+
- **EXCLUDE**: prevents overlapping values using operators. `EXCLUDE USING gist (room_id WITH =, booking_period WITH &&)` prevents double-booking rooms. Requires appropriate index type (often GiST).
|
|
99
|
+
|
|
100
|
+
## Indexing
|
|
101
|
+
|
|
102
|
+
- **B-tree**: default for equality/range queries (`=`, `<`, `>`, `BETWEEN`, `ORDER BY`)
|
|
103
|
+
- **Composite**: order matters—index used if equality on leftmost prefix (`WHERE a = ? AND b > ?` uses index on `(a,b)`, but `WHERE b = ?` does not). Put most selective/frequently filtered columns first.
|
|
104
|
+
- **Covering**: `CREATE INDEX ON tbl (id) INCLUDE (name, email)` - includes non-key columns for index-only scans without visiting table.
|
|
105
|
+
- **Partial**: for hot subsets (`WHERE status = 'active'` → `CREATE INDEX ON tbl (user_id) WHERE status = 'active'`). Any query with `status = 'active'` can use this index.
|
|
106
|
+
- **Expression**: for computed search keys (`CREATE INDEX ON tbl (LOWER(email))`). Expression must match exactly in WHERE clause: `WHERE LOWER(email) = 'user@example.com'`.
|
|
107
|
+
- **GIN**: JSONB containment/existence, arrays (`@>`, `?`), full-text search (`@@`)
|
|
108
|
+
- **GiST**: ranges, geometry, exclusion constraints
|
|
109
|
+
- **BRIN**: very large, naturally ordered data (time-series)—minimal storage overhead. Effective when row order on disk correlates with indexed column (insertion order or after `CLUSTER`).
|
|
110
|
+
|
|
111
|
+
## Partitioning
|
|
112
|
+
|
|
113
|
+
- Use for very large tables (>100M rows) where queries consistently filter on partition key (often time/date).
|
|
114
|
+
- Alternate use: use for tables where data maintenance tasks dictates e.g. data pruned or bulk replaced periodically
|
|
115
|
+
- **RANGE**: common for time-series (`PARTITION BY RANGE (created_at)`). Create partitions: `CREATE TABLE logs_2024_01 PARTITION OF logs FOR VALUES FROM ('2024-01-01') TO ('2024-02-01')`. **TimescaleDB** automates time-based or ID-based partitioning with retention policies and compression.
|
|
116
|
+
- **LIST**: for discrete values (`PARTITION BY LIST (region)`). Example: `FOR VALUES IN ('us-east', 'us-west')`.
|
|
117
|
+
- **HASH**: for even distribution when no natural key (`PARTITION BY HASH (user_id)`). Creates N partitions with modulus.
|
|
118
|
+
- **Constraint exclusion**: requires `CHECK` constraints on partitions for query planner to prune. Auto-created for declarative partitioning (PG10+).
|
|
119
|
+
- Prefer declarative partitioning or hypertables. Do NOT use table inheritance.
|
|
120
|
+
- **Limitations**: no global UNIQUE constraints—include partition key in PK/UNIQUE. FKs from partitioned tables not supported; use triggers.
|
|
121
|
+
|
|
122
|
+
## Special Considerations
|
|
123
|
+
|
|
124
|
+
### Update-Heavy Tables
|
|
125
|
+
|
|
126
|
+
- **Separate hot/cold columns**—put frequently updated columns in separate table to minimize bloat.
|
|
127
|
+
- **Use `fillfactor=90`** to leave space for HOT updates that avoid index maintenance.
|
|
128
|
+
- **Avoid updating indexed columns**—prevents beneficial HOT updates.
|
|
129
|
+
- **Partition by update patterns**—separate frequently updated rows in a different partition from stable data.
|
|
130
|
+
|
|
131
|
+
### Insert-Heavy Workloads
|
|
132
|
+
|
|
133
|
+
- **Minimize indexes**—only create what you query; every index slows inserts.
|
|
134
|
+
- **Use `COPY` or multi-row `INSERT`** instead of single-row inserts.
|
|
135
|
+
- **UNLOGGED tables** for rebuildable staging data—much faster writes.
|
|
136
|
+
- **Defer index creation** for bulk loads—>drop index, load data, recreate indexes.
|
|
137
|
+
- **Partition by time/hash** to distribute load. **TimescaleDB** automates partitioning and compression of insert-heavy data.
|
|
138
|
+
- **Use a natural key for primary key** such as a (timestamp, device_id) if enforcing global uniqueness is important many insert-heavy tables don't need a primary key at all.
|
|
139
|
+
- If you do need a surrogate key, **Prefer `BIGINT GENERATED ALWAYS AS IDENTITY` over `UUID`**.
|
|
140
|
+
|
|
141
|
+
### Upsert-Friendly Design
|
|
142
|
+
|
|
143
|
+
- **Requires UNIQUE index** on conflict target columns—`ON CONFLICT (col1, col2)` needs exact matching unique index (partial indexes don't work).
|
|
144
|
+
- **Use `EXCLUDED.column`** to reference would-be-inserted values; only update columns that actually changed to reduce write overhead.
|
|
145
|
+
- **`DO NOTHING` faster** than `DO UPDATE` when no actual update needed.
|
|
146
|
+
|
|
147
|
+
### Safe Schema Evolution
|
|
148
|
+
|
|
149
|
+
- **Transactional DDL**: most DDL operations can run in transactions and be rolled back—`BEGIN; ALTER TABLE...; ROLLBACK;` for safe testing.
|
|
150
|
+
- **Concurrent index creation**: `CREATE INDEX CONCURRENTLY` avoids blocking writes but can't run in transactions.
|
|
151
|
+
- **Volatile defaults cause rewrites**: adding `NOT NULL` columns with volatile defaults (e.g., `now()`, `gen_random_uuid()`) rewrites entire table. Non-volatile defaults are fast.
|
|
152
|
+
- **Drop constraints before columns**: `ALTER TABLE DROP CONSTRAINT` then `DROP COLUMN` to avoid dependency issues.
|
|
153
|
+
- **Function signature changes**: `CREATE OR REPLACE` with different arguments creates overloads, not replacements. DROP old version if no overload desired.
|
|
154
|
+
|
|
155
|
+
## Generated Columns
|
|
156
|
+
|
|
157
|
+
- `... GENERATED ALWAYS AS (<expr>) STORED` for computed, indexable fields. PG18+ adds `VIRTUAL` columns (computed on read, not stored).
|
|
158
|
+
|
|
159
|
+
## Extensions
|
|
160
|
+
|
|
161
|
+
- **`pgcrypto`**: `crypt()` for password hashing.
|
|
162
|
+
- **`uuid-ossp`**: alternative UUID functions; prefer `pgcrypto` for new projects.
|
|
163
|
+
- **`pg_trgm`**: fuzzy text search with `%` operator, `similarity()` function. Index with GIN for `LIKE '%pattern%'` acceleration.
|
|
164
|
+
- **`citext`**: case-insensitive text type. Prefer expression indexes on `LOWER(col)` unless you need case-insensitive constraints.
|
|
165
|
+
- **`btree_gin`/`btree_gist`**: enable mixed-type indexes (e.g., GIN index on both JSONB and text columns).
|
|
166
|
+
- **`hstore`**: key-value pairs; mostly superseded by JSONB but useful for simple string mappings.
|
|
167
|
+
- **`timescaledb`**: essential for time-series—automated partitioning, retention, compression, continuous aggregates.
|
|
168
|
+
- **`postgis`**: comprehensive geospatial support beyond basic geometric types—essential for location-based applications.
|
|
169
|
+
- **`pgvector`**: vector similarity search for embeddings.
|
|
170
|
+
- **`pgaudit`**: audit logging for all database activity.
|
|
171
|
+
|
|
172
|
+
## JSONB Guidance
|
|
173
|
+
|
|
174
|
+
- Prefer `JSONB` with **GIN** index.
|
|
175
|
+
- Default: `CREATE INDEX ON tbl USING GIN (jsonb_col);` → accelerates:
|
|
176
|
+
- **Containment** `jsonb_col @> '{"k":"v"}'`
|
|
177
|
+
- **Key existence** `jsonb_col ? 'k'`, **any/all keys** `?\|`, `?&`
|
|
178
|
+
- **Path containment** on nested docs
|
|
179
|
+
- **Disjunction** `jsonb_col @> ANY(ARRAY['{"status":"active"}', '{"status":"pending"}'])`
|
|
180
|
+
- Heavy `@>` workloads: consider opclass `jsonb_path_ops` for smaller/faster containment-only indexes:
|
|
181
|
+
- `CREATE INDEX ON tbl USING GIN (jsonb_col jsonb_path_ops);`
|
|
182
|
+
- **Trade-off**: loses support for key existence (`?`, `?|`, `?&`) queries—only supports containment (`@>`)
|
|
183
|
+
- Equality/range on a specific scalar field: extract and index with B-tree (generated column or expression):
|
|
184
|
+
- `ALTER TABLE tbl ADD COLUMN price INT GENERATED ALWAYS AS ((jsonb_col->>'price')::INT) STORED;`
|
|
185
|
+
- `CREATE INDEX ON tbl (price);`
|
|
186
|
+
- Prefer queries like `WHERE price BETWEEN 100 AND 500` (uses B-tree) over `WHERE (jsonb_col->>'price')::INT BETWEEN 100 AND 500` without index.
|
|
187
|
+
- Arrays inside JSONB: use GIN + `@>` for containment (e.g., tags). Consider `jsonb_path_ops` if only doing containment.
|
|
188
|
+
- Keep core relations in tables; use JSONB for optional/variable attributes.
|
|
189
|
+
- Use constraints to limit allowed JSONB values in a column e.g. `config JSONB NOT NULL CHECK(jsonb_typeof(config) = 'object')`
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
## Examples
|
|
193
|
+
|
|
194
|
+
### Users
|
|
195
|
+
|
|
196
|
+
```sql
|
|
197
|
+
CREATE TABLE users (
|
|
198
|
+
user_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
199
|
+
email TEXT NOT NULL UNIQUE,
|
|
200
|
+
name TEXT NOT NULL,
|
|
201
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
202
|
+
);
|
|
203
|
+
CREATE UNIQUE INDEX ON users (LOWER(email));
|
|
204
|
+
CREATE INDEX ON users (created_at);
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Orders
|
|
208
|
+
|
|
209
|
+
```sql
|
|
210
|
+
CREATE TABLE orders (
|
|
211
|
+
order_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
212
|
+
user_id BIGINT NOT NULL REFERENCES users(user_id),
|
|
213
|
+
status TEXT NOT NULL DEFAULT 'PENDING' CHECK (status IN ('PENDING','PAID','CANCELED')),
|
|
214
|
+
total NUMERIC(10,2) NOT NULL CHECK (total > 0),
|
|
215
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
216
|
+
);
|
|
217
|
+
CREATE INDEX ON orders (user_id);
|
|
218
|
+
CREATE INDEX ON orders (created_at);
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### JSONB
|
|
222
|
+
|
|
223
|
+
```sql
|
|
224
|
+
CREATE TABLE profiles (
|
|
225
|
+
user_id BIGINT PRIMARY KEY REFERENCES users(user_id),
|
|
226
|
+
attrs JSONB NOT NULL DEFAULT '{}',
|
|
227
|
+
theme TEXT GENERATED ALWAYS AS (attrs->>'theme') STORED
|
|
228
|
+
);
|
|
229
|
+
CREATE INDEX profiles_attrs_gin ON profiles USING GIN (attrs);
|
|
230
|
+
```
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: postmortem-writing
|
|
3
|
+
description: Write effective blameless postmortems with root cause analysis, timelines, and action items. Use when conducting incident reviews, writing postmortem documents, or improving incident response processes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Postmortem Writing
|
|
7
|
+
|
|
8
|
+
Comprehensive guide to writing effective, blameless postmortems that drive organizational learning and prevent incident recurrence.
|
|
9
|
+
|
|
10
|
+
## Do not use this skill when
|
|
11
|
+
|
|
12
|
+
- The task is unrelated to postmortem writing
|
|
13
|
+
- You need a different domain or tool outside this scope
|
|
14
|
+
|
|
15
|
+
## Instructions
|
|
16
|
+
|
|
17
|
+
- Clarify goals, constraints, and required inputs.
|
|
18
|
+
- Apply relevant best practices and validate outcomes.
|
|
19
|
+
- Provide actionable steps and verification.
|
|
20
|
+
- If detailed examples are required, open `resources/implementation-playbook.md`.
|
|
21
|
+
|
|
22
|
+
## Use this skill when
|
|
23
|
+
|
|
24
|
+
- Conducting post-incident reviews
|
|
25
|
+
- Writing postmortem documents
|
|
26
|
+
- Facilitating blameless postmortem meetings
|
|
27
|
+
- Identifying root causes and contributing factors
|
|
28
|
+
- Creating actionable follow-up items
|
|
29
|
+
- Building organizational learning culture
|
|
30
|
+
|
|
31
|
+
## Core Concepts
|
|
32
|
+
|
|
33
|
+
### 1. Blameless Culture
|
|
34
|
+
|
|
35
|
+
| Blame-Focused | Blameless |
|
|
36
|
+
|---------------|-----------|
|
|
37
|
+
| "Who caused this?" | "What conditions allowed this?" |
|
|
38
|
+
| "Someone made a mistake" | "The system allowed this mistake" |
|
|
39
|
+
| Punish individuals | Improve systems |
|
|
40
|
+
| Hide information | Share learnings |
|
|
41
|
+
| Fear of speaking up | Psychological safety |
|
|
42
|
+
|
|
43
|
+
### 2. Postmortem Triggers
|
|
44
|
+
|
|
45
|
+
- SEV1 or SEV2 incidents
|
|
46
|
+
- Customer-facing outages > 15 minutes
|
|
47
|
+
- Data loss or security incidents
|
|
48
|
+
- Near-misses that could have been severe
|
|
49
|
+
- Novel failure modes
|
|
50
|
+
- Incidents requiring unusual intervention
|
|
51
|
+
|
|
52
|
+
## Quick Start
|
|
53
|
+
|
|
54
|
+
### Postmortem Timeline
|
|
55
|
+
```
|
|
56
|
+
Day 0: Incident occurs
|
|
57
|
+
Day 1-2: Draft postmortem document
|
|
58
|
+
Day 3-5: Postmortem meeting
|
|
59
|
+
Day 5-7: Finalize document, create tickets
|
|
60
|
+
Week 2+: Action item completion
|
|
61
|
+
Quarterly: Review patterns across incidents
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Templates
|
|
65
|
+
|
|
66
|
+
### Template 1: Standard Postmortem
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
# Postmortem: [Incident Title]
|
|
70
|
+
|
|
71
|
+
**Date**: 2024-01-15
|
|
72
|
+
**Authors**: @alice, @bob
|
|
73
|
+
**Status**: Draft | In Review | Final
|
|
74
|
+
**Incident Severity**: SEV2
|
|
75
|
+
**Incident Duration**: 47 minutes
|
|
76
|
+
|
|
77
|
+
## Executive Summary
|
|
78
|
+
|
|
79
|
+
On January 15, 2024, the payment processing service experienced a 47-minute outage affecting approximately 12,000 customers. The root cause was a database connection pool exhaustion triggered by a configuration change in deployment v2.3.4. The incident was resolved by rolling back to v2.3.3 and increasing connection pool limits.
|
|
80
|
+
|
|
81
|
+
**Impact**:
|
|
82
|
+
- 12,000 customers unable to complete purchases
|
|
83
|
+
- Estimated revenue loss: $45,000
|
|
84
|
+
- 847 support tickets created
|
|
85
|
+
- No data loss or security implications
|
|
86
|
+
|
|
87
|
+
## Timeline (All times UTC)
|
|
88
|
+
|
|
89
|
+
| Time | Event |
|
|
90
|
+
|------|-------|
|
|
91
|
+
| 14:23 | Deployment v2.3.4 completed to production |
|
|
92
|
+
| 14:31 | First alert: `payment_error_rate > 5%` |
|
|
93
|
+
| 14:33 | On-call engineer @alice acknowledges alert |
|
|
94
|
+
| 14:35 | Initial investigation begins, error rate at 23% |
|
|
95
|
+
| 14:41 | Incident declared SEV2, @bob joins |
|
|
96
|
+
| 14:45 | Database connection exhaustion identified |
|
|
97
|
+
| 14:52 | Decision to rollback deployment |
|
|
98
|
+
| 14:58 | Rollback to v2.3.3 initiated |
|
|
99
|
+
| 15:10 | Rollback complete, error rate dropping |
|
|
100
|
+
| 15:18 | Service fully recovered, incident resolved |
|
|
101
|
+
|
|
102
|
+
## Root Cause Analysis
|
|
103
|
+
|
|
104
|
+
### What Happened
|
|
105
|
+
|
|
106
|
+
The v2.3.4 deployment included a change to the database query pattern that inadvertently removed connection pooling for a frequently-called endpoint. Each request opened a new database connection instead of reusing pooled connections.
|
|
107
|
+
|
|
108
|
+
### Why It Happened
|
|
109
|
+
|
|
110
|
+
1. **Proximate Cause**: Code change in `PaymentRepository.java` replaced pooled `DataSource` with direct `DriverManager.getConnection()` calls.
|
|
111
|
+
|
|
112
|
+
2. **Contributing Factors**:
|
|
113
|
+
- Code review did not catch the connection handling change
|
|
114
|
+
- No integration tests specifically for connection pool behavior
|
|
115
|
+
- Staging environment has lower traffic, masking the issue
|
|
116
|
+
- Database connection metrics alert threshold was too high (90%)
|
|
117
|
+
|
|
118
|
+
3. **5 Whys Analysis**:
|
|
119
|
+
- Why did the service fail? → Database connections exhausted
|
|
120
|
+
- Why were connections exhausted? → Each request opened new connection
|
|
121
|
+
- Why did each request open new connection? → Code bypassed connection pool
|
|
122
|
+
- Why did code bypass connection pool? → Developer unfamiliar with codebase patterns
|
|
123
|
+
- Why was developer unfamiliar? → No documentation on connection management patterns
|
|
124
|
+
|
|
125
|
+
### System Diagram
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
[Client] → [Load Balancer] → [Payment Service] → [Database]
|
|
129
|
+
↓
|
|
130
|
+
Connection Pool (broken)
|
|
131
|
+
↓
|
|
132
|
+
Direct connections (cause)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Detection
|
|
136
|
+
|
|
137
|
+
### What Worked
|
|
138
|
+
- Error rate alert fired within 8 minutes of deployment
|
|
139
|
+
- Grafana dashboard clearly showed connection spike
|
|
140
|
+
- On-call response was swift (2 minute acknowledgment)
|
|
141
|
+
|
|
142
|
+
### What Didn't Work
|
|
143
|
+
- Database connection metric alert threshold too high
|
|
144
|
+
- No deployment-correlated alerting
|
|
145
|
+
- Canary deployment would have caught this earlier
|
|
146
|
+
|
|
147
|
+
### Detection Gap
|
|
148
|
+
The deployment completed at 14:23, but the first alert didn't fire until 14:31 (8 minutes). A deployment-aware alert could have detected the issue faster.
|
|
149
|
+
|
|
150
|
+
## Response
|
|
151
|
+
|
|
152
|
+
### What Worked
|
|
153
|
+
- On-call engineer quickly identified database as the issue
|
|
154
|
+
- Rollback decision was made decisively
|
|
155
|
+
- Clear communication in incident channel
|
|
156
|
+
|
|
157
|
+
### What Could Be Improved
|
|
158
|
+
- Took 10 minutes to correlate issue with recent deployment
|
|
159
|
+
- Had to manually check deployment history
|
|
160
|
+
- Rollback took 12 minutes (could be faster)
|
|
161
|
+
|
|
162
|
+
## Impact
|
|
163
|
+
|
|
164
|
+
### Customer Impact
|
|
165
|
+
- 12,000 unique customers affected
|
|
166
|
+
- Average impact duration: 35 minutes
|
|
167
|
+
- 847 support tickets (23% of affected users)
|
|
168
|
+
- Customer satisfaction score dropped 12 points
|
|
169
|
+
|
|
170
|
+
### Business Impact
|
|
171
|
+
- Estimated revenue loss: $45,000
|
|
172
|
+
- Support cost: ~$2,500 (agent time)
|
|
173
|
+
- Engineering time: ~8 person-hours
|
|
174
|
+
|
|
175
|
+
### Technical Impact
|
|
176
|
+
- Database primary experienced elevated load
|
|
177
|
+
- Some replica lag during incident
|
|
178
|
+
- No permanent damage to systems
|
|
179
|
+
|
|
180
|
+
## Lessons Learned
|
|
181
|
+
|
|
182
|
+
### What Went Well
|
|
183
|
+
1. Alerting detected the issue before customer reports
|
|
184
|
+
2. Team collaborated effectively under pressure
|
|
185
|
+
3. Rollback procedure worked smoothly
|
|
186
|
+
4. Communication was clear and timely
|
|
187
|
+
|
|
188
|
+
### What Went Wrong
|
|
189
|
+
1. Code review missed critical change
|
|
190
|
+
2. Test coverage gap for connection pooling
|
|
191
|
+
3. Staging environment doesn't reflect production traffic
|
|
192
|
+
4. Alert thresholds were not tuned properly
|
|
193
|
+
|
|
194
|
+
### Where We Got Lucky
|
|
195
|
+
1. Incident occurred during business hours with full team available
|
|
196
|
+
2. Database handled the load without failing completely
|
|
197
|
+
3. No other incidents occurred simultaneously
|
|
198
|
+
|
|
199
|
+
## Action Items
|
|
200
|
+
|
|
201
|
+
| Priority | Action | Owner | Due Date | Ticket |
|
|
202
|
+
|----------|--------|-------|----------|--------|
|
|
203
|
+
| P0 | Add integration test for connection pool behavior | @alice | 2024-01-22 | ENG-1234 |
|
|
204
|
+
| P0 | Lower database connection alert threshold to 70% | @bob | 2024-01-17 | OPS-567 |
|
|
205
|
+
| P1 | Document connection management patterns | @alice | 2024-01-29 | DOC-89 |
|
|
206
|
+
| P1 | Implement deployment-correlated alerting | @bob | 2024-02-05 | OPS-568 |
|
|
207
|
+
| P2 | Evaluate canary deployment strategy | @charlie | 2024-02-15 | ENG-1235 |
|
|
208
|
+
| P2 | Load test staging with production-like traffic | @dave | 2024-02-28 | QA-123 |
|
|
209
|
+
|
|
210
|
+
## Appendix
|
|
211
|
+
|
|
212
|
+
### Supporting Data
|
|
213
|
+
|
|
214
|
+
#### Error Rate Graph
|
|
215
|
+
[Link to Grafana dashboard snapshot]
|
|
216
|
+
|
|
217
|
+
#### Database Connection Graph
|
|
218
|
+
[Link to metrics]
|
|
219
|
+
|
|
220
|
+
### Related Incidents
|
|
221
|
+
- 2023-11-02: Similar connection issue in User Service (POSTMORTEM-42)
|
|
222
|
+
|
|
223
|
+
### References
|
|
224
|
+
- [Connection Pool Best Practices](internal-wiki/connection-pools)
|
|
225
|
+
- [Deployment Runbook](internal-wiki/deployment-runbook)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Template 2: 5 Whys Analysis
|
|
229
|
+
|
|
230
|
+
```markdown
|
|
231
|
+
# 5 Whys Analysis: [Incident]
|
|
232
|
+
|
|
233
|
+
## Problem Statement
|
|
234
|
+
Payment service experienced 47-minute outage due to database connection exhaustion.
|
|
235
|
+
|
|
236
|
+
## Analysis
|
|
237
|
+
|
|
238
|
+
### Why #1: Why did the service fail?
|
|
239
|
+
**Answer**: Database connections were exhausted, causing all new requests to fail.
|
|
240
|
+
|
|
241
|
+
**Evidence**: Metrics showed connection count at 100/100 (max), with 500+ pending requests.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
### Why #2: Why were database connections exhausted?
|
|
246
|
+
**Answer**: Each incoming request opened a new database connection instead of using the connection pool.
|
|
247
|
+
|
|
248
|
+
**Evidence**: Code diff shows direct `DriverManager.getConnection()` instead of pooled `DataSource`.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
### Why #3: Why did the code bypass the connection pool?
|
|
253
|
+
**Answer**: A developer refactored the repository class and inadvertently changed the connection acquisition method.
|
|
254
|
+
|
|
255
|
+
**Evidence**: PR #1234 shows the change, made while fixing a different bug.
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
### Why #4: Why wasn't this caught in code review?
|
|
260
|
+
**Answer**: The reviewer focused on the functional change (the bug fix) and didn't notice the infrastructure change.
|
|
261
|
+
|
|
262
|
+
**Evidence**: Review comments only discuss business logic.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
### Why #5: Why isn't there a safety net for this type of change?
|
|
267
|
+
**Answer**: We lack automated tests that verify connection pool behavior and lack documentation about our connection patterns.
|
|
268
|
+
|
|
269
|
+
**Evidence**: Test suite has no tests for connection handling; wiki has no article on database connections.
|
|
270
|
+
|
|
271
|
+
## Root Causes Identified
|
|
272
|
+
|
|
273
|
+
1. **Primary**: Missing automated tests for infrastructure behavior
|
|
274
|
+
2. **Secondary**: Insufficient documentation of architectural patterns
|
|
275
|
+
3. **Tertiary**: Code review checklist doesn't include infrastructure considerations
|
|
276
|
+
|
|
277
|
+
## Systemic Improvements
|
|
278
|
+
|
|
279
|
+
| Root Cause | Improvement | Type |
|
|
280
|
+
|------------|-------------|------|
|
|
281
|
+
| Missing tests | Add infrastructure behavior tests | Prevention |
|
|
282
|
+
| Missing docs | Document connection patterns | Prevention |
|
|
283
|
+
| Review gaps | Update review checklist | Detection |
|
|
284
|
+
| No canary | Implement canary deployments | Mitigation |
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Template 3: Quick Postmortem (Minor Incidents)
|
|
288
|
+
|
|
289
|
+
```markdown
|
|
290
|
+
# Quick Postmortem: [Brief Title]
|
|
291
|
+
|
|
292
|
+
**Date**: 2024-01-15 | **Duration**: 12 min | **Severity**: SEV3
|
|
293
|
+
|
|
294
|
+
## What Happened
|
|
295
|
+
API latency spiked to 5s due to cache miss storm after cache flush.
|
|
296
|
+
|
|
297
|
+
## Timeline
|
|
298
|
+
- 10:00 - Cache flush initiated for config update
|
|
299
|
+
- 10:02 - Latency alerts fire
|
|
300
|
+
- 10:05 - Identified as cache miss storm
|
|
301
|
+
- 10:08 - Enabled cache warming
|
|
302
|
+
- 10:12 - Latency normalized
|
|
303
|
+
|
|
304
|
+
## Root Cause
|
|
305
|
+
Full cache flush for minor config update caused thundering herd.
|
|
306
|
+
|
|
307
|
+
## Fix
|
|
308
|
+
- Immediate: Enabled cache warming
|
|
309
|
+
- Long-term: Implement partial cache invalidation (ENG-999)
|
|
310
|
+
|
|
311
|
+
## Lessons
|
|
312
|
+
Don't full-flush cache in production; use targeted invalidation.
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## Facilitation Guide
|
|
316
|
+
|
|
317
|
+
### Running a Postmortem Meeting
|
|
318
|
+
|
|
319
|
+
```markdown
|
|
320
|
+
## Meeting Structure (60 minutes)
|
|
321
|
+
|
|
322
|
+
### 1. Opening (5 min)
|
|
323
|
+
- Remind everyone of blameless culture
|
|
324
|
+
- "We're here to learn, not to blame"
|
|
325
|
+
- Review meeting norms
|
|
326
|
+
|
|
327
|
+
### 2. Timeline Review (15 min)
|
|
328
|
+
- Walk through events chronologically
|
|
329
|
+
- Ask clarifying questions
|
|
330
|
+
- Identify gaps in timeline
|
|
331
|
+
|
|
332
|
+
### 3. Analysis Discussion (20 min)
|
|
333
|
+
- What failed?
|
|
334
|
+
- Why did it fail?
|
|
335
|
+
- What conditions allowed this?
|
|
336
|
+
- What would have prevented it?
|
|
337
|
+
|
|
338
|
+
### 4. Action Items (15 min)
|
|
339
|
+
- Brainstorm improvements
|
|
340
|
+
- Prioritize by impact and effort
|
|
341
|
+
- Assign owners and due dates
|
|
342
|
+
|
|
343
|
+
### 5. Closing (5 min)
|
|
344
|
+
- Summarize key learnings
|
|
345
|
+
- Confirm action item owners
|
|
346
|
+
- Schedule follow-up if needed
|
|
347
|
+
|
|
348
|
+
## Facilitation Tips
|
|
349
|
+
- Keep discussion on track
|
|
350
|
+
- Redirect blame to systems
|
|
351
|
+
- Encourage quiet participants
|
|
352
|
+
- Document dissenting views
|
|
353
|
+
- Time-box tangents
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
## Anti-Patterns to Avoid
|
|
357
|
+
|
|
358
|
+
| Anti-Pattern | Problem | Better Approach |
|
|
359
|
+
|--------------|---------|-----------------|
|
|
360
|
+
| **Blame game** | Shuts down learning | Focus on systems |
|
|
361
|
+
| **Shallow analysis** | Doesn't prevent recurrence | Ask "why" 5 times |
|
|
362
|
+
| **No action items** | Waste of time | Always have concrete next steps |
|
|
363
|
+
| **Unrealistic actions** | Never completed | Scope to achievable tasks |
|
|
364
|
+
| **No follow-up** | Actions forgotten | Track in ticketing system |
|
|
365
|
+
|
|
366
|
+
## Best Practices
|
|
367
|
+
|
|
368
|
+
### Do's
|
|
369
|
+
- **Start immediately** - Memory fades fast
|
|
370
|
+
- **Be specific** - Exact times, exact errors
|
|
371
|
+
- **Include graphs** - Visual evidence
|
|
372
|
+
- **Assign owners** - No orphan action items
|
|
373
|
+
- **Share widely** - Organizational learning
|
|
374
|
+
|
|
375
|
+
### Don'ts
|
|
376
|
+
- **Don't name and shame** - Ever
|
|
377
|
+
- **Don't skip small incidents** - They reveal patterns
|
|
378
|
+
- **Don't make it a blame doc** - That kills learning
|
|
379
|
+
- **Don't create busywork** - Actions should be meaningful
|
|
380
|
+
- **Don't skip follow-up** - Verify actions completed
|
|
381
|
+
|
|
382
|
+
## Resources
|
|
383
|
+
|
|
384
|
+
- [Google SRE - Postmortem Culture](https://sre.google/sre-book/postmortem-culture/)
|
|
385
|
+
- [Etsy's Blameless Postmortems](https://codeascraft.com/2012/05/22/blameless-postmortems/)
|
|
386
|
+
- [PagerDuty Postmortem Guide](https://postmortems.pagerduty.com/)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
© 2025 Anthropic, PBC. All rights reserved.
|
|
2
|
+
|
|
3
|
+
LICENSE: Use of these materials (including all code, prompts, assets, files,
|
|
4
|
+
and other components of this Skill) is governed by your agreement with
|
|
5
|
+
Anthropic regarding use of Anthropic's services. If no separate agreement
|
|
6
|
+
exists, use is governed by Anthropic's Consumer Terms of Service or
|
|
7
|
+
Commercial Terms of Service, as applicable:
|
|
8
|
+
https://www.anthropic.com/legal/consumer-terms
|
|
9
|
+
https://www.anthropic.com/legal/commercial-terms
|
|
10
|
+
Your applicable agreement is referred to as the "Agreement." "Services" are
|
|
11
|
+
as defined in the Agreement.
|
|
12
|
+
|
|
13
|
+
ADDITIONAL RESTRICTIONS: Notwithstanding anything in the Agreement to the
|
|
14
|
+
contrary, users may not:
|
|
15
|
+
|
|
16
|
+
- Extract these materials from the Services or retain copies of these
|
|
17
|
+
materials outside the Services
|
|
18
|
+
- Reproduce or copy these materials, except for temporary copies created
|
|
19
|
+
automatically during authorized use of the Services
|
|
20
|
+
- Create derivative works based on these materials
|
|
21
|
+
- Distribute, sublicense, or transfer these materials to any third party
|
|
22
|
+
- Make, offer to sell, sell, or import any inventions embodied in these
|
|
23
|
+
materials
|
|
24
|
+
- Reverse engineer, decompile, or disassemble these materials
|
|
25
|
+
|
|
26
|
+
The receipt, viewing, or possession of these materials does not convey or
|
|
27
|
+
imply any license or right beyond those expressly granted above.
|
|
28
|
+
|
|
29
|
+
Anthropic retains all right, title, and interest in these materials,
|
|
30
|
+
including all copyrights, patents, and other intellectual property rights.
|