@synapta/skills 0.1.1 → 0.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/dist/index.js +11 -4
- package/package.json +3 -4
- package/skills/ATTRIBUTION.md +80 -0
- package/skills/accessibility-audit/SKILL.md +325 -0
- package/skills/accessibility-audit/reference/wcag-checklist.md +103 -0
- package/skills/apns-notifier/SKILL.md +86 -0
- package/skills/approval-policy-enforcer/SKILL.md +66 -0
- package/skills/apps-sdk-builder/LICENSE.txt +201 -0
- package/skills/apps-sdk-builder/SKILL.md +328 -0
- package/skills/apps-sdk-builder/agents/openai.yaml +13 -0
- package/skills/apps-sdk-builder/references/app-archetypes.md +132 -0
- package/skills/apps-sdk-builder/references/apps-sdk-docs-workflow.md +135 -0
- package/skills/apps-sdk-builder/references/interactive-state-sync-patterns.md +113 -0
- package/skills/apps-sdk-builder/references/repo-contract-and-validation.md +93 -0
- package/skills/apps-sdk-builder/references/search-fetch-standard.md +67 -0
- package/skills/apps-sdk-builder/references/upstream-example-workflow.md +79 -0
- package/skills/apps-sdk-builder/references/window-openai-patterns.md +79 -0
- package/skills/apps-sdk-builder/scripts/scaffold_node_ext_apps.mjs +606 -0
- package/skills/architecture-selector/SKILL.md +64 -0
- package/skills/backlog-planner/SKILL.md +68 -0
- package/skills/carplay-entitlement-checker/SKILL.md +82 -0
- package/skills/concept-deepener/SKILL.md +86 -0
- package/skills/concept-discovery/SKILL.md +517 -0
- package/skills/concept-discovery/assets/sample-analysis.json +81 -0
- package/skills/concept-discovery/expected_outputs/sample-enum-dictionary.md +25 -0
- package/skills/concept-discovery/expected_outputs/sample-page-user-list.md +83 -0
- package/skills/concept-discovery/expected_outputs/sample-prd-readme.md +43 -0
- package/skills/concept-discovery/references/framework-patterns.md +228 -0
- package/skills/concept-discovery/references/prd-quality-checklist.md +65 -0
- package/skills/concept-discovery/scripts/codebase_analyzer.py +732 -0
- package/skills/concept-discovery/scripts/prd_scaffolder.py +435 -0
- package/skills/dast-zap/SKILL.md +453 -0
- package/skills/dast-zap/assets/.gitkeep +9 -0
- package/skills/dast-zap/assets/github_action.yml +207 -0
- package/skills/dast-zap/assets/gitlab_ci.yml +226 -0
- package/skills/dast-zap/assets/zap_automation.yaml +196 -0
- package/skills/dast-zap/assets/zap_context.xml +192 -0
- package/skills/dast-zap/references/EXAMPLE.md +40 -0
- package/skills/dast-zap/references/api_testing_guide.md +475 -0
- package/skills/dast-zap/references/authentication_guide.md +431 -0
- package/skills/dast-zap/references/false_positive_handling.md +427 -0
- package/skills/dast-zap/references/owasp_mapping.md +255 -0
- package/skills/dep-sbom-scan/SKILL.md +466 -0
- package/skills/deploy-cloudflare/SKILL.md +930 -0
- package/skills/deploy-docker/SKILL.md +55 -0
- package/skills/deploy-fly/SKILL.md +228 -0
- package/skills/deploy-k8s/SKILL.md +108 -0
- package/skills/deploy-k8s/assets/logo.png +0 -0
- package/skills/deploy-k8s/docs/README.md +29 -0
- package/skills/deploy-k8s/docs/SUMMARY.md +56 -0
- package/skills/deploy-k8s/docs/advanced/token-efficiency.md +61 -0
- package/skills/deploy-k8s/docs/architecture/multi-tenancy.md +96 -0
- package/skills/deploy-k8s/docs/architecture/storage-and-state.md +102 -0
- package/skills/deploy-k8s/docs/architecture/workload-patterns.md +87 -0
- package/skills/deploy-k8s/docs/book.json +16 -0
- package/skills/deploy-k8s/docs/community/changelog.md +34 -0
- package/skills/deploy-k8s/docs/community/contributing.md +67 -0
- package/skills/deploy-k8s/docs/core-concepts/failure-modes.md +153 -0
- package/skills/deploy-k8s/docs/core-concepts/philosophy.md +83 -0
- package/skills/deploy-k8s/docs/core-concepts/workflow.md +124 -0
- package/skills/deploy-k8s/docs/examples/bad-patterns.md +47 -0
- package/skills/deploy-k8s/docs/examples/do-dont-checklist.md +37 -0
- package/skills/deploy-k8s/docs/examples/good-patterns.md +49 -0
- package/skills/deploy-k8s/docs/failure-modes/api-drift.md +104 -0
- package/skills/deploy-k8s/docs/failure-modes/fragile-rollouts.md +99 -0
- package/skills/deploy-k8s/docs/failure-modes/insecure-workload-defaults.md +80 -0
- package/skills/deploy-k8s/docs/failure-modes/network-exposure.md +98 -0
- package/skills/deploy-k8s/docs/failure-modes/privilege-sprawl.md +91 -0
- package/skills/deploy-k8s/docs/failure-modes/resource-starvation.md +85 -0
- package/skills/deploy-k8s/docs/getting-started/installation.md +152 -0
- package/skills/deploy-k8s/docs/getting-started/quick-start.md +115 -0
- package/skills/deploy-k8s/docs/guides/helm-patterns.md +71 -0
- package/skills/deploy-k8s/docs/guides/kustomize-patterns.md +65 -0
- package/skills/deploy-k8s/docs/guides/observability.md +67 -0
- package/skills/deploy-k8s/docs/guides/security-hardening.md +59 -0
- package/skills/deploy-k8s/docs/guides/validation-and-policy.md +66 -0
- package/skills/deploy-k8s/docs/integrations/mcp-integration.md +52 -0
- package/skills/deploy-k8s/docs/package-lock.json +2892 -0
- package/skills/deploy-k8s/docs/package.json +13 -0
- package/skills/deploy-k8s/references/api-drift.md +298 -0
- package/skills/deploy-k8s/references/conditional/aks-patterns.md +70 -0
- package/skills/deploy-k8s/references/conditional/eks-patterns.md +79 -0
- package/skills/deploy-k8s/references/conditional/gitops-controllers.md +71 -0
- package/skills/deploy-k8s/references/conditional/gke-patterns.md +74 -0
- package/skills/deploy-k8s/references/conditional/observability-stacks.md +80 -0
- package/skills/deploy-k8s/references/conditional/openshift-patterns.md +67 -0
- package/skills/deploy-k8s/references/daemonset-operator-patterns.md +155 -0
- package/skills/deploy-k8s/references/deployment-patterns.md +146 -0
- package/skills/deploy-k8s/references/do-dont-patterns.md +87 -0
- package/skills/deploy-k8s/references/examples-bad.md +282 -0
- package/skills/deploy-k8s/references/examples-good.md +440 -0
- package/skills/deploy-k8s/references/fragile-rollouts.md +303 -0
- package/skills/deploy-k8s/references/helm-patterns.md +203 -0
- package/skills/deploy-k8s/references/insecure-workload-defaults.md +300 -0
- package/skills/deploy-k8s/references/job-patterns.md +120 -0
- package/skills/deploy-k8s/references/kustomize-patterns.md +239 -0
- package/skills/deploy-k8s/references/multi-tenancy.md +343 -0
- package/skills/deploy-k8s/references/network-exposure.md +481 -0
- package/skills/deploy-k8s/references/observability.md +302 -0
- package/skills/deploy-k8s/references/privilege-sprawl.md +273 -0
- package/skills/deploy-k8s/references/resource-starvation.md +374 -0
- package/skills/deploy-k8s/references/security-hardening.md +209 -0
- package/skills/deploy-k8s/references/stateful-patterns.md +130 -0
- package/skills/deploy-k8s/references/storage-and-state.md +330 -0
- package/skills/deploy-k8s/references/validation-and-policy.md +242 -0
- package/skills/deploy-railway/SKILL.md +235 -0
- package/skills/deploy-railway/references/analyze-db-mongo.md +84 -0
- package/skills/deploy-railway/references/analyze-db-mysql.md +254 -0
- package/skills/deploy-railway/references/analyze-db-postgres.md +479 -0
- package/skills/deploy-railway/references/analyze-db-redis.md +208 -0
- package/skills/deploy-railway/references/analyze-db.md +344 -0
- package/skills/deploy-railway/references/configure.md +309 -0
- package/skills/deploy-railway/references/deploy.md +195 -0
- package/skills/deploy-railway/references/operate.md +214 -0
- package/skills/deploy-railway/references/request.md +248 -0
- package/skills/deploy-railway/references/setup.md +312 -0
- package/skills/deploy-railway/scripts/analyze-mongo.py +1549 -0
- package/skills/deploy-railway/scripts/analyze-mysql.py +1195 -0
- package/skills/deploy-railway/scripts/analyze-postgres.py +3058 -0
- package/skills/deploy-railway/scripts/analyze-redis.py +1090 -0
- package/skills/deploy-railway/scripts/dal.py +671 -0
- package/skills/deploy-railway/scripts/enable-pg-stats.py +170 -0
- package/skills/deploy-railway/scripts/pg-extensions.py +370 -0
- package/skills/deploy-railway/scripts/railway-api.sh +52 -0
- package/skills/deploy-ssh/SKILL.md +91 -0
- package/skills/deploy-vercel/SKILL.md +304 -0
- package/skills/deploy-vercel/resources/deploy-codex.sh +301 -0
- package/skills/deploy-vercel/resources/deploy.sh +301 -0
- package/skills/docs-runbooks/SKILL.md +399 -0
- package/skills/drive-status-renderer/SKILL.md +62 -0
- package/skills/iac-scan/SKILL.md +680 -0
- package/skills/iac-scan/assets/.gitkeep +9 -0
- package/skills/iac-scan/assets/checkov_config.yaml +94 -0
- package/skills/iac-scan/assets/github_actions.yml +199 -0
- package/skills/iac-scan/assets/gitlab_ci.yml +218 -0
- package/skills/iac-scan/assets/pre_commit_config.yaml +92 -0
- package/skills/iac-scan/references/EXAMPLE.md +40 -0
- package/skills/iac-scan/references/compliance_mapping.md +237 -0
- package/skills/iac-scan/references/custom_policies.md +460 -0
- package/skills/iac-scan/references/suppression_guide.md +431 -0
- package/skills/incident-briefing/SKILL.md +66 -0
- package/skills/incident-triage/SKILL.md +481 -0
- package/{LICENSE → skills/mcp-builder/LICENSE.txt} +15 -14
- package/skills/mcp-builder/SKILL.md +244 -0
- package/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/mobile-pairing/SKILL.md +52 -0
- package/skills/ops-sre/SKILL.md +297 -0
- package/skills/playwright-qa/LICENSE.txt +201 -0
- package/skills/playwright-qa/NOTICE.txt +14 -0
- package/skills/playwright-qa/SKILL.md +156 -0
- package/skills/playwright-qa/agents/openai.yaml +6 -0
- package/skills/playwright-qa/assets/playwright-small.svg +3 -0
- package/skills/playwright-qa/assets/playwright.png +0 -0
- package/skills/playwright-qa/references/cli.md +116 -0
- package/skills/playwright-qa/references/workflows.md +95 -0
- package/skills/playwright-qa/scripts/playwright_cli.sh +25 -0
- package/skills/release-publish/SKILL.md +85 -0
- package/skills/repo-bootstrap/SKILL.md +92 -0
- package/skills/repo-bootstrap/assets/example-workflows/validate-agents.yml +89 -0
- package/skills/repo-bootstrap/assets/root-thin.md +141 -0
- package/skills/repo-bootstrap/assets/root-verbose.md +149 -0
- package/skills/repo-bootstrap/assets/scoped/backend-go.md +107 -0
- package/skills/repo-bootstrap/assets/scoped/backend-php.md +94 -0
- package/skills/repo-bootstrap/assets/scoped/backend-python.md +84 -0
- package/skills/repo-bootstrap/assets/scoped/backend-typescript.md +89 -0
- package/skills/repo-bootstrap/assets/scoped/claude-code-skill.md +101 -0
- package/skills/repo-bootstrap/assets/scoped/cli.md +83 -0
- package/skills/repo-bootstrap/assets/scoped/concourse.md +196 -0
- package/skills/repo-bootstrap/assets/scoped/ddev.md +68 -0
- package/skills/repo-bootstrap/assets/scoped/docker.md +160 -0
- package/skills/repo-bootstrap/assets/scoped/documentation.md +98 -0
- package/skills/repo-bootstrap/assets/scoped/examples.md +96 -0
- package/skills/repo-bootstrap/assets/scoped/frontend-typescript.md +88 -0
- package/skills/repo-bootstrap/assets/scoped/github-actions.md +174 -0
- package/skills/repo-bootstrap/assets/scoped/gitlab-ci.md +174 -0
- package/skills/repo-bootstrap/assets/scoped/oro-bundle.md +209 -0
- package/skills/repo-bootstrap/assets/scoped/oro-project.md +170 -0
- package/skills/repo-bootstrap/assets/scoped/python-modern.md +170 -0
- package/skills/repo-bootstrap/assets/scoped/resources.md +96 -0
- package/skills/repo-bootstrap/assets/scoped/skill-repo.md +139 -0
- package/skills/repo-bootstrap/assets/scoped/symfony.md +168 -0
- package/skills/repo-bootstrap/assets/scoped/testing.md +87 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-docs.md +103 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-extension.md +133 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-project.md +137 -0
- package/skills/repo-bootstrap/assets/scoped/typo3-testing.md +80 -0
- package/skills/repo-bootstrap/checkpoints.yaml +279 -0
- package/skills/repo-bootstrap/evals/evals.json +385 -0
- package/skills/repo-bootstrap/references/ai-contribution-guidelines.md +63 -0
- package/skills/repo-bootstrap/references/ai-tool-compatibility.md +223 -0
- package/skills/repo-bootstrap/references/directory-coverage.md +82 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/coding-agent-cli/scripts-AGENTS.md +389 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/.env.example +13 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/package.json +33 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/pnpm-lock.yaml +3 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/config.ts +28 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/controllers/userController.ts +74 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/index.ts +26 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/errorHandler.ts +45 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/requestLogger.ts +18 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/health.ts +18 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/users.ts +13 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/errors.ts +40 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/logger.ts +14 -0
- package/skills/repo-bootstrap/references/examples/express-api-ts/tsconfig.json +24 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/.env.example +19 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/AGENTS.md +92 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/pyproject.toml +88 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/AGENTS.md +85 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/__init__.py +3 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/config.py +49 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/main.py +66 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/__init__.py +13 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/item.py +43 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/user.py +40 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/__init__.py +5 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/health.py +20 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/items.py +61 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/users.py +55 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/__init__.py +6 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/item_service.py +77 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/user_service.py +69 -0
- package/skills/repo-bootstrap/references/examples/fastapi-app/uv.lock +4 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/AGENTS.md +86 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/package.json +20 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/src/App.tsx +5 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/cmd/api/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/go.mod +2 -0
- package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/AGENTS.md +89 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/go.mod +2 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/AGENTS.md +90 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/package.json +17 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/App.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Button.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Footer.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Header.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Sidebar.tsx +1 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/main.go +7 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package-lock.json +0 -0
- package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package.json +12 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-AGENTS.md +371 -0
- package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-web-AGENTS.md +448 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/.scopes +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/AGENTS.md +91 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/composer.json +8 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/package.json +15 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/pnpm-lock.yaml +0 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/src/Controller.php +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/AGENTS.md +92 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/package.json +26 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/App.tsx +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Button.tsx +10 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Footer.tsx +9 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Header.tsx +9 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/main.tsx +3 -0
- package/skills/repo-bootstrap/references/examples/php-with-frontend/web/tsconfig.json +13 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/AGENTS.md +75 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/package.json +7 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/package.json +11 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/src/index.ts +11 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-lock.yaml +42 -0
- package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-workspace.yaml +2 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/examples-AGENTS.md +45 -0
- package/skills/repo-bootstrap/references/examples/simple-ldap-go/go.mod +3 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/AGENTS.md +70 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md +392 -0
- package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/composer.json +8 -0
- package/skills/repo-bootstrap/references/feedback-memory-schema.md +135 -0
- package/skills/repo-bootstrap/references/git-hooks-setup.md +79 -0
- package/skills/repo-bootstrap/references/output-structure.md +124 -0
- package/skills/repo-bootstrap/references/scripts-guide.md +175 -0
- package/skills/repo-bootstrap/references/verification-guide.md +137 -0
- package/skills/repo-bootstrap/scripts/analyze-git-history.sh +315 -0
- package/skills/repo-bootstrap/scripts/check-freshness.sh +230 -0
- package/skills/repo-bootstrap/scripts/detect-golden-samples.sh +161 -0
- package/skills/repo-bootstrap/scripts/detect-heuristics.sh +93 -0
- package/skills/repo-bootstrap/scripts/detect-project.sh +486 -0
- package/skills/repo-bootstrap/scripts/detect-scopes.sh +330 -0
- package/skills/repo-bootstrap/scripts/detect-utilities.sh +133 -0
- package/skills/repo-bootstrap/scripts/extract-adrs.sh +194 -0
- package/skills/repo-bootstrap/scripts/extract-agent-configs.sh +331 -0
- package/skills/repo-bootstrap/scripts/extract-architecture-rules.sh +522 -0
- package/skills/repo-bootstrap/scripts/extract-ci-commands.sh +385 -0
- package/skills/repo-bootstrap/scripts/extract-ci-rules.sh +384 -0
- package/skills/repo-bootstrap/scripts/extract-commands.sh +358 -0
- package/skills/repo-bootstrap/scripts/extract-documentation.sh +308 -0
- package/skills/repo-bootstrap/scripts/extract-github-rulesets.sh +96 -0
- package/skills/repo-bootstrap/scripts/extract-github-settings.sh +88 -0
- package/skills/repo-bootstrap/scripts/extract-ide-settings.sh +228 -0
- package/skills/repo-bootstrap/scripts/extract-platform-files.sh +290 -0
- package/skills/repo-bootstrap/scripts/extract-quality-configs.sh +442 -0
- package/skills/repo-bootstrap/scripts/generate-agents.sh +2424 -0
- package/skills/repo-bootstrap/scripts/generate-file-map.sh +153 -0
- package/skills/repo-bootstrap/scripts/lib/config-root.sh +211 -0
- package/skills/repo-bootstrap/scripts/lib/summary.sh +244 -0
- package/skills/repo-bootstrap/scripts/lib/template.sh +397 -0
- package/skills/repo-bootstrap/scripts/validate-structure.sh +324 -0
- package/skills/repo-bootstrap/scripts/verify-commands.sh +615 -0
- package/skills/repo-bootstrap/scripts/verify-content.sh +302 -0
- package/skills/schema-api-contracts/SKILL.md +56 -0
- package/skills/secret-hygiene/SKILL.md +511 -0
- package/skills/secret-hygiene/assets/.gitkeep +9 -0
- package/skills/secret-hygiene/assets/config-balanced.toml +81 -0
- package/skills/secret-hygiene/assets/config-custom.toml +178 -0
- package/skills/secret-hygiene/assets/config-strict.toml +48 -0
- package/skills/secret-hygiene/assets/github-action.yml +181 -0
- package/skills/secret-hygiene/assets/gitlab-ci.yml +257 -0
- package/skills/secret-hygiene/assets/precommit-config.yaml +70 -0
- package/skills/secret-hygiene/references/EXAMPLE.md +40 -0
- package/skills/secret-hygiene/references/compliance_mapping.md +538 -0
- package/skills/secret-hygiene/references/detection_rules.md +276 -0
- package/skills/secret-hygiene/references/false_positives.md +598 -0
- package/skills/secret-hygiene/references/remediation_guide.md +530 -0
- package/skills/stack-selector/SKILL.md +56 -0
- package/skills/telegram-control/SKILL.md +110 -0
- package/skills/telegram-control/references/architecture.md +184 -0
- package/skills/telegram-control/references/convex.md +173 -0
- package/skills/telegram-control/references/error_handling.md +212 -0
- package/skills/telegram-control/references/initial_setup.md +165 -0
- package/skills/telegram-control/references/telegram_api.md +156 -0
- package/skills/telegram-control/scripts/cancel_message.ts +53 -0
- package/skills/telegram-control/scripts/list_scheduled.ts +103 -0
- package/skills/telegram-control/scripts/logger.ts +121 -0
- package/skills/telegram-control/scripts/proxy-util.ts +11 -0
- package/skills/telegram-control/scripts/schedule_message.ts +216 -0
- package/skills/telegram-control/scripts/send_message.ts +115 -0
- package/skills/telegram-control/scripts/setup.ts +185 -0
- package/skills/telegram-control/scripts/types.ts +75 -0
- package/skills/telegram-control/scripts/view_history.ts +74 -0
- package/skills/test-strategy/SKILL.md +352 -0
- package/skills/threat-model/SKILL.md +303 -0
- package/skills/threat-model/examples/example-output.md +196 -0
- package/skills/threat-model/template.md +96 -0
- package/skills/ts-lint/SKILL.md +80 -0
- package/skills/ui-flow/SKILL.md +668 -0
- package/skills/voice-command-router/SKILL.md +51 -0
- package/skills/widget-live-activity-sync/SKILL.md +66 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: incident-triage
|
|
3
|
+
synapta_original_name: incident-runbook-templates
|
|
4
|
+
triggers: [synapta incident, prod incident, on-call, sev1, sev2, triage, runbook]
|
|
5
|
+
network: off
|
|
6
|
+
source:
|
|
7
|
+
origin: https://github.com/wshobson/agents
|
|
8
|
+
path: plugins/incident-response/skills/incident-runbook-templates
|
|
9
|
+
commit: 112197c6bfd0
|
|
10
|
+
license: MIT (Seth Hobson)
|
|
11
|
+
adapted: light-touch
|
|
12
|
+
description: Create structured incident response runbooks with step-by-step procedures, escalation paths, and recovery actions. Use this skill when building a service outage runbook for a payment processing system; creating database incident procedures covering connection pool exhaustion, replication lag, and disk space alerts; onboarding new on-call engineers who need step-by-step recovery guides written for a 3 AM brain; or standardizing escalation matrices across multiple engineering teams.
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Incident Runbook Templates
|
|
16
|
+
|
|
17
|
+
Production-ready templates for incident response runbooks covering detection, triage, mitigation, resolution, and communication.
|
|
18
|
+
|
|
19
|
+
## When to Use This Skill
|
|
20
|
+
|
|
21
|
+
- Creating incident response procedures
|
|
22
|
+
- Building service-specific runbooks
|
|
23
|
+
- Establishing escalation paths
|
|
24
|
+
- Documenting recovery procedures
|
|
25
|
+
- Responding to active incidents
|
|
26
|
+
- Onboarding on-call engineers
|
|
27
|
+
|
|
28
|
+
## Core Concepts
|
|
29
|
+
|
|
30
|
+
### 1. Incident Severity Levels
|
|
31
|
+
|
|
32
|
+
| Severity | Impact | Response Time | Example |
|
|
33
|
+
| -------- | -------------------------- | ----------------- | ----------------------- |
|
|
34
|
+
| **SEV1** | Complete outage, data loss | 15 min | Production down |
|
|
35
|
+
| **SEV2** | Major degradation | 30 min | Critical feature broken |
|
|
36
|
+
| **SEV3** | Minor impact | 2 hours | Non-critical bug |
|
|
37
|
+
| **SEV4** | Minimal impact | Next business day | Cosmetic issue |
|
|
38
|
+
|
|
39
|
+
### 2. Runbook Structure
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
1. Overview & Impact
|
|
43
|
+
2. Detection & Alerts
|
|
44
|
+
3. Initial Triage
|
|
45
|
+
4. Mitigation Steps
|
|
46
|
+
5. Root Cause Investigation
|
|
47
|
+
6. Resolution Procedures
|
|
48
|
+
7. Verification & Rollback
|
|
49
|
+
8. Communication Templates
|
|
50
|
+
9. Escalation Matrix
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Runbook Templates
|
|
54
|
+
|
|
55
|
+
### Template 1: Service Outage Runbook
|
|
56
|
+
|
|
57
|
+
````markdown
|
|
58
|
+
# [Service Name] Outage Runbook
|
|
59
|
+
|
|
60
|
+
## Overview
|
|
61
|
+
|
|
62
|
+
**Service**: Payment Processing Service
|
|
63
|
+
**Owner**: Platform Team
|
|
64
|
+
**Slack**: #payments-incidents
|
|
65
|
+
**PagerDuty**: payments-oncall
|
|
66
|
+
|
|
67
|
+
## Impact Assessment
|
|
68
|
+
|
|
69
|
+
- [ ] Which customers are affected?
|
|
70
|
+
- [ ] What percentage of traffic is impacted?
|
|
71
|
+
- [ ] Are there financial implications?
|
|
72
|
+
- [ ] What's the blast radius?
|
|
73
|
+
|
|
74
|
+
## Detection
|
|
75
|
+
|
|
76
|
+
### Alerts
|
|
77
|
+
|
|
78
|
+
- `payment_error_rate > 5%` (PagerDuty)
|
|
79
|
+
- `payment_latency_p99 > 2s` (Slack)
|
|
80
|
+
- `payment_success_rate < 95%` (PagerDuty)
|
|
81
|
+
|
|
82
|
+
### Dashboards
|
|
83
|
+
|
|
84
|
+
- [Payment Service Dashboard](https://grafana/d/payments)
|
|
85
|
+
- [Error Tracking](https://sentry.io/payments)
|
|
86
|
+
- [Dependency Status](https://status.stripe.com)
|
|
87
|
+
|
|
88
|
+
## Initial Triage (First 5 Minutes)
|
|
89
|
+
|
|
90
|
+
### 1. Assess Scope
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Check service health
|
|
94
|
+
kubectl get pods -n payments -l app=payment-service
|
|
95
|
+
|
|
96
|
+
# Check recent deployments
|
|
97
|
+
kubectl rollout history deployment/payment-service -n payments
|
|
98
|
+
|
|
99
|
+
# Check error rates
|
|
100
|
+
curl -s "http://prometheus:9090/api/v1/query?query=sum(rate(http_requests_total{status=~'5..'}[5m]))"
|
|
101
|
+
```
|
|
102
|
+
````
|
|
103
|
+
|
|
104
|
+
### 2. Quick Health Checks
|
|
105
|
+
|
|
106
|
+
- [ ] Can you reach the service? `curl -I https://api.company.com/payments/health`
|
|
107
|
+
- [ ] Database connectivity? Check connection pool metrics
|
|
108
|
+
- [ ] External dependencies? Check Stripe, bank API status
|
|
109
|
+
- [ ] Recent changes? Check deploy history
|
|
110
|
+
|
|
111
|
+
### 3. Initial Classification
|
|
112
|
+
|
|
113
|
+
| Symptom | Likely Cause | Go To Section |
|
|
114
|
+
| -------------------- | ------------------- | ------------- |
|
|
115
|
+
| All requests failing | Service down | Section 4.1 |
|
|
116
|
+
| High latency | Database/dependency | Section 4.2 |
|
|
117
|
+
| Partial failures | Code bug | Section 4.3 |
|
|
118
|
+
| Spike in errors | Traffic surge | Section 4.4 |
|
|
119
|
+
|
|
120
|
+
## Mitigation Procedures
|
|
121
|
+
|
|
122
|
+
### 4.1 Service Completely Down
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Step 1: Check pod status
|
|
126
|
+
kubectl get pods -n payments
|
|
127
|
+
|
|
128
|
+
# Step 2: If pods are crash-looping, check logs
|
|
129
|
+
kubectl logs -n payments -l app=payment-service --tail=100
|
|
130
|
+
|
|
131
|
+
# Step 3: Check recent deployments
|
|
132
|
+
kubectl rollout history deployment/payment-service -n payments
|
|
133
|
+
|
|
134
|
+
# Step 4: ROLLBACK if recent deploy is suspect
|
|
135
|
+
kubectl rollout undo deployment/payment-service -n payments
|
|
136
|
+
|
|
137
|
+
# Step 5: Scale up if resource constrained
|
|
138
|
+
kubectl scale deployment/payment-service -n payments --replicas=10
|
|
139
|
+
|
|
140
|
+
# Step 6: Verify recovery
|
|
141
|
+
kubectl rollout status deployment/payment-service -n payments
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 4.2 High Latency
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# Step 1: Check database connections
|
|
148
|
+
kubectl exec -n payments deploy/payment-service -- \
|
|
149
|
+
curl localhost:8080/metrics | grep db_pool
|
|
150
|
+
|
|
151
|
+
# Step 2: Check slow queries (if DB issue)
|
|
152
|
+
psql -h $DB_HOST -U $DB_USER -c "
|
|
153
|
+
SELECT pid, now() - query_start AS duration, query
|
|
154
|
+
FROM pg_stat_activity
|
|
155
|
+
WHERE state = 'active' AND duration > interval '5 seconds'
|
|
156
|
+
ORDER BY duration DESC;"
|
|
157
|
+
|
|
158
|
+
# Step 3: Kill long-running queries if needed
|
|
159
|
+
psql -h $DB_HOST -U $DB_USER -c "SELECT pg_terminate_backend(pid);"
|
|
160
|
+
|
|
161
|
+
# Step 4: Check external dependency latency
|
|
162
|
+
curl -w "@curl-format.txt" -o /dev/null -s https://api.stripe.com/v1/health
|
|
163
|
+
|
|
164
|
+
# Step 5: Enable circuit breaker if dependency is slow
|
|
165
|
+
kubectl set env deployment/payment-service \
|
|
166
|
+
STRIPE_CIRCUIT_BREAKER_ENABLED=true -n payments
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### 4.3 Partial Failures (Specific Errors)
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Step 1: Identify error pattern
|
|
173
|
+
kubectl logs -n payments -l app=payment-service --tail=500 | \
|
|
174
|
+
grep -i error | sort | uniq -c | sort -rn | head -20
|
|
175
|
+
|
|
176
|
+
# Step 2: Check error tracking
|
|
177
|
+
# Go to Sentry: https://sentry.io/payments
|
|
178
|
+
|
|
179
|
+
# Step 3: If specific endpoint, enable feature flag to disable
|
|
180
|
+
curl -X POST https://api.company.com/internal/feature-flags \
|
|
181
|
+
-d '{"flag": "DISABLE_PROBLEMATIC_FEATURE", "enabled": true}'
|
|
182
|
+
|
|
183
|
+
# Step 4: If data issue, check recent data changes
|
|
184
|
+
psql -h $DB_HOST -c "
|
|
185
|
+
SELECT * FROM audit_log
|
|
186
|
+
WHERE table_name = 'payment_methods'
|
|
187
|
+
AND created_at > now() - interval '1 hour';"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 4.4 Traffic Surge
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# Step 1: Check current request rate
|
|
194
|
+
kubectl top pods -n payments
|
|
195
|
+
|
|
196
|
+
# Step 2: Scale horizontally
|
|
197
|
+
kubectl scale deployment/payment-service -n payments --replicas=20
|
|
198
|
+
|
|
199
|
+
# Step 3: Enable rate limiting
|
|
200
|
+
kubectl set env deployment/payment-service \
|
|
201
|
+
RATE_LIMIT_ENABLED=true \
|
|
202
|
+
RATE_LIMIT_RPS=1000 -n payments
|
|
203
|
+
|
|
204
|
+
# Step 4: If attack, block suspicious IPs
|
|
205
|
+
kubectl apply -f - <<EOF
|
|
206
|
+
apiVersion: networking.k8s.io/v1
|
|
207
|
+
kind: NetworkPolicy
|
|
208
|
+
metadata:
|
|
209
|
+
name: block-suspicious
|
|
210
|
+
namespace: payments
|
|
211
|
+
spec:
|
|
212
|
+
podSelector:
|
|
213
|
+
matchLabels:
|
|
214
|
+
app: payment-service
|
|
215
|
+
ingress:
|
|
216
|
+
- from:
|
|
217
|
+
- ipBlock:
|
|
218
|
+
cidr: 0.0.0.0/0
|
|
219
|
+
except:
|
|
220
|
+
- 192.168.1.0/24 # Suspicious range
|
|
221
|
+
EOF
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Verification Steps
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
# Verify service is healthy
|
|
228
|
+
curl -s https://api.company.com/payments/health | jq
|
|
229
|
+
|
|
230
|
+
# Verify error rate is back to normal
|
|
231
|
+
curl -s "http://prometheus:9090/api/v1/query?query=sum(rate(http_requests_total{status=~'5..'}[5m]))" | jq '.data.result[0].value[1]'
|
|
232
|
+
|
|
233
|
+
# Verify latency is acceptable
|
|
234
|
+
curl -s "http://prometheus:9090/api/v1/query?query=histogram_quantile(0.99,sum(rate(http_request_duration_seconds_bucket[5m]))by(le))" | jq
|
|
235
|
+
|
|
236
|
+
# Smoke test critical flows
|
|
237
|
+
./scripts/smoke-test-payments.sh
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Rollback Procedures
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Rollback Kubernetes deployment
|
|
244
|
+
kubectl rollout undo deployment/payment-service -n payments
|
|
245
|
+
|
|
246
|
+
# Rollback database migration (if applicable)
|
|
247
|
+
./scripts/db-rollback.sh $MIGRATION_VERSION
|
|
248
|
+
|
|
249
|
+
# Rollback feature flag
|
|
250
|
+
curl -X POST https://api.company.com/internal/feature-flags \
|
|
251
|
+
-d '{"flag": "NEW_PAYMENT_FLOW", "enabled": false}'
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Escalation Matrix
|
|
255
|
+
|
|
256
|
+
| Condition | Escalate To | Contact |
|
|
257
|
+
| ----------------------------- | ------------------- | ------------------- |
|
|
258
|
+
| > 15 min unresolved SEV1 | Engineering Manager | @manager (Slack) |
|
|
259
|
+
| Data breach suspected | Security Team | #security-incidents |
|
|
260
|
+
| Financial impact > $10k | Finance + Legal | @finance-oncall |
|
|
261
|
+
| Customer communication needed | Support Lead | @support-lead |
|
|
262
|
+
|
|
263
|
+
## Communication Templates
|
|
264
|
+
|
|
265
|
+
### Initial Notification (Internal)
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
🚨 INCIDENT: Payment Service Degradation
|
|
269
|
+
|
|
270
|
+
Severity: SEV2
|
|
271
|
+
Status: Investigating
|
|
272
|
+
Impact: ~20% of payment requests failing
|
|
273
|
+
Start Time: [TIME]
|
|
274
|
+
Incident Commander: [NAME]
|
|
275
|
+
|
|
276
|
+
Current Actions:
|
|
277
|
+
- Investigating root cause
|
|
278
|
+
- Scaling up service
|
|
279
|
+
- Monitoring dashboards
|
|
280
|
+
|
|
281
|
+
Updates in #payments-incidents
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Status Update
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
📊 UPDATE: Payment Service Incident
|
|
288
|
+
|
|
289
|
+
Status: Mitigating
|
|
290
|
+
Impact: Reduced to ~5% failure rate
|
|
291
|
+
Duration: 25 minutes
|
|
292
|
+
|
|
293
|
+
Actions Taken:
|
|
294
|
+
- Rolled back deployment v2.3.4 → v2.3.3
|
|
295
|
+
- Scaled service from 5 → 10 replicas
|
|
296
|
+
|
|
297
|
+
Next Steps:
|
|
298
|
+
- Continuing to monitor
|
|
299
|
+
- Root cause analysis in progress
|
|
300
|
+
|
|
301
|
+
ETA to Resolution: ~15 minutes
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Resolution Notification
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
✅ RESOLVED: Payment Service Incident
|
|
308
|
+
|
|
309
|
+
Duration: 45 minutes
|
|
310
|
+
Impact: ~5,000 affected transactions
|
|
311
|
+
Root Cause: Memory leak in v2.3.4
|
|
312
|
+
|
|
313
|
+
Resolution:
|
|
314
|
+
- Rolled back to v2.3.3
|
|
315
|
+
- Transactions auto-retried successfully
|
|
316
|
+
|
|
317
|
+
Follow-up:
|
|
318
|
+
- Postmortem scheduled for [DATE]
|
|
319
|
+
- Bug fix in progress
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
````
|
|
323
|
+
|
|
324
|
+
### Template 2: Database Incident Runbook
|
|
325
|
+
|
|
326
|
+
```markdown
|
|
327
|
+
# Database Incident Runbook
|
|
328
|
+
|
|
329
|
+
## Quick Reference
|
|
330
|
+
| Issue | Command |
|
|
331
|
+
|-------|---------|
|
|
332
|
+
| Check connections | `SELECT count(*) FROM pg_stat_activity;` |
|
|
333
|
+
| Kill query | `SELECT pg_terminate_backend(pid);` |
|
|
334
|
+
| Check replication lag | `SELECT extract(epoch from (now() - pg_last_xact_replay_timestamp()));` |
|
|
335
|
+
| Check locks | `SELECT * FROM pg_locks WHERE NOT granted;` |
|
|
336
|
+
|
|
337
|
+
## Connection Pool Exhaustion
|
|
338
|
+
```sql
|
|
339
|
+
-- Check current connections
|
|
340
|
+
SELECT datname, usename, state, count(*)
|
|
341
|
+
FROM pg_stat_activity
|
|
342
|
+
GROUP BY datname, usename, state
|
|
343
|
+
ORDER BY count(*) DESC;
|
|
344
|
+
|
|
345
|
+
-- Identify long-running connections
|
|
346
|
+
SELECT pid, usename, datname, state, query_start, query
|
|
347
|
+
FROM pg_stat_activity
|
|
348
|
+
WHERE state != 'idle'
|
|
349
|
+
ORDER BY query_start;
|
|
350
|
+
|
|
351
|
+
-- Terminate idle connections
|
|
352
|
+
SELECT pg_terminate_backend(pid)
|
|
353
|
+
FROM pg_stat_activity
|
|
354
|
+
WHERE state = 'idle'
|
|
355
|
+
AND query_start < now() - interval '10 minutes';
|
|
356
|
+
````
|
|
357
|
+
|
|
358
|
+
## Replication Lag
|
|
359
|
+
|
|
360
|
+
```sql
|
|
361
|
+
-- Check lag on replica
|
|
362
|
+
SELECT
|
|
363
|
+
CASE
|
|
364
|
+
WHEN pg_last_wal_receive_lsn() = pg_last_wal_replay_lsn() THEN 0
|
|
365
|
+
ELSE extract(epoch from now() - pg_last_xact_replay_timestamp())
|
|
366
|
+
END AS lag_seconds;
|
|
367
|
+
|
|
368
|
+
-- If lag > 60s, consider:
|
|
369
|
+
-- 1. Check network between primary/replica
|
|
370
|
+
-- 2. Check replica disk I/O
|
|
371
|
+
-- 3. Consider failover if unrecoverable
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## Disk Space Critical
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
# Check disk usage
|
|
378
|
+
df -h /var/lib/postgresql/data
|
|
379
|
+
|
|
380
|
+
# Find large tables
|
|
381
|
+
psql -c "SELECT relname, pg_size_pretty(pg_total_relation_size(relid))
|
|
382
|
+
FROM pg_catalog.pg_statio_user_tables
|
|
383
|
+
ORDER BY pg_total_relation_size(relid) DESC
|
|
384
|
+
LIMIT 10;"
|
|
385
|
+
|
|
386
|
+
# VACUUM to reclaim space
|
|
387
|
+
psql -c "VACUUM FULL large_table;"
|
|
388
|
+
|
|
389
|
+
# If emergency, delete old data or expand disk
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
## Best Practices
|
|
395
|
+
|
|
396
|
+
### Do's
|
|
397
|
+
- **Keep runbooks updated** - Review after every incident
|
|
398
|
+
- **Test runbooks regularly** - Game days, chaos engineering
|
|
399
|
+
- **Include rollback steps** - Always have an escape hatch
|
|
400
|
+
- **Document assumptions** - What must be true for steps to work
|
|
401
|
+
- **Link to dashboards** - Quick access during stress
|
|
402
|
+
|
|
403
|
+
### Don'ts
|
|
404
|
+
- **Don't assume knowledge** - Write for 3 AM brain
|
|
405
|
+
- **Don't skip verification** - Confirm each step worked
|
|
406
|
+
- **Don't forget communication** - Keep stakeholders informed
|
|
407
|
+
- **Don't work alone** - Escalate early
|
|
408
|
+
- **Don't skip postmortems** - Learn from every incident
|
|
409
|
+
|
|
410
|
+
## Troubleshooting
|
|
411
|
+
|
|
412
|
+
### Runbook steps work in staging but fail during a real incident
|
|
413
|
+
|
|
414
|
+
Steps often assume preconditions that are true in a healthy environment but not during an outage. For each command in your runbook, add a prerequisite check and a "what to do if this command fails" note:
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
# Step: Check pod status
|
|
418
|
+
kubectl get pods -n payments
|
|
419
|
+
|
|
420
|
+
# Prerequisites: kubectl configured, kubeconfig points to correct cluster
|
|
421
|
+
# If this fails: run `aws eks update-kubeconfig --name prod-cluster --region us-east-1`
|
|
422
|
+
# Expected output: pods in Running state
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### On-call engineer panics and skips steps out of order
|
|
426
|
+
|
|
427
|
+
Add a numbered checklist at the top of the runbook that mirrors the section numbers, so responders can track progress under stress without reading the full document:
|
|
428
|
+
|
|
429
|
+
```markdown
|
|
430
|
+
## Quick Checklist
|
|
431
|
+
- [ ] 1. Declare incident severity and open war room
|
|
432
|
+
- [ ] 2. Check service health (Section 4.1)
|
|
433
|
+
- [ ] 3. Check recent deployments (Section 4.1)
|
|
434
|
+
- [ ] 4. Roll back if deploy is suspect (Section 4.1)
|
|
435
|
+
- [ ] 5. Post initial notification to #payments-incidents
|
|
436
|
+
- [ ] 6. Escalate if > 15 min unresolved
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### Runbook is outdated — commands reference old cluster names or endpoints
|
|
440
|
+
|
|
441
|
+
Runbooks rot because they're updated manually. Include a "Last Verified" date and owner at the top, and add a CI check that validates all `curl` endpoints and `kubectl` context names are still valid:
|
|
442
|
+
|
|
443
|
+
```markdown
|
|
444
|
+
## Runbook Metadata
|
|
445
|
+
| Field | Value |
|
|
446
|
+
|---|---|
|
|
447
|
+
| Last verified | 2024-11-15 |
|
|
448
|
+
| Owner | @platform-team |
|
|
449
|
+
| Review cadence | After every SEV1/SEV2 |
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### Stakeholder communication is delayed while engineers are heads-down
|
|
453
|
+
|
|
454
|
+
Assign a dedicated incident communicator role (separate from the incident commander) whose only job is to post status updates. Add a standing agenda in the communication template:
|
|
455
|
+
|
|
456
|
+
```
|
|
457
|
+
Update every 15 minutes (even if no new information):
|
|
458
|
+
- Current status (Investigating / Mitigating / Monitoring)
|
|
459
|
+
- Impact (what is broken, who is affected, % of traffic)
|
|
460
|
+
- What we are doing right now
|
|
461
|
+
- Next update in: 15 minutes
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
### Database runbook commands cause additional downtime when run incorrectly
|
|
465
|
+
|
|
466
|
+
Add explicit warnings before destructive SQL commands and require a dry-run output check before executing:
|
|
467
|
+
|
|
468
|
+
```sql
|
|
469
|
+
-- WARNING: This terminates active connections. Verify count first.
|
|
470
|
+
-- DRY RUN (check count before terminating):
|
|
471
|
+
SELECT count(*) FROM pg_stat_activity WHERE state = 'idle' AND query_start < now() - interval '10 minutes';
|
|
472
|
+
|
|
473
|
+
-- EXECUTE only after verifying count is reasonable (< 50):
|
|
474
|
+
SELECT pg_terminate_backend(pid) FROM pg_stat_activity
|
|
475
|
+
WHERE state = 'idle' AND query_start < now() - interval '10 minutes';
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
## Related Skills
|
|
479
|
+
|
|
480
|
+
- `postmortem-writing` - After resolving an incident, use postmortem templates to capture root cause and preventive actions
|
|
481
|
+
- `on-call-handoff-patterns` - Structure shift handoffs so the incoming responder has full context on active incidents
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
Apache License
|
|
2
3
|
Version 2.0, January 2004
|
|
3
4
|
http://www.apache.org/licenses/
|
|
@@ -137,8 +138,8 @@
|
|
|
137
138
|
|
|
138
139
|
6. Trademarks. This License does not grant permission to use the trade
|
|
139
140
|
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
-
except as required for
|
|
141
|
-
reproducing the content of the NOTICE file.
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
143
|
|
|
143
144
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
145
|
agreed to in writing, Licensor provides the Work (and each
|
|
@@ -162,16 +163,16 @@
|
|
|
162
163
|
other commercial damages or losses), even if such Contributor
|
|
163
164
|
has been advised of the possibility of such damages.
|
|
164
165
|
|
|
165
|
-
9. Accepting Warranty or
|
|
166
|
-
Derivative Works thereof, You may choose to offer,
|
|
167
|
-
fee for, acceptance of support, warranty, indemnity,
|
|
168
|
-
liability obligations and/or rights consistent with this
|
|
169
|
-
However, in accepting such obligations, You may act only
|
|
170
|
-
own behalf and on Your sole responsibility, not on behalf
|
|
171
|
-
other Contributor, and only if You agree to indemnify,
|
|
172
|
-
and hold each Contributor harmless for any liability
|
|
173
|
-
or claims asserted against, such Contributor by reason
|
|
174
|
-
accepting any such warranty or
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
175
176
|
|
|
176
177
|
END OF TERMS AND CONDITIONS
|
|
177
178
|
|
|
@@ -186,7 +187,7 @@
|
|
|
186
187
|
same "printed page" as the copyright notice for easier
|
|
187
188
|
identification within third-party archives.
|
|
188
189
|
|
|
189
|
-
Copyright 2026
|
|
190
|
+
Copyright 2026 Anthropic, PBC.
|
|
190
191
|
|
|
191
192
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
193
|
you may not use this file except in compliance with the License.
|
|
@@ -198,4 +199,4 @@
|
|
|
198
199
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
200
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
201
|
See the License for the specific language governing permissions and
|
|
201
|
-
limitations under the License.
|
|
202
|
+
limitations under the License.
|