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,421 @@
1
+ ---
2
+ name: gcp-secret-manager
3
+ description: Secure secrets in Google Cloud Secret Manager. Configure IAM policies,
4
+ integrate with GKE, and manage secret versions. Use when managing secrets in GCP
5
+ environments.
6
+ category: security
7
+ risk: critical
8
+ source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
9
+ source_repo: BagelHole/DevOps-Security-Agent-Skills
10
+ source_type: community
11
+ date_added: '2026-09-20'
12
+ license: MIT
13
+ license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
14
+ compatibility: Requires the relevant security tooling (scanners, vault CLIs) and an
15
+ authorized scope for any active assessment. Docs-only; helper scripts and templates
16
+ not bundled.
17
+ metadata:
18
+ author: devops-skills
19
+ version: '1.0'
20
+ ---
21
+
22
+ # GCP Secret Manager
23
+
24
+ Store and manage secrets securely in Google Cloud Platform.
25
+
26
+ ## Prerequisites
27
+
28
+ - GCP project with billing enabled
29
+ - `gcloud` CLI installed and authenticated
30
+ - Secret Manager API enabled (`secretmanager.googleapis.com`)
31
+ - IAM permissions: `roles/secretmanager.admin` for management, `roles/secretmanager.secretAccessor` for reading
32
+ - For GKE: Workload Identity configured on the cluster
33
+
34
+ ## Enable the API
35
+
36
+ ```bash
37
+ # Enable Secret Manager API
38
+ gcloud services enable secretmanager.googleapis.com
39
+
40
+ # Verify it's enabled
41
+ gcloud services list --enabled --filter="name:secretmanager"
42
+ ```
43
+
44
+ ## Secret Creation and Management
45
+
46
+ ```bash
47
+ # Create a secret (creates the secret resource, not the value)
48
+ gcloud secrets create db-password \
49
+ --replication-policy="automatic" \
50
+ --labels="env=production,team=platform"
51
+
52
+ # Add the secret value (first version)
53
+ echo -n "S3cur3P@ssw0rd!" | gcloud secrets versions add db-password --data-file=-
54
+
55
+ # Create secret with value in one command
56
+ echo -n '{"username":"dbadmin","password":"S3cur3P@ss!","host":"10.0.1.5","port":5432}' | \
57
+ gcloud secrets create db-credentials --data-file=- \
58
+ --replication-policy="automatic" \
59
+ --labels="env=production,team=platform"
60
+
61
+ # Create with specific region replication
62
+ gcloud secrets create regional-secret \
63
+ --replication-policy="user-managed" \
64
+ --locations="us-central1,us-east1"
65
+
66
+ # Create with customer-managed encryption key (CMEK)
67
+ gcloud secrets create sensitive-secret \
68
+ --replication-policy="user-managed" \
69
+ --locations="us-central1" \
70
+ --kms-key-name="projects/my-project/locations/us-central1/keyRings/my-ring/cryptoKeys/my-key"
71
+
72
+ # Access the latest version
73
+ gcloud secrets versions access latest --secret=db-password
74
+
75
+ # Access a specific version
76
+ gcloud secrets versions access 3 --secret=db-password
77
+
78
+ # Add a new version (rotation)
79
+ echo -n "N3wS3cur3P@ss!" | gcloud secrets versions add db-password --data-file=-
80
+
81
+ # List all secrets
82
+ gcloud secrets list --format="table(name, createTime, labels)"
83
+
84
+ # List versions of a secret
85
+ gcloud secrets versions list db-password --format="table(name, state, createTime)"
86
+
87
+ # Disable a version (makes it inaccessible but recoverable)
88
+ gcloud secrets versions disable 1 --secret=db-password
89
+
90
+ # Enable a disabled version
91
+ gcloud secrets versions enable 1 --secret=db-password
92
+
93
+ # Destroy a version (permanent)
94
+ gcloud secrets versions destroy 1 --secret=db-password
95
+
96
+ # Delete the entire secret
97
+ gcloud secrets delete db-password
98
+
99
+ # Set expiration on a secret
100
+ gcloud secrets update db-password \
101
+ --expire-time="2026-06-01T00:00:00Z"
102
+
103
+ # Set TTL-based expiration
104
+ gcloud secrets update temp-token \
105
+ --ttl="2592000s" # 30 days
106
+
107
+ # Update labels
108
+ gcloud secrets update db-password \
109
+ --update-labels="rotation=enabled,last-rotated=2025-01-15"
110
+
111
+ # Add version aliases
112
+ gcloud secrets versions update 5 --secret=db-password --set-aliases="production"
113
+ ```
114
+
115
+ ## IAM Bindings
116
+
117
+ ```bash
118
+ # Grant secret accessor role to a service account
119
+ gcloud secrets add-iam-policy-binding db-password \
120
+ --member="serviceAccount:myapp-sa@my-project.iam.gserviceaccount.com" \
121
+ --role="roles/secretmanager.secretAccessor"
122
+
123
+ # Grant access to a specific secret version
124
+ gcloud secrets add-iam-policy-binding db-password \
125
+ --member="serviceAccount:myapp-sa@my-project.iam.gserviceaccount.com" \
126
+ --role="roles/secretmanager.secretVersionAccessor" \
127
+ --condition='expression=resource.name.endsWith("versions/latest"),title=latest-only'
128
+
129
+ # Grant admin to security team
130
+ gcloud secrets add-iam-policy-binding db-password \
131
+ --member="group:security-team@example.com" \
132
+ --role="roles/secretmanager.admin"
133
+
134
+ # View IAM policy for a secret
135
+ gcloud secrets get-iam-policy db-password
136
+
137
+ # Remove access
138
+ gcloud secrets remove-iam-policy-binding db-password \
139
+ --member="serviceAccount:old-sa@my-project.iam.gserviceaccount.com" \
140
+ --role="roles/secretmanager.secretAccessor"
141
+
142
+ # Project-level IAM for all secrets
143
+ gcloud projects add-iam-policy-binding my-project \
144
+ --member="serviceAccount:myapp-sa@my-project.iam.gserviceaccount.com" \
145
+ --role="roles/secretmanager.secretAccessor" \
146
+ --condition='expression=resource.name.startsWith("projects/my-project/secrets/myapp-"),title=myapp-secrets-only'
147
+ ```
148
+
149
+ ## Workload Identity for GKE
150
+
151
+ ```bash
152
+ # Enable Workload Identity on cluster (if not already)
153
+ gcloud container clusters update my-cluster \
154
+ --zone us-central1-a \
155
+ --workload-pool=my-project.svc.id.goog
156
+
157
+ # Create GCP service account for the workload
158
+ gcloud iam service-accounts create myapp-gke-sa \
159
+ --display-name="MyApp GKE Service Account"
160
+
161
+ # Grant secret accessor role
162
+ gcloud secrets add-iam-policy-binding db-password \
163
+ --member="serviceAccount:myapp-gke-sa@my-project.iam.gserviceaccount.com" \
164
+ --role="roles/secretmanager.secretAccessor"
165
+
166
+ # Bind Kubernetes SA to GCP SA
167
+ gcloud iam service-accounts add-iam-policy-binding \
168
+ myapp-gke-sa@my-project.iam.gserviceaccount.com \
169
+ --role="roles/iam.workloadIdentityUser" \
170
+ --member="serviceAccount:my-project.svc.id.goog[production/myapp-sa]"
171
+ ```
172
+
173
+ ### Kubernetes Manifests
174
+
175
+ ```yaml
176
+ # Kubernetes service account annotated with GCP SA
177
+ apiVersion: v1
178
+ kind: ServiceAccount
179
+ metadata:
180
+ name: myapp-sa
181
+ namespace: production
182
+ annotations:
183
+ iam.gke.io/gcp-service-account: "myapp-gke-sa@my-project.iam.gserviceaccount.com"
184
+ ---
185
+ # Secrets Store CSI Driver for GCP
186
+ apiVersion: secrets-store.csi.x-k8s.io/v1
187
+ kind: SecretProviderClass
188
+ metadata:
189
+ name: gcp-secrets
190
+ namespace: production
191
+ spec:
192
+ provider: gcp
193
+ parameters:
194
+ secrets: |
195
+ - resourceName: "projects/my-project/secrets/db-password/versions/latest"
196
+ path: "db-password"
197
+ - resourceName: "projects/my-project/secrets/db-credentials/versions/latest"
198
+ path: "db-credentials"
199
+ - resourceName: "projects/my-project/secrets/api-key/versions/latest"
200
+ path: "api-key"
201
+ secretObjects:
202
+ - secretName: myapp-secrets
203
+ type: Opaque
204
+ data:
205
+ - objectName: db-password
206
+ key: DB_PASSWORD
207
+ - objectName: api-key
208
+ key: API_KEY
209
+ ---
210
+ # Deployment using the secrets
211
+ apiVersion: apps/v1
212
+ kind: Deployment
213
+ metadata:
214
+ name: myapp
215
+ namespace: production
216
+ spec:
217
+ replicas: 3
218
+ selector:
219
+ matchLabels:
220
+ app: myapp
221
+ template:
222
+ metadata:
223
+ labels:
224
+ app: myapp
225
+ spec:
226
+ serviceAccountName: myapp-sa
227
+ containers:
228
+ - name: myapp
229
+ image: gcr.io/my-project/myapp:v1.0.0
230
+ env:
231
+ - name: DB_PASSWORD
232
+ valueFrom:
233
+ secretKeyRef:
234
+ name: myapp-secrets
235
+ key: DB_PASSWORD
236
+ volumeMounts:
237
+ - name: secrets
238
+ mountPath: "/var/secrets"
239
+ readOnly: true
240
+ volumes:
241
+ - name: secrets
242
+ csi:
243
+ driver: secrets-store.csi.k8s.io
244
+ readOnly: true
245
+ volumeAttributes:
246
+ secretProviderClass: "gcp-secrets"
247
+ ```
248
+
249
+ ## Application SDK Examples
250
+
251
+ ### Python
252
+
253
+ ```python
254
+ from google.cloud import secretmanager
255
+ from google.api_core import exceptions
256
+ import json
257
+
258
+ def get_secret(project_id: str, secret_id: str, version: str = "latest") -> str:
259
+ """Access a secret version from GCP Secret Manager."""
260
+ client = secretmanager.SecretManagerServiceClient()
261
+ name = f"projects/{project_id}/secrets/{secret_id}/versions/{version}"
262
+
263
+ try:
264
+ response = client.access_secret_version(request={"name": name})
265
+ return response.payload.data.decode("UTF-8")
266
+ except exceptions.NotFound:
267
+ raise ValueError(f"Secret {secret_id} version {version} not found")
268
+ except exceptions.PermissionDenied:
269
+ raise PermissionError(f"No access to secret {secret_id}")
270
+
271
+ def get_json_secret(project_id: str, secret_id: str) -> dict:
272
+ """Access and parse a JSON secret."""
273
+ raw = get_secret(project_id, secret_id)
274
+ return json.loads(raw)
275
+
276
+ def create_secret(project_id: str, secret_id: str, value: str, labels: dict = None) -> str:
277
+ """Create a new secret with an initial version."""
278
+ client = secretmanager.SecretManagerServiceClient()
279
+ parent = f"projects/{project_id}"
280
+
281
+ secret_config = {
282
+ "replication": {"automatic": {}},
283
+ }
284
+ if labels:
285
+ secret_config["labels"] = labels
286
+
287
+ secret = client.create_secret(
288
+ request={"parent": parent, "secret_id": secret_id, "secret": secret_config}
289
+ )
290
+
291
+ client.add_secret_version(
292
+ request={"parent": secret.name, "payload": {"data": value.encode("UTF-8")}}
293
+ )
294
+ return secret.name
295
+
296
+ def rotate_secret(project_id: str, secret_id: str, new_value: str) -> str:
297
+ """Add a new version to rotate the secret."""
298
+ client = secretmanager.SecretManagerServiceClient()
299
+ parent = f"projects/{project_id}/secrets/{secret_id}"
300
+
301
+ version = client.add_secret_version(
302
+ request={"parent": parent, "payload": {"data": new_value.encode("UTF-8")}}
303
+ )
304
+ return version.name
305
+
306
+ def list_secrets(project_id: str, filter_str: str = "") -> list:
307
+ """List all secrets in a project."""
308
+ client = secretmanager.SecretManagerServiceClient()
309
+ parent = f"projects/{project_id}"
310
+
311
+ secrets = []
312
+ for secret in client.list_secrets(request={"parent": parent, "filter": filter_str}):
313
+ secrets.append({
314
+ "name": secret.name.split("/")[-1],
315
+ "created": secret.create_time.isoformat(),
316
+ "labels": dict(secret.labels),
317
+ })
318
+ return secrets
319
+
320
+ # Usage
321
+ creds = get_json_secret("my-project", "db-credentials")
322
+ connection_string = (
323
+ f"postgresql://{creds['username']}:{creds['password']}"
324
+ f"@{creds['host']}:{creds['port']}/mydb"
325
+ )
326
+ ```
327
+
328
+ ### Go
329
+
330
+ ```go
331
+ package main
332
+
333
+ import (
334
+ "context"
335
+ "fmt"
336
+ "log"
337
+
338
+ secretmanager "cloud.google.com/go/secretmanager/apiv1"
339
+ secretmanagerpb "cloud.google.com/go/secretmanager/apiv1/secretmanagerpb"
340
+ )
341
+
342
+ func getSecret(projectID, secretID, version string) (string, error) {
343
+ ctx := context.Background()
344
+ client, err := secretmanager.NewClient(ctx)
345
+ if err != nil {
346
+ return "", fmt.Errorf("failed to create client: %w", err)
347
+ }
348
+ defer client.Close()
349
+
350
+ name := fmt.Sprintf("projects/%s/secrets/%s/versions/%s", projectID, secretID, version)
351
+ result, err := client.AccessSecretVersion(ctx, &secretmanagerpb.AccessSecretVersionRequest{
352
+ Name: name,
353
+ })
354
+ if err != nil {
355
+ return "", fmt.Errorf("failed to access secret: %w", err)
356
+ }
357
+
358
+ return string(result.Payload.Data), nil
359
+ }
360
+
361
+ func main() {
362
+ secret, err := getSecret("my-project", "db-password", "latest")
363
+ if err != nil {
364
+ log.Fatalf("Error: %v", err)
365
+ }
366
+ fmt.Printf("Secret: %s\n", secret)
367
+ }
368
+ ```
369
+
370
+ ### Node.js
371
+
372
+ ```javascript
373
+ const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
374
+
375
+ const client = new SecretManagerServiceClient();
376
+
377
+ async function getSecret(projectId, secretId, version = 'latest') {
378
+ const name = `projects/${projectId}/secrets/${secretId}/versions/${version}`;
379
+ const [response] = await client.accessSecretVersion({ name });
380
+ return response.payload.data.toString('utf8');
381
+ }
382
+
383
+ async function main() {
384
+ const password = await getSecret('my-project', 'db-password');
385
+ console.log(`Secret retrieved, length: ${password.length}`);
386
+ }
387
+
388
+ main().catch(console.error);
389
+ ```
390
+
391
+
392
+ ## Contents
393
+
394
+ - [Secret Rotation with Cloud Functions](references/details.md)
395
+ - [Terraform Configuration](references/details.md)
396
+ - [Troubleshooting](references/details.md)
397
+ - [Best Practices](references/details.md)
398
+ - [Related Skills](references/details.md)
399
+
400
+ ## When to Use This Skill
401
+
402
+ Use this skill when:
403
+ - Managing secrets in GCP environments
404
+ - Integrating secrets with GKE workloads via Workload Identity
405
+ - Storing API keys, database credentials, or TLS certificates
406
+ - Implementing secret versioning and rotation
407
+ - Meeting compliance requirements for centralized secret management
408
+
409
+ ## Limitations
410
+
411
+ - Apply guidance only within authorized scope; test destructive steps in non-production first.
412
+ - Docs-only import: upstream scripts and templates not bundled.
413
+
414
+ ### Example
415
+
416
+ ```bash
417
+ # Read-only first: inventory before any active step.
418
+ which <tool> && <tool> --help | head -n 20
419
+ ```
420
+
421
+ > Adapted from [BagelHole/DevOps-Security-Agent-Skills](https://github.com/BagelHole/DevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.
@@ -0,0 +1,131 @@
1
+ # Details (moved from SKILL.md)
2
+
3
+ > Extended reference content for `gcp-secret-manager`, kept under `references/` so the entrypoint stays within the audit budget.
4
+
5
+ ## Secret Rotation with Cloud Functions
6
+
7
+ ```python
8
+ """cloud_function_rotation.py - Triggered by Pub/Sub on secret rotation events."""
9
+
10
+ import functions_framework
11
+ from google.cloud import secretmanager
12
+ import secrets
13
+ import string
14
+
15
+ @functions_framework.cloud_event
16
+ def rotate_secret(cloud_event):
17
+ """Handle secret rotation events from Pub/Sub."""
18
+ data = cloud_event.data
19
+ secret_name = data.get("name", "")
20
+
21
+ if "db-password" not in secret_name:
22
+ print(f"Skipping non-DB secret: {secret_name}")
23
+ return
24
+
25
+ client = secretmanager.SecretManagerServiceClient()
26
+
27
+ alphabet = string.ascii_letters + string.digits + "!@#$%^&*"
28
+ new_password = ''.join(secrets.choice(alphabet) for _ in range(32))
29
+
30
+ parent = "/".join(secret_name.split("/")[:4])
31
+ client.add_secret_version(
32
+ request={
33
+ "parent": parent,
34
+ "payload": {"data": new_password.encode("UTF-8")},
35
+ }
36
+ )
37
+ print(f"Rotated secret: {parent}")
38
+ ```
39
+
40
+ ### Rotation Schedule with Cloud Scheduler
41
+
42
+ ```bash
43
+ # Create a Pub/Sub topic for rotation events
44
+ gcloud pubsub topics create secret-rotation
45
+
46
+ # Configure secret to publish rotation events
47
+ gcloud secrets update db-password \
48
+ --add-topics="projects/my-project/topics/secret-rotation" \
49
+ --event-types="SECRET_ROTATE"
50
+
51
+ # Set up rotation schedule
52
+ gcloud secrets update db-password \
53
+ --next-rotation-time="2025-04-01T00:00:00Z" \
54
+ --rotation-period="2592000s" # 30 days
55
+ ```
56
+
57
+
58
+ ## Terraform Configuration
59
+
60
+ ```hcl
61
+ resource "google_secret_manager_secret" "db_password" {
62
+ project = var.project_id
63
+ secret_id = "db-password"
64
+
65
+ replication {
66
+ auto {}
67
+ }
68
+
69
+ labels = {
70
+ env = "production"
71
+ team = "platform"
72
+ }
73
+
74
+ rotation {
75
+ next_rotation_time = "2025-04-01T00:00:00Z"
76
+ rotation_period = "2592000s"
77
+ }
78
+
79
+ topics {
80
+ name = google_pubsub_topic.secret_rotation.id
81
+ }
82
+ }
83
+
84
+ resource "google_secret_manager_secret_version" "db_password" {
85
+ secret = google_secret_manager_secret.db_password.id
86
+ secret_data = var.db_password
87
+ }
88
+
89
+ resource "google_secret_manager_secret_iam_member" "app_accessor" {
90
+ project = var.project_id
91
+ secret_id = google_secret_manager_secret.db_password.secret_id
92
+ role = "roles/secretmanager.secretAccessor"
93
+ member = "serviceAccount:${google_service_account.app.email}"
94
+ }
95
+ ```
96
+
97
+
98
+ ## Troubleshooting
99
+
100
+ | Problem | Cause | Solution |
101
+ |---------|-------|----------|
102
+ | "Secret Manager API not enabled" | API not activated in project | Run `gcloud services enable secretmanager.googleapis.com` |
103
+ | "Permission denied" on access | Missing `secretAccessor` role | Grant `roles/secretmanager.secretAccessor` on the specific secret |
104
+ | Workload Identity not working | K8s SA not bound to GCP SA | Verify annotation on K8s SA; check IAM binding with `workloadIdentityUser` |
105
+ | "Secret version is in DISABLED state" | Version was disabled | Enable with `gcloud secrets versions enable VERSION --secret=SECRET` |
106
+ | High latency on secret access | No client-side caching | Cache secrets in memory with TTL; use CSI driver for GKE |
107
+ | CMEK decrypt fails | KMS key permissions missing | Grant `roles/cloudkms.cryptoKeyEncrypterDecrypter` to Secret Manager SA |
108
+ | Rotation function not triggered | Pub/Sub topic not configured | Verify topic is attached to secret; check Cloud Function subscription |
109
+
110
+
111
+ ## Best Practices
112
+
113
+ - Use Workload Identity for GKE instead of exported service account keys
114
+ - Implement IAM least-privilege at the individual secret level, not project level
115
+ - Enable audit logging for all secret access (Cloud Audit Logs)
116
+ - Use secret versions for safe rollback during rotation issues
117
+ - Set expiration dates or TTLs on temporary secrets
118
+ - Integrate with Cloud KMS for customer-managed encryption keys
119
+ - Use labels consistently for organization and automation
120
+ - Monitor secret access patterns with Cloud Monitoring
121
+ - Implement rotation schedules for all long-lived credentials
122
+ - Use conditional IAM bindings to restrict access by resource name pattern
123
+
124
+
125
+ ## Related Skills
126
+
127
+ - hashicorp-vault (`hashicorp-vault`) - Multi-cloud secrets
128
+ - gcp-gke (`gcp-gke`) - GKE integration
129
+ - aws-secrets-manager (`aws-secrets-manager`) - AWS secret management
130
+ - azure-keyvault (`azure-keyvault`) - Azure secret management
131
+