opencode-skills-collection 4.0.68 → 4.0.69

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 (309) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +266 -1
  2. package/bundled-skills/access-review/SKILL.md +394 -0
  3. package/bundled-skills/access-review/references/details.md +121 -0
  4. package/bundled-skills/agent-evals/SKILL.md +420 -0
  5. package/bundled-skills/agent-observability/SKILL.md +346 -0
  6. package/bundled-skills/agent-observability/references/details.md +786 -0
  7. package/bundled-skills/ai-agent-security/SKILL.md +393 -0
  8. package/bundled-skills/ai-agent-security/references/details.md +912 -0
  9. package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
  10. package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
  11. package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
  12. package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
  13. package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
  14. package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
  15. package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
  16. package/bundled-skills/alerting-oncall/SKILL.md +458 -0
  17. package/bundled-skills/alerting-oncall/references/details.md +84 -0
  18. package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
  19. package/bundled-skills/argocd-gitops/SKILL.md +469 -0
  20. package/bundled-skills/arm-templates/SKILL.md +438 -0
  21. package/bundled-skills/arm-templates/references/details.md +64 -0
  22. package/bundled-skills/asset-inventory/SKILL.md +412 -0
  23. package/bundled-skills/asset-inventory/references/details.md +127 -0
  24. package/bundled-skills/audit-logging/SKILL.md +476 -0
  25. package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
  26. package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
  27. package/bundled-skills/aws-ec2/SKILL.md +426 -0
  28. package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
  29. package/bundled-skills/aws-iam/SKILL.md +463 -0
  30. package/bundled-skills/aws-lambda/SKILL.md +428 -0
  31. package/bundled-skills/aws-rds/SKILL.md +380 -0
  32. package/bundled-skills/aws-s3/SKILL.md +434 -0
  33. package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
  34. package/bundled-skills/aws-vpc/SKILL.md +436 -0
  35. package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
  36. package/bundled-skills/azure-aks/SKILL.md +423 -0
  37. package/bundled-skills/azure-devops/SKILL.md +457 -0
  38. package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
  39. package/bundled-skills/azure-keyvault/SKILL.md +455 -0
  40. package/bundled-skills/azure-keyvault/references/details.md +83 -0
  41. package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
  42. package/bundled-skills/azure-networking/SKILL.md +448 -0
  43. package/bundled-skills/azure-networking/references/details.md +135 -0
  44. package/bundled-skills/azure-sql/SKILL.md +413 -0
  45. package/bundled-skills/azure-sql/references/details.md +113 -0
  46. package/bundled-skills/azure-vms/SKILL.md +402 -0
  47. package/bundled-skills/azure-vms/references/details.md +134 -0
  48. package/bundled-skills/backup-recovery/SKILL.md +388 -0
  49. package/bundled-skills/bb-methodology/SKILL.md +451 -0
  50. package/bundled-skills/bb-methodology/references/details.md +120 -0
  51. package/bundled-skills/block-storage/SKILL.md +371 -0
  52. package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
  53. package/bundled-skills/blue-green-deploy/references/details.md +90 -0
  54. package/bundled-skills/bug-bounty/SKILL.md +447 -0
  55. package/bundled-skills/bug-bounty/references/details.md +1316 -0
  56. package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
  57. package/bundled-skills/business-continuity/SKILL.md +463 -0
  58. package/bundled-skills/career-ops/SKILL.md +186 -0
  59. package/bundled-skills/cdn-setup/SKILL.md +374 -0
  60. package/bundled-skills/change-management/SKILL.md +438 -0
  61. package/bundled-skills/change-management/references/details.md +105 -0
  62. package/bundled-skills/circleci/SKILL.md +475 -0
  63. package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
  64. package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
  65. package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
  66. package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
  67. package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
  68. package/bundled-skills/cloudformation/SKILL.md +461 -0
  69. package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
  70. package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
  71. package/bundled-skills/container-hardening/SKILL.md +126 -0
  72. package/bundled-skills/container-registries/SKILL.md +435 -0
  73. package/bundled-skills/container-scanning/SKILL.md +416 -0
  74. package/bundled-skills/convex-backend/SKILL.md +338 -0
  75. package/bundled-skills/dast-scanning/SKILL.md +437 -0
  76. package/bundled-skills/database-backups/SKILL.md +425 -0
  77. package/bundled-skills/datadog/SKILL.md +487 -0
  78. package/bundled-skills/dependency-scanning/SKILL.md +457 -0
  79. package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
  80. package/bundled-skills/disaster-recovery/SKILL.md +374 -0
  81. package/bundled-skills/disaster-recovery/references/details.md +219 -0
  82. package/bundled-skills/dns-management/SKILL.md +375 -0
  83. package/bundled-skills/docker-compose/SKILL.md +482 -0
  84. package/bundled-skills/docker-management/SKILL.md +426 -0
  85. package/bundled-skills/ebpf-observability/SKILL.md +436 -0
  86. package/bundled-skills/ebpf-observability/references/details.md +542 -0
  87. package/bundled-skills/elk-stack/SKILL.md +487 -0
  88. package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
  89. package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
  90. package/bundled-skills/feature-flags/SKILL.md +426 -0
  91. package/bundled-skills/feature-flags/references/details.md +86 -0
  92. package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
  93. package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
  94. package/bundled-skills/firewall-config/SKILL.md +479 -0
  95. package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
  96. package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
  97. package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
  98. package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
  99. package/bundled-skills/gcp-compute/SKILL.md +319 -0
  100. package/bundled-skills/gcp-gke/SKILL.md +307 -0
  101. package/bundled-skills/gcp-networking/SKILL.md +293 -0
  102. package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
  103. package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
  104. package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
  105. package/bundled-skills/gdpr-compliance/references/details.md +145 -0
  106. package/bundled-skills/geo-audit/SKILL.md +368 -0
  107. package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
  108. package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
  109. package/bundled-skills/geo-citability/SKILL.md +350 -0
  110. package/bundled-skills/geo-compare/SKILL.md +340 -0
  111. package/bundled-skills/geo-content/SKILL.md +383 -0
  112. package/bundled-skills/geo-crawlers/SKILL.md +408 -0
  113. package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
  114. package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
  115. package/bundled-skills/geo-proposal/SKILL.md +378 -0
  116. package/bundled-skills/geo-prospect/SKILL.md +225 -0
  117. package/bundled-skills/geo-report/SKILL.md +436 -0
  118. package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
  119. package/bundled-skills/geo-schema/SKILL.md +408 -0
  120. package/bundled-skills/geo-technical/SKILL.md +78 -0
  121. package/bundled-skills/geo-technical/references/details.md +543 -0
  122. package/bundled-skills/git-workflow/SKILL.md +460 -0
  123. package/bundled-skills/github-actions/SKILL.md +368 -0
  124. package/bundled-skills/gitlab-ci/SKILL.md +340 -0
  125. package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
  126. package/bundled-skills/gpu-server-management/SKILL.md +236 -0
  127. package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
  128. package/bundled-skills/helm-charts/SKILL.md +469 -0
  129. package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
  130. package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
  131. package/bundled-skills/hunt-ato/SKILL.md +184 -0
  132. package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
  133. package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
  134. package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
  135. package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
  136. package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
  137. package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
  138. package/bundled-skills/hunt-cicd/SKILL.md +311 -0
  139. package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
  140. package/bundled-skills/hunt-cors/SKILL.md +335 -0
  141. package/bundled-skills/hunt-dom/SKILL.md +323 -0
  142. package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
  143. package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
  144. package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
  145. package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
  146. package/bundled-skills/hunt-grpc/SKILL.md +317 -0
  147. package/bundled-skills/hunt-host-header/SKILL.md +309 -0
  148. package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
  149. package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
  150. package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
  151. package/bundled-skills/hunt-idor/SKILL.md +434 -0
  152. package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
  153. package/bundled-skills/hunt-k8s/SKILL.md +337 -0
  154. package/bundled-skills/hunt-laravel/SKILL.md +255 -0
  155. package/bundled-skills/hunt-ldap/SKILL.md +351 -0
  156. package/bundled-skills/hunt-lfi/SKILL.md +311 -0
  157. package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
  158. package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
  159. package/bundled-skills/hunt-misc/SKILL.md +378 -0
  160. package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
  161. package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
  162. package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
  163. package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
  164. package/bundled-skills/hunt-oauth/SKILL.md +459 -0
  165. package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
  166. package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
  167. package/bundled-skills/hunt-race-condition/references/details.md +159 -0
  168. package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
  169. package/bundled-skills/hunt-rce/SKILL.md +444 -0
  170. package/bundled-skills/hunt-rce/references/details.md +110 -0
  171. package/bundled-skills/hunt-saml/SKILL.md +156 -0
  172. package/bundled-skills/hunt-session/SKILL.md +342 -0
  173. package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
  174. package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
  175. package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
  176. package/bundled-skills/hunt-springboot/SKILL.md +285 -0
  177. package/bundled-skills/hunt-sqli/SKILL.md +466 -0
  178. package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
  179. package/bundled-skills/hunt-ssrf/references/details.md +179 -0
  180. package/bundled-skills/hunt-ssti/SKILL.md +163 -0
  181. package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
  182. package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
  183. package/bundled-skills/hunt-xxe/SKILL.md +466 -0
  184. package/bundled-skills/i-have-adhd/SKILL.md +170 -0
  185. package/bundled-skills/identity-access-management/SKILL.md +382 -0
  186. package/bundled-skills/identity-access-management/references/details.md +524 -0
  187. package/bundled-skills/incident-management/SKILL.md +484 -0
  188. package/bundled-skills/incident-response/SKILL.md +448 -0
  189. package/bundled-skills/incident-response/references/details.md +113 -0
  190. package/bundled-skills/interview-me/SKILL.md +248 -0
  191. package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
  192. package/bundled-skills/jenkins/SKILL.md +462 -0
  193. package/bundled-skills/jev-use/SKILL.md +158 -0
  194. package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
  195. package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
  196. package/bundled-skills/kubernetes-ops/references/details.md +108 -0
  197. package/bundled-skills/kustomize/SKILL.md +478 -0
  198. package/bundled-skills/linux-administration/SKILL.md +367 -0
  199. package/bundled-skills/linux-hardening/SKILL.md +154 -0
  200. package/bundled-skills/llm-app-security/SKILL.md +389 -0
  201. package/bundled-skills/llm-app-security/references/details.md +674 -0
  202. package/bundled-skills/llm-caching/SKILL.md +334 -0
  203. package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
  204. package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
  205. package/bundled-skills/llm-gateway/SKILL.md +282 -0
  206. package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
  207. package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
  208. package/bundled-skills/load-balancing/SKILL.md +403 -0
  209. package/bundled-skills/loki-logging/SKILL.md +479 -0
  210. package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
  211. package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
  212. package/bundled-skills/mcp-server-security/SKILL.md +356 -0
  213. package/bundled-skills/mcp-server-security/references/details.md +745 -0
  214. package/bundled-skills/mdm-device-management/SKILL.md +404 -0
  215. package/bundled-skills/mdm-device-management/references/details.md +410 -0
  216. package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
  217. package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
  218. package/bundled-skills/model-registry-governance/SKILL.md +452 -0
  219. package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
  220. package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
  221. package/bundled-skills/mongodb/SKILL.md +436 -0
  222. package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
  223. package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
  224. package/bundled-skills/mysql/SKILL.md +390 -0
  225. package/bundled-skills/new-relic/SKILL.md +472 -0
  226. package/bundled-skills/nfs-storage/SKILL.md +356 -0
  227. package/bundled-skills/object-storage/SKILL.md +378 -0
  228. package/bundled-skills/offensive-osint/SKILL.md +443 -0
  229. package/bundled-skills/okta-attack/SKILL.md +436 -0
  230. package/bundled-skills/ollama-stack/SKILL.md +379 -0
  231. package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
  232. package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
  233. package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
  234. package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
  235. package/bundled-skills/openshift/SKILL.md +485 -0
  236. package/bundled-skills/opentelemetry/SKILL.md +438 -0
  237. package/bundled-skills/opentelemetry/references/details.md +78 -0
  238. package/bundled-skills/opentofu-migration/SKILL.md +349 -0
  239. package/bundled-skills/osint-methodology/SKILL.md +460 -0
  240. package/bundled-skills/osint-methodology/references/details.md +1350 -0
  241. package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
  242. package/bundled-skills/penetration-testing/SKILL.md +152 -0
  243. package/bundled-skills/performance-tuning/SKILL.md +381 -0
  244. package/bundled-skills/planetscale/SKILL.md +297 -0
  245. package/bundled-skills/platform-engineering/SKILL.md +348 -0
  246. package/bundled-skills/platform-engineering/references/details.md +944 -0
  247. package/bundled-skills/podman/SKILL.md +405 -0
  248. package/bundled-skills/policy-as-code/SKILL.md +434 -0
  249. package/bundled-skills/policy-as-code/references/details.md +204 -0
  250. package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
  251. package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
  252. package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
  253. package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
  254. package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
  255. package/bundled-skills/rag-observability-evals/references/details.md +92 -0
  256. package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
  257. package/bundled-skills/redis/SKILL.md +421 -0
  258. package/bundled-skills/redteam-report-template/SKILL.md +370 -0
  259. package/bundled-skills/report-writing/SKILL.md +426 -0
  260. package/bundled-skills/report-writing/references/details.md +187 -0
  261. package/bundled-skills/reverse-proxy/SKILL.md +420 -0
  262. package/bundled-skills/runbook-creation/SKILL.md +438 -0
  263. package/bundled-skills/runbook-creation/references/details.md +71 -0
  264. package/bundled-skills/saas-security-posture/SKILL.md +415 -0
  265. package/bundled-skills/sast-scanning/SKILL.md +444 -0
  266. package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
  267. package/bundled-skills/security-arsenal/SKILL.md +446 -0
  268. package/bundled-skills/security-arsenal/references/details.md +540 -0
  269. package/bundled-skills/security-automation/SKILL.md +146 -0
  270. package/bundled-skills/semantic-versioning/SKILL.md +434 -0
  271. package/bundled-skills/semantic-versioning/references/details.md +83 -0
  272. package/bundled-skills/service-mesh/SKILL.md +422 -0
  273. package/bundled-skills/soc2-compliance/SKILL.md +409 -0
  274. package/bundled-skills/sops-encryption/SKILL.md +124 -0
  275. package/bundled-skills/sre-dashboards/SKILL.md +143 -0
  276. package/bundled-skills/ssh-configuration/SKILL.md +324 -0
  277. package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
  278. package/bundled-skills/ssl-tls-management/references/details.md +99 -0
  279. package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
  280. package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
  281. package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
  282. package/bundled-skills/systemd-services/SKILL.md +379 -0
  283. package/bundled-skills/terraform-aws/SKILL.md +125 -0
  284. package/bundled-skills/terraform-azure/SKILL.md +415 -0
  285. package/bundled-skills/terraform-azure/references/details.md +231 -0
  286. package/bundled-skills/terraform-gcp/SKILL.md +369 -0
  287. package/bundled-skills/threat-modeling/SKILL.md +487 -0
  288. package/bundled-skills/user-management/SKILL.md +383 -0
  289. package/bundled-skills/using-agent-skills/SKILL.md +220 -0
  290. package/bundled-skills/vector-database-ops/SKILL.md +300 -0
  291. package/bundled-skills/vendor-management/SKILL.md +439 -0
  292. package/bundled-skills/vendor-management/references/details.md +109 -0
  293. package/bundled-skills/vercel-deployments/SKILL.md +296 -0
  294. package/bundled-skills/vllm-server/SKILL.md +236 -0
  295. package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
  296. package/bundled-skills/vpn-setup/SKILL.md +452 -0
  297. package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
  298. package/bundled-skills/waf-setup/SKILL.md +354 -0
  299. package/bundled-skills/waf-setup/references/details.md +211 -0
  300. package/bundled-skills/web2-recon/SKILL.md +440 -0
  301. package/bundled-skills/web2-recon/references/details.md +319 -0
  302. package/bundled-skills/web3-audit/SKILL.md +445 -0
  303. package/bundled-skills/web3-audit/references/details.md +224 -0
  304. package/bundled-skills/windows-hardening/SKILL.md +454 -0
  305. package/bundled-skills/windows-hardening/references/details.md +204 -0
  306. package/bundled-skills/windows-server/SKILL.md +318 -0
  307. package/bundled-skills/zero-trust/SKILL.md +461 -0
  308. package/package.json +1 -1
  309. package/skills_index.json +6943 -323
@@ -0,0 +1,425 @@
1
+ ---
2
+ name: database-backups
3
+ description: Implement database backup strategies. Configure automated backups, retention,
4
+ and recovery testing. Use when designing backup and recovery procedures.
5
+ category: devops
6
+ risk: critical
7
+ source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
8
+ source_repo: BagelHole/DevOps-Security-Agent-Skills
9
+ source_type: community
10
+ date_added: '2026-09-20'
11
+ license: MIT
12
+ license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
13
+ compatibility: Requires the relevant OS/platform tooling and privileged access where
14
+ noted. Docs-only; helper scripts and templates not bundled.
15
+ metadata:
16
+ author: devops-skills
17
+ version: '1.0'
18
+ ---
19
+
20
+ # Database Backups
21
+
22
+ Implement comprehensive, automated database backup strategies with tested recovery procedures.
23
+
24
+ ## When to Use
25
+
26
+ - You are deploying a new database and need a backup plan from day one.
27
+ - You need to automate nightly or hourly backups for PostgreSQL, MySQL, or MongoDB.
28
+ - You want to ship backups to S3-compatible object storage with retention policies.
29
+ - You are building or verifying disaster recovery runbooks.
30
+
31
+ ## Prerequisites
32
+
33
+ - Database client tools installed (`pg_dump`, `mysqldump`, `mongodump`).
34
+ - AWS CLI or `restic` for remote storage.
35
+ - `cron` or systemd timers for scheduling.
36
+ - An S3 bucket (or S3-compatible endpoint) for offsite backups.
37
+
38
+ ## Backup Types
39
+
40
+ | Type | Description | Frequency | Use Case |
41
+ |---|---|---|---|
42
+ | Full | Complete database copy | Weekly | Baseline for restores |
43
+ | Incremental | Changes since last backup | Daily | Reduce storage and time |
44
+ | Transaction log / WAL | Continuous log shipping | Continuous | Point-in-time recovery (PITR) |
45
+ | Snapshot | Storage-level snapshot (EBS, ZFS) | Daily | Fast full restores |
46
+
47
+ ## PostgreSQL Backups
48
+
49
+ ### Logical Backup with pg_dump
50
+
51
+ ```bash
52
+ #!/bin/bash
53
+ # pg_backup.sh — PostgreSQL logical backup
54
+ set -euo pipefail
55
+
56
+ DB_NAME="mydb"
57
+ DB_USER="backup_user"
58
+ DB_HOST="localhost"
59
+ BACKUP_DIR="/backups/postgres"
60
+ DATE=$(date +%Y%m%d_%H%M%S)
61
+ FILENAME="${BACKUP_DIR}/${DB_NAME}_${DATE}.dump"
62
+
63
+ mkdir -p "$BACKUP_DIR"
64
+
65
+ # Custom compressed format (recommended for selective restore)
66
+ pg_dump -h "$DB_HOST" -U "$DB_USER" -Fc -Z6 "$DB_NAME" > "$FILENAME"
67
+
68
+ echo "[$(date)] PostgreSQL backup complete: $FILENAME ($(du -h "$FILENAME" | cut -f1))"
69
+ ```
70
+
71
+ ### Physical Backup with pg_basebackup
72
+
73
+ ```bash
74
+ #!/bin/bash
75
+ # pg_basebackup.sh — PostgreSQL physical backup for PITR
76
+ set -euo pipefail
77
+
78
+ BACKUP_DIR="/backups/postgres/base_$(date +%Y%m%d)"
79
+ mkdir -p "$BACKUP_DIR"
80
+
81
+ pg_basebackup \
82
+ -h localhost \
83
+ -U replicator \
84
+ -D "$BACKUP_DIR" \
85
+ --wal-method=stream \
86
+ --checkpoint=fast \
87
+ --progress \
88
+ --verbose
89
+
90
+ echo "[$(date)] Base backup complete: $BACKUP_DIR"
91
+ ```
92
+
93
+ ### PostgreSQL Restore
94
+
95
+ ```bash
96
+ # Restore from custom-format dump
97
+ pg_restore -h localhost -U myapp -d mydb --clean --if-exists /backups/postgres/mydb_20250115_020000.dump
98
+
99
+ # Restore a single table
100
+ pg_restore -h localhost -U myapp -d mydb -t orders /backups/postgres/mydb_20250115_020000.dump
101
+
102
+ # Restore from plain SQL
103
+ psql -h localhost -U myapp -d mydb < /backups/postgres/mydb_20250115.sql
104
+ ```
105
+
106
+ ## MySQL Backups
107
+
108
+ ### Logical Backup with mysqldump
109
+
110
+ ```bash
111
+ #!/bin/bash
112
+ # mysql_backup.sh — MySQL logical backup
113
+ set -euo pipefail
114
+
115
+ DB_NAME="mydb"
116
+ DB_USER="backup_user"
117
+ DB_PASS="${MYSQL_BACKUP_PASSWORD}"
118
+ BACKUP_DIR="/backups/mysql"
119
+ DATE=$(date +%Y%m%d_%H%M%S)
120
+ FILENAME="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql.gz"
121
+
122
+ mkdir -p "$BACKUP_DIR"
123
+
124
+ mysqldump -u "$DB_USER" -p"$DB_PASS" \
125
+ --single-transaction \
126
+ --routines \
127
+ --triggers \
128
+ --events \
129
+ "$DB_NAME" | gzip > "$FILENAME"
130
+
131
+ echo "[$(date)] MySQL backup complete: $FILENAME ($(du -h "$FILENAME" | cut -f1))"
132
+ ```
133
+
134
+ ### Physical Backup with Percona XtraBackup
135
+
136
+ ```bash
137
+ #!/bin/bash
138
+ # xtrabackup.sh — MySQL physical backup
139
+ set -euo pipefail
140
+
141
+ BACKUP_DIR="/backups/mysql/full_$(date +%Y%m%d)"
142
+
143
+ xtrabackup --backup \
144
+ --user=backup_user \
145
+ --password "$MYSQL_BACKUP_PASSWORD" # from your vault; never hardcode \
146
+ --target-dir="$BACKUP_DIR"
147
+
148
+ xtrabackup --prepare --target-dir="$BACKUP_DIR"
149
+
150
+ echo "[$(date)] XtraBackup complete: $BACKUP_DIR"
151
+ ```
152
+
153
+ ### MySQL Restore
154
+
155
+ ```bash
156
+ # Restore from compressed mysqldump
157
+ gunzip < /backups/mysql/mydb_20250115_020000.sql.gz | mysql -u root -p mydb
158
+
159
+ # Restore from XtraBackup
160
+ sudo systemctl stop mysql
161
+ ls /var/lib/mysql/* # verify this is the correct data dir first
162
+ sudo find /var/lib/mysql -mindepth 1 -delete # empty the data dir; snapshots must exist (see Limitations)
163
+ xtrabackup --move-back --target-dir=/backups/mysql/full_20250115
164
+ sudo chown -R mysql:mysql /var/lib/mysql
165
+ sudo systemctl start mysql
166
+ ```
167
+
168
+ ## MongoDB Backups
169
+
170
+ ### Logical Backup with mongodump
171
+
172
+ ```bash
173
+ #!/bin/bash
174
+ # mongo_backup.sh — MongoDB backup
175
+ set -euo pipefail
176
+
177
+ MONGO_URI="mongodb://backup_user:${MONGO_BACKUP_PASSWORD}@localhost:27017"
178
+ BACKUP_DIR="/backups/mongodb"
179
+ DATE=$(date +%Y%m%d_%H%M%S)
180
+ TARGET="${BACKUP_DIR}/${DATE}"
181
+
182
+ mkdir -p "$BACKUP_DIR"
183
+
184
+ # Full backup with compression
185
+ mongodump --uri="$MONGO_URI" --gzip --out="$TARGET"
186
+
187
+ echo "[$(date)] MongoDB backup complete: $TARGET"
188
+ ```
189
+
190
+ ### MongoDB Restore
191
+
192
+ ```bash
193
+ # Restore all databases
194
+ mongorestore --uri="mongodb://admin:secret@localhost:27017" \
195
+ --gzip --drop /backups/mongodb/20250115_020000/
196
+
197
+ # Restore a single database
198
+ mongorestore --uri="mongodb://admin:secret@localhost:27017" \
199
+ --gzip --drop --db mydb /backups/mongodb/20250115_020000/mydb/
200
+
201
+ # Restore a single collection
202
+ mongorestore --uri="mongodb://admin:secret@localhost:27017" \
203
+ --gzip --drop --db mydb --collection users \
204
+ /backups/mongodb/20250115_020000/mydb/users.bson.gz
205
+ ```
206
+
207
+ ## Upload to S3
208
+
209
+ ```bash
210
+ #!/bin/bash
211
+ # s3_upload.sh — Upload backups to S3
212
+ set -euo pipefail
213
+
214
+ S3_BUCKET="s3://my-backups"
215
+ BACKUP_DIR="/backups"
216
+ DATE=$(date +%Y%m%d)
217
+
218
+ # Upload PostgreSQL backup
219
+ aws s3 cp "${BACKUP_DIR}/postgres/" "${S3_BUCKET}/postgres/${DATE}/" \
220
+ --recursive --storage-class STANDARD_IA \
221
+ --sse AES256
222
+
223
+ # Upload MySQL backup
224
+ aws s3 cp "${BACKUP_DIR}/mysql/" "${S3_BUCKET}/mysql/${DATE}/" \
225
+ --recursive --storage-class STANDARD_IA \
226
+ --sse AES256
227
+
228
+ # Upload MongoDB backup
229
+ aws s3 cp "${BACKUP_DIR}/mongodb/" "${S3_BUCKET}/mongodb/${DATE}/" \
230
+ --recursive --storage-class STANDARD_IA \
231
+ --sse AES256
232
+
233
+ echo "[$(date)] S3 upload complete for ${DATE}"
234
+ ```
235
+
236
+ ### S3 Lifecycle Policy for Retention
237
+
238
+ ```json
239
+ {
240
+ "Rules": [
241
+ {
242
+ "ID": "BackupRetention",
243
+ "Status": "Enabled",
244
+ "Filter": { "Prefix": "" },
245
+ "Transitions": [
246
+ { "Days": 30, "StorageClass": "GLACIER" }
247
+ ],
248
+ "Expiration": { "Days": 365 }
249
+ }
250
+ ]
251
+ }
252
+ ```
253
+
254
+ ```bash
255
+ aws s3api put-bucket-lifecycle-configuration \
256
+ --bucket my-backups \
257
+ --lifecycle-configuration file://lifecycle.json
258
+ ```
259
+
260
+ ## Restic Backup (Encrypted, Deduplicated)
261
+
262
+ ```bash
263
+ # Initialize a restic repository on S3
264
+ export AWS_ACCESS_KEY_ID="AKIA..."
265
+ export AWS_SECRET_ACCESS_KEY="..."
266
+ export RESTIC_PASSWORD="..." # set a strong restic password via your vault
267
+ export RESTIC_REPOSITORY="s3:s3.amazonaws.com/my-backups-restic"
268
+
269
+ restic init
270
+
271
+ # Backup the local backup directory
272
+ restic backup /backups/postgres /backups/mysql /backups/mongodb
273
+
274
+ # List snapshots
275
+ restic snapshots
276
+
277
+ # Prune old snapshots — keep 7 daily, 4 weekly, 6 monthly
278
+ restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
279
+
280
+ # Restore a snapshot
281
+ restic restore latest --target /restore/
282
+ ```
283
+
284
+ ## Cron Schedules
285
+
286
+ ```bash
287
+ # /etc/cron.d/db-backups
288
+
289
+ # PostgreSQL: nightly at 02:00
290
+ 0 2 * * * backup /opt/scripts/pg_backup.sh >> /var/log/backup-pg.log 2>&1
291
+
292
+ # MySQL: nightly at 02:30
293
+ 30 2 * * * backup /opt/scripts/mysql_backup.sh >> /var/log/backup-mysql.log 2>&1
294
+
295
+ # MongoDB: nightly at 03:00
296
+ 0 3 * * * backup /opt/scripts/mongo_backup.sh >> /var/log/backup-mongo.log 2>&1
297
+
298
+ # Upload to S3: daily at 04:00
299
+ 0 4 * * * backup /opt/scripts/s3_upload.sh >> /var/log/backup-s3.log 2>&1
300
+
301
+ # Local cleanup: keep 7 days of local backups
302
+ 0 5 * * * backup find /backups -type f -mtime +7 -delete >> /var/log/backup-cleanup.log 2>&1
303
+
304
+ # Restic prune: weekly on Sunday at 06:00
305
+ 0 6 * * 0 backup /opt/scripts/restic_prune.sh >> /var/log/backup-restic.log 2>&1
306
+ ```
307
+
308
+ ## Automated Recovery Testing
309
+
310
+ ```bash
311
+ #!/bin/bash
312
+ # verify_backup.sh — weekly restore test
313
+ set -euo pipefail
314
+
315
+ BACKUP_FILE=$(ls -t /backups/postgres/mydb_*.dump | head -1)
316
+
317
+ echo "[$(date)] Starting backup verification with $BACKUP_FILE"
318
+
319
+ # Spin up a temporary PostgreSQL container
320
+ docker run -d --name pg-restore-test \
321
+ -e POSTGRES_USER=testuser \
322
+ -e POSTGRES_PASSWORD=testpass \
323
+ -e POSTGRES_DB=testdb \
324
+ postgres:16-alpine
325
+
326
+ # Wait for container to be ready
327
+ sleep 5
328
+ until docker exec pg-restore-test pg_isready -U testuser; do
329
+ sleep 2
330
+ done
331
+
332
+ # Copy backup into container and restore
333
+ docker cp "$BACKUP_FILE" pg-restore-test:/tmp/backup.dump
334
+ docker exec pg-restore-test pg_restore -U testuser -d testdb --clean --if-exists /tmp/backup.dump
335
+
336
+ # Run verification queries
337
+ USERS_COUNT=$(docker exec pg-restore-test psql -U testuser -d testdb -tAc "SELECT COUNT(*) FROM users;")
338
+ ORDERS_COUNT=$(docker exec pg-restore-test psql -U testuser -d testdb -tAc "SELECT COUNT(*) FROM orders;")
339
+
340
+ echo "[$(date)] Verification: users=$USERS_COUNT, orders=$ORDERS_COUNT"
341
+
342
+ # Cleanup
343
+ docker rm -f pg-restore-test
344
+
345
+ # Alert on failure
346
+ if [ "$USERS_COUNT" -lt 1 ]; then
347
+ echo "ALERT: Backup verification failed — users table is empty" >&2
348
+ exit 1
349
+ fi
350
+
351
+ echo "[$(date)] Backup verification PASSED"
352
+ ```
353
+
354
+ ## Unified Backup Script
355
+
356
+ ```bash
357
+ #!/bin/bash
358
+ # backup_all.sh — unified backup orchestrator
359
+ set -euo pipefail
360
+
361
+ LOG="/var/log/backup-all.log"
362
+ ALERT_EMAIL="ops@example.com"
363
+ ERRORS=0
364
+
365
+ log() { echo "[$(date '+%F %T')] $*" | tee -a "$LOG"; }
366
+
367
+ run_backup() {
368
+ local name="$1" script="$2"
369
+ log "Starting $name backup..."
370
+ if bash "$script" >> "$LOG" 2>&1; then
371
+ log "$name backup succeeded."
372
+ else
373
+ log "ERROR: $name backup FAILED."
374
+ ERRORS=$((ERRORS + 1))
375
+ fi
376
+ }
377
+
378
+ run_backup "PostgreSQL" /opt/scripts/pg_backup.sh
379
+ run_backup "MySQL" /opt/scripts/mysql_backup.sh
380
+ run_backup "MongoDB" /opt/scripts/mongo_backup.sh
381
+ run_backup "S3 Upload" /opt/scripts/s3_upload.sh
382
+
383
+ if [ "$ERRORS" -gt 0 ]; then
384
+ log "Backup run completed with $ERRORS error(s). Sending alert."
385
+ mail -s "BACKUP ALERT: $ERRORS failure(s)" "$ALERT_EMAIL" < "$LOG"
386
+ exit 1
387
+ fi
388
+
389
+ log "All backups completed successfully."
390
+ ```
391
+
392
+ ## Best Practices
393
+
394
+ - **3-2-1 Rule**: Keep 3 copies of data, on 2 different media types, with 1 offsite.
395
+ - **Encrypt backups at rest**: Use `restic` (built-in encryption), AWS SSE, or `gpg`.
396
+ - **Test restores regularly**: A backup that has never been restored is not a backup.
397
+ - **Monitor backup jobs**: Alert immediately on any failure; do not rely on silent cron jobs.
398
+ - **Document RTOs and RPOs**: Define Recovery Time Objective and Recovery Point Objective for each database.
399
+ - **Version your backup scripts**: Store them in Git alongside your infrastructure code.
400
+ - **Use `--single-transaction`**: For MySQL and PostgreSQL logical backups to get a consistent snapshot.
401
+ - **Separate backup credentials**: Use a dedicated read-only database user for backups.
402
+
403
+ ## Troubleshooting
404
+
405
+ | Symptom | Likely Cause | Fix |
406
+ |---|---|---|
407
+ | `pg_dump: too many clients` | Backup connection competes with app pool | Schedule during low traffic; increase `max_connections` by 5 for backup user |
408
+ | `mysqldump` hangs on large table | Table lock contention | Use `--single-transaction` (InnoDB) or schedule during maintenance window |
409
+ | `mongodump` slow on replica | Reading from secondary under load | Use `--readPreference=secondaryPreferred` and schedule off-peak |
410
+ | S3 upload fails with timeout | Large file over slow connection | Use `aws s3 cp --expected-size` or multipart with `aws s3api` |
411
+ | Restic prune takes hours | Too many snapshots accumulated | Run `restic forget --prune` more frequently; limit snapshot count |
412
+ | Restore fails with "role does not exist" | Backup includes role-dependent objects | Create roles first or use `--no-owner --no-privileges` on restore |
413
+
414
+ ## Related Skills
415
+
416
+ - postgresql (`postgresql-devsec`) - PostgreSQL administration and pg_dump details
417
+ - mysql (`mysql`) - MySQL administration and mysqldump details
418
+ - mongodb (`mongodb`) - MongoDB administration and mongodump details
419
+ - redis (`redis`) - Redis RDB/AOF persistence and backup
420
+
421
+ ## Limitations
422
+
423
+ - Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
424
+ - Docs-only import: upstream scripts and templates not bundled.
425
+