@synapta/skills 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/dist/index.js +11 -4
  2. package/package.json +3 -4
  3. package/skills/ATTRIBUTION.md +80 -0
  4. package/skills/accessibility-audit/SKILL.md +325 -0
  5. package/skills/accessibility-audit/reference/wcag-checklist.md +103 -0
  6. package/skills/apns-notifier/SKILL.md +86 -0
  7. package/skills/approval-policy-enforcer/SKILL.md +66 -0
  8. package/skills/apps-sdk-builder/LICENSE.txt +201 -0
  9. package/skills/apps-sdk-builder/SKILL.md +328 -0
  10. package/skills/apps-sdk-builder/agents/openai.yaml +13 -0
  11. package/skills/apps-sdk-builder/references/app-archetypes.md +132 -0
  12. package/skills/apps-sdk-builder/references/apps-sdk-docs-workflow.md +135 -0
  13. package/skills/apps-sdk-builder/references/interactive-state-sync-patterns.md +113 -0
  14. package/skills/apps-sdk-builder/references/repo-contract-and-validation.md +93 -0
  15. package/skills/apps-sdk-builder/references/search-fetch-standard.md +67 -0
  16. package/skills/apps-sdk-builder/references/upstream-example-workflow.md +79 -0
  17. package/skills/apps-sdk-builder/references/window-openai-patterns.md +79 -0
  18. package/skills/apps-sdk-builder/scripts/scaffold_node_ext_apps.mjs +606 -0
  19. package/skills/architecture-selector/SKILL.md +64 -0
  20. package/skills/backlog-planner/SKILL.md +68 -0
  21. package/skills/carplay-entitlement-checker/SKILL.md +82 -0
  22. package/skills/concept-discovery/SKILL.md +517 -0
  23. package/skills/concept-discovery/assets/sample-analysis.json +81 -0
  24. package/skills/concept-discovery/expected_outputs/sample-enum-dictionary.md +25 -0
  25. package/skills/concept-discovery/expected_outputs/sample-page-user-list.md +83 -0
  26. package/skills/concept-discovery/expected_outputs/sample-prd-readme.md +43 -0
  27. package/skills/concept-discovery/references/framework-patterns.md +228 -0
  28. package/skills/concept-discovery/references/prd-quality-checklist.md +65 -0
  29. package/skills/concept-discovery/scripts/codebase_analyzer.py +732 -0
  30. package/skills/concept-discovery/scripts/prd_scaffolder.py +435 -0
  31. package/skills/dast-zap/SKILL.md +453 -0
  32. package/skills/dast-zap/assets/.gitkeep +9 -0
  33. package/skills/dast-zap/assets/github_action.yml +207 -0
  34. package/skills/dast-zap/assets/gitlab_ci.yml +226 -0
  35. package/skills/dast-zap/assets/zap_automation.yaml +196 -0
  36. package/skills/dast-zap/assets/zap_context.xml +192 -0
  37. package/skills/dast-zap/references/EXAMPLE.md +40 -0
  38. package/skills/dast-zap/references/api_testing_guide.md +475 -0
  39. package/skills/dast-zap/references/authentication_guide.md +431 -0
  40. package/skills/dast-zap/references/false_positive_handling.md +427 -0
  41. package/skills/dast-zap/references/owasp_mapping.md +255 -0
  42. package/skills/dep-sbom-scan/SKILL.md +466 -0
  43. package/skills/deploy-cloudflare/SKILL.md +930 -0
  44. package/skills/deploy-docker/SKILL.md +55 -0
  45. package/skills/deploy-fly/SKILL.md +228 -0
  46. package/skills/deploy-k8s/SKILL.md +108 -0
  47. package/skills/deploy-k8s/assets/logo.png +0 -0
  48. package/skills/deploy-k8s/docs/README.md +29 -0
  49. package/skills/deploy-k8s/docs/SUMMARY.md +56 -0
  50. package/skills/deploy-k8s/docs/advanced/token-efficiency.md +61 -0
  51. package/skills/deploy-k8s/docs/architecture/multi-tenancy.md +96 -0
  52. package/skills/deploy-k8s/docs/architecture/storage-and-state.md +102 -0
  53. package/skills/deploy-k8s/docs/architecture/workload-patterns.md +87 -0
  54. package/skills/deploy-k8s/docs/book.json +16 -0
  55. package/skills/deploy-k8s/docs/community/changelog.md +34 -0
  56. package/skills/deploy-k8s/docs/community/contributing.md +67 -0
  57. package/skills/deploy-k8s/docs/core-concepts/failure-modes.md +153 -0
  58. package/skills/deploy-k8s/docs/core-concepts/philosophy.md +83 -0
  59. package/skills/deploy-k8s/docs/core-concepts/workflow.md +124 -0
  60. package/skills/deploy-k8s/docs/examples/bad-patterns.md +47 -0
  61. package/skills/deploy-k8s/docs/examples/do-dont-checklist.md +37 -0
  62. package/skills/deploy-k8s/docs/examples/good-patterns.md +49 -0
  63. package/skills/deploy-k8s/docs/failure-modes/api-drift.md +104 -0
  64. package/skills/deploy-k8s/docs/failure-modes/fragile-rollouts.md +99 -0
  65. package/skills/deploy-k8s/docs/failure-modes/insecure-workload-defaults.md +80 -0
  66. package/skills/deploy-k8s/docs/failure-modes/network-exposure.md +98 -0
  67. package/skills/deploy-k8s/docs/failure-modes/privilege-sprawl.md +91 -0
  68. package/skills/deploy-k8s/docs/failure-modes/resource-starvation.md +85 -0
  69. package/skills/deploy-k8s/docs/getting-started/installation.md +152 -0
  70. package/skills/deploy-k8s/docs/getting-started/quick-start.md +115 -0
  71. package/skills/deploy-k8s/docs/guides/helm-patterns.md +71 -0
  72. package/skills/deploy-k8s/docs/guides/kustomize-patterns.md +65 -0
  73. package/skills/deploy-k8s/docs/guides/observability.md +67 -0
  74. package/skills/deploy-k8s/docs/guides/security-hardening.md +59 -0
  75. package/skills/deploy-k8s/docs/guides/validation-and-policy.md +66 -0
  76. package/skills/deploy-k8s/docs/integrations/mcp-integration.md +52 -0
  77. package/skills/deploy-k8s/docs/package-lock.json +2892 -0
  78. package/skills/deploy-k8s/docs/package.json +13 -0
  79. package/skills/deploy-k8s/references/api-drift.md +298 -0
  80. package/skills/deploy-k8s/references/conditional/aks-patterns.md +70 -0
  81. package/skills/deploy-k8s/references/conditional/eks-patterns.md +79 -0
  82. package/skills/deploy-k8s/references/conditional/gitops-controllers.md +71 -0
  83. package/skills/deploy-k8s/references/conditional/gke-patterns.md +74 -0
  84. package/skills/deploy-k8s/references/conditional/observability-stacks.md +80 -0
  85. package/skills/deploy-k8s/references/conditional/openshift-patterns.md +67 -0
  86. package/skills/deploy-k8s/references/daemonset-operator-patterns.md +155 -0
  87. package/skills/deploy-k8s/references/deployment-patterns.md +146 -0
  88. package/skills/deploy-k8s/references/do-dont-patterns.md +87 -0
  89. package/skills/deploy-k8s/references/examples-bad.md +282 -0
  90. package/skills/deploy-k8s/references/examples-good.md +440 -0
  91. package/skills/deploy-k8s/references/fragile-rollouts.md +303 -0
  92. package/skills/deploy-k8s/references/helm-patterns.md +203 -0
  93. package/skills/deploy-k8s/references/insecure-workload-defaults.md +300 -0
  94. package/skills/deploy-k8s/references/job-patterns.md +120 -0
  95. package/skills/deploy-k8s/references/kustomize-patterns.md +239 -0
  96. package/skills/deploy-k8s/references/multi-tenancy.md +343 -0
  97. package/skills/deploy-k8s/references/network-exposure.md +481 -0
  98. package/skills/deploy-k8s/references/observability.md +302 -0
  99. package/skills/deploy-k8s/references/privilege-sprawl.md +273 -0
  100. package/skills/deploy-k8s/references/resource-starvation.md +374 -0
  101. package/skills/deploy-k8s/references/security-hardening.md +209 -0
  102. package/skills/deploy-k8s/references/stateful-patterns.md +130 -0
  103. package/skills/deploy-k8s/references/storage-and-state.md +330 -0
  104. package/skills/deploy-k8s/references/validation-and-policy.md +242 -0
  105. package/skills/deploy-railway/SKILL.md +235 -0
  106. package/skills/deploy-railway/references/analyze-db-mongo.md +84 -0
  107. package/skills/deploy-railway/references/analyze-db-mysql.md +254 -0
  108. package/skills/deploy-railway/references/analyze-db-postgres.md +479 -0
  109. package/skills/deploy-railway/references/analyze-db-redis.md +208 -0
  110. package/skills/deploy-railway/references/analyze-db.md +344 -0
  111. package/skills/deploy-railway/references/configure.md +309 -0
  112. package/skills/deploy-railway/references/deploy.md +195 -0
  113. package/skills/deploy-railway/references/operate.md +214 -0
  114. package/skills/deploy-railway/references/request.md +248 -0
  115. package/skills/deploy-railway/references/setup.md +312 -0
  116. package/skills/deploy-railway/scripts/analyze-mongo.py +1549 -0
  117. package/skills/deploy-railway/scripts/analyze-mysql.py +1195 -0
  118. package/skills/deploy-railway/scripts/analyze-postgres.py +3058 -0
  119. package/skills/deploy-railway/scripts/analyze-redis.py +1090 -0
  120. package/skills/deploy-railway/scripts/dal.py +671 -0
  121. package/skills/deploy-railway/scripts/enable-pg-stats.py +170 -0
  122. package/skills/deploy-railway/scripts/pg-extensions.py +370 -0
  123. package/skills/deploy-railway/scripts/railway-api.sh +52 -0
  124. package/skills/deploy-ssh/SKILL.md +91 -0
  125. package/skills/deploy-vercel/SKILL.md +304 -0
  126. package/skills/deploy-vercel/resources/deploy-codex.sh +301 -0
  127. package/skills/deploy-vercel/resources/deploy.sh +301 -0
  128. package/skills/docs-runbooks/SKILL.md +399 -0
  129. package/skills/drive-status-renderer/SKILL.md +62 -0
  130. package/skills/iac-scan/SKILL.md +680 -0
  131. package/skills/iac-scan/assets/.gitkeep +9 -0
  132. package/skills/iac-scan/assets/checkov_config.yaml +94 -0
  133. package/skills/iac-scan/assets/github_actions.yml +199 -0
  134. package/skills/iac-scan/assets/gitlab_ci.yml +218 -0
  135. package/skills/iac-scan/assets/pre_commit_config.yaml +92 -0
  136. package/skills/iac-scan/references/EXAMPLE.md +40 -0
  137. package/skills/iac-scan/references/compliance_mapping.md +237 -0
  138. package/skills/iac-scan/references/custom_policies.md +460 -0
  139. package/skills/iac-scan/references/suppression_guide.md +431 -0
  140. package/skills/incident-briefing/SKILL.md +66 -0
  141. package/skills/incident-triage/SKILL.md +481 -0
  142. package/{LICENSE → skills/mcp-builder/LICENSE.txt} +15 -14
  143. package/skills/mcp-builder/SKILL.md +244 -0
  144. package/skills/mcp-builder/reference/evaluation.md +602 -0
  145. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  146. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  147. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  148. package/skills/mcp-builder/scripts/connections.py +151 -0
  149. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  150. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  151. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  152. package/skills/mobile-pairing/SKILL.md +52 -0
  153. package/skills/ops-sre/SKILL.md +297 -0
  154. package/skills/playwright-qa/LICENSE.txt +201 -0
  155. package/skills/playwright-qa/NOTICE.txt +14 -0
  156. package/skills/playwright-qa/SKILL.md +156 -0
  157. package/skills/playwright-qa/agents/openai.yaml +6 -0
  158. package/skills/playwright-qa/assets/playwright-small.svg +3 -0
  159. package/skills/playwright-qa/assets/playwright.png +0 -0
  160. package/skills/playwright-qa/references/cli.md +116 -0
  161. package/skills/playwright-qa/references/workflows.md +95 -0
  162. package/skills/playwright-qa/scripts/playwright_cli.sh +25 -0
  163. package/skills/release-publish/SKILL.md +85 -0
  164. package/skills/repo-bootstrap/SKILL.md +92 -0
  165. package/skills/repo-bootstrap/assets/example-workflows/validate-agents.yml +89 -0
  166. package/skills/repo-bootstrap/assets/root-thin.md +141 -0
  167. package/skills/repo-bootstrap/assets/root-verbose.md +149 -0
  168. package/skills/repo-bootstrap/assets/scoped/backend-go.md +107 -0
  169. package/skills/repo-bootstrap/assets/scoped/backend-php.md +94 -0
  170. package/skills/repo-bootstrap/assets/scoped/backend-python.md +84 -0
  171. package/skills/repo-bootstrap/assets/scoped/backend-typescript.md +89 -0
  172. package/skills/repo-bootstrap/assets/scoped/claude-code-skill.md +101 -0
  173. package/skills/repo-bootstrap/assets/scoped/cli.md +83 -0
  174. package/skills/repo-bootstrap/assets/scoped/concourse.md +196 -0
  175. package/skills/repo-bootstrap/assets/scoped/ddev.md +68 -0
  176. package/skills/repo-bootstrap/assets/scoped/docker.md +160 -0
  177. package/skills/repo-bootstrap/assets/scoped/documentation.md +98 -0
  178. package/skills/repo-bootstrap/assets/scoped/examples.md +96 -0
  179. package/skills/repo-bootstrap/assets/scoped/frontend-typescript.md +88 -0
  180. package/skills/repo-bootstrap/assets/scoped/github-actions.md +174 -0
  181. package/skills/repo-bootstrap/assets/scoped/gitlab-ci.md +174 -0
  182. package/skills/repo-bootstrap/assets/scoped/oro-bundle.md +209 -0
  183. package/skills/repo-bootstrap/assets/scoped/oro-project.md +170 -0
  184. package/skills/repo-bootstrap/assets/scoped/python-modern.md +170 -0
  185. package/skills/repo-bootstrap/assets/scoped/resources.md +96 -0
  186. package/skills/repo-bootstrap/assets/scoped/skill-repo.md +139 -0
  187. package/skills/repo-bootstrap/assets/scoped/symfony.md +168 -0
  188. package/skills/repo-bootstrap/assets/scoped/testing.md +87 -0
  189. package/skills/repo-bootstrap/assets/scoped/typo3-docs.md +103 -0
  190. package/skills/repo-bootstrap/assets/scoped/typo3-extension.md +133 -0
  191. package/skills/repo-bootstrap/assets/scoped/typo3-project.md +137 -0
  192. package/skills/repo-bootstrap/assets/scoped/typo3-testing.md +80 -0
  193. package/skills/repo-bootstrap/checkpoints.yaml +279 -0
  194. package/skills/repo-bootstrap/evals/evals.json +385 -0
  195. package/skills/repo-bootstrap/references/ai-contribution-guidelines.md +63 -0
  196. package/skills/repo-bootstrap/references/ai-tool-compatibility.md +223 -0
  197. package/skills/repo-bootstrap/references/directory-coverage.md +82 -0
  198. package/skills/repo-bootstrap/references/examples/coding-agent-cli/AGENTS.md +70 -0
  199. package/skills/repo-bootstrap/references/examples/coding-agent-cli/go.mod +3 -0
  200. package/skills/repo-bootstrap/references/examples/coding-agent-cli/scripts-AGENTS.md +389 -0
  201. package/skills/repo-bootstrap/references/examples/express-api-ts/.env.example +13 -0
  202. package/skills/repo-bootstrap/references/examples/express-api-ts/AGENTS.md +91 -0
  203. package/skills/repo-bootstrap/references/examples/express-api-ts/package.json +33 -0
  204. package/skills/repo-bootstrap/references/examples/express-api-ts/pnpm-lock.yaml +3 -0
  205. package/skills/repo-bootstrap/references/examples/express-api-ts/src/AGENTS.md +91 -0
  206. package/skills/repo-bootstrap/references/examples/express-api-ts/src/config.ts +28 -0
  207. package/skills/repo-bootstrap/references/examples/express-api-ts/src/controllers/userController.ts +74 -0
  208. package/skills/repo-bootstrap/references/examples/express-api-ts/src/index.ts +26 -0
  209. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/errorHandler.ts +45 -0
  210. package/skills/repo-bootstrap/references/examples/express-api-ts/src/middleware/requestLogger.ts +18 -0
  211. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/health.ts +18 -0
  212. package/skills/repo-bootstrap/references/examples/express-api-ts/src/routes/users.ts +13 -0
  213. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/errors.ts +40 -0
  214. package/skills/repo-bootstrap/references/examples/express-api-ts/src/utils/logger.ts +14 -0
  215. package/skills/repo-bootstrap/references/examples/express-api-ts/tsconfig.json +24 -0
  216. package/skills/repo-bootstrap/references/examples/fastapi-app/.env.example +19 -0
  217. package/skills/repo-bootstrap/references/examples/fastapi-app/AGENTS.md +92 -0
  218. package/skills/repo-bootstrap/references/examples/fastapi-app/pyproject.toml +88 -0
  219. package/skills/repo-bootstrap/references/examples/fastapi-app/src/AGENTS.md +85 -0
  220. package/skills/repo-bootstrap/references/examples/fastapi-app/src/__init__.py +3 -0
  221. package/skills/repo-bootstrap/references/examples/fastapi-app/src/config.py +49 -0
  222. package/skills/repo-bootstrap/references/examples/fastapi-app/src/main.py +66 -0
  223. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/__init__.py +13 -0
  224. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/item.py +43 -0
  225. package/skills/repo-bootstrap/references/examples/fastapi-app/src/models/user.py +40 -0
  226. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/__init__.py +5 -0
  227. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/health.py +20 -0
  228. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/items.py +61 -0
  229. package/skills/repo-bootstrap/references/examples/fastapi-app/src/routes/users.py +55 -0
  230. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/__init__.py +6 -0
  231. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/item_service.py +77 -0
  232. package/skills/repo-bootstrap/references/examples/fastapi-app/src/services/user_service.py +69 -0
  233. package/skills/repo-bootstrap/references/examples/fastapi-app/uv.lock +4 -0
  234. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/.scopes +3 -0
  235. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/AGENTS.md +86 -0
  236. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/package.json +20 -0
  237. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/admin/src/App.tsx +5 -0
  238. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/cmd/api/main.go +7 -0
  239. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/go.mod +2 -0
  240. package/skills/repo-bootstrap/references/examples/go-api-with-react-admin/main.go +7 -0
  241. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/.scopes +3 -0
  242. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/AGENTS.md +89 -0
  243. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/go.mod +2 -0
  244. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/AGENTS.md +90 -0
  245. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/package.json +17 -0
  246. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/App.tsx +1 -0
  247. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Button.tsx +1 -0
  248. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Footer.tsx +1 -0
  249. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Header.tsx +1 -0
  250. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/internal/web/src/Sidebar.tsx +1 -0
  251. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/main.go +7 -0
  252. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package-lock.json +0 -0
  253. package/skills/repo-bootstrap/references/examples/go-with-internal-web-tsx/package.json +12 -0
  254. package/skills/repo-bootstrap/references/examples/ldap-selfservice/AGENTS.md +70 -0
  255. package/skills/repo-bootstrap/references/examples/ldap-selfservice/go.mod +3 -0
  256. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-AGENTS.md +371 -0
  257. package/skills/repo-bootstrap/references/examples/ldap-selfservice/internal-web-AGENTS.md +448 -0
  258. package/skills/repo-bootstrap/references/examples/php-with-frontend/.scopes +3 -0
  259. package/skills/repo-bootstrap/references/examples/php-with-frontend/AGENTS.md +91 -0
  260. package/skills/repo-bootstrap/references/examples/php-with-frontend/composer.json +8 -0
  261. package/skills/repo-bootstrap/references/examples/php-with-frontend/package.json +15 -0
  262. package/skills/repo-bootstrap/references/examples/php-with-frontend/pnpm-lock.yaml +0 -0
  263. package/skills/repo-bootstrap/references/examples/php-with-frontend/src/Controller.php +3 -0
  264. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/AGENTS.md +92 -0
  265. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/package.json +26 -0
  266. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/App.tsx +3 -0
  267. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Button.tsx +10 -0
  268. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Footer.tsx +9 -0
  269. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/Header.tsx +9 -0
  270. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/src/main.tsx +3 -0
  271. package/skills/repo-bootstrap/references/examples/php-with-frontend/web/tsconfig.json +13 -0
  272. package/skills/repo-bootstrap/references/examples/pnpm-workspace/AGENTS.md +75 -0
  273. package/skills/repo-bootstrap/references/examples/pnpm-workspace/package.json +7 -0
  274. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/package.json +11 -0
  275. package/skills/repo-bootstrap/references/examples/pnpm-workspace/packages/web/src/index.ts +11 -0
  276. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-lock.yaml +42 -0
  277. package/skills/repo-bootstrap/references/examples/pnpm-workspace/pnpm-workspace.yaml +2 -0
  278. package/skills/repo-bootstrap/references/examples/simple-ldap-go/AGENTS.md +70 -0
  279. package/skills/repo-bootstrap/references/examples/simple-ldap-go/examples-AGENTS.md +45 -0
  280. package/skills/repo-bootstrap/references/examples/simple-ldap-go/go.mod +3 -0
  281. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/AGENTS.md +70 -0
  282. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md +392 -0
  283. package/skills/repo-bootstrap/references/examples/t3x-rte-ckeditor-image/composer.json +8 -0
  284. package/skills/repo-bootstrap/references/feedback-memory-schema.md +135 -0
  285. package/skills/repo-bootstrap/references/git-hooks-setup.md +79 -0
  286. package/skills/repo-bootstrap/references/output-structure.md +124 -0
  287. package/skills/repo-bootstrap/references/scripts-guide.md +175 -0
  288. package/skills/repo-bootstrap/references/verification-guide.md +137 -0
  289. package/skills/repo-bootstrap/scripts/analyze-git-history.sh +315 -0
  290. package/skills/repo-bootstrap/scripts/check-freshness.sh +230 -0
  291. package/skills/repo-bootstrap/scripts/detect-golden-samples.sh +161 -0
  292. package/skills/repo-bootstrap/scripts/detect-heuristics.sh +93 -0
  293. package/skills/repo-bootstrap/scripts/detect-project.sh +486 -0
  294. package/skills/repo-bootstrap/scripts/detect-scopes.sh +330 -0
  295. package/skills/repo-bootstrap/scripts/detect-utilities.sh +133 -0
  296. package/skills/repo-bootstrap/scripts/extract-adrs.sh +194 -0
  297. package/skills/repo-bootstrap/scripts/extract-agent-configs.sh +331 -0
  298. package/skills/repo-bootstrap/scripts/extract-architecture-rules.sh +522 -0
  299. package/skills/repo-bootstrap/scripts/extract-ci-commands.sh +385 -0
  300. package/skills/repo-bootstrap/scripts/extract-ci-rules.sh +384 -0
  301. package/skills/repo-bootstrap/scripts/extract-commands.sh +358 -0
  302. package/skills/repo-bootstrap/scripts/extract-documentation.sh +308 -0
  303. package/skills/repo-bootstrap/scripts/extract-github-rulesets.sh +96 -0
  304. package/skills/repo-bootstrap/scripts/extract-github-settings.sh +88 -0
  305. package/skills/repo-bootstrap/scripts/extract-ide-settings.sh +228 -0
  306. package/skills/repo-bootstrap/scripts/extract-platform-files.sh +290 -0
  307. package/skills/repo-bootstrap/scripts/extract-quality-configs.sh +442 -0
  308. package/skills/repo-bootstrap/scripts/generate-agents.sh +2424 -0
  309. package/skills/repo-bootstrap/scripts/generate-file-map.sh +153 -0
  310. package/skills/repo-bootstrap/scripts/lib/config-root.sh +211 -0
  311. package/skills/repo-bootstrap/scripts/lib/summary.sh +244 -0
  312. package/skills/repo-bootstrap/scripts/lib/template.sh +397 -0
  313. package/skills/repo-bootstrap/scripts/validate-structure.sh +324 -0
  314. package/skills/repo-bootstrap/scripts/verify-commands.sh +615 -0
  315. package/skills/repo-bootstrap/scripts/verify-content.sh +302 -0
  316. package/skills/schema-api-contracts/SKILL.md +56 -0
  317. package/skills/secret-hygiene/SKILL.md +511 -0
  318. package/skills/secret-hygiene/assets/.gitkeep +9 -0
  319. package/skills/secret-hygiene/assets/config-balanced.toml +81 -0
  320. package/skills/secret-hygiene/assets/config-custom.toml +178 -0
  321. package/skills/secret-hygiene/assets/config-strict.toml +48 -0
  322. package/skills/secret-hygiene/assets/github-action.yml +181 -0
  323. package/skills/secret-hygiene/assets/gitlab-ci.yml +257 -0
  324. package/skills/secret-hygiene/assets/precommit-config.yaml +70 -0
  325. package/skills/secret-hygiene/references/EXAMPLE.md +40 -0
  326. package/skills/secret-hygiene/references/compliance_mapping.md +538 -0
  327. package/skills/secret-hygiene/references/detection_rules.md +276 -0
  328. package/skills/secret-hygiene/references/false_positives.md +598 -0
  329. package/skills/secret-hygiene/references/remediation_guide.md +530 -0
  330. package/skills/stack-selector/SKILL.md +56 -0
  331. package/skills/telegram-control/SKILL.md +110 -0
  332. package/skills/telegram-control/references/architecture.md +184 -0
  333. package/skills/telegram-control/references/convex.md +173 -0
  334. package/skills/telegram-control/references/error_handling.md +212 -0
  335. package/skills/telegram-control/references/initial_setup.md +165 -0
  336. package/skills/telegram-control/references/telegram_api.md +156 -0
  337. package/skills/telegram-control/scripts/cancel_message.ts +53 -0
  338. package/skills/telegram-control/scripts/list_scheduled.ts +103 -0
  339. package/skills/telegram-control/scripts/logger.ts +121 -0
  340. package/skills/telegram-control/scripts/proxy-util.ts +11 -0
  341. package/skills/telegram-control/scripts/schedule_message.ts +216 -0
  342. package/skills/telegram-control/scripts/send_message.ts +115 -0
  343. package/skills/telegram-control/scripts/setup.ts +185 -0
  344. package/skills/telegram-control/scripts/types.ts +75 -0
  345. package/skills/telegram-control/scripts/view_history.ts +74 -0
  346. package/skills/test-strategy/SKILL.md +352 -0
  347. package/skills/threat-model/SKILL.md +303 -0
  348. package/skills/threat-model/examples/example-output.md +196 -0
  349. package/skills/threat-model/template.md +96 -0
  350. package/skills/ts-lint/SKILL.md +80 -0
  351. package/skills/ui-flow/SKILL.md +668 -0
  352. package/skills/voice-command-router/SKILL.md +51 -0
  353. package/skills/widget-live-activity-sync/SKILL.md +66 -0
@@ -0,0 +1,301 @@
1
+ #!/bin/bash
2
+
3
+ # Vercel Deployment Script (via claimable deploy endpoint)
4
+ # Usage: ./deploy.sh [project-path]
5
+ # Returns: JSON with previewUrl, claimUrl, deploymentId, projectId
6
+
7
+ set -euo pipefail
8
+
9
+ DEPLOY_ENDPOINT="https://claude-skills-deploy.vercel.com/api/deploy"
10
+
11
+ # Detect framework from package.json
12
+ detect_framework() {
13
+ local pkg_json="$1"
14
+
15
+ if [ ! -f "$pkg_json" ]; then
16
+ echo "null"
17
+ return
18
+ fi
19
+
20
+ local content=$(cat "$pkg_json")
21
+
22
+ # Helper to check if a package exists in dependencies or devDependencies.
23
+ # Use exact matching by default, with a separate prefix matcher for scoped
24
+ # package families like "@remix-run/".
25
+ has_dep_exact() {
26
+ echo "$content" | grep -q "\"$1\""
27
+ }
28
+
29
+ has_dep_prefix() {
30
+ echo "$content" | grep -q "\"$1"
31
+ }
32
+
33
+ # Order matters - check more specific frameworks first
34
+
35
+ # Blitz
36
+ if has_dep_exact "blitz"; then echo "blitzjs"; return; fi
37
+
38
+ # Next.js
39
+ if has_dep_exact "next"; then echo "nextjs"; return; fi
40
+
41
+ # Gatsby
42
+ if has_dep_exact "gatsby"; then echo "gatsby"; return; fi
43
+
44
+ # Remix
45
+ if has_dep_prefix "@remix-run/"; then echo "remix"; return; fi
46
+
47
+ # React Router (v7 framework mode)
48
+ if has_dep_prefix "@react-router/"; then echo "react-router"; return; fi
49
+
50
+ # TanStack Start
51
+ if has_dep_exact "@tanstack/start"; then echo "tanstack-start"; return; fi
52
+
53
+ # Astro
54
+ if has_dep_exact "astro"; then echo "astro"; return; fi
55
+
56
+ # Hydrogen (Shopify)
57
+ if has_dep_exact "@shopify/hydrogen"; then echo "hydrogen"; return; fi
58
+
59
+ # SvelteKit
60
+ if has_dep_exact "@sveltejs/kit"; then echo "sveltekit-1"; return; fi
61
+
62
+ # Svelte (standalone)
63
+ if has_dep_exact "svelte"; then echo "svelte"; return; fi
64
+
65
+ # Nuxt
66
+ if has_dep_exact "nuxt"; then echo "nuxtjs"; return; fi
67
+
68
+ # Vue with Vitepress
69
+ if has_dep_exact "vitepress"; then echo "vitepress"; return; fi
70
+
71
+ # Vue with Vuepress
72
+ if has_dep_exact "vuepress"; then echo "vuepress"; return; fi
73
+
74
+ # Gridsome
75
+ if has_dep_exact "gridsome"; then echo "gridsome"; return; fi
76
+
77
+ # SolidStart
78
+ if has_dep_exact "@solidjs/start"; then echo "solidstart-1"; return; fi
79
+
80
+ # Docusaurus
81
+ if has_dep_exact "@docusaurus/core"; then echo "docusaurus-2"; return; fi
82
+
83
+ # RedwoodJS
84
+ if has_dep_prefix "@redwoodjs/"; then echo "redwoodjs"; return; fi
85
+
86
+ # Hexo
87
+ if has_dep_exact "hexo"; then echo "hexo"; return; fi
88
+
89
+ # Eleventy
90
+ if has_dep_exact "@11ty/eleventy"; then echo "eleventy"; return; fi
91
+
92
+ # Angular / Ionic Angular
93
+ if has_dep_exact "@ionic/angular"; then echo "ionic-angular"; return; fi
94
+ if has_dep_exact "@angular/core"; then echo "angular"; return; fi
95
+
96
+ # Ionic React
97
+ if has_dep_exact "@ionic/react"; then echo "ionic-react"; return; fi
98
+
99
+ # Create React App
100
+ if has_dep_exact "react-scripts"; then echo "create-react-app"; return; fi
101
+
102
+ # Ember
103
+ if has_dep_exact "ember-cli" || has_dep_exact "ember-source"; then echo "ember"; return; fi
104
+
105
+ # Dojo
106
+ if has_dep_exact "@dojo/framework"; then echo "dojo"; return; fi
107
+
108
+ # Polymer
109
+ if has_dep_prefix "@polymer/"; then echo "polymer"; return; fi
110
+
111
+ # Preact
112
+ if has_dep_exact "preact"; then echo "preact"; return; fi
113
+
114
+ # Stencil
115
+ if has_dep_exact "@stencil/core"; then echo "stencil"; return; fi
116
+
117
+ # UmiJS
118
+ if has_dep_exact "umi"; then echo "umijs"; return; fi
119
+
120
+ # Sapper (legacy Svelte)
121
+ if has_dep_exact "sapper"; then echo "sapper"; return; fi
122
+
123
+ # Saber
124
+ if has_dep_exact "saber"; then echo "saber"; return; fi
125
+
126
+ # Sanity
127
+ if has_dep_exact "sanity"; then echo "sanity-v3"; return; fi
128
+ if has_dep_prefix "@sanity/"; then echo "sanity"; return; fi
129
+
130
+ # Storybook
131
+ if has_dep_prefix "@storybook/"; then echo "storybook"; return; fi
132
+
133
+ # NestJS
134
+ if has_dep_exact "@nestjs/core"; then echo "nestjs"; return; fi
135
+
136
+ # Elysia
137
+ if has_dep_exact "elysia"; then echo "elysia"; return; fi
138
+
139
+ # Hono
140
+ if has_dep_exact "hono"; then echo "hono"; return; fi
141
+
142
+ # Fastify
143
+ if has_dep_exact "fastify"; then echo "fastify"; return; fi
144
+
145
+ # h3
146
+ if has_dep_exact "h3"; then echo "h3"; return; fi
147
+
148
+ # Nitro
149
+ if has_dep_exact "nitropack"; then echo "nitro"; return; fi
150
+
151
+ # Express
152
+ if has_dep_exact "express"; then echo "express"; return; fi
153
+
154
+ # Vite (generic - check last among JS frameworks)
155
+ if has_dep_exact "vite"; then echo "vite"; return; fi
156
+
157
+ # Parcel
158
+ if has_dep_exact "parcel"; then echo "parcel"; return; fi
159
+
160
+ # No framework detected
161
+ echo "null"
162
+ }
163
+
164
+ # Parse arguments
165
+ INPUT_PATH="${1:-.}"
166
+
167
+ # Create temp directory for packaging
168
+ TEMP_DIR=$(mktemp -d)
169
+ TARBALL="$TEMP_DIR/project.tgz"
170
+ STAGING_DIR="$TEMP_DIR/staging"
171
+ CLEANUP_TEMP=true
172
+
173
+ cleanup() {
174
+ if [ "$CLEANUP_TEMP" = true ]; then
175
+ rm -rf "$TEMP_DIR"
176
+ fi
177
+ }
178
+ trap cleanup EXIT
179
+
180
+ echo "Preparing deployment..." >&2
181
+
182
+ # Check if input is a .tgz file or a directory
183
+ FRAMEWORK="null"
184
+
185
+ if [ -f "$INPUT_PATH" ] && [[ "$INPUT_PATH" == *.tgz ]]; then
186
+ # Input is already a tarball, use it directly
187
+ echo "Using provided tarball..." >&2
188
+ TARBALL="$INPUT_PATH"
189
+ CLEANUP_TEMP=false
190
+ # Can't detect framework from tarball, leave as null
191
+ elif [ -d "$INPUT_PATH" ]; then
192
+ # Input is a directory, need to tar it
193
+ PROJECT_PATH=$(cd "$INPUT_PATH" && pwd)
194
+
195
+ # Detect framework from package.json
196
+ FRAMEWORK=$(detect_framework "$PROJECT_PATH/package.json")
197
+
198
+ # Stage files into a temporary directory to avoid mutating the source tree.
199
+ mkdir -p "$STAGING_DIR"
200
+ echo "Staging project files..." >&2
201
+ tar -C "$PROJECT_PATH" \
202
+ --exclude='node_modules' \
203
+ --exclude='.git' \
204
+ --exclude='.env' \
205
+ --exclude='.env.*' \
206
+ -cf - . | tar -C "$STAGING_DIR" -xf -
207
+
208
+ # Check if this is a static HTML project (no package.json)
209
+ if [ ! -f "$PROJECT_PATH/package.json" ]; then
210
+ # Find HTML files in root
211
+ HTML_FILES=$(find "$STAGING_DIR" -maxdepth 1 -name "*.html" -type f)
212
+ HTML_COUNT=$(printf '%s\n' "$HTML_FILES" | sed '/^$/d' | wc -l | tr -d '[:space:]')
213
+
214
+ # If there's exactly one HTML file and it's not index.html, rename it
215
+ if [ "$HTML_COUNT" -eq 1 ]; then
216
+ HTML_FILE=$(echo "$HTML_FILES" | head -1)
217
+ BASENAME=$(basename "$HTML_FILE")
218
+ if [ "$BASENAME" != "index.html" ]; then
219
+ echo "Renaming $BASENAME to index.html..." >&2
220
+ mv "$HTML_FILE" "$STAGING_DIR/index.html"
221
+ fi
222
+ fi
223
+ fi
224
+
225
+ # Create tarball from the staging directory
226
+ echo "Creating deployment package..." >&2
227
+ tar -czf "$TARBALL" -C "$STAGING_DIR" .
228
+ else
229
+ echo "Error: Input must be a directory or a .tgz file" >&2
230
+ exit 1
231
+ fi
232
+
233
+ if [ "$FRAMEWORK" != "null" ]; then
234
+ echo "Detected framework: $FRAMEWORK" >&2
235
+ fi
236
+
237
+ # Deploy
238
+ echo "Deploying..." >&2
239
+ RESPONSE=$(curl -s -X POST "$DEPLOY_ENDPOINT" -F "file=@$TARBALL" -F "framework=$FRAMEWORK")
240
+
241
+ # Check for error in response
242
+ if echo "$RESPONSE" | grep -q '"error"'; then
243
+ ERROR_MSG=$(echo "$RESPONSE" | grep -o '"error":"[^"]*"' | cut -d'"' -f4)
244
+ echo "Error: $ERROR_MSG" >&2
245
+ exit 1
246
+ fi
247
+
248
+ # Extract URLs from response
249
+ PREVIEW_URL=$(echo "$RESPONSE" | grep -o '"previewUrl":"[^"]*"' | cut -d'"' -f4)
250
+ CLAIM_URL=$(echo "$RESPONSE" | grep -o '"claimUrl":"[^"]*"' | cut -d'"' -f4)
251
+
252
+ if [ -z "$PREVIEW_URL" ]; then
253
+ echo "Error: Could not extract preview URL from response" >&2
254
+ echo "$RESPONSE" >&2
255
+ exit 1
256
+ fi
257
+
258
+ echo "Deployment started. Waiting for build to complete..." >&2
259
+ echo "Preview URL: $PREVIEW_URL" >&2
260
+
261
+ # Poll the preview URL until it returns a non-5xx response (5xx = still building)
262
+ MAX_ATTEMPTS=60 # 5 minutes max (60 * 5 seconds)
263
+ ATTEMPT=0
264
+
265
+ while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
266
+ HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$PREVIEW_URL")
267
+
268
+ if [ "$HTTP_STATUS" -eq 200 ]; then
269
+ echo "" >&2
270
+ echo "Deployment ready!" >&2
271
+ break
272
+ elif [ "$HTTP_STATUS" -ge 500 ]; then
273
+ # 5xx means still building/deploying
274
+ echo "Building... (attempt $((ATTEMPT + 1))/$MAX_ATTEMPTS)" >&2
275
+ sleep 5
276
+ ATTEMPT=$((ATTEMPT + 1))
277
+ elif [ "$HTTP_STATUS" -ge 400 ] && [ "$HTTP_STATUS" -lt 500 ]; then
278
+ # 4xx might be an error or the app itself returns 4xx - it's responding
279
+ echo "" >&2
280
+ echo "Deployment ready (returned $HTTP_STATUS)!" >&2
281
+ break
282
+ else
283
+ # Any other status, assume it's ready
284
+ echo "" >&2
285
+ echo "Deployment ready!" >&2
286
+ break
287
+ fi
288
+ done
289
+
290
+ if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
291
+ echo "" >&2
292
+ echo "Warning: Timed out waiting for deployment, but it may still be building." >&2
293
+ fi
294
+
295
+ echo "" >&2
296
+ echo "Preview URL: $PREVIEW_URL" >&2
297
+ echo "Claim URL: $CLAIM_URL" >&2
298
+ echo "" >&2
299
+
300
+ # Output JSON for programmatic use
301
+ echo "$RESPONSE"
@@ -0,0 +1,399 @@
1
+ ---
2
+ name: docs-runbooks
3
+ synapta_original_name: postmortem-writing
4
+ triggers: [synapta runbook, postmortem, blameless review, RCA writeup, incident doc]
5
+ network: off
6
+ source:
7
+ origin: https://github.com/wshobson/agents
8
+ path: plugins/incident-response/skills/postmortem-writing
9
+ commit: 112197c6bfd0
10
+ license: MIT (Seth Hobson)
11
+ adapted: light-touch
12
+ 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.
13
+ ---
14
+
15
+ # Postmortem Writing
16
+
17
+ Comprehensive guide to writing effective, blameless postmortems that drive organizational learning and prevent incident recurrence.
18
+
19
+ ## When to Use This Skill
20
+
21
+ - Conducting post-incident reviews
22
+ - Writing postmortem documents
23
+ - Facilitating blameless postmortem meetings
24
+ - Identifying root causes and contributing factors
25
+ - Creating actionable follow-up items
26
+ - Building organizational learning culture
27
+
28
+ ## Core Concepts
29
+
30
+ ### 1. Blameless Culture
31
+
32
+ | Blame-Focused | Blameless |
33
+ | ------------------------ | --------------------------------- |
34
+ | "Who caused this?" | "What conditions allowed this?" |
35
+ | "Someone made a mistake" | "The system allowed this mistake" |
36
+ | Punish individuals | Improve systems |
37
+ | Hide information | Share learnings |
38
+ | Fear of speaking up | Psychological safety |
39
+
40
+ ### 2. Postmortem Triggers
41
+
42
+ - SEV1 or SEV2 incidents
43
+ - Customer-facing outages > 15 minutes
44
+ - Data loss or security incidents
45
+ - Near-misses that could have been severe
46
+ - Novel failure modes
47
+ - Incidents requiring unusual intervention
48
+
49
+ ## Quick Start
50
+
51
+ ### Postmortem Timeline
52
+
53
+ ```
54
+ Day 0: Incident occurs
55
+ Day 1-2: Draft postmortem document
56
+ Day 3-5: Postmortem meeting
57
+ Day 5-7: Finalize document, create tickets
58
+ Week 2+: Action item completion
59
+ Quarterly: Review patterns across incidents
60
+ ```
61
+
62
+ ## Templates
63
+
64
+ ### Template 1: Standard Postmortem
65
+
66
+ ```markdown
67
+ # Postmortem: [Incident Title]
68
+
69
+ **Date**: 2024-01-15
70
+ **Authors**: @alice, @bob
71
+ **Status**: Draft | In Review | Final
72
+ **Incident Severity**: SEV2
73
+ **Incident Duration**: 47 minutes
74
+
75
+ ## Executive Summary
76
+
77
+ 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.
78
+
79
+ **Impact**:
80
+
81
+ - 12,000 customers unable to complete purchases
82
+ - Estimated revenue loss: $45,000
83
+ - 847 support tickets created
84
+ - No data loss or security implications
85
+
86
+ ## Timeline (All times UTC)
87
+
88
+ | Time | Event |
89
+ | ----- | ----------------------------------------------- |
90
+ | 14:23 | Deployment v2.3.4 completed to production |
91
+ | 14:31 | First alert: `payment_error_rate > 5%` |
92
+ | 14:33 | On-call engineer @alice acknowledges alert |
93
+ | 14:35 | Initial investigation begins, error rate at 23% |
94
+ | 14:41 | Incident declared SEV2, @bob joins |
95
+ | 14:45 | Database connection exhaustion identified |
96
+ | 14:52 | Decision to rollback deployment |
97
+ | 14:58 | Rollback to v2.3.3 initiated |
98
+ | 15:10 | Rollback complete, error rate dropping |
99
+ | 15:18 | Service fully recovered, incident resolved |
100
+
101
+ ## Root Cause Analysis
102
+
103
+ ### What Happened
104
+
105
+ 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.
106
+
107
+ ### Why It Happened
108
+
109
+ 1. **Proximate Cause**: Code change in `PaymentRepository.java` replaced pooled `DataSource` with direct `DriverManager.getConnection()` calls.
110
+
111
+ 2. **Contributing Factors**:
112
+ - Code review did not catch the connection handling change
113
+ - No integration tests specifically for connection pool behavior
114
+ - Staging environment has lower traffic, masking the issue
115
+ - Database connection metrics alert threshold was too high (90%)
116
+
117
+ 3. **5 Whys Analysis**:
118
+ - Why did the service fail? → Database connections exhausted
119
+ - Why were connections exhausted? → Each request opened new connection
120
+ - Why did each request open new connection? → Code bypassed connection pool
121
+ - Why did code bypass connection pool? → Developer unfamiliar with codebase patterns
122
+ - Why was developer unfamiliar? → No documentation on connection management patterns
123
+
124
+ ### System Diagram
125
+ ```
126
+
127
+ [Client] → [Load Balancer] → [Payment Service] → [Database]
128
+
129
+ Connection Pool (broken)
130
+
131
+ Direct connections (cause)
132
+
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
+
235
+ Payment service experienced 47-minute outage due to database connection exhaustion.
236
+
237
+ ## Analysis
238
+
239
+ ### Why #1: Why did the service fail?
240
+
241
+ **Answer**: Database connections were exhausted, causing all new requests to fail.
242
+
243
+ **Evidence**: Metrics showed connection count at 100/100 (max), with 500+ pending requests.
244
+
245
+ ---
246
+
247
+ ### Why #2: Why were database connections exhausted?
248
+
249
+ **Answer**: Each incoming request opened a new database connection instead of using the connection pool.
250
+
251
+ **Evidence**: Code diff shows direct `DriverManager.getConnection()` instead of pooled `DataSource`.
252
+
253
+ ---
254
+
255
+ ### Why #3: Why did the code bypass the connection pool?
256
+
257
+ **Answer**: A developer refactored the repository class and inadvertently changed the connection acquisition method.
258
+
259
+ **Evidence**: PR #1234 shows the change, made while fixing a different bug.
260
+
261
+ ---
262
+
263
+ ### Why #4: Why wasn't this caught in code review?
264
+
265
+ **Answer**: The reviewer focused on the functional change (the bug fix) and didn't notice the infrastructure change.
266
+
267
+ **Evidence**: Review comments only discuss business logic.
268
+
269
+ ---
270
+
271
+ ### Why #5: Why isn't there a safety net for this type of change?
272
+
273
+ **Answer**: We lack automated tests that verify connection pool behavior and lack documentation about our connection patterns.
274
+
275
+ **Evidence**: Test suite has no tests for connection handling; wiki has no article on database connections.
276
+
277
+ ## Root Causes Identified
278
+
279
+ 1. **Primary**: Missing automated tests for infrastructure behavior
280
+ 2. **Secondary**: Insufficient documentation of architectural patterns
281
+ 3. **Tertiary**: Code review checklist doesn't include infrastructure considerations
282
+
283
+ ## Systemic Improvements
284
+
285
+ | Root Cause | Improvement | Type |
286
+ | ------------- | --------------------------------- | ---------- |
287
+ | Missing tests | Add infrastructure behavior tests | Prevention |
288
+ | Missing docs | Document connection patterns | Prevention |
289
+ | Review gaps | Update review checklist | Detection |
290
+ | No canary | Implement canary deployments | Mitigation |
291
+ ```
292
+
293
+ ### Template 3: Quick Postmortem (Minor Incidents)
294
+
295
+ ```markdown
296
+ # Quick Postmortem: [Brief Title]
297
+
298
+ **Date**: 2024-01-15 | **Duration**: 12 min | **Severity**: SEV3
299
+
300
+ ## What Happened
301
+
302
+ API latency spiked to 5s due to cache miss storm after cache flush.
303
+
304
+ ## Timeline
305
+
306
+ - 10:00 - Cache flush initiated for config update
307
+ - 10:02 - Latency alerts fire
308
+ - 10:05 - Identified as cache miss storm
309
+ - 10:08 - Enabled cache warming
310
+ - 10:12 - Latency normalized
311
+
312
+ ## Root Cause
313
+
314
+ Full cache flush for minor config update caused thundering herd.
315
+
316
+ ## Fix
317
+
318
+ - Immediate: Enabled cache warming
319
+ - Long-term: Implement partial cache invalidation (ENG-999)
320
+
321
+ ## Lessons
322
+
323
+ Don't full-flush cache in production; use targeted invalidation.
324
+ ```
325
+
326
+ ## Facilitation Guide
327
+
328
+ ### Running a Postmortem Meeting
329
+
330
+ ```markdown
331
+ ## Meeting Structure (60 minutes)
332
+
333
+ ### 1. Opening (5 min)
334
+
335
+ - Remind everyone of blameless culture
336
+ - "We're here to learn, not to blame"
337
+ - Review meeting norms
338
+
339
+ ### 2. Timeline Review (15 min)
340
+
341
+ - Walk through events chronologically
342
+ - Ask clarifying questions
343
+ - Identify gaps in timeline
344
+
345
+ ### 3. Analysis Discussion (20 min)
346
+
347
+ - What failed?
348
+ - Why did it fail?
349
+ - What conditions allowed this?
350
+ - What would have prevented it?
351
+
352
+ ### 4. Action Items (15 min)
353
+
354
+ - Brainstorm improvements
355
+ - Prioritize by impact and effort
356
+ - Assign owners and due dates
357
+
358
+ ### 5. Closing (5 min)
359
+
360
+ - Summarize key learnings
361
+ - Confirm action item owners
362
+ - Schedule follow-up if needed
363
+
364
+ ## Facilitation Tips
365
+
366
+ - Keep discussion on track
367
+ - Redirect blame to systems
368
+ - Encourage quiet participants
369
+ - Document dissenting views
370
+ - Time-box tangents
371
+ ```
372
+
373
+ ## Anti-Patterns to Avoid
374
+
375
+ | Anti-Pattern | Problem | Better Approach |
376
+ | ----------------------- | -------------------------- | ------------------------------- |
377
+ | **Blame game** | Shuts down learning | Focus on systems |
378
+ | **Shallow analysis** | Doesn't prevent recurrence | Ask "why" 5 times |
379
+ | **No action items** | Waste of time | Always have concrete next steps |
380
+ | **Unrealistic actions** | Never completed | Scope to achievable tasks |
381
+ | **No follow-up** | Actions forgotten | Track in ticketing system |
382
+
383
+ ## Best Practices
384
+
385
+ ### Do's
386
+
387
+ - **Start immediately** - Memory fades fast
388
+ - **Be specific** - Exact times, exact errors
389
+ - **Include graphs** - Visual evidence
390
+ - **Assign owners** - No orphan action items
391
+ - **Share widely** - Organizational learning
392
+
393
+ ### Don'ts
394
+
395
+ - **Don't name and shame** - Ever
396
+ - **Don't skip small incidents** - They reveal patterns
397
+ - **Don't make it a blame doc** - That kills learning
398
+ - **Don't create busywork** - Actions should be meaningful
399
+ - **Don't skip follow-up** - Verify actions completed