@jetrabbits/agentic 0.0.1

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 (440) hide show
  1. package/AGENTS.md +143 -0
  2. package/README.md +154 -0
  3. package/agentic +1615 -0
  4. package/areas/devops/ci-cd/AGENTS.md +48 -0
  5. package/areas/devops/ci-cd/PROMPTS.md +7 -0
  6. package/areas/devops/ci-cd/prompts/onboard-repo.md +97 -0
  7. package/areas/devops/ci-cd/prompts/pipeline-debug.md +103 -0
  8. package/areas/devops/ci-cd/prompts/release-pipeline.md +115 -0
  9. package/areas/devops/ci-cd/rules/pipeline-standards.md +33 -0
  10. package/areas/devops/ci-cd/rules/quality-gates.md +24 -0
  11. package/areas/devops/ci-cd/rules/supply-chain-security.md +34 -0
  12. package/areas/devops/ci-cd/skills/artifact-management/SKILL.md +157 -0
  13. package/areas/devops/ci-cd/skills/build-optimization/SKILL.md +168 -0
  14. package/areas/devops/ci-cd/skills/github-actions-patterns/SKILL.md +190 -0
  15. package/areas/devops/ci-cd/skills/gitlab-ci-patterns/SKILL.md +169 -0
  16. package/areas/devops/ci-cd/skills/pipeline-security/SKILL.md +161 -0
  17. package/areas/devops/ci-cd/workflows/onboard-repo.md +73 -0
  18. package/areas/devops/ci-cd/workflows/pipeline-debug.md +66 -0
  19. package/areas/devops/ci-cd/workflows/release-pipeline.md +115 -0
  20. package/areas/devops/database-ops/AGENTS.md +47 -0
  21. package/areas/devops/database-ops/prompts/backup-verify.md +83 -0
  22. package/areas/devops/database-ops/prompts/db-incident.md +127 -0
  23. package/areas/devops/database-ops/rules/access-control.md +20 -0
  24. package/areas/devops/database-ops/rules/backup-policy.md +33 -0
  25. package/areas/devops/database-ops/rules/migration-runbook.md +32 -0
  26. package/areas/devops/database-ops/skills/backup-restore/SKILL.md +226 -0
  27. package/areas/devops/database-ops/skills/db-performance/SKILL.md +205 -0
  28. package/areas/devops/database-ops/skills/migration-safety/SKILL.md +155 -0
  29. package/areas/devops/database-ops/skills/postgres-operations/SKILL.md +156 -0
  30. package/areas/devops/database-ops/skills/redis-operations/SKILL.md +174 -0
  31. package/areas/devops/database-ops/workflows/backup-verify.md +107 -0
  32. package/areas/devops/database-ops/workflows/db-incident.md +86 -0
  33. package/areas/devops/devsecops/AGENTS.md +47 -0
  34. package/areas/devops/devsecops/prompts/policy-onboard.md +79 -0
  35. package/areas/devops/devsecops/prompts/security-scan-pipeline.md +131 -0
  36. package/areas/devops/devsecops/rules/container-security.md +22 -0
  37. package/areas/devops/devsecops/rules/policy-as-code.md +37 -0
  38. package/areas/devops/devsecops/rules/shift-left-policy.md +26 -0
  39. package/areas/devops/devsecops/skills/container-hardening/SKILL.md +146 -0
  40. package/areas/devops/devsecops/skills/opa-policies/SKILL.md +188 -0
  41. package/areas/devops/devsecops/skills/sbom-supply-chain/SKILL.md +165 -0
  42. package/areas/devops/devsecops/skills/secret-detection/SKILL.md +190 -0
  43. package/areas/devops/devsecops/skills/sigstore-signing/SKILL.md +184 -0
  44. package/areas/devops/devsecops/workflows/policy-onboard.md +104 -0
  45. package/areas/devops/devsecops/workflows/security-scan-pipeline.md +155 -0
  46. package/areas/devops/infrastructure/AGENTS.md +50 -0
  47. package/areas/devops/infrastructure/prompts/destroy-environment.md +81 -0
  48. package/areas/devops/infrastructure/prompts/drift-remediation.md +71 -0
  49. package/areas/devops/infrastructure/prompts/module-development.md +69 -0
  50. package/areas/devops/infrastructure/prompts/provision-environment.md +121 -0
  51. package/areas/devops/infrastructure/rules/iac-standards.md +80 -0
  52. package/areas/devops/infrastructure/rules/immutability.md +28 -0
  53. package/areas/devops/infrastructure/rules/secret-hygiene.md +53 -0
  54. package/areas/devops/infrastructure/rules/state-management.md +47 -0
  55. package/areas/devops/infrastructure/skills/ansible-playbooks/SKILL.md +174 -0
  56. package/areas/devops/infrastructure/skills/cost-optimization/SKILL.md +177 -0
  57. package/areas/devops/infrastructure/skills/drift-detection/SKILL.md +178 -0
  58. package/areas/devops/infrastructure/skills/state-management/SKILL.md +159 -0
  59. package/areas/devops/infrastructure/skills/terraform-modules/SKILL.md +169 -0
  60. package/areas/devops/infrastructure/workflows/destroy-environment.md +96 -0
  61. package/areas/devops/infrastructure/workflows/drift-remediation.md +66 -0
  62. package/areas/devops/infrastructure/workflows/module-development.md +101 -0
  63. package/areas/devops/infrastructure/workflows/provision-environment.md +96 -0
  64. package/areas/devops/kubernetes/AGENTS.md +57 -0
  65. package/areas/devops/kubernetes/PROMPTS.md +9 -0
  66. package/areas/devops/kubernetes/prompts/cluster-bootstrap.md +67 -0
  67. package/areas/devops/kubernetes/prompts/debug-workload.md +91 -0
  68. package/areas/devops/kubernetes/prompts/onboard-service.md +101 -0
  69. package/areas/devops/kubernetes/prompts/upgrade-cluster.md +63 -0
  70. package/areas/devops/kubernetes/rules/cluster-standards.md +51 -0
  71. package/areas/devops/kubernetes/rules/resource-governance.md +80 -0
  72. package/areas/devops/kubernetes/rules/upgrade-policy.md +52 -0
  73. package/areas/devops/kubernetes/rules/workload-security.md +64 -0
  74. package/areas/devops/kubernetes/skills/cluster-operations/SKILL.md +136 -0
  75. package/areas/devops/kubernetes/skills/helm-charts/SKILL.md +152 -0
  76. package/areas/devops/kubernetes/skills/network-policies/SKILL.md +169 -0
  77. package/areas/devops/kubernetes/skills/pod-troubleshooting/SKILL.md +129 -0
  78. package/areas/devops/kubernetes/skills/rbac-design/SKILL.md +148 -0
  79. package/areas/devops/kubernetes/skills/resource-tuning/SKILL.md +156 -0
  80. package/areas/devops/kubernetes/workflows/cluster-bootstrap.md +194 -0
  81. package/areas/devops/kubernetes/workflows/debug-workload.md +108 -0
  82. package/areas/devops/kubernetes/workflows/onboard-service.md +124 -0
  83. package/areas/devops/kubernetes/workflows/upgrade-cluster.md +165 -0
  84. package/areas/devops/networking/AGENTS.md +47 -0
  85. package/areas/devops/networking/prompts/onboard-ingress.md +119 -0
  86. package/areas/devops/networking/prompts/service-mesh-onboard.md +77 -0
  87. package/areas/devops/networking/rules/ingress-standards.md +17 -0
  88. package/areas/devops/networking/rules/network-segmentation.md +24 -0
  89. package/areas/devops/networking/rules/tls-policy.md +32 -0
  90. package/areas/devops/networking/skills/dns-management/SKILL.md +169 -0
  91. package/areas/devops/networking/skills/ingress-patterns/SKILL.md +165 -0
  92. package/areas/devops/networking/skills/service-mesh/SKILL.md +206 -0
  93. package/areas/devops/networking/skills/tls-termination/SKILL.md +198 -0
  94. package/areas/devops/networking/skills/vpc-design/SKILL.md +132 -0
  95. package/areas/devops/networking/workflows/onboard-ingress.md +64 -0
  96. package/areas/devops/networking/workflows/service-mesh-onboard.md +122 -0
  97. package/areas/devops/observability/AGENTS.md +48 -0
  98. package/areas/devops/observability/prompts/alert-investigation.md +117 -0
  99. package/areas/devops/observability/prompts/observability-stack-setup.md +99 -0
  100. package/areas/devops/observability/prompts/onboard-service-monitoring.md +79 -0
  101. package/areas/devops/observability/rules/alerting-standards.md +36 -0
  102. package/areas/devops/observability/rules/data-retention.md +19 -0
  103. package/areas/devops/observability/rules/golden-signals.md +28 -0
  104. package/areas/devops/observability/skills/distributed-tracing/SKILL.md +149 -0
  105. package/areas/devops/observability/skills/grafana-dashboards/SKILL.md +201 -0
  106. package/areas/devops/observability/skills/log-aggregation/SKILL.md +159 -0
  107. package/areas/devops/observability/skills/prometheus-alertmanager/SKILL.md +188 -0
  108. package/areas/devops/observability/skills/slo-implementation/SKILL.md +189 -0
  109. package/areas/devops/observability/workflows/alert-investigation.md +98 -0
  110. package/areas/devops/observability/workflows/observability-stack-setup.md +156 -0
  111. package/areas/devops/observability/workflows/onboard-service-monitoring.md +83 -0
  112. package/areas/devops/sre/AGENTS.md +48 -0
  113. package/areas/devops/sre/prompts/incident-response.md +129 -0
  114. package/areas/devops/sre/prompts/postmortem.md +101 -0
  115. package/areas/devops/sre/prompts/slo-review.md +125 -0
  116. package/areas/devops/sre/rules/error-budget-policy.md +25 -0
  117. package/areas/devops/sre/rules/on-call-standards.md +25 -0
  118. package/areas/devops/sre/rules/slo-policy.md +31 -0
  119. package/areas/devops/sre/skills/capacity-planning/SKILL.md +162 -0
  120. package/areas/devops/sre/skills/chaos-engineering/SKILL.md +186 -0
  121. package/areas/devops/sre/skills/incident-command/SKILL.md +119 -0
  122. package/areas/devops/sre/skills/postmortem-analysis/SKILL.md +104 -0
  123. package/areas/devops/sre/skills/slo-sli-design/SKILL.md +145 -0
  124. package/areas/devops/sre/workflows/incident-response.md +66 -0
  125. package/areas/devops/sre/workflows/postmortem.md +90 -0
  126. package/areas/devops/sre/workflows/slo-review.md +95 -0
  127. package/areas/software/backend/AGENTS.md +59 -0
  128. package/areas/software/backend/PROMPTS.md +50 -0
  129. package/areas/software/backend/README.md +48 -0
  130. package/areas/software/backend/prompts/add-migration.md +93 -0
  131. package/areas/software/backend/prompts/create-endpoint.md +97 -0
  132. package/areas/software/backend/prompts/debug-issue.md +87 -0
  133. package/areas/software/backend/prompts/develop-epic.md +83 -0
  134. package/areas/software/backend/prompts/develop-feature.md +91 -0
  135. package/areas/software/backend/prompts/refactor-module.md +79 -0
  136. package/areas/software/backend/prompts/test-feature.md +89 -0
  137. package/areas/software/backend/rules/architecture.md +20 -0
  138. package/areas/software/backend/rules/data_access.md +20 -0
  139. package/areas/software/backend/rules/security.md +20 -0
  140. package/areas/software/backend/rules/testing.md +19 -0
  141. package/areas/software/backend/skills/api-design/SKILL.md +170 -0
  142. package/areas/software/backend/skills/async-processing/SKILL.md +152 -0
  143. package/areas/software/backend/skills/database-modeling/SKILL.md +173 -0
  144. package/areas/software/backend/skills/observability/SKILL.md +162 -0
  145. package/areas/software/backend/skills/troubleshooting/SKILL.md +139 -0
  146. package/areas/software/backend/workflows/add-migration.md +79 -0
  147. package/areas/software/backend/workflows/create-endpoint.md +89 -0
  148. package/areas/software/backend/workflows/debug-issue.md +77 -0
  149. package/areas/software/backend/workflows/develop-epic.md +78 -0
  150. package/areas/software/backend/workflows/develop-feature.md +98 -0
  151. package/areas/software/backend/workflows/refactor-module.md +73 -0
  152. package/areas/software/backend/workflows/test-feature.md +67 -0
  153. package/areas/software/data-engineering/AGENTS.md +59 -0
  154. package/areas/software/data-engineering/PROMPTS.md +32 -0
  155. package/areas/software/data-engineering/prompts/backfill-data.md +107 -0
  156. package/areas/software/data-engineering/prompts/data-quality-incident.md +109 -0
  157. package/areas/software/data-engineering/prompts/lineage-trace.md +121 -0
  158. package/areas/software/data-engineering/prompts/new-model.md +117 -0
  159. package/areas/software/data-engineering/prompts/schema-migration.md +111 -0
  160. package/areas/software/data-engineering/rules/data-governance.md +11 -0
  161. package/areas/software/data-engineering/rules/pii-handling.md +19 -0
  162. package/areas/software/data-engineering/rules/pipeline-integrity.md +11 -0
  163. package/areas/software/data-engineering/rules/schema-management.md +21 -0
  164. package/areas/software/data-engineering/skills/data-modeling/SKILL.md +49 -0
  165. package/areas/software/data-engineering/skills/dbt-patterns/SKILL.md +43 -0
  166. package/areas/software/data-engineering/skills/lineage-governance/SKILL.md +38 -0
  167. package/areas/software/data-engineering/skills/orchestration/SKILL.md +35 -0
  168. package/areas/software/data-engineering/skills/quality-checks/SKILL.md +50 -0
  169. package/areas/software/data-engineering/skills/sql-optimization/SKILL.md +47 -0
  170. package/areas/software/data-engineering/skills/streaming-patterns/SKILL.md +48 -0
  171. package/areas/software/data-engineering/workflows/backfill-data.md +59 -0
  172. package/areas/software/data-engineering/workflows/data-quality-incident.md +64 -0
  173. package/areas/software/data-engineering/workflows/lineage-trace.md +56 -0
  174. package/areas/software/data-engineering/workflows/new-model.md +71 -0
  175. package/areas/software/data-engineering/workflows/schema-migration.md +67 -0
  176. package/areas/software/frontend/AGENTS.md +60 -0
  177. package/areas/software/frontend/PROMPTS.md +32 -0
  178. package/areas/software/frontend/prompts/a11y-fix.md +75 -0
  179. package/areas/software/frontend/prompts/bundle-analyze.md +75 -0
  180. package/areas/software/frontend/prompts/release-prep.md +83 -0
  181. package/areas/software/frontend/prompts/scaffold-component.md +69 -0
  182. package/areas/software/frontend/prompts/visual-regression.md +73 -0
  183. package/areas/software/frontend/rules/accessibility.md +16 -0
  184. package/areas/software/frontend/rules/architecture.md +29 -0
  185. package/areas/software/frontend/rules/performance.md +23 -0
  186. package/areas/software/frontend/rules/quality.md +12 -0
  187. package/areas/software/frontend/skills/a11y-audit/SKILL.md +61 -0
  188. package/areas/software/frontend/skills/api-integration/SKILL.md +58 -0
  189. package/areas/software/frontend/skills/component-design/SKILL.md +171 -0
  190. package/areas/software/frontend/skills/css-architecture/SKILL.md +146 -0
  191. package/areas/software/frontend/skills/error-handling/SKILL.md +55 -0
  192. package/areas/software/frontend/skills/performance-tuning/SKILL.md +58 -0
  193. package/areas/software/frontend/skills/state-management/SKILL.md +54 -0
  194. package/areas/software/frontend/skills/testing-patterns/SKILL.md +69 -0
  195. package/areas/software/frontend/workflows/a11y-fix.md +63 -0
  196. package/areas/software/frontend/workflows/bundle-analyze.md +56 -0
  197. package/areas/software/frontend/workflows/release-prep.md +66 -0
  198. package/areas/software/frontend/workflows/scaffold-component.md +67 -0
  199. package/areas/software/frontend/workflows/visual-regression.md +65 -0
  200. package/areas/software/full-stack/AGENTS.md +72 -0
  201. package/areas/software/full-stack/PROMPTS.md +66 -0
  202. package/areas/software/full-stack/prompts/backend-project-full-cycle.md +141 -0
  203. package/areas/software/full-stack/prompts/debug-issue.md +115 -0
  204. package/areas/software/full-stack/prompts/develop-feature.md +119 -0
  205. package/areas/software/full-stack/prompts/feature-implementation-flow.md +137 -0
  206. package/areas/software/full-stack/prompts/testing-ci-pipeline.md +119 -0
  207. package/areas/software/full-stack/rules/api-design-guide.md +24 -0
  208. package/areas/software/full-stack/rules/async-concurrency-guide.md +21 -0
  209. package/areas/software/full-stack/rules/backend-architecture-rule.md +41 -0
  210. package/areas/software/full-stack/rules/background-jobs-guide.md +20 -0
  211. package/areas/software/full-stack/rules/code-quality-guide.md +22 -0
  212. package/areas/software/full-stack/rules/database-access-guide.md +24 -0
  213. package/areas/software/full-stack/rules/database-migrations-guide.md +24 -0
  214. package/areas/software/full-stack/rules/domain-models-guide.md +28 -0
  215. package/areas/software/full-stack/rules/e2e-test-guide.md +18 -0
  216. package/areas/software/full-stack/rules/env-settings-guide.md +34 -0
  217. package/areas/software/full-stack/rules/error-handling-guide.md +20 -0
  218. package/areas/software/full-stack/rules/logging-observability-guide.md +22 -0
  219. package/areas/software/full-stack/rules/project-guide.md +34 -0
  220. package/areas/software/full-stack/rules/python-venv-guide.md +23 -0
  221. package/areas/software/full-stack/rules/security-guide.md +22 -0
  222. package/areas/software/full-stack/rules/svt-test-guide.md +17 -0
  223. package/areas/software/full-stack/rules/testing-ci-guide.md +25 -0
  224. package/areas/software/full-stack/skills/api-design-principles/SKILL.md +125 -0
  225. package/areas/software/full-stack/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  226. package/areas/software/full-stack/skills/api-design-principles/assets/rest-api-template.py +182 -0
  227. package/areas/software/full-stack/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  228. package/areas/software/full-stack/skills/api-design-principles/references/rest-best-practices.md +408 -0
  229. package/areas/software/full-stack/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  230. package/areas/software/full-stack/skills/api-patterns/SKILL.md +81 -0
  231. package/areas/software/full-stack/skills/api-patterns/api-style.md +42 -0
  232. package/areas/software/full-stack/skills/api-patterns/auth.md +24 -0
  233. package/areas/software/full-stack/skills/api-patterns/documentation.md +26 -0
  234. package/areas/software/full-stack/skills/api-patterns/graphql.md +41 -0
  235. package/areas/software/full-stack/skills/api-patterns/rate-limiting.md +31 -0
  236. package/areas/software/full-stack/skills/api-patterns/response.md +37 -0
  237. package/areas/software/full-stack/skills/api-patterns/rest.md +40 -0
  238. package/areas/software/full-stack/skills/api-patterns/scripts/api_validator.py +211 -0
  239. package/areas/software/full-stack/skills/api-patterns/security-testing.md +122 -0
  240. package/areas/software/full-stack/skills/api-patterns/trpc.md +41 -0
  241. package/areas/software/full-stack/skills/api-patterns/versioning.md +22 -0
  242. package/areas/software/full-stack/skills/app-builder/SKILL.md +135 -0
  243. package/areas/software/full-stack/skills/app-builder/agent-coordination.md +71 -0
  244. package/areas/software/full-stack/skills/app-builder/feature-building.md +53 -0
  245. package/areas/software/full-stack/skills/app-builder/project-detection.md +34 -0
  246. package/areas/software/full-stack/skills/app-builder/scaffolding.md +118 -0
  247. package/areas/software/full-stack/skills/app-builder/tech-stack.md +40 -0
  248. package/areas/software/full-stack/skills/app-builder/templates/SKILL.md +39 -0
  249. package/areas/software/full-stack/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  250. package/areas/software/full-stack/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  251. package/areas/software/full-stack/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  252. package/areas/software/full-stack/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  253. package/areas/software/full-stack/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  254. package/areas/software/full-stack/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  255. package/areas/software/full-stack/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  256. package/areas/software/full-stack/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  257. package/areas/software/full-stack/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  258. package/areas/software/full-stack/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  259. package/areas/software/full-stack/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  260. package/areas/software/full-stack/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  261. package/areas/software/full-stack/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  262. package/areas/software/full-stack/skills/backend-developer/SKILL.md +58 -0
  263. package/areas/software/full-stack/skills/bash-pro/SKILL.md +310 -0
  264. package/areas/software/full-stack/skills/blackbox-test/SKILL.md +84 -0
  265. package/areas/software/full-stack/skills/prompt-project-planner/SKILL.md +130 -0
  266. package/areas/software/full-stack/skills/prompt-project-planner/output.schema.md +68 -0
  267. package/areas/software/full-stack/skills/prompt-project-planner/questions.md +80 -0
  268. package/areas/software/full-stack/skills/python-pro/SKILL.md +158 -0
  269. package/areas/software/full-stack/skills/skill-creator/LICENSE.txt +202 -0
  270. package/areas/software/full-stack/skills/skill-creator/SKILL.md +356 -0
  271. package/areas/software/full-stack/skills/skill-creator/references/output-patterns.md +82 -0
  272. package/areas/software/full-stack/skills/skill-creator/references/workflows.md +28 -0
  273. package/areas/software/full-stack/skills/skill-creator/scripts/init_skill.py +303 -0
  274. package/areas/software/full-stack/skills/skill-creator/scripts/package_skill.py +110 -0
  275. package/areas/software/full-stack/skills/skill-creator/scripts/quick_validate.py +95 -0
  276. package/areas/software/full-stack/workflows/backend-project-full-cycle.md +132 -0
  277. package/areas/software/full-stack/workflows/debug-issue.md +70 -0
  278. package/areas/software/full-stack/workflows/develop-feature.md +85 -0
  279. package/areas/software/full-stack/workflows/feature-implementation-flow.md +78 -0
  280. package/areas/software/full-stack/workflows/testing-ci-pipeline.md +65 -0
  281. package/areas/software/general/AGENTS.md +68 -0
  282. package/areas/software/general/prompts/code-review-workflow.md +87 -0
  283. package/areas/software/general/prompts/development-cycle-workflow.md +83 -0
  284. package/areas/software/general/prompts/project-setup-workflow.md +93 -0
  285. package/areas/software/general/rules/code-style-guide.md +31 -0
  286. package/areas/software/general/rules/docker-compose-guide.md +27 -0
  287. package/areas/software/general/rules/git-workflow-guide.md +27 -0
  288. package/areas/software/general/rules/github-workflow-guide.md +27 -0
  289. package/areas/software/general/rules/gitlab-ci-guide.md +27 -0
  290. package/areas/software/general/rules/lint-format-guide.md +29 -0
  291. package/areas/software/general/rules/makefile-guide.md +34 -0
  292. package/areas/software/general/rules/readme-sync-guide.md +40 -0
  293. package/areas/software/general/rules/sdlc-methodology-guide.md +27 -0
  294. package/areas/software/general/rules/sdlc-role-responsibilities.md +108 -0
  295. package/areas/software/general/skills/general-dev-tools/SKILL.md +324 -0
  296. package/areas/software/general/workflows/code-review-workflow.md +84 -0
  297. package/areas/software/general/workflows/development-cycle-workflow.md +85 -0
  298. package/areas/software/general/workflows/project-setup-workflow.md +94 -0
  299. package/areas/software/mlops/AGENTS.md +57 -0
  300. package/areas/software/mlops/PROMPTS.md +32 -0
  301. package/areas/software/mlops/prompts/champion-challenger.md +87 -0
  302. package/areas/software/mlops/prompts/deploy-endpoint.md +91 -0
  303. package/areas/software/mlops/prompts/evaluate-model.md +87 -0
  304. package/areas/software/mlops/prompts/model-incident.md +87 -0
  305. package/areas/software/mlops/prompts/train-experiment.md +83 -0
  306. package/areas/software/mlops/rules/data-integrity.md +9 -0
  307. package/areas/software/mlops/rules/model-governance.md +9 -0
  308. package/areas/software/mlops/rules/production-safety.md +9 -0
  309. package/areas/software/mlops/rules/reproducibility.md +9 -0
  310. package/areas/software/mlops/skills/experiment-tracking/SKILL.md +29 -0
  311. package/areas/software/mlops/skills/feature-engineering/SKILL.md +44 -0
  312. package/areas/software/mlops/skills/inference-serving/SKILL.md +35 -0
  313. package/areas/software/mlops/skills/model-evaluation/SKILL.md +40 -0
  314. package/areas/software/mlops/skills/model-monitoring/SKILL.md +32 -0
  315. package/areas/software/mlops/workflows/champion-challenger.md +65 -0
  316. package/areas/software/mlops/workflows/deploy-endpoint.md +70 -0
  317. package/areas/software/mlops/workflows/evaluate-model.md +63 -0
  318. package/areas/software/mlops/workflows/model-incident.md +64 -0
  319. package/areas/software/mlops/workflows/train-experiment.md +56 -0
  320. package/areas/software/mobile/AGENTS.md +58 -0
  321. package/areas/software/mobile/PROMPTS.md +32 -0
  322. package/areas/software/mobile/prompts/crash-triage.md +63 -0
  323. package/areas/software/mobile/prompts/device-testing.md +83 -0
  324. package/areas/software/mobile/prompts/ota-update.md +75 -0
  325. package/areas/software/mobile/prompts/release-build.md +67 -0
  326. package/areas/software/mobile/prompts/store-submission.md +79 -0
  327. package/areas/software/mobile/rules/offline-first.md +10 -0
  328. package/areas/software/mobile/rules/performance-budget.md +20 -0
  329. package/areas/software/mobile/rules/platform-compliance.md +17 -0
  330. package/areas/software/mobile/rules/security-mobile.md +9 -0
  331. package/areas/software/mobile/skills/app-store-prep/SKILL.md +27 -0
  332. package/areas/software/mobile/skills/mobile-testing/SKILL.md +36 -0
  333. package/areas/software/mobile/skills/native-modules/SKILL.md +38 -0
  334. package/areas/software/mobile/skills/navigation-patterns/SKILL.md +49 -0
  335. package/areas/software/mobile/skills/push-notifications/SKILL.md +40 -0
  336. package/areas/software/mobile/skills/state-sync/SKILL.md +48 -0
  337. package/areas/software/mobile/workflows/crash-triage.md +63 -0
  338. package/areas/software/mobile/workflows/device-testing.md +54 -0
  339. package/areas/software/mobile/workflows/ota-update.md +54 -0
  340. package/areas/software/mobile/workflows/release-build.md +67 -0
  341. package/areas/software/mobile/workflows/store-submission.md +63 -0
  342. package/areas/software/platform/AGENTS.md +67 -0
  343. package/areas/software/platform/PROMPTS.md +32 -0
  344. package/areas/software/platform/prompts/cost-audit.md +117 -0
  345. package/areas/software/platform/prompts/deploy-production.md +109 -0
  346. package/areas/software/platform/prompts/drift-check.md +107 -0
  347. package/areas/software/platform/prompts/incident-response.md +121 -0
  348. package/areas/software/platform/prompts/provision-env.md +113 -0
  349. package/areas/software/platform/rules/cost-governance.md +11 -0
  350. package/areas/software/platform/rules/immutability.md +17 -0
  351. package/areas/software/platform/rules/reliability.md +19 -0
  352. package/areas/software/platform/rules/security-posture.md +12 -0
  353. package/areas/software/platform/skills/ci-cd-pipelines/SKILL.md +58 -0
  354. package/areas/software/platform/skills/incident-response/SKILL.md +41 -0
  355. package/areas/software/platform/skills/k8s-manifests/SKILL.md +56 -0
  356. package/areas/software/platform/skills/networking/SKILL.md +44 -0
  357. package/areas/software/platform/skills/observability-setup/SKILL.md +49 -0
  358. package/areas/software/platform/skills/secrets-management/SKILL.md +43 -0
  359. package/areas/software/platform/skills/terraform-patterns/SKILL.md +75 -0
  360. package/areas/software/platform/workflows/cost-audit.md +61 -0
  361. package/areas/software/platform/workflows/deploy-production.md +67 -0
  362. package/areas/software/platform/workflows/drift-check.md +61 -0
  363. package/areas/software/platform/workflows/incident-response.md +69 -0
  364. package/areas/software/platform/workflows/provision-env.md +77 -0
  365. package/areas/software/qa/AGENTS.md +58 -0
  366. package/areas/software/qa/PROMPTS.md +32 -0
  367. package/areas/software/qa/prompts/flakiness-investigation.md +61 -0
  368. package/areas/software/qa/prompts/performance-audit.md +65 -0
  369. package/areas/software/qa/prompts/regression-suite.md +61 -0
  370. package/areas/software/qa/prompts/smoke-test.md +65 -0
  371. package/areas/software/qa/prompts/test-coverage-report.md +61 -0
  372. package/areas/software/qa/rules/flakiness-policy.md +12 -0
  373. package/areas/software/qa/rules/quality-gates.md +28 -0
  374. package/areas/software/qa/rules/test-data.md +9 -0
  375. package/areas/software/qa/rules/test-strategy.md +11 -0
  376. package/areas/software/qa/skills/accessibility-testing/SKILL.md +139 -0
  377. package/areas/software/qa/skills/api-testing/SKILL.md +140 -0
  378. package/areas/software/qa/skills/e2e-patterns/SKILL.md +152 -0
  379. package/areas/software/qa/skills/performance-testing/SKILL.md +177 -0
  380. package/areas/software/qa/skills/test-data-management/SKILL.md +161 -0
  381. package/areas/software/qa/skills/test-pyramid/SKILL.md +127 -0
  382. package/areas/software/qa/workflows/flakiness-investigation.md +63 -0
  383. package/areas/software/qa/workflows/performance-audit.md +59 -0
  384. package/areas/software/qa/workflows/regression-suite.md +59 -0
  385. package/areas/software/qa/workflows/smoke-test.md +64 -0
  386. package/areas/software/qa/workflows/test-coverage-report.md +57 -0
  387. package/areas/software/security/AGENTS.md +58 -0
  388. package/areas/software/security/PROMPTS.md +32 -0
  389. package/areas/software/security/prompts/compliance-report.md +113 -0
  390. package/areas/software/security/prompts/pen-test-sim.md +113 -0
  391. package/areas/software/security/prompts/secret-rotation.md +115 -0
  392. package/areas/software/security/prompts/security-scan.md +91 -0
  393. package/areas/software/security/prompts/threat-model-review.md +105 -0
  394. package/areas/software/security/rules/compliance-baseline.md +23 -0
  395. package/areas/software/security/rules/dependency-policy.md +12 -0
  396. package/areas/software/security/rules/secrets-policy.md +22 -0
  397. package/areas/software/security/rules/secure-coding.md +22 -0
  398. package/areas/software/security/skills/auth-patterns/SKILL.md +42 -0
  399. package/areas/software/security/skills/crypto-standards/SKILL.md +42 -0
  400. package/areas/software/security/skills/dependency-audit/SKILL.md +29 -0
  401. package/areas/software/security/skills/sast-dast-interpretation/SKILL.md +33 -0
  402. package/areas/software/security/skills/security-headers/SKILL.md +29 -0
  403. package/areas/software/security/skills/threat-modeling/SKILL.md +36 -0
  404. package/areas/software/security/workflows/compliance-report.md +57 -0
  405. package/areas/software/security/workflows/pen-test-sim.md +63 -0
  406. package/areas/software/security/workflows/secret-rotation.md +67 -0
  407. package/areas/software/security/workflows/security-scan.md +64 -0
  408. package/areas/software/security/workflows/threat-model-review.md +62 -0
  409. package/areas/template/AGENTS-area.tmpl.md +61 -0
  410. package/areas/template/AGENTS.tmpl.md +67 -0
  411. package/areas/template/GUIDE.md +102 -0
  412. package/areas/template/PROMPTS.tmpl.md +29 -0
  413. package/areas/template/README.md +57 -0
  414. package/areas/template/README.tmpl.md +51 -0
  415. package/areas/template/prompt.tmpl.md +101 -0
  416. package/areas/template/rule.tmpl.md +71 -0
  417. package/areas/template/skill.tmpl.md +108 -0
  418. package/areas/template/workflow.tmpl.md +104 -0
  419. package/bin/agentic.js +24 -0
  420. package/extensions/antigravity/GEMINI.md +10 -0
  421. package/extensions/claude/CLAUDE.md +10 -0
  422. package/extensions/codex/AGENTS.override.md +93 -0
  423. package/extensions/gemini/GEMINI.md +10 -0
  424. package/extensions/opencode/agents/designer.md +65 -0
  425. package/extensions/opencode/agents/developer.md +63 -0
  426. package/extensions/opencode/agents/devops-engineer.md +69 -0
  427. package/extensions/opencode/agents/pm.md +61 -0
  428. package/extensions/opencode/agents/product-owner.md +76 -0
  429. package/extensions/opencode/agents/qa.md +66 -0
  430. package/extensions/opencode/agents/team-lead.md +67 -0
  431. package/extensions/opencode/commands/feature.md +75 -0
  432. package/extensions/opencode/opencode.json +93 -0
  433. package/extensions/opencode/plugins/model-checker.json +14 -0
  434. package/extensions/opencode/plugins/model-checker.ts +279 -0
  435. package/extensions/opencode/plugins/sound-notification.ts +13 -0
  436. package/extensions/opencode/plugins/telegram-notification.ts +86 -0
  437. package/extensions/opencode/skills/code_review_expert/SKILL.md +144 -0
  438. package/extensions/opencode/skills/design_expert/SKILL.md +42 -0
  439. package/extensions/opencode/skills/qa_expert/SKILL.md +116 -0
  440. package/package.json +19 -0
@@ -0,0 +1,226 @@
1
+ ---
2
+ name: backup-restore
3
+ type: skill
4
+ description: PostgreSQL backup and restore with pgBackRest — full/incremental/WAL, PITR, K8s CronJob scheduling, and restore verification.
5
+ related-rules:
6
+ - backup-policy.md
7
+ allowed-tools: Read, Write, Edit, Bash
8
+ ---
9
+
10
+ # Skill: Backup & Restore
11
+
12
+ > **Expertise:** pgBackRest full/WAL/incremental backup, PITR, S3/MinIO storage, CronJob scheduling, CloudNativePG backup CRDs.
13
+
14
+ ## When to load
15
+
16
+ When configuring backup infrastructure, running a restore, verifying backup integrity, or recovering from data loss.
17
+
18
+ ## pgBackRest Configuration
19
+
20
+ ```ini
21
+ # /etc/pgbackrest/pgbackrest.conf
22
+ [global]
23
+ repo1-type=s3
24
+ repo1-path=/postgres-backups
25
+ repo1-s3-bucket=mycompany-db-backups
26
+ repo1-s3-endpoint=s3.eu-west-1.amazonaws.com
27
+ repo1-s3-region=eu-west-1
28
+ repo1-s3-key=<AWS_ACCESS_KEY>
29
+ repo1-s3-key-secret=<AWS_SECRET_KEY>
30
+ repo1-cipher-type=aes-256-cbc
31
+ repo1-cipher-pass=<STRONG_PASSPHRASE> # rotate annually
32
+ repo1-retention-full=4 # keep 4 full backups
33
+ repo1-retention-diff=14 # keep 14 differential backups
34
+
35
+ [global:archive-push]
36
+ compress-level=3
37
+
38
+ [production-db]
39
+ pg1-path=/var/lib/postgresql/data
40
+ pg1-host=postgres-primary
41
+ pg1-host-user=postgres
42
+ ```
43
+
44
+ ## PostgreSQL: Enable WAL Archiving
45
+
46
+ ```sql
47
+ -- postgresql.conf (or via ALTER SYSTEM)
48
+ ALTER SYSTEM SET wal_level = replica;
49
+ ALTER SYSTEM SET archive_mode = on;
50
+ ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=production-db archive-push %p';
51
+ ALTER SYSTEM SET archive_timeout = '300'; -- archive segment at least every 5 min
52
+ SELECT pg_reload_conf();
53
+ ```
54
+
55
+ ## Backup Commands
56
+
57
+ ```bash
58
+ # Initialize stanza (run once)
59
+ pgbackrest --stanza=production-db stanza-create
60
+
61
+ # Full backup (schedule: weekly)
62
+ pgbackrest --stanza=production-db --type=full backup
63
+
64
+ # Differential backup (changes since last full — schedule: daily)
65
+ pgbackrest --stanza=production-db --type=diff backup
66
+
67
+ # Incremental backup (changes since last backup — schedule: hourly)
68
+ pgbackrest --stanza=production-db --type=incr backup
69
+
70
+ # Check backup catalog
71
+ pgbackrest --stanza=production-db info
72
+
73
+ # Verify backup integrity (reads and checksums)
74
+ pgbackrest --stanza=production-db --set=<backup-label> check
75
+ ```
76
+
77
+ ## PITR Restore (Point-in-Time Recovery)
78
+
79
+ ```bash
80
+ # PITR to specific timestamp (e.g., 1 minute before accidental DELETE)
81
+ # Step 1: Stop PostgreSQL
82
+ systemctl stop postgresql
83
+
84
+ # Step 2: Restore
85
+ pgbackrest --stanza=production-db \
86
+ --delta \
87
+ --target="2024-11-15 03:40:00+00" \
88
+ --target-action=promote \
89
+ --target-timeline=current \
90
+ restore
91
+
92
+ # Step 3: Start PostgreSQL in recovery mode
93
+ systemctl start postgresql
94
+
95
+ # Step 4: Monitor recovery progress
96
+ tail -f /var/log/postgresql/postgresql.log
97
+ # Watch for: "recovery stopping before commit of transaction"
98
+ # Then: "database system is ready to accept connections"
99
+
100
+ # Step 5: Verify data integrity
101
+ psql -c "SELECT count(*) FROM orders WHERE created_at > '2024-11-15 03:39:00';"
102
+ ```
103
+
104
+ ## K8s CronJob: Automated Backups
105
+
106
+ ```yaml
107
+ apiVersion: batch/v1
108
+ kind: CronJob
109
+ metadata:
110
+ name: postgres-backup-daily
111
+ namespace: database
112
+ spec:
113
+ schedule: "0 2 * * *" # 02:00 UTC daily
114
+ concurrencyPolicy: Forbid
115
+ successfulJobsHistoryLimit: 3
116
+ failedJobsHistoryLimit: 3
117
+ jobTemplate:
118
+ spec:
119
+ template:
120
+ spec:
121
+ serviceAccountName: postgres-backup
122
+ restartPolicy: OnFailure
123
+ containers:
124
+ - name: pgbackrest
125
+ image: pgbackrest/pgbackrest:2.50
126
+ command:
127
+ - /bin/sh
128
+ - -c
129
+ - |
130
+ pgbackrest --stanza=production-db --type=diff backup
131
+ pgbackrest --stanza=production-db check
132
+ envFrom:
133
+ - secretRef:
134
+ name: pgbackrest-s3-credentials
135
+ volumeMounts:
136
+ - name: pgbackrest-config
137
+ mountPath: /etc/pgbackrest
138
+ volumes:
139
+ - name: pgbackrest-config
140
+ configMap:
141
+ name: pgbackrest-config
142
+ ```
143
+
144
+ ## CloudNativePG Backup (K8s Operator)
145
+
146
+ ```yaml
147
+ # Cluster with scheduled backup
148
+ apiVersion: postgresql.cnpg.io/v1
149
+ kind: Cluster
150
+ metadata:
151
+ name: postgres-cluster
152
+ spec:
153
+ backup:
154
+ barmanObjectStore:
155
+ destinationPath: s3://mycompany-db-backups/production
156
+ s3Credentials:
157
+ accessKeyId:
158
+ name: s3-creds
159
+ key: ACCESS_KEY_ID
160
+ secretAccessKey:
161
+ name: s3-creds
162
+ key: SECRET_ACCESS_KEY
163
+ wal:
164
+ compression: gzip
165
+ data:
166
+ compression: gzip
167
+ retentionPolicy: "30d"
168
+
169
+ ---
170
+ # Scheduled backup CRD
171
+ apiVersion: postgresql.cnpg.io/v1
172
+ kind: ScheduledBackup
173
+ metadata:
174
+ name: postgres-daily
175
+ spec:
176
+ schedule: "0 2 * * *"
177
+ backupOwnerReference: self
178
+ cluster:
179
+ name: postgres-cluster
180
+ ```
181
+
182
+ ## Restore Verification Script (weekly)
183
+
184
+ ```bash
185
+ #!/bin/bash
186
+ # verify-backup.sh — restore to isolated pod and check row counts
187
+
188
+ STANZA="production-db"
189
+ RESTORE_HOST="postgres-restore-test"
190
+ TABLES=("orders" "payments" "users")
191
+
192
+ echo "=== pgBackRest Backup Verification $(date) ==="
193
+
194
+ # 1. Check last backup age
195
+ LAST_BACKUP=$(pgbackrest --stanza=$STANZA info --output=json | \
196
+ jq -r '.[] | .backup[-1].timestamp.stop')
197
+ echo "Last backup: $LAST_BACKUP"
198
+
199
+ AGE_HOURS=$(( ($(date +%s) - $(date -d "$LAST_BACKUP" +%s)) / 3600 ))
200
+ if [ $AGE_HOURS -gt 26 ]; then
201
+ echo "ERROR: Last backup is ${AGE_HOURS}h old — exceeds 26h threshold"
202
+ exit 1
203
+ fi
204
+
205
+ # 2. Restore to test instance
206
+ pgbackrest --stanza=$STANZA --delta --pg1-host=$RESTORE_HOST restore
207
+
208
+ # 3. Start test PostgreSQL
209
+ pg_ctl -D /var/lib/postgresql/restore -l /tmp/restore.log start
210
+
211
+ # 4. Verify row counts match production
212
+ for table in "${TABLES[@]}"; do
213
+ PROD_COUNT=$(psql -h postgres-primary -c "SELECT count(*) FROM $table;" -t | tr -d ' ')
214
+ REST_COUNT=$(psql -h $RESTORE_HOST -c "SELECT count(*) FROM $table;" -t | tr -d ' ')
215
+ if [ "$PROD_COUNT" != "$REST_COUNT" ]; then
216
+ echo "MISMATCH in $table: prod=$PROD_COUNT restore=$REST_COUNT"
217
+ FAILED=1
218
+ else
219
+ echo "OK: $table = $PROD_COUNT rows"
220
+ fi
221
+ done
222
+
223
+ pg_ctl -D /var/lib/postgresql/restore stop
224
+
225
+ [ -z "$FAILED" ] && echo "BACKUP VERIFICATION PASSED" || exit 1
226
+ ```
@@ -0,0 +1,205 @@
1
+ ---
2
+ name: db-performance
3
+ type: skill
4
+ description: PostgreSQL query performance — EXPLAIN ANALYZE, index design, pg_stat_statements, slow query detection, connection pool tuning.
5
+ related-rules:
6
+ - access-control.md
7
+ - migration-runbook.md
8
+ allowed-tools: Read, Bash
9
+ ---
10
+
11
+ # Skill: Database Performance
12
+
13
+ > **Expertise:** EXPLAIN ANALYZE, index design (partial/covering), pg_stat_statements, autovacuum tuning, PgBouncer sizing.
14
+
15
+ ## When to load
16
+
17
+ When investigating slow queries, designing indexes, tuning PostgreSQL config, or sizing PgBouncer pools.
18
+
19
+ ## Query Analysis with pg_stat_statements
20
+
21
+ ```sql
22
+ -- Enable (add to postgresql.conf, then restart or reload)
23
+ -- shared_preload_libraries = 'pg_stat_statements'
24
+ CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
25
+
26
+ -- Top 10 slowest queries by total time
27
+ SELECT
28
+ left(query, 120) AS query_snippet,
29
+ calls,
30
+ round(total_exec_time::numeric, 2) AS total_ms,
31
+ round(mean_exec_time::numeric, 2) AS mean_ms,
32
+ round(stddev_exec_time::numeric, 2) AS stddev_ms,
33
+ rows
34
+ FROM pg_stat_statements
35
+ ORDER BY total_exec_time DESC
36
+ LIMIT 10;
37
+
38
+ -- Top queries by mean execution time (find worst-per-call)
39
+ SELECT
40
+ left(query, 120),
41
+ calls,
42
+ round(mean_exec_time::numeric, 2) AS mean_ms,
43
+ round(rows::numeric / calls, 1) AS rows_per_call
44
+ FROM pg_stat_statements
45
+ WHERE calls > 100 -- ignore one-offs
46
+ ORDER BY mean_exec_time DESC
47
+ LIMIT 10;
48
+
49
+ -- Queries with high I/O (missing index candidates)
50
+ SELECT
51
+ left(query, 120),
52
+ calls,
53
+ round(mean_exec_time::numeric, 1) AS mean_ms,
54
+ shared_blks_read + shared_blks_hit AS total_blocks,
55
+ round(shared_blks_hit::numeric / NULLIF(shared_blks_hit + shared_blks_read, 0) * 100, 1) AS cache_hit_pct
56
+ FROM pg_stat_statements
57
+ WHERE calls > 50
58
+ ORDER BY shared_blks_read DESC
59
+ LIMIT 10;
60
+
61
+ -- Reset stats after tuning
62
+ SELECT pg_stat_statements_reset();
63
+ ```
64
+
65
+ ## EXPLAIN ANALYZE (reading execution plans)
66
+
67
+ ```sql
68
+ -- Always use ANALYZE BUFFERS for real cost data
69
+ EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
70
+ SELECT o.*, c.email
71
+ FROM orders o
72
+ JOIN customers c ON c.id = o.customer_id
73
+ WHERE o.status = 'pending'
74
+ AND o.created_at > now() - interval '7 days';
75
+
76
+ /* Reading the output:
77
+ Seq Scan → full table scan, may need index
78
+ Index Scan → good, using index
79
+ Index Only Scan → best, covering index (no heap access)
80
+ Nested Loop → OK for small datasets; bad for large
81
+ Hash Join → good for large joins
82
+ Merge Join → good for pre-sorted data
83
+
84
+ Key numbers:
85
+ - actual time=START..END ms per row
86
+ - rows=N vs rows=N (estimated vs actual — big diff = stale stats)
87
+ - Buffers: hit=N read=N (high 'read' = cache miss → index opportunity)
88
+ */
89
+ ```
90
+
91
+ ## Index Design Patterns
92
+
93
+ ```sql
94
+ -- Standard B-tree (equality and range queries)
95
+ CREATE INDEX CONCURRENTLY idx_orders_status_created
96
+ ON orders(status, created_at)
97
+ WHERE status IN ('pending', 'processing'); -- partial index — smaller, faster
98
+
99
+ -- Covering index (index-only scan — no heap access)
100
+ CREATE INDEX CONCURRENTLY idx_orders_customer_covering
101
+ ON orders(customer_id, created_at)
102
+ INCLUDE (status, total_amount); -- INCLUDE avoids heap fetch for these columns
103
+
104
+ -- Expression index (for function-based queries)
105
+ CREATE INDEX CONCURRENTLY idx_users_email_lower
106
+ ON users(lower(email)); -- for: WHERE lower(email) = lower($1)
107
+
108
+ -- JSON/JSONB index
109
+ CREATE INDEX CONCURRENTLY idx_events_data_type
110
+ ON events USING GIN (data jsonb_path_ops); -- for: WHERE data @> '{"type":"click"}'
111
+
112
+ -- Multicolumn order: selectivity matters
113
+ -- For: WHERE status='active' AND created_at > X
114
+ -- ✅ (status, created_at) — filter on status first (low cardinality OK as prefix)
115
+ -- ❌ (created_at, status) — date range first is wide; wastes I/O
116
+ ```
117
+
118
+ ## Identifying Missing Indexes
119
+
120
+ ```sql
121
+ -- Tables with high sequential scans (candidates for indexing)
122
+ SELECT
123
+ schemaname || '.' || relname AS table,
124
+ seq_scan,
125
+ seq_tup_read,
126
+ idx_scan,
127
+ round(seq_scan::numeric / NULLIF(seq_scan + idx_scan, 0) * 100, 1) AS seq_pct
128
+ FROM pg_stat_user_tables
129
+ WHERE seq_scan > 1000
130
+ AND seq_tup_read > 10000
131
+ ORDER BY seq_tup_read DESC
132
+ LIMIT 20;
133
+
134
+ -- Unused indexes (wasting write overhead)
135
+ SELECT
136
+ schemaname || '.' || tablename AS table,
137
+ indexname,
138
+ pg_size_pretty(pg_relation_size(indexrelid)) AS size,
139
+ idx_scan AS scans
140
+ FROM pg_stat_user_indexes
141
+ JOIN pg_index USING (indexrelid)
142
+ WHERE idx_scan = 0
143
+ AND NOT indisunique -- don't drop unique constraints
144
+ AND indpred IS NULL -- don't drop partial indexes without analysis
145
+ ORDER BY pg_relation_size(indexrelid) DESC;
146
+ ```
147
+
148
+ ## PostgreSQL Configuration Tuning
149
+
150
+ ```sql
151
+ -- Key parameters for a 16GB RAM server
152
+ ALTER SYSTEM SET shared_buffers = '4GB'; -- 25% of RAM
153
+ ALTER SYSTEM SET effective_cache_size = '12GB'; -- 75% of RAM
154
+ ALTER SYSTEM SET work_mem = '64MB'; -- per sort/hash; set conservatively
155
+ ALTER SYSTEM SET maintenance_work_mem = '1GB'; -- for VACUUM, CREATE INDEX
156
+ ALTER SYSTEM SET max_worker_processes = 8;
157
+ ALTER SYSTEM SET max_parallel_workers = 4;
158
+ ALTER SYSTEM SET max_parallel_workers_per_gather = 2;
159
+
160
+ -- WAL tuning (for high-write workloads)
161
+ ALTER SYSTEM SET wal_buffers = '64MB';
162
+ ALTER SYSTEM SET checkpoint_completion_target = 0.9;
163
+ ALTER SYSTEM SET min_wal_size = '1GB';
164
+ ALTER SYSTEM SET max_wal_size = '4GB';
165
+
166
+ SELECT pg_reload_conf();
167
+ ```
168
+
169
+ ## PgBouncer Pool Sizing
170
+
171
+ ```
172
+ Formula:
173
+ max_server_connections = min(max_connections_pg - 5, available_connections)
174
+ default_pool_size = max_server_connections / number_of_services
175
+ max_client_conn = default_pool_size × 10 (clients can queue)
176
+
177
+ Example (max_connections=200, 5 services):
178
+ default_pool_size = (200 - 5) / 5 = 39 → set to 40
179
+ max_client_conn = 400
180
+ reserve_pool_size = 5 (emergency burst)
181
+ ```
182
+
183
+ ```ini
184
+ # pgbouncer.ini
185
+ [pgbouncer]
186
+ pool_mode = transaction # best for stateless apps
187
+ max_client_conn = 500 # total client connections
188
+ default_pool_size = 40 # server connections per database+user
189
+ reserve_pool_size = 5
190
+ reserve_pool_timeout = 3
191
+ server_idle_timeout = 600
192
+ client_idle_timeout = 0
193
+ query_wait_timeout = 30 # fail fast if no server available
194
+ ```
195
+
196
+ ## Autovacuum Tuning for High-Write Tables
197
+
198
+ ```sql
199
+ -- Per-table autovacuum settings for hot tables
200
+ ALTER TABLE orders SET (
201
+ autovacuum_vacuum_scale_factor = 0.01, -- vacuum at 1% dead rows (default 20%)
202
+ autovacuum_analyze_scale_factor = 0.005, -- analyze at 0.5% (default 10%)
203
+ autovacuum_vacuum_cost_delay = 2 -- less aggressive throttling
204
+ );
205
+ ```
@@ -0,0 +1,155 @@
1
+ ---
2
+ name: migration-safety
3
+ type: skill
4
+ description: Safe database migrations in production — expand-and-contract, lock-safe DDL, timing estimation, rollback SQL.
5
+ related-rules:
6
+ - migration-runbook.md
7
+ - backup-policy.md
8
+ allowed-tools: Read, Write, Edit, Bash
9
+ ---
10
+
11
+ # Skill: Migration Safety
12
+
13
+ > **Expertise:** Expand-and-contract, `CREATE INDEX CONCURRENTLY`, migration timing estimation, rollback planning.
14
+
15
+ ## When to load
16
+
17
+ When planning or executing a production database migration, estimating migration duration, or writing rollback SQL.
18
+
19
+ ## Expand-and-Contract Pattern
20
+
21
+ ```sql
22
+ -- ❌ DANGEROUS: direct rename locks table and breaks old app version
23
+ ALTER TABLE orders RENAME COLUMN user_id TO customer_id;
24
+
25
+ -- ✅ SAFE: expand-and-contract over multiple deploys
26
+
27
+ -- Phase 1: EXPAND (add new column, keep old)
28
+ ALTER TABLE orders ADD COLUMN customer_id BIGINT;
29
+
30
+ -- Phase 2: DUAL-WRITE (app v2 writes to both; reads from customer_id)
31
+ -- (code change, no migration needed)
32
+
33
+ -- Phase 3: BACKFILL (run in small batches to avoid lock)
34
+ UPDATE orders SET customer_id = user_id
35
+ WHERE customer_id IS NULL
36
+ AND id BETWEEN <batch_start> AND <batch_end>;
37
+
38
+ -- Phase 4: CONTRACT (app v3 no longer uses user_id)
39
+ ALTER TABLE orders DROP COLUMN user_id;
40
+ ```
41
+
42
+ ## Lock-Safe DDL
43
+
44
+ ```sql
45
+ -- ✅ Safe: CREATE INDEX CONCURRENTLY (no table lock)
46
+ CREATE INDEX CONCURRENTLY idx_orders_customer_id ON orders(customer_id);
47
+ -- If concurrent creation fails:
48
+ DROP INDEX CONCURRENTLY idx_orders_customer_id_invalid;
49
+ -- Then retry
50
+
51
+ -- ❌ Dangerous on large tables: full table lock
52
+ CREATE INDEX idx_orders_customer_id ON orders(customer_id);
53
+
54
+ -- ✅ Safe: ADD COLUMN with no default (instant in PostgreSQL 11+)
55
+ ALTER TABLE orders ADD COLUMN processed_at TIMESTAMPTZ;
56
+
57
+ -- ❌ Dangerous: ADD COLUMN with DEFAULT rewrites all rows (pre-PG11) / blocks (PG11+)
58
+ ALTER TABLE orders ADD COLUMN processed_at TIMESTAMPTZ NOT NULL DEFAULT now();
59
+ -- ✅ Safe alternative: add nullable, backfill, add constraint
60
+ ALTER TABLE orders ADD COLUMN processed_at TIMESTAMPTZ;
61
+ UPDATE orders SET processed_at = created_at WHERE processed_at IS NULL;
62
+ ALTER TABLE orders ALTER COLUMN processed_at SET NOT NULL;
63
+ ```
64
+
65
+ ## Estimating Migration Duration
66
+
67
+ ```sql
68
+ -- Estimate rows to process
69
+ SELECT reltuples::BIGINT AS estimated_rows
70
+ FROM pg_class
71
+ WHERE relname = 'orders';
72
+
73
+ -- Rough timing: ~100k rows/sec for simple UPDATE on indexed column
74
+ -- ~10k rows/sec for complex JOIN-based UPDATE
75
+ -- Always test on production-size staging first!
76
+
77
+ -- Watch migration progress (PostgreSQL 9.6+)
78
+ SELECT
79
+ phase,
80
+ blocks_done,
81
+ blocks_total,
82
+ round(100.0 * blocks_done / NULLIF(blocks_total, 0), 1) AS pct_done
83
+ FROM pg_stat_progress_create_index
84
+ WHERE relid = 'orders'::regclass;
85
+
86
+ SELECT
87
+ phase,
88
+ tuples_done,
89
+ tuples_total,
90
+ round(100.0 * tuples_done / NULLIF(tuples_total, 0), 1) AS pct_done
91
+ FROM pg_stat_progress_vacuum
92
+ WHERE relid = 'orders'::regclass;
93
+ ```
94
+
95
+ ## Batched Backfill (avoid long transactions)
96
+
97
+ ```python
98
+ # Never: UPDATE orders SET customer_id = user_id (locks all rows, huge transaction)
99
+ # Always: batch by primary key range
100
+
101
+ import psycopg2
102
+
103
+ BATCH_SIZE = 10_000
104
+
105
+ with psycopg2.connect(DSN) as conn:
106
+ with conn.cursor() as cur:
107
+ cur.execute("SELECT MIN(id), MAX(id) FROM orders WHERE customer_id IS NULL")
108
+ min_id, max_id = cur.fetchone()
109
+
110
+ batch_start = min_id
111
+ while batch_start <= max_id:
112
+ batch_end = batch_start + BATCH_SIZE
113
+ with conn.cursor() as cur:
114
+ cur.execute("""
115
+ UPDATE orders
116
+ SET customer_id = user_id
117
+ WHERE id >= %s AND id < %s AND customer_id IS NULL
118
+ """, (batch_start, batch_end))
119
+ conn.commit() # commit each batch — releases row locks
120
+ print(f"Backfilled {batch_start}–{batch_end}")
121
+ batch_start = batch_end
122
+ ```
123
+
124
+ ## Rollback SQL Template
125
+
126
+ ```sql
127
+ -- Every migration should have a paired rollback script
128
+
129
+ -- Migration (forward):
130
+ -- ALTER TABLE orders ADD COLUMN customer_id BIGINT;
131
+ -- CREATE INDEX CONCURRENTLY idx_orders_customer_id ON orders(customer_id);
132
+
133
+ -- Rollback:
134
+ DROP INDEX CONCURRENTLY IF EXISTS idx_orders_customer_id;
135
+ ALTER TABLE orders DROP COLUMN IF EXISTS customer_id;
136
+ ```
137
+
138
+ ## Pre-Migration Checklist
139
+
140
+ ```bash
141
+ # 1. Take snapshot backup
142
+ pgbackrest --stanza=main --type=full backup
143
+ pgbackrest --stanza=main info # verify backup completed
144
+
145
+ # 2. Check current lock activity (no long-running transactions)
146
+ psql -c "SELECT pid, now() - query_start AS duration, state, query
147
+ FROM pg_stat_activity
148
+ WHERE state != 'idle'
149
+ ORDER BY duration DESC LIMIT 10;"
150
+
151
+ # 3. Set statement_timeout for migration session (prevent runaway)
152
+ psql -c "SET statement_timeout = '10min'; <migration_sql>"
153
+
154
+ # 4. Test rollback on staging first
155
+ ```