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,461 @@
1
+ ---
2
+ name: cloudformation
3
+ description: Deploy AWS resources with CloudFormation templates. Create stacks, use
4
+ nested stacks, and implement drift detection. Use when deploying AWS-native IaC.
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
+ # CloudFormation
21
+
22
+ Deploy AWS infrastructure with native CloudFormation templates, change sets, nested stacks, and drift detection.
23
+
24
+ ## When to Use This Skill
25
+
26
+ - Deploying AWS resources using AWS-native Infrastructure as Code
27
+ - Creating repeatable, parameterized infrastructure templates
28
+ - Managing multi-environment deployments (dev, staging, prod) with the same template
29
+ - Implementing safe deployments with change sets and rollback protection
30
+ - Detecting and remediating configuration drift
31
+ - Organizing large infrastructure into nested stacks
32
+ - Exporting/importing values between stacks
33
+
34
+ ## Prerequisites
35
+
36
+ - AWS CLI v2 installed and configured
37
+ - IAM permissions: `cloudformation:*`, plus permissions for all resources in the template
38
+ - (Optional) `cfn-lint` installed for template validation (`pip install cfn-lint`)
39
+ - S3 bucket for storing templates larger than 51,200 bytes
40
+
41
+ ## Template Structure
42
+
43
+ ```yaml
44
+ AWSTemplateFormatVersion: '2010-09-09'
45
+ Description: Production web application infrastructure
46
+
47
+ Metadata:
48
+ AWS::CloudFormation::Interface:
49
+ ParameterGroups:
50
+ - Label: { default: "Environment" }
51
+ Parameters: [Environment, InstanceType]
52
+ - Label: { default: "Network" }
53
+ Parameters: [VpcId, SubnetIds]
54
+
55
+ Parameters:
56
+ Environment:
57
+ Type: String
58
+ AllowedValues: [dev, staging, prod]
59
+ Default: dev
60
+
61
+ InstanceType:
62
+ Type: String
63
+ Default: t3.micro
64
+ AllowedValues: [t3.micro, t3.small, t3.medium, t3.large]
65
+
66
+ VpcId:
67
+ Type: AWS::EC2::VPC::Id
68
+ Description: VPC to deploy into
69
+
70
+ SubnetIds:
71
+ Type: List<AWS::EC2::Subnet::Id>
72
+ Description: Subnets for the application
73
+
74
+ Conditions:
75
+ IsProd: !Equals [!Ref Environment, prod]
76
+ CreateReadReplica: !Equals [!Ref Environment, prod]
77
+
78
+ Mappings:
79
+ RegionAMI:
80
+ us-east-1:
81
+ AL2023: ami-0abcdef1234567890
82
+ us-west-2:
83
+ AL2023: ami-0fedcba9876543210
84
+
85
+ Resources:
86
+ SecurityGroup:
87
+ Type: AWS::EC2::SecurityGroup
88
+ Properties:
89
+ GroupDescription: !Sub '${Environment}-web-sg'
90
+ VpcId: !Ref VpcId
91
+ SecurityGroupIngress:
92
+ - IpProtocol: tcp
93
+ FromPort: 443
94
+ ToPort: 443
95
+ CidrIp: 0.0.0.0/0
96
+ Tags:
97
+ - Key: Name
98
+ Value: !Sub '${Environment}-web-sg'
99
+
100
+ LaunchTemplate:
101
+ Type: AWS::EC2::LaunchTemplate
102
+ Properties:
103
+ LaunchTemplateName: !Sub '${Environment}-web'
104
+ LaunchTemplateData:
105
+ ImageId: !FindInMap [RegionAMI, !Ref 'AWS::Region', AL2023]
106
+ InstanceType: !If [IsProd, t3.large, !Ref InstanceType]
107
+ MetadataOptions:
108
+ HttpTokens: required
109
+ SecurityGroupIds:
110
+ - !Ref SecurityGroup
111
+
112
+ AutoScalingGroup:
113
+ Type: AWS::AutoScaling::AutoScalingGroup
114
+ Properties:
115
+ AutoScalingGroupName: !Sub '${Environment}-web-asg'
116
+ LaunchTemplate:
117
+ LaunchTemplateId: !Ref LaunchTemplate
118
+ Version: !GetAtt LaunchTemplate.LatestVersionNumber
119
+ MinSize: !If [IsProd, 2, 1]
120
+ MaxSize: !If [IsProd, 10, 3]
121
+ DesiredCapacity: !If [IsProd, 4, 1]
122
+ VPCZoneIdentifier: !Ref SubnetIds
123
+ TargetGroupARNs:
124
+ - !Ref TargetGroup
125
+ HealthCheckType: ELB
126
+ HealthCheckGracePeriod: 300
127
+ Tags:
128
+ - Key: Name
129
+ Value: !Sub '${Environment}-web'
130
+ PropagateAtLaunch: true
131
+ UpdatePolicy:
132
+ AutoScalingRollingUpdate:
133
+ MinInstancesInService: !If [IsProd, 2, 0]
134
+ MaxBatchSize: 1
135
+ PauseTime: PT5M
136
+ WaitOnResourceSignals: true
137
+ SuspendProcesses:
138
+ - HealthCheck
139
+ - ReplaceUnhealthy
140
+ - AZRebalance
141
+ - AlarmNotification
142
+ - ScheduledActions
143
+
144
+ TargetGroup:
145
+ Type: AWS::ElasticLoadBalancingV2::TargetGroup
146
+ Properties:
147
+ Name: !Sub '${Environment}-web-tg'
148
+ Port: 8080
149
+ Protocol: HTTP
150
+ VpcId: !Ref VpcId
151
+ TargetType: instance
152
+ HealthCheckPath: /health
153
+ HealthCheckIntervalSeconds: 30
154
+ HealthyThresholdCount: 2
155
+ UnhealthyThresholdCount: 3
156
+
157
+ Outputs:
158
+ SecurityGroupId:
159
+ Description: Web security group ID
160
+ Value: !Ref SecurityGroup
161
+ Export:
162
+ Name: !Sub '${Environment}-WebSecurityGroup'
163
+
164
+ AutoScalingGroupName:
165
+ Description: ASG name
166
+ Value: !Ref AutoScalingGroup
167
+ Export:
168
+ Name: !Sub '${Environment}-WebASG'
169
+ ```
170
+
171
+ ## Stack Operations
172
+
173
+ ```bash
174
+ # Validate a template
175
+ aws cloudformation validate-template --template-body file://template.yaml
176
+
177
+ # Lint with cfn-lint (catches more issues)
178
+ cfn-lint template.yaml
179
+
180
+ # Create a stack
181
+ aws cloudformation create-stack \
182
+ --stack-name production-web \
183
+ --template-body file://template.yaml \
184
+ --parameters \
185
+ ParameterKey=Environment,ParameterValue=prod \
186
+ ParameterKey=VpcId,ParameterValue=vpc-abc123 \
187
+ ParameterKey=SubnetIds,ParameterValue="subnet-aaa\\,subnet-bbb" \
188
+ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM \
189
+ --tags Key=Environment,Value=production Key=Team,Value=platform \
190
+ --enable-termination-protection \
191
+ --on-failure ROLLBACK
192
+
193
+ # Wait for stack creation
194
+ aws cloudformation wait stack-create-complete --stack-name production-web
195
+
196
+ # Describe stack status and outputs
197
+ aws cloudformation describe-stacks \
198
+ --stack-name production-web \
199
+ --query "Stacks[0].{Status:StackStatus,Outputs:Outputs}" \
200
+ --output table
201
+
202
+ # List stack resources
203
+ aws cloudformation list-stack-resources --stack-name production-web \
204
+ --query "StackResourceSummaries[].{Logical:LogicalResourceId,Physical:PhysicalResourceId,Type:ResourceType,Status:ResourceStatus}" \
205
+ --output table
206
+
207
+ # Delete a stack
208
+ aws cloudformation delete-stack --stack-name dev-web
209
+ aws cloudformation wait stack-delete-complete --stack-name dev-web
210
+ ```
211
+
212
+ ## Change Sets (Safe Updates)
213
+
214
+ ```bash
215
+ # Create a change set to preview changes before applying
216
+ aws cloudformation create-change-set \
217
+ --stack-name production-web \
218
+ --change-set-name update-instance-type \
219
+ --template-body file://template.yaml \
220
+ --parameters \
221
+ ParameterKey=Environment,ParameterValue=prod \
222
+ ParameterKey=InstanceType,ParameterValue=t3.large \
223
+ ParameterKey=VpcId,UsePreviousValue=true \
224
+ ParameterKey=SubnetIds,UsePreviousValue=true \
225
+ --capabilities CAPABILITY_IAM
226
+
227
+ # Describe the change set to review planned changes
228
+ aws cloudformation describe-change-set \
229
+ --stack-name production-web \
230
+ --change-set-name update-instance-type \
231
+ --query "Changes[].{Action:ResourceChange.Action,Resource:ResourceChange.LogicalResourceId,Type:ResourceChange.ResourceType,Replacement:ResourceChange.Replacement}" \
232
+ --output table
233
+
234
+ # Execute the change set (apply changes)
235
+ aws cloudformation execute-change-set \
236
+ --stack-name production-web \
237
+ --change-set-name update-instance-type
238
+
239
+ # Wait for update
240
+ aws cloudformation wait stack-update-complete --stack-name production-web
241
+
242
+ # Delete a change set without applying
243
+ aws cloudformation delete-change-set \
244
+ --stack-name production-web \
245
+ --change-set-name update-instance-type
246
+ ```
247
+
248
+ ## Drift Detection
249
+
250
+ ```bash
251
+ # Start drift detection
252
+ DRIFT_ID=$(aws cloudformation detect-stack-drift \
253
+ --stack-name production-web \
254
+ --query 'StackDriftDetectionId' --output text)
255
+
256
+ # Check drift detection status
257
+ aws cloudformation describe-stack-drift-detection-status \
258
+ --stack-drift-detection-id $DRIFT_ID
259
+
260
+ # View drifted resources
261
+ aws cloudformation describe-stack-resource-drifts \
262
+ --stack-name production-web \
263
+ --stack-resource-drift-status-filters MODIFIED DELETED \
264
+ --query "StackResourceDrifts[].{Resource:LogicalResourceId,Status:StackResourceDriftStatus,Differences:PropertyDifferences}" \
265
+ --output table
266
+
267
+ # Detect drift on a specific resource
268
+ aws cloudformation detect-stack-resource-drift \
269
+ --stack-name production-web \
270
+ --logical-resource-id SecurityGroup
271
+ ```
272
+
273
+ ## Nested Stacks
274
+
275
+ Parent template:
276
+
277
+ ```yaml
278
+ AWSTemplateFormatVersion: '2010-09-09'
279
+ Description: Parent stack - full application
280
+
281
+ Parameters:
282
+ Environment:
283
+ Type: String
284
+ AllowedValues: [dev, staging, prod]
285
+
286
+ Resources:
287
+ NetworkStack:
288
+ Type: AWS::CloudFormation::Stack
289
+ Properties:
290
+ TemplateURL: https://s3.amazonaws.com/my-cfn-templates/network.yaml
291
+ Parameters:
292
+ Environment: !Ref Environment
293
+ VpcCidr: "10.0.0.0/16"
294
+ Tags:
295
+ - Key: Environment
296
+ Value: !Ref Environment
297
+
298
+ DatabaseStack:
299
+ Type: AWS::CloudFormation::Stack
300
+ DependsOn: NetworkStack
301
+ Properties:
302
+ TemplateURL: https://s3.amazonaws.com/my-cfn-templates/database.yaml
303
+ Parameters:
304
+ Environment: !Ref Environment
305
+ VpcId: !GetAtt NetworkStack.Outputs.VpcId
306
+ SubnetIds: !GetAtt NetworkStack.Outputs.PrivateSubnetIds
307
+
308
+ AppStack:
309
+ Type: AWS::CloudFormation::Stack
310
+ DependsOn: [NetworkStack, DatabaseStack]
311
+ Properties:
312
+ TemplateURL: https://s3.amazonaws.com/my-cfn-templates/app.yaml
313
+ Parameters:
314
+ Environment: !Ref Environment
315
+ VpcId: !GetAtt NetworkStack.Outputs.VpcId
316
+ SubnetIds: !GetAtt NetworkStack.Outputs.PrivateSubnetIds
317
+ DbEndpoint: !GetAtt DatabaseStack.Outputs.Endpoint
318
+
319
+ Outputs:
320
+ VpcId:
321
+ Value: !GetAtt NetworkStack.Outputs.VpcId
322
+ AppUrl:
323
+ Value: !GetAtt AppStack.Outputs.LoadBalancerDNS
324
+ ```
325
+
326
+ ```bash
327
+ # Package nested templates (uploads local references to S3)
328
+ aws cloudformation package \
329
+ --template-file parent.yaml \
330
+ --s3-bucket my-cfn-templates \
331
+ --output-template-file packaged.yaml
332
+
333
+ # Deploy the packaged template
334
+ aws cloudformation deploy \
335
+ --template-file packaged.yaml \
336
+ --stack-name production-app \
337
+ --parameter-overrides Environment=prod \
338
+ --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND \
339
+ --tags Environment=production
340
+ ```
341
+
342
+ ## Intrinsic Functions Reference
343
+
344
+ ```yaml
345
+ # Ref - reference a parameter or resource
346
+ SecurityGroupId: !Ref SecurityGroup
347
+
348
+ # GetAtt - get an attribute of a resource
349
+ SecurityGroupArn: !GetAtt SecurityGroup.GroupId
350
+
351
+ # Sub - string substitution
352
+ BucketName: !Sub '${Environment}-${AWS::AccountId}-data'
353
+
354
+ # Join - concatenate strings
355
+ PolicyArn: !Join ['', ['arn:aws:iam::', !Ref 'AWS::AccountId', ':policy/MyPolicy']]
356
+
357
+ # Select - pick from a list
358
+ FirstSubnet: !Select [0, !Ref SubnetIds]
359
+
360
+ # Split - split a string
361
+ FirstPart: !Select [0, !Split ['-', !Ref 'AWS::StackName']]
362
+
363
+ # If - conditional value
364
+ InstanceSize: !If [IsProd, t3.large, t3.micro]
365
+
366
+ # Equals - condition definition
367
+ Conditions:
368
+ IsProd: !Equals [!Ref Environment, prod]
369
+
370
+ # ImportValue - cross-stack reference
371
+ VpcId: !ImportValue production-VpcId
372
+
373
+ # Cidr - generate CIDR blocks
374
+ Subnets: !Cidr [!GetAtt VPC.CidrBlock, 6, 8]
375
+
376
+ # GetAZs - list availability zones
377
+ AZ: !Select [0, !GetAZs '']
378
+ ```
379
+
380
+ ## Stack Policy (Prevent Accidental Replacements)
381
+
382
+ ```bash
383
+ # Apply a stack policy that prevents replacement of the database
384
+ aws cloudformation set-stack-policy \
385
+ --stack-name production-web \
386
+ --stack-policy-body '{
387
+ "Statement": [
388
+ {
389
+ "Effect": "Allow",
390
+ "Action": "Update:*",
391
+ "Principal": "*",
392
+ "Resource": "*"
393
+ },
394
+ {
395
+ "Effect": "Deny",
396
+ "Action": "Update:Replace",
397
+ "Principal": "*",
398
+ "Resource": "LogicalResourceId/Database"
399
+ },
400
+ {
401
+ "Effect": "Deny",
402
+ "Action": "Update:Delete",
403
+ "Principal": "*",
404
+ "Resource": "LogicalResourceId/Database"
405
+ }
406
+ ]
407
+ }'
408
+ ```
409
+
410
+ ## Stack Events and Debugging
411
+
412
+ ```bash
413
+ # View stack events (most recent first)
414
+ aws cloudformation describe-stack-events \
415
+ --stack-name production-web \
416
+ --query "StackEvents[?ResourceStatus=='CREATE_FAILED' || ResourceStatus=='UPDATE_FAILED'].{Time:Timestamp,Resource:LogicalResourceId,Status:ResourceStatus,Reason:ResourceStatusReason}" \
417
+ --output table
418
+
419
+ # Continue a rollback that is stuck
420
+ aws cloudformation continue-update-rollback \
421
+ --stack-name production-web \
422
+ --resources-to-skip SecurityGroup
423
+
424
+ # Cancel an in-progress update
425
+ aws cloudformation cancel-update-stack --stack-name production-web
426
+
427
+ # Get template from an existing stack
428
+ aws cloudformation get-template \
429
+ --stack-name production-web \
430
+ --template-stage Processed \
431
+ --query TemplateBody \
432
+ --output text > current-template.yaml
433
+ ```
434
+
435
+ ## Troubleshooting
436
+
437
+ | Problem | Cause | Fix |
438
+ |---|---|---|
439
+ | CREATE_FAILED on IAM resource | Missing CAPABILITY_IAM | Add `--capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM` |
440
+ | Stack stuck in UPDATE_ROLLBACK_FAILED | Resource cannot be rolled back | Use `continue-update-rollback` with `--resources-to-skip` |
441
+ | Nested stack fails | Template URL wrong or S3 access denied | Use `aws cloudformation package` to upload; check bucket policy |
442
+ | Circular dependency error | Two resources reference each other | Break the cycle with a third resource or use `DependsOn` |
443
+ | Drift detected | Manual changes made outside CloudFormation | Re-apply the template or update template to match current state |
444
+ | Change set shows no changes | Template and parameters identical | Verify the diff; check if the change is parameter-only |
445
+ | Template validation error | YAML syntax or invalid resource property | Run `cfn-lint`; check property names against docs |
446
+ | Export name already exists | Another stack uses the same export name | Use unique export names with `!Sub '${AWS::StackName}-Name'` |
447
+ | Delete fails - resource in use | Dependent resource outside the stack | Remove the dependency first; check for SG references |
448
+
449
+ ## Related Skills
450
+
451
+ - terraform-aws (`terraform-aws`) - Alternative IaC with Terraform
452
+ - aws-iam (`aws-iam`) - IAM resources in templates
453
+ - aws-vpc (`aws-vpc`) - Network infrastructure templates
454
+ - aws-ec2 (`aws-ec2`) - Compute resources in templates
455
+ - aws-s3 (`aws-s3`) - Storage resources in templates
456
+
457
+ ## Limitations
458
+
459
+ - Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
460
+ - Docs-only import: upstream scripts and templates not bundled.
461
+