@raishin/vanguard-frontier-agentic 1.2.0 → 1.3.0

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 (442) hide show
  1. package/README.md +231 -113
  2. package/agents/AGENTS.md +263 -21
  3. package/agents/argocd/README.md +46 -0
  4. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/AGENT.md +55 -0
  5. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/claude-code.agent.md +35 -0
  6. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/codex.toml +29 -0
  7. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/copilot.agent.md +35 -0
  8. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/cursor.agent.md +35 -0
  9. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/gemini.agent.md +35 -0
  10. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/kiro-cli.agent.json +5 -0
  11. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/harnesses/kiro-ide.agent.md +35 -0
  12. package/agents/argocd/argo-rollouts-progressive-delivery-review-agent/metadata.json +31 -0
  13. package/agents/argocd/argocd-gitops-review-agent/AGENT.md +55 -0
  14. package/agents/argocd/argocd-gitops-review-agent/harnesses/claude-code.agent.md +38 -0
  15. package/agents/argocd/argocd-gitops-review-agent/harnesses/codex.toml +32 -0
  16. package/agents/argocd/argocd-gitops-review-agent/harnesses/copilot.agent.md +38 -0
  17. package/agents/argocd/argocd-gitops-review-agent/harnesses/cursor.agent.md +38 -0
  18. package/agents/argocd/argocd-gitops-review-agent/harnesses/gemini.agent.md +38 -0
  19. package/agents/argocd/argocd-gitops-review-agent/harnesses/kiro-cli.agent.json +5 -0
  20. package/agents/argocd/argocd-gitops-review-agent/harnesses/kiro-ide.agent.md +38 -0
  21. package/agents/argocd/argocd-gitops-review-agent/metadata.json +30 -0
  22. package/agents/aws/aws-live-deployment-guarded-operator-agent/metadata.json +10 -1
  23. package/agents/aws/aws-live-ecs-rollout-guard-agent/metadata.json +10 -1
  24. package/agents/aws/aws-live-iac-change-guard-agent/metadata.json +10 -1
  25. package/agents/aws/aws-live-pipeline-approval-operator-agent/metadata.json +10 -1
  26. package/agents/aws/aws-live-serverless-release-guard-agent/metadata.json +10 -1
  27. package/agents/aws/aws-private-ca-issuer-review-agent/AGENT.md +53 -0
  28. package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/claude-code.agent.md +36 -0
  29. package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/codex.toml +27 -0
  30. package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/copilot.agent.md +36 -0
  31. package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/cursor.agent.md +36 -0
  32. package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/gemini.agent.md +36 -0
  33. package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/kiro-cli.agent.json +5 -0
  34. package/agents/aws/aws-private-ca-issuer-review-agent/harnesses/kiro-ide.agent.md +36 -0
  35. package/agents/aws/aws-private-ca-issuer-review-agent/metadata.json +37 -0
  36. package/agents/azure/README.md +45 -0
  37. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/AGENT.md +53 -0
  38. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/claude-code.agent.md +36 -0
  39. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/codex.toml +27 -0
  40. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/copilot.agent.md +36 -0
  41. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/cursor.agent.md +36 -0
  42. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/gemini.agent.md +36 -0
  43. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/kiro-cli.agent.json +5 -0
  44. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/harnesses/kiro-ide.agent.md +36 -0
  45. package/agents/azure/azure-keyvault-certificate-issuer-review-agent/metadata.json +36 -0
  46. package/agents/azure/azure-live-aks-rollout-guard-agent/metadata.json +10 -1
  47. package/agents/azure/azure-live-app-service-slot-swap-guard-agent/metadata.json +10 -1
  48. package/agents/azure/azure-live-arm-deployment-stack-guard-agent/metadata.json +10 -1
  49. package/agents/azure/azure-live-cost-budget-action-guard-agent/metadata.json +10 -1
  50. package/agents/azure/azure-live-entra-role-assignment-guard-agent/AGENT.md +59 -0
  51. package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/claude-code.agent.md +42 -0
  52. package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/codex.toml +34 -0
  53. package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/copilot.agent.md +55 -0
  54. package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/cursor.agent.md +44 -0
  55. package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/gemini.agent.md +43 -0
  56. package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  57. package/agents/azure/azure-live-entra-role-assignment-guard-agent/harnesses/kiro-ide.agent.md +42 -0
  58. package/agents/azure/azure-live-entra-role-assignment-guard-agent/metadata.json +37 -0
  59. package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/metadata.json +10 -1
  60. package/agents/azure/azure-live-pim-jit-activation-guard-agent/metadata.json +11 -2
  61. package/agents/backstage/README.md +36 -0
  62. package/agents/backstage/backstage-scaffolder-template-review-agent/AGENT.md +54 -0
  63. package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/claude-code.agent.md +37 -0
  64. package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/codex.toml +31 -0
  65. package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/copilot.agent.md +37 -0
  66. package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/cursor.agent.md +37 -0
  67. package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/gemini.agent.md +37 -0
  68. package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/kiro-cli.agent.json +5 -0
  69. package/agents/backstage/backstage-scaffolder-template-review-agent/harnesses/kiro-ide.agent.md +37 -0
  70. package/agents/backstage/backstage-scaffolder-template-review-agent/metadata.json +30 -0
  71. package/agents/cert-manager/README.md +46 -0
  72. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/AGENT.md +55 -0
  73. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/claude-code.agent.md +35 -0
  74. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/codex.toml +29 -0
  75. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/copilot.agent.md +35 -0
  76. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/cursor.agent.md +35 -0
  77. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/gemini.agent.md +35 -0
  78. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/kiro-cli.agent.json +5 -0
  79. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/harnesses/kiro-ide.agent.md +35 -0
  80. package/agents/cert-manager/cert-manager-issuer-trust-review-agent/metadata.json +31 -0
  81. package/agents/cilium/README.md +46 -0
  82. package/agents/cilium/cilium-network-policy-review-agent/AGENT.md +55 -0
  83. package/agents/cilium/cilium-network-policy-review-agent/harnesses/claude-code.agent.md +38 -0
  84. package/agents/cilium/cilium-network-policy-review-agent/harnesses/codex.toml +32 -0
  85. package/agents/cilium/cilium-network-policy-review-agent/harnesses/copilot.agent.md +38 -0
  86. package/agents/cilium/cilium-network-policy-review-agent/harnesses/cursor.agent.md +38 -0
  87. package/agents/cilium/cilium-network-policy-review-agent/harnesses/gemini.agent.md +38 -0
  88. package/agents/cilium/cilium-network-policy-review-agent/harnesses/kiro-cli.agent.json +5 -0
  89. package/agents/cilium/cilium-network-policy-review-agent/harnesses/kiro-ide.agent.md +38 -0
  90. package/agents/cilium/cilium-network-policy-review-agent/metadata.json +37 -0
  91. package/agents/falco/README.md +36 -0
  92. package/agents/falco/falco-runtime-threat-rules-review-agent/AGENT.md +49 -0
  93. package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/claude-code.agent.md +33 -0
  94. package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/codex.toml +31 -0
  95. package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/copilot.agent.md +33 -0
  96. package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/cursor.agent.md +33 -0
  97. package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/gemini.agent.md +33 -0
  98. package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/kiro-cli.agent.json +5 -0
  99. package/agents/falco/falco-runtime-threat-rules-review-agent/harnesses/kiro-ide.agent.md +33 -0
  100. package/agents/falco/falco-runtime-threat-rules-review-agent/metadata.json +31 -0
  101. package/agents/finops/README.md +27 -0
  102. package/agents/finops/finops-cloud-price-advisor-agent/metadata.json +10 -1
  103. package/agents/fluxcd/README.md +39 -0
  104. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/AGENT.md +55 -0
  105. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/claude-code.agent.md +38 -0
  106. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/codex.toml +32 -0
  107. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/copilot.agent.md +38 -0
  108. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/cursor.agent.md +38 -0
  109. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/gemini.agent.md +38 -0
  110. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/kiro-cli.agent.json +5 -0
  111. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/harnesses/kiro-ide.agent.md +38 -0
  112. package/agents/fluxcd/fluxcd-kustomization-helmrelease-review-agent/metadata.json +31 -0
  113. package/agents/istio/README.md +46 -0
  114. package/agents/istio/istio-ambient-mesh-review-agent/AGENT.md +55 -0
  115. package/agents/istio/istio-ambient-mesh-review-agent/harnesses/claude-code.agent.md +38 -0
  116. package/agents/istio/istio-ambient-mesh-review-agent/harnesses/codex.toml +32 -0
  117. package/agents/istio/istio-ambient-mesh-review-agent/harnesses/copilot.agent.md +38 -0
  118. package/agents/istio/istio-ambient-mesh-review-agent/harnesses/cursor.agent.md +38 -0
  119. package/agents/istio/istio-ambient-mesh-review-agent/harnesses/gemini.agent.md +38 -0
  120. package/agents/istio/istio-ambient-mesh-review-agent/harnesses/kiro-cli.agent.json +5 -0
  121. package/agents/istio/istio-ambient-mesh-review-agent/harnesses/kiro-ide.agent.md +38 -0
  122. package/agents/istio/istio-ambient-mesh-review-agent/metadata.json +30 -0
  123. package/agents/kubernetes/README.md +143 -0
  124. package/agents/kubernetes/external-secrets-operator-review-agent/AGENT.md +49 -0
  125. package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/claude-code.agent.md +33 -0
  126. package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/codex.toml +31 -0
  127. package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/copilot.agent.md +33 -0
  128. package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/cursor.agent.md +33 -0
  129. package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/gemini.agent.md +33 -0
  130. package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/kiro-cli.agent.json +5 -0
  131. package/agents/kubernetes/external-secrets-operator-review-agent/harnesses/kiro-ide.agent.md +33 -0
  132. package/agents/kubernetes/external-secrets-operator-review-agent/metadata.json +31 -0
  133. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/AGENT.md +56 -0
  134. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/claude-code.agent.md +39 -0
  135. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/codex.toml +34 -0
  136. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/copilot.agent.md +39 -0
  137. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/cursor.agent.md +39 -0
  138. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/gemini.agent.md +39 -0
  139. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/kiro-cli.agent.json +5 -0
  140. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/harnesses/kiro-ide.agent.md +39 -0
  141. package/agents/kubernetes/kubecost-chargeback-allocation-review-agent/metadata.json +31 -0
  142. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/AGENT.md +59 -0
  143. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/claude-code.agent.md +42 -0
  144. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/codex.toml +33 -0
  145. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/copilot.agent.md +42 -0
  146. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/cursor.agent.md +42 -0
  147. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/gemini.agent.md +42 -0
  148. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  149. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/kiro-ide.agent.md +42 -0
  150. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/metadata.json +36 -0
  151. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/AGENT.md +59 -0
  152. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/claude-code.agent.md +42 -0
  153. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/codex.toml +33 -0
  154. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/copilot.agent.md +42 -0
  155. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/cursor.agent.md +42 -0
  156. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/gemini.agent.md +42 -0
  157. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  158. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/kiro-ide.agent.md +42 -0
  159. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/metadata.json +36 -0
  160. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/AGENT.md +59 -0
  161. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/claude-code.agent.md +42 -0
  162. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/codex.toml +33 -0
  163. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/copilot.agent.md +42 -0
  164. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/cursor.agent.md +42 -0
  165. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/gemini.agent.md +42 -0
  166. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  167. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/kiro-ide.agent.md +42 -0
  168. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/metadata.json +36 -0
  169. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/AGENT.md +59 -0
  170. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/claude-code.agent.md +42 -0
  171. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/codex.toml +33 -0
  172. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/copilot.agent.md +42 -0
  173. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/cursor.agent.md +42 -0
  174. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/gemini.agent.md +42 -0
  175. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  176. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/kiro-ide.agent.md +42 -0
  177. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/metadata.json +36 -0
  178. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/AGENT.md +59 -0
  179. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/claude-code.agent.md +42 -0
  180. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/codex.toml +34 -0
  181. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/copilot.agent.md +55 -0
  182. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/cursor.agent.md +44 -0
  183. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/gemini.agent.md +43 -0
  184. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  185. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/kiro-ide.agent.md +42 -0
  186. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/metadata.json +36 -0
  187. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/AGENT.md +62 -0
  188. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/claude-code.agent.md +43 -0
  189. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/codex.toml +35 -0
  190. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/copilot.agent.md +43 -0
  191. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/cursor.agent.md +43 -0
  192. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/gemini.agent.md +43 -0
  193. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  194. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/kiro-ide.agent.md +43 -0
  195. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/metadata.json +37 -0
  196. package/agents/kubernetes/kubernetes-maestro-agent/AGENT.md +55 -0
  197. package/agents/kubernetes/kubernetes-maestro-agent/harnesses/claude-code.agent.md +38 -0
  198. package/agents/kubernetes/kubernetes-maestro-agent/harnesses/codex.toml +34 -0
  199. package/agents/kubernetes/kubernetes-maestro-agent/harnesses/copilot.agent.md +38 -0
  200. package/agents/kubernetes/kubernetes-maestro-agent/harnesses/cursor.agent.md +38 -0
  201. package/agents/kubernetes/kubernetes-maestro-agent/harnesses/gemini.agent.md +38 -0
  202. package/agents/kubernetes/kubernetes-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
  203. package/agents/kubernetes/kubernetes-maestro-agent/harnesses/kiro-ide.agent.md +38 -0
  204. package/agents/kubernetes/kubernetes-maestro-agent/metadata.json +40 -0
  205. package/agents/kubernetes/kubernetes-pod-spec-review-agent/AGENT.md +54 -0
  206. package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/claude-code.agent.md +37 -0
  207. package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/codex.toml +27 -0
  208. package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/copilot.agent.md +37 -0
  209. package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/cursor.agent.md +37 -0
  210. package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/gemini.agent.md +37 -0
  211. package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/kiro-cli.agent.json +5 -0
  212. package/agents/kubernetes/kubernetes-pod-spec-review-agent/harnesses/kiro-ide.agent.md +37 -0
  213. package/agents/kubernetes/kubernetes-pod-spec-review-agent/metadata.json +38 -0
  214. package/agents/kubernetes/kubernetes-psa-review-agent/AGENT.md +55 -0
  215. package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/claude-code.agent.md +36 -0
  216. package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/codex.toml +29 -0
  217. package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/copilot.agent.md +36 -0
  218. package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/cursor.agent.md +36 -0
  219. package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/gemini.agent.md +36 -0
  220. package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/kiro-cli.agent.json +5 -0
  221. package/agents/kubernetes/kubernetes-psa-review-agent/harnesses/kiro-ide.agent.md +36 -0
  222. package/agents/kubernetes/kubernetes-psa-review-agent/metadata.json +37 -0
  223. package/agents/kubernetes/kubernetes-rbac-review-agent/AGENT.md +55 -0
  224. package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/claude-code.agent.md +38 -0
  225. package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/codex.toml +32 -0
  226. package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/copilot.agent.md +51 -0
  227. package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/cursor.agent.md +40 -0
  228. package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/gemini.agent.md +39 -0
  229. package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/kiro-cli.agent.json +5 -0
  230. package/agents/kubernetes/kubernetes-rbac-review-agent/harnesses/kiro-ide.agent.md +38 -0
  231. package/agents/kubernetes/kubernetes-rbac-review-agent/metadata.json +36 -0
  232. package/agents/kubernetes/kubernetes-workload-identity-review-agent/AGENT.md +55 -0
  233. package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/claude-code.agent.md +37 -0
  234. package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/codex.toml +29 -0
  235. package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/copilot.agent.md +37 -0
  236. package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/cursor.agent.md +37 -0
  237. package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/gemini.agent.md +37 -0
  238. package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/kiro-cli.agent.json +5 -0
  239. package/agents/kubernetes/kubernetes-workload-identity-review-agent/harnesses/kiro-ide.agent.md +37 -0
  240. package/agents/kubernetes/kubernetes-workload-identity-review-agent/metadata.json +37 -0
  241. package/agents/kyverno/README.md +46 -0
  242. package/agents/kyverno/kyverno-policy-review-agent/AGENT.md +55 -0
  243. package/agents/kyverno/kyverno-policy-review-agent/harnesses/claude-code.agent.md +38 -0
  244. package/agents/kyverno/kyverno-policy-review-agent/harnesses/codex.toml +32 -0
  245. package/agents/kyverno/kyverno-policy-review-agent/harnesses/copilot.agent.md +38 -0
  246. package/agents/kyverno/kyverno-policy-review-agent/harnesses/cursor.agent.md +38 -0
  247. package/agents/kyverno/kyverno-policy-review-agent/harnesses/gemini.agent.md +38 -0
  248. package/agents/kyverno/kyverno-policy-review-agent/harnesses/kiro-cli.agent.json +5 -0
  249. package/agents/kyverno/kyverno-policy-review-agent/harnesses/kiro-ide.agent.md +38 -0
  250. package/agents/kyverno/kyverno-policy-review-agent/metadata.json +30 -0
  251. package/agents/oci/README.md +45 -0
  252. package/agents/oci/oci-certificates-issuer-review-agent/AGENT.md +53 -0
  253. package/agents/oci/oci-certificates-issuer-review-agent/harnesses/claude-code.agent.md +36 -0
  254. package/agents/oci/oci-certificates-issuer-review-agent/harnesses/codex.toml +27 -0
  255. package/agents/oci/oci-certificates-issuer-review-agent/harnesses/copilot.agent.md +36 -0
  256. package/agents/oci/oci-certificates-issuer-review-agent/harnesses/cursor.agent.md +36 -0
  257. package/agents/oci/oci-certificates-issuer-review-agent/harnesses/gemini.agent.md +36 -0
  258. package/agents/oci/oci-certificates-issuer-review-agent/harnesses/kiro-cli.agent.json +5 -0
  259. package/agents/oci/oci-certificates-issuer-review-agent/harnesses/kiro-ide.agent.md +36 -0
  260. package/agents/oci/oci-certificates-issuer-review-agent/metadata.json +36 -0
  261. package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/metadata.json +11 -2
  262. package/agents/oci/oci-live-cost-budget-runaway-guard-agent/metadata.json +11 -2
  263. package/agents/oci/oci-live-iam-policy-compartment-guard-agent/metadata.json +10 -1
  264. package/agents/oci/oci-live-network-security-rule-guard-agent/AGENT.md +59 -0
  265. package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/claude-code.agent.md +42 -0
  266. package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/codex.toml +34 -0
  267. package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/copilot.agent.md +55 -0
  268. package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/cursor.agent.md +44 -0
  269. package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/gemini.agent.md +43 -0
  270. package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  271. package/agents/oci/oci-live-network-security-rule-guard-agent/harnesses/kiro-ide.agent.md +42 -0
  272. package/agents/oci/oci-live-network-security-rule-guard-agent/metadata.json +37 -0
  273. package/agents/oci/oci-live-oke-rollout-guard-agent/metadata.json +11 -2
  274. package/agents/oci/oci-live-resource-manager-stack-guard-agent/metadata.json +10 -1
  275. package/agents/oci/oci-live-vault-key-destruction-guard-agent/metadata.json +10 -1
  276. package/agents/opentelemetry/README.md +37 -0
  277. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/AGENT.md +55 -0
  278. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/claude-code.agent.md +38 -0
  279. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/codex.toml +32 -0
  280. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/copilot.agent.md +38 -0
  281. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/cursor.agent.md +38 -0
  282. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/gemini.agent.md +38 -0
  283. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/kiro-cli.agent.json +5 -0
  284. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/harnesses/kiro-ide.agent.md +38 -0
  285. package/agents/opentelemetry/opentelemetry-collector-config-review-agent/metadata.json +37 -0
  286. package/agents/prometheus/README.md +36 -0
  287. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/AGENT.md +48 -0
  288. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/claude-code.agent.md +32 -0
  289. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/codex.toml +31 -0
  290. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/copilot.agent.md +32 -0
  291. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/cursor.agent.md +32 -0
  292. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/gemini.agent.md +32 -0
  293. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/kiro-cli.agent.json +5 -0
  294. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/harnesses/kiro-ide.agent.md +32 -0
  295. package/agents/prometheus/prometheus-alerting-cardinality-review-agent/metadata.json +31 -0
  296. package/agents/sigstore/README.md +38 -0
  297. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/AGENT.md +55 -0
  298. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/claude-code.agent.md +35 -0
  299. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/codex.toml +29 -0
  300. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/copilot.agent.md +35 -0
  301. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/cursor.agent.md +35 -0
  302. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/gemini.agent.md +35 -0
  303. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/kiro-cli.agent.json +5 -0
  304. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/harnesses/kiro-ide.agent.md +35 -0
  305. package/agents/sigstore/sigstore-cosign-supply-chain-review-agent/metadata.json +31 -0
  306. package/agents/terraform/README.md +29 -0
  307. package/agents/terraform/terraform-reviewer/harnesses/claude-code.agent.md +29 -0
  308. package/agents/terraform/terraform-reviewer/harnesses/codex.toml +29 -0
  309. package/agents/terraform/terraform-reviewer/harnesses/copilot.agent.md +42 -0
  310. package/agents/terraform/terraform-reviewer/harnesses/cursor.agent.md +31 -0
  311. package/agents/terraform/terraform-reviewer/harnesses/gemini.agent.md +30 -0
  312. package/agents/terraform/terraform-reviewer/harnesses/kiro-cli.agent.json +5 -0
  313. package/agents/terraform/terraform-reviewer/harnesses/kiro-ide.agent.md +29 -0
  314. package/agents/terraform/terraform-reviewer/metadata.json +10 -1
  315. package/agents/velero/README.md +41 -0
  316. package/assets/logos/vanguard-frontier-agentic-logo.png +0 -0
  317. package/catalog/agents.json +1452 -634
  318. package/catalog/install-roles.json +455 -0
  319. package/catalog/skill-manifest.json +757 -3
  320. package/catalog/skills.json +1298 -528
  321. package/package.json +11 -1
  322. package/scripts/export-marketplace-agents.mjs +100 -9
  323. package/scripts/update-catalog-new-agents.py +88 -0
  324. package/skills/argocd/README.md +30 -0
  325. package/skills/argocd/argo-rollouts-progressive-delivery-review/SKILL.md +40 -0
  326. package/skills/argocd/argo-rollouts-progressive-delivery-review/metadata.json +22 -0
  327. package/skills/argocd/argo-rollouts-progressive-delivery-review/references/workflow-and-output.md +248 -0
  328. package/skills/argocd/argocd-gitops-review/SKILL.md +43 -0
  329. package/skills/argocd/argocd-gitops-review/metadata.json +30 -0
  330. package/skills/argocd/argocd-gitops-review/references/mcp-and-evidence.md +53 -0
  331. package/skills/argocd/argocd-gitops-review/references/official-sources.md +32 -0
  332. package/skills/argocd/argocd-gitops-review/references/workflow-and-output.md +120 -0
  333. package/skills/aws/README.md +3 -1
  334. package/skills/aws/aws-maestro/references/workflow-and-output.md +2 -0
  335. package/skills/aws/aws-private-ca-issuer-review/SKILL.md +39 -0
  336. package/skills/aws/aws-private-ca-issuer-review/metadata.json +21 -0
  337. package/skills/aws/aws-private-ca-issuer-review/references/official-sources.md +22 -0
  338. package/skills/aws/aws-private-ca-issuer-review/references/safety-checklist.md +30 -0
  339. package/skills/aws/aws-private-ca-issuer-review/references/workflow-and-output.md +214 -0
  340. package/skills/azure/README.md +3 -1
  341. package/skills/azure/azure-keyvault-certificate-issuer-review/SKILL.md +37 -0
  342. package/skills/azure/azure-keyvault-certificate-issuer-review/metadata.json +20 -0
  343. package/skills/azure/azure-keyvault-certificate-issuer-review/references/workflow-and-output.md +190 -0
  344. package/skills/azure/azure-live-entra-role-assignment-guard/SKILL.md +56 -0
  345. package/skills/azure/azure-live-entra-role-assignment-guard/metadata.json +28 -0
  346. package/skills/azure/azure-live-entra-role-assignment-guard/references/official-sources.md +21 -0
  347. package/skills/azure/azure-live-entra-role-assignment-guard/references/permission-model.md +70 -0
  348. package/skills/azure/azure-live-entra-role-assignment-guard/references/preflight-commands.md +69 -0
  349. package/skills/azure/azure-live-entra-role-assignment-guard/references/rollback-playbook.md +51 -0
  350. package/skills/backstage/backstage-scaffolder-template-review/SKILL.md +39 -0
  351. package/skills/backstage/backstage-scaffolder-template-review/metadata.json +21 -0
  352. package/skills/backstage/backstage-scaffolder-template-review/references/workflow-and-output.md +179 -0
  353. package/skills/cert-manager/cert-manager-issuer-trust-review/SKILL.md +40 -0
  354. package/skills/cert-manager/cert-manager-issuer-trust-review/metadata.json +22 -0
  355. package/skills/cert-manager/cert-manager-issuer-trust-review/references/workflow-and-output.md +222 -0
  356. package/skills/cilium/README.md +30 -0
  357. package/skills/cilium/cilium-network-policy-review/SKILL.md +43 -0
  358. package/skills/cilium/cilium-network-policy-review/metadata.json +30 -0
  359. package/skills/cilium/cilium-network-policy-review/references/mcp-and-evidence.md +52 -0
  360. package/skills/cilium/cilium-network-policy-review/references/official-sources.md +30 -0
  361. package/skills/cilium/cilium-network-policy-review/references/workflow-and-output.md +130 -0
  362. package/skills/falco/falco-runtime-threat-rules-review/SKILL.md +37 -0
  363. package/skills/falco/falco-runtime-threat-rules-review/metadata.json +22 -0
  364. package/skills/falco/falco-runtime-threat-rules-review/references/workflow-and-output.md +249 -0
  365. package/skills/finops/README.md +30 -0
  366. package/skills/fluxcd/fluxcd-kustomization-helmrelease-review/SKILL.md +40 -0
  367. package/skills/fluxcd/fluxcd-kustomization-helmrelease-review/metadata.json +22 -0
  368. package/skills/fluxcd/fluxcd-kustomization-helmrelease-review/references/workflow-and-output.md +243 -0
  369. package/skills/istio/README.md +28 -0
  370. package/skills/istio/istio-ambient-mesh-review/SKILL.md +43 -0
  371. package/skills/istio/istio-ambient-mesh-review/metadata.json +30 -0
  372. package/skills/istio/istio-ambient-mesh-review/references/mcp-and-evidence.md +59 -0
  373. package/skills/istio/istio-ambient-mesh-review/references/official-sources.md +32 -0
  374. package/skills/istio/istio-ambient-mesh-review/references/workflow-and-output.md +128 -0
  375. package/skills/kubernetes/README.md +30 -0
  376. package/skills/kubernetes/external-secrets-operator-review/SKILL.md +37 -0
  377. package/skills/kubernetes/external-secrets-operator-review/metadata.json +22 -0
  378. package/skills/kubernetes/external-secrets-operator-review/references/workflow-and-output.md +280 -0
  379. package/skills/kubernetes/kubecost-chargeback-allocation-review/SKILL.md +40 -0
  380. package/skills/kubernetes/kubecost-chargeback-allocation-review/metadata.json +22 -0
  381. package/skills/kubernetes/kubecost-chargeback-allocation-review/references/workflow-and-output.md +215 -0
  382. package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/SKILL.md +57 -0
  383. package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/metadata.json +27 -0
  384. package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/references/official-sources.md +18 -0
  385. package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/references/permission-model.md +78 -0
  386. package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/references/preflight-commands.md +81 -0
  387. package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/references/rollback-playbook.md +61 -0
  388. package/skills/kubernetes/kubernetes-maestro/SKILL.md +45 -0
  389. package/skills/kubernetes/kubernetes-maestro/metadata.json +24 -0
  390. package/skills/kubernetes/kubernetes-maestro/references/safety-checklist.md +78 -0
  391. package/skills/kubernetes/kubernetes-maestro/references/workflow-and-output.md +206 -0
  392. package/skills/kubernetes/kubernetes-pod-security-admission-review/SKILL.md +43 -0
  393. package/skills/kubernetes/kubernetes-pod-security-admission-review/metadata.json +28 -0
  394. package/skills/kubernetes/kubernetes-pod-security-admission-review/references/mcp-and-evidence.md +49 -0
  395. package/skills/kubernetes/kubernetes-pod-security-admission-review/references/official-sources.md +26 -0
  396. package/skills/kubernetes/kubernetes-pod-security-admission-review/references/workflow-and-output.md +129 -0
  397. package/skills/kubernetes/kubernetes-pod-spec-review/SKILL.md +38 -0
  398. package/skills/kubernetes/kubernetes-pod-spec-review/metadata.json +22 -0
  399. package/skills/kubernetes/kubernetes-pod-spec-review/references/workflow-and-output.md +229 -0
  400. package/skills/kubernetes/kubernetes-rbac-review/SKILL.md +38 -0
  401. package/skills/kubernetes/kubernetes-rbac-review/metadata.json +27 -0
  402. package/skills/kubernetes/kubernetes-rbac-review/references/mcp-and-evidence.md +34 -0
  403. package/skills/kubernetes/kubernetes-rbac-review/references/official-sources.md +22 -0
  404. package/skills/kubernetes/kubernetes-rbac-review/references/workflow-and-output.md +44 -0
  405. package/skills/kubernetes/kubernetes-workload-identity-review/SKILL.md +43 -0
  406. package/skills/kubernetes/kubernetes-workload-identity-review/metadata.json +29 -0
  407. package/skills/kubernetes/kubernetes-workload-identity-review/references/mcp-and-evidence.md +57 -0
  408. package/skills/kubernetes/kubernetes-workload-identity-review/references/official-sources.md +47 -0
  409. package/skills/kubernetes/kubernetes-workload-identity-review/references/workflow-and-output.md +166 -0
  410. package/skills/kyverno/README.md +30 -0
  411. package/skills/kyverno/kyverno-policy-review/SKILL.md +43 -0
  412. package/skills/kyverno/kyverno-policy-review/metadata.json +30 -0
  413. package/skills/kyverno/kyverno-policy-review/references/mcp-and-evidence.md +49 -0
  414. package/skills/kyverno/kyverno-policy-review/references/official-sources.md +31 -0
  415. package/skills/kyverno/kyverno-policy-review/references/workflow-and-output.md +106 -0
  416. package/skills/oci/README.md +63 -0
  417. package/skills/oci/oci-certificates-issuer-review/SKILL.md +37 -0
  418. package/skills/oci/oci-certificates-issuer-review/metadata.json +20 -0
  419. package/skills/oci/oci-certificates-issuer-review/references/workflow-and-output.md +207 -0
  420. package/skills/oci/oci-live-network-security-rule-guard/SKILL.md +57 -0
  421. package/skills/oci/oci-live-network-security-rule-guard/metadata.json +28 -0
  422. package/skills/oci/oci-live-network-security-rule-guard/references/official-sources.md +21 -0
  423. package/skills/oci/oci-live-network-security-rule-guard/references/permission-model.md +65 -0
  424. package/skills/oci/oci-live-network-security-rule-guard/references/preflight-commands.md +69 -0
  425. package/skills/oci/oci-live-network-security-rule-guard/references/rollback-playbook.md +79 -0
  426. package/skills/opentelemetry/README.md +31 -0
  427. package/skills/opentelemetry/opentelemetry-collector-config-review/SKILL.md +44 -0
  428. package/skills/opentelemetry/opentelemetry-collector-config-review/metadata.json +30 -0
  429. package/skills/opentelemetry/opentelemetry-collector-config-review/references/mcp-and-evidence.md +49 -0
  430. package/skills/opentelemetry/opentelemetry-collector-config-review/references/official-sources.md +31 -0
  431. package/skills/opentelemetry/opentelemetry-collector-config-review/references/workflow-and-output.md +155 -0
  432. package/skills/prometheus/prometheus-alerting-cardinality-review/SKILL.md +38 -0
  433. package/skills/prometheus/prometheus-alerting-cardinality-review/metadata.json +22 -0
  434. package/skills/prometheus/prometheus-alerting-cardinality-review/references/workflow-and-output.md +221 -0
  435. package/skills/sigstore/sigstore-cosign-supply-chain-review/SKILL.md +39 -0
  436. package/skills/sigstore/sigstore-cosign-supply-chain-review/metadata.json +22 -0
  437. package/skills/sigstore/sigstore-cosign-supply-chain-review/references/workflow-and-output.md +196 -0
  438. package/skills/terraform/README.md +29 -0
  439. package/skills/velero/velero-backup-restore-guard/SKILL.md +41 -0
  440. package/skills/velero/velero-backup-restore-guard/metadata.json +21 -0
  441. package/skills/velero/velero-backup-restore-guard/references/safety-checklist.md +40 -0
  442. package/skills/velero/velero-backup-restore-guard/references/workflow-and-output.md +202 -0
@@ -0,0 +1,44 @@
1
+ # Workflow and Output Contract
2
+
3
+ ## Workflow
4
+
5
+ 1. Identify the target: namespace-scoped Role/RoleBinding or cluster-scoped ClusterRole/ClusterRoleBinding.
6
+ 2. Identify the principal: ServiceAccount, user, or Group (including `system:` groups).
7
+ 3. Prefer namespace-scoped Roles before ClusterRoles when the workload only operates in one namespace.
8
+ 4. Challenge dangerous defaults:
9
+ - `cluster-admin` ClusterRoleBinding for any non-infrastructure workload,
10
+ - Wildcard verbs (`*`) or wildcard resources (`*`) in any Role or ClusterRole,
11
+ - Wildcard API groups (`*`) that grant cross-group access,
12
+ - Binding to the `default` ServiceAccount (shared blast radius),
13
+ - `automountServiceAccountToken: true` (default) on pods that do not need API server access,
14
+ - ClusterRoleBindings where a RoleBinding to a namespaced ClusterRole would suffice,
15
+ - Aggregated ClusterRoles with labels that may attract unexpected rules from third-party operators.
16
+ 5. **Check privilege-escalation verbs explicitly** — these three verbs bypass Kubernetes' own escalation prevention controls and must be flagged as high severity whenever present:
17
+ - `escalate` on `clusterroles` or `roles` — allows granting permissions the subject does not itself hold; the textbook Kubernetes privilege escalation path,
18
+ - `bind` on `clusterroles`, `roles`, `clusterrolebindings`, or `rolebindings` — allows creating bindings to roles the subject is not bound to,
19
+ - `impersonate` on `users`, `groups`, or `serviceaccounts` — allows acting as any other identity, bypassing all authentication controls.
20
+ 6. Check whether RBAC controls reach high-severity resources:
21
+ - `secrets` (get/list at ClusterRole scope = read every secret cluster-wide),
22
+ - `pods/exec` and `pods/attach` (interactive shell on any pod — same severity),
23
+ - `pods/portforward` (tunnel to pod ports),
24
+ - `nodes/proxy` (proxy to kubelet API on every node — effectively cluster-admin for node operations),
25
+ - `nodes`, `namespaces`, `clusterroles`, `clusterrolebindings`.
26
+ 7. Stress-test operational hygiene:
27
+ - prefer dedicated ServiceAccounts per workload over shared accounts,
28
+ - prefer explicit `resources` lists over wildcards,
29
+ - prefer explicit `verbs` lists (`get`, `list`, `watch`) over `*`,
30
+ - challenge escalation paths: can the bound account create/update Roles or RoleBindings?
31
+
32
+ ## Output
33
+
34
+ Return:
35
+
36
+ - current access summary,
37
+ - risk findings (with severity: high / medium / low),
38
+ - least-privilege alternative,
39
+ - validation commands or manifest corrections,
40
+ - assumptions and missing facts.
41
+
42
+ ## Security notes
43
+
44
+ Do not suggest `cluster-admin` bindings or wildcard grants unless the user has explicitly justified the blast radius and there is no namespace-scoped alternative.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: kubernetes-workload-identity-review
3
+ description: Use this skill for Kubernetes workload identity review covering AWS IRSA (IAM Roles for Service Accounts), Azure Workload Identity, GCP Workload Identity Federation, and the underlying ServiceAccount token volume projection plus OIDC issuer trust. Trigger when the user asks how a pod should authenticate to cloud services, whether long-lived credentials in a Secret can be replaced, whether the OIDC trust policy is correctly scoped, or whether ServiceAccount token reuse is a risk.
4
+ metadata:
5
+ author: "github: Raishin"
6
+ version: "0.1.0"
7
+ ---
8
+
9
+ # Kubernetes Workload Identity Review
10
+
11
+ ## Purpose
12
+
13
+ Review how pods authenticate to cloud services. Long-lived static credentials in Secrets are the largest unmanaged credential surface in most Kubernetes deployments. Workload identity replaces them with short-lived federated tokens via the cluster's OIDC issuer. The review covers ServiceAccount token projection, OIDC issuer trust policy, the cloud-provider IAM mapping, and the runtime check that the pod is actually using the federated token rather than falling back to a static credential.
14
+
15
+ ## Lean operating rules
16
+
17
+ - Prefer live cluster evidence (`kubectl get serviceaccount,pods -A -o yaml` plus the cluster's OIDC issuer URL and the cloud-provider IAM trust policy) when the active client exposes it; otherwise fall back to official cloud-provider and Kubernetes documentation.
18
+ - Separate confirmed facts from inference. If the OIDC issuer URL, IAM trust policy, or pod's projected token volume was not queried, say so.
19
+ - Treat **a Pod with both a workload-identity ServiceAccount AND a long-lived credential Secret mounted** as a critical finding — credential precedence often falls back to the static credential, defeating the migration.
20
+ - Treat an **OIDC trust policy with `StringEquals` on `aud` but `StringLike` (wildcard) on `sub`** as a critical finding — any ServiceAccount in the cluster can assume the role.
21
+ - Treat **`automountServiceAccountToken: true` on pods that don't use the Kubernetes API** as a high finding — token is mounted and exfiltratable, even when not used.
22
+ - Challenge ServiceAccount tokens with no `audiences` claim — projected tokens should target a specific cloud audience (`sts.amazonaws.com`, `api://AzureADTokenExchange`, `https://iam.googleapis.com/projects/.../workloadIdentityPools/...`).
23
+ - Challenge token expiry windows longer than 1 hour — projected tokens should be short-lived.
24
+ - Keep the answer scoped, reversible, least-privilege, and explicit about blockers or unknowns.
25
+
26
+ ## References
27
+
28
+ Load these only when needed:
29
+
30
+ - [Evidence path and tooling](references/mcp-and-evidence.md) — use when choosing live evidence, confirming OIDC issuer and IAM trust state, or switching to documentation mode.
31
+ - [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review, applying provider-specific stress checks, or formatting the final answer.
32
+ - [Official sources](references/official-sources.md) — use when you need the detailed AWS / Azure / GCP / Kubernetes documentation list and grounded insights.
33
+
34
+ ## Response minimum
35
+
36
+ Return, at minimum:
37
+
38
+ - the cloud provider (AWS, Azure, GCP, or generic OIDC) and evidence level,
39
+ - the ServiceAccount → IAM identity binding (annotation, label, or trust policy claim) and whether it is correctly scoped,
40
+ - the OIDC trust policy scope (`aud`, `sub`, `iss`) — must constrain to a specific ServiceAccount,
41
+ - whether long-lived credentials still exist anywhere in the workload (Secret mounts, env vars, sidecars),
42
+ - the safest next actions and rollback plan,
43
+ - the assumptions or blockers that prevent stronger conclusions.
@@ -0,0 +1,29 @@
1
+ {
2
+ "id": "kubernetes-workload-identity-review",
3
+ "name": "Kubernetes Workload Identity Review",
4
+ "type": "skill",
5
+ "provider": "kubernetes",
6
+ "harnesses": [
7
+ "codex",
8
+ "claude-code",
9
+ "cursor",
10
+ "gemini",
11
+ "kiro",
12
+ "other"
13
+ ],
14
+ "summary": "Review Kubernetes workload identity bindings across AWS IRSA, Azure Workload Identity, GCP Workload Identity Federation, and the underlying ServiceAccount projected token model with OIDC issuer trust scope and short-lived federation.",
15
+ "source_type": "original",
16
+ "official_docs": [
17
+ "https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/",
18
+ "https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/",
19
+ "https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html",
20
+ "https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview",
21
+ "https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity",
22
+ "https://openid.net/specs/openid-connect-core-1_0.html"
23
+ ],
24
+ "security_notes": "Workload identity OIDC trust policy with wildcard sub claim allows any ServiceAccount in the cluster to assume the role. Pods with both a workload-identity SA and a long-lived credential Secret typically fall back to the static credential. Tokens with audiences not pinned to the cloud target are reusable elsewhere.",
25
+ "last_verified": "2026-05-01",
26
+ "path": "skills/kubernetes/kubernetes-workload-identity-review",
27
+ "author": "github: Raishin",
28
+ "version": "0.1.0"
29
+ }
@@ -0,0 +1,57 @@
1
+ # Evidence Path and Tooling
2
+
3
+ ## Evidence path
4
+
5
+ 1. Prefer live cluster evidence (`kubectl`) plus the cloud-provider's CLI (`aws`, `az`, `gcloud`) or MCP server when available.
6
+ 2. Fall back to official documentation: Kubernetes ServiceAccount admin, AWS IRSA, Azure Workload Identity, GCP Workload Identity Federation.
7
+ 3. Ask only for sanitized ServiceAccount, Pod, and trust policy YAML/JSON, plus the cluster's OIDC issuer URL.
8
+ 4. Label conclusions as `live evidence`, `documentation-based`, `sanitized user evidence`, or `inference`.
9
+
10
+ ## Useful live-evidence commands
11
+
12
+ ```shell
13
+ # ServiceAccount with workload identity annotations
14
+ kubectl get serviceaccount -A -o yaml | grep -A2 -E 'eks\.amazonaws\.com/role-arn|azure\.workload\.identity/client-id|iam\.gke\.io/gcp-service-account'
15
+
16
+ # Pod's projected ServiceAccount token volume
17
+ kubectl get pod <pod> -n <ns> -o yaml | grep -A20 'projected:'
18
+
19
+ # Verify pod is consuming the projected token
20
+ kubectl exec -it <pod> -n <ns> -- ls -la /var/run/secrets/tokens/
21
+ kubectl exec -it <pod> -n <ns> -- cat /var/run/secrets/tokens/<audience-token>
22
+
23
+ # Cluster OIDC issuer (each cluster has one — IAM trusts it)
24
+ # AWS EKS:
25
+ aws eks describe-cluster --name <cluster> --query "cluster.identity.oidc.issuer" --output text
26
+ # Azure AKS:
27
+ az aks show --resource-group <rg> --name <cluster> --query "oidcIssuerProfile.issuerUrl" --output tsv
28
+ # GKE:
29
+ gcloud container clusters describe <cluster> --location <location> --format='value(workloadIdentityConfig.workloadPool)'
30
+
31
+ # Confirm there's no static credential alongside
32
+ kubectl exec -it <pod> -n <ns> -- env | grep -E 'AWS_ACCESS_KEY_ID|AZURE_CLIENT_SECRET|GOOGLE_APPLICATION_CREDENTIALS'
33
+ kubectl exec -it <pod> -n <ns> -- ls /var/run/secrets/
34
+
35
+ # AWS — view IAM role trust policy
36
+ aws iam get-role --role-name <role-name> --query 'Role.AssumeRolePolicyDocument'
37
+
38
+ # Azure — view federated identity credentials on the user-assigned managed identity
39
+ az identity federated-credential list --identity-name <mi> --resource-group <rg>
40
+
41
+ # GCP — view IAM policy on the service account
42
+ gcloud iam service-accounts get-iam-policy <gsa>@<project>.iam.gserviceaccount.com
43
+ ```
44
+
45
+ ## Cluster state to confirm before review
46
+
47
+ - **OIDC issuer enabled** on the cluster (provider-specific switch).
48
+ - **OIDC issuer URL** — IAM trust policies key off this URL.
49
+ - **Webhook installed** for the workload identity model (AWS Pod Identity Webhook, Azure Workload Identity admission webhook, GKE built-in).
50
+ - **Default audience** for the cluster (cloud-specific): `sts.amazonaws.com` on AWS, `api://AzureADTokenExchange` on Azure, `<workload-identity-pool-name>` on GCP.
51
+ - **Service account → IAM mapping mechanism**: annotation, label, federated identity credential, or IAM policy binding.
52
+
53
+ ## Sanitization rules
54
+
55
+ - Never request kubeconfig contents, IAM access keys, Azure client secrets, GCP service account JSON keys.
56
+ - Replace identifiable cluster URLs, account IDs, tenant IDs, and project IDs with placeholders unless the user provides them.
57
+ - Do not print projected ServiceAccount token JWTs; reference the file path and audience claim only.
@@ -0,0 +1,47 @@
1
+ # Official Sources
2
+
3
+ Load these only when needed:
4
+
5
+ ## Kubernetes core
6
+
7
+ - [Configure ServiceAccounts for Pods](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) — use for `automountServiceAccountToken`, projected token volumes, and dedicated SA patterns.
8
+ - [ServiceAccount admin guide](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/) — use for bound ServiceAccount tokens, audience binding, and migration from legacy auto-mounted tokens.
9
+ - [TokenRequest API](https://kubernetes.io/docs/reference/kubernetes-api/authentication-resources/token-request-v1/) — use when reviewing custom code that calls `TokenRequest` for bespoke token issuance.
10
+ - [OIDC issuer discovery](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens) — use when the cluster's own OIDC issuer is consumed by external trust policies.
11
+
12
+ ## AWS IRSA
13
+
14
+ - [IAM Roles for Service Accounts overview](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) — use as the entry point for IRSA.
15
+ - [IRSA technical deep dive](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts-technical-overview.html) — use for the OIDC trust policy structure (`Federated`, `Condition.StringEquals` on `aud` and `sub`) and the AssumeRoleWithWebIdentity flow.
16
+ - [Configuring IRSA pod identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-configuration.html) — use for the ServiceAccount annotation, env injection, and credential-chain interaction.
17
+ - [EKS Pod Identity (the newer alternative)](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) — use when the cluster has migrated to EKS Pod Identity instead of IRSA; the trust model is different.
18
+
19
+ ## Azure Workload Identity
20
+
21
+ - [Azure Workload Identity overview](https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview) — use for the federated identity credential model and AKS-specific configuration.
22
+ - [Workload Identity deploy and configure](https://learn.microsoft.com/en-us/azure/aks/workload-identity-deploy-cluster) — use for OIDC issuer enablement, webhook installation, and the ServiceAccount/Pod label/annotation set.
23
+ - [Federated identity credentials on a user-assigned managed identity](https://learn.microsoft.com/en-us/entra/workload-id/workload-identity-federation) — use for the issuer/subject/audience trust scope.
24
+
25
+ ## GCP Workload Identity Federation
26
+
27
+ - [GKE Workload Identity overview](https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity) — use for KSA → GSA mapping via `iam.gke.io/gcp-service-account` annotation and the `roles/iam.workloadIdentityUser` IAM binding.
28
+ - [GKE Workload Identity setup](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity) — use for cluster-level config and migration steps.
29
+ - [Workload Identity Federation (non-GKE)](https://cloud.google.com/iam/docs/workload-identity-federation) — use when the workload runs outside GKE but federates to GCP IAM.
30
+
31
+ ## Specifications
32
+
33
+ - [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html) — use for the standard claims (`iss`, `sub`, `aud`, `exp`, `nbf`, `iat`) that all three providers verify.
34
+ - [JSON Web Token (JWT) — RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519) — use for token structure and validation.
35
+
36
+ ## Grounded insights worth carrying into the skill
37
+
38
+ - Workload identity replaces long-lived static credentials with short-lived federated tokens issued by the cluster's OIDC issuer. The cloud's IAM trusts the cluster's OIDC issuer URL and the trust policy narrows on `iss`, `aud`, `sub` claims.
39
+ - The most-cited trust-policy mistake across all three providers is a wildcard in `sub` (AWS), `subject` (Azure), or member set (GCP). Wildcards mean any ServiceAccount in scope can assume the cloud identity.
40
+ - Cloud SDK credential chains explain why workloads frequently keep using static credentials after a workload identity migration. The SDK searches for credentials in a fixed order (env vars → file → instance metadata → web identity); whichever is found first wins. Leaving a static credential anywhere in the chain defeats the migration.
41
+ - The Kubernetes-native primitive under all three flavors is the **projected ServiceAccount token volume** with `audience` and `expirationSeconds`. The cloud webhook (AWS Pod Identity Webhook, Azure Workload Identity admission webhook) automates the projection setup.
42
+ - AWS IRSA injects `AWS_ROLE_ARN` and `AWS_WEB_IDENTITY_TOKEN_FILE` env vars into pods whose ServiceAccount carries the `eks.amazonaws.com/role-arn` annotation. The AWS SDK then calls `sts:AssumeRoleWithWebIdentity` to exchange the projected JWT for IAM credentials.
43
+ - Azure Workload Identity requires both a label on the ServiceAccount AND a label on the Pod (`azure.workload.identity/use: "true"`). Forgetting the Pod label is a frequent silent failure — the SDK falls back to other auth modes.
44
+ - GKE Workload Identity uses a metadata-server proxy on each node. SDK calls to `metadata.google.internal` are intercepted and federated to the bound GSA. There is no token file mounted into the pod.
45
+ - Projected ServiceAccount tokens are auto-rotated by the kubelet at ~50% of `expirationSeconds`. Long-running SDK clients must read the token file dynamically, not cache it.
46
+ - EKS Pod Identity is AWS's newer alternative to IRSA. It uses a node-level agent and a different trust model (no OIDC trust policy on the IAM role; instead a Pod Identity Association resource). Reviews must distinguish which model is in use because the controls are different.
47
+ - Setting `automountServiceAccountToken: false` on the ServiceAccount is the correct safer default for workloads that do not call the Kubernetes API. Pod spec overrides this; the override is the failure mode.
@@ -0,0 +1,166 @@
1
+ # Workflow and Output Contract
2
+
3
+ ## Workflow
4
+
5
+ ### Step 1 — Identify the workload identity flavor
6
+
7
+ Three production flavors plus the underlying primitive:
8
+
9
+ 1. **AWS IRSA (IAM Roles for Service Accounts)** — ServiceAccount annotated with `eks.amazonaws.com/role-arn: arn:aws:iam::<account>:role/<role>`. Pod identity webhook injects `AWS_WEB_IDENTITY_TOKEN_FILE` and `AWS_ROLE_ARN`. AWS SDK calls `sts:AssumeRoleWithWebIdentity`.
10
+ 2. **Azure Workload Identity** — ServiceAccount labeled `azure.workload.identity/use: "true"` and annotated with `azure.workload.identity/client-id: <client-id>`. Pod labeled `azure.workload.identity/use: "true"`. Webhook injects projected token at `/var/run/secrets/azure/tokens/azure-identity-token`. Azure SDK exchanges via federated identity credential.
11
+ 3. **GCP Workload Identity Federation (GKE)** — ServiceAccount annotated `iam.gke.io/gcp-service-account: <gsa>@<project>.iam.gserviceaccount.com`. GKE metadata server proxies SDK calls; ServiceAccount → GSA mapping via IAM policy binding (`roles/iam.workloadIdentityUser`).
12
+ 4. **Generic projected token + OIDC** — Kubernetes-native primitive. ServiceAccount projected token volume with explicit `audience` and `expirationSeconds`. Trust-policy verification at the cloud / external service.
13
+
14
+ Reference: [Configure ServiceAccounts for Pods](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) and [ServiceAccount admin](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/).
15
+
16
+ ### Step 2 — Audit the OIDC trust policy scope
17
+
18
+ This is the most under-reviewed control in workload identity migrations.
19
+
20
+ **AWS IRSA** trust policy structure:
21
+
22
+ ```json
23
+ {
24
+ "Effect": "Allow",
25
+ "Principal": {
26
+ "Federated": "arn:aws:iam::<account>:oidc-provider/oidc.eks.<region>.amazonaws.com/id/<id>"
27
+ },
28
+ "Action": "sts:AssumeRoleWithWebIdentity",
29
+ "Condition": {
30
+ "StringEquals": {
31
+ "oidc.eks.<region>.amazonaws.com/id/<id>:aud": "sts.amazonaws.com",
32
+ "oidc.eks.<region>.amazonaws.com/id/<id>:sub": "system:serviceaccount:<namespace>:<sa-name>"
33
+ }
34
+ }
35
+ }
36
+ ```
37
+
38
+ Critical findings:
39
+
40
+ - `StringLike` on `:sub` with a wildcard (`system:serviceaccount:*:*` or `system:serviceaccount:<ns>:*`) — any ServiceAccount in scope can assume the role.
41
+ - `:aud` not constrained to `sts.amazonaws.com` — token reusable for non-AWS audiences.
42
+ - Multiple OIDC providers trusted from one role — broader trust surface than necessary.
43
+
44
+ **Azure Workload Identity** uses federated identity credentials on a user-assigned managed identity:
45
+
46
+ ```text
47
+ issuer: https://<region>.oic.prod-aks.azure.com/<tenant>/<id>/
48
+ subject: system:serviceaccount:<namespace>:<sa-name>
49
+ audience: api://AzureADTokenExchange
50
+ ```
51
+
52
+ Critical findings:
53
+
54
+ - `subject` with wildcards — Azure rejects most wildcards but pre-validation is required; mistakes get caught only at first token exchange.
55
+ - Multiple federated identity credentials on one managed identity, each from different clusters — each is a separate cluster trust; rotate / remove unused ones.
56
+
57
+ **GCP Workload Identity** uses IAM policy on the GSA:
58
+
59
+ ```text
60
+ role: roles/iam.workloadIdentityUser
61
+ member: serviceAccount:<project>.svc.id.goog[<namespace>/<ksa-name>]
62
+ ```
63
+
64
+ Critical findings:
65
+
66
+ - Members listing `[*/*]` — any ServiceAccount in any namespace can act as the GSA.
67
+ - Member with wildcards `[<ns>/*]` — any ServiceAccount in the namespace.
68
+
69
+ Reference: [AWS IRSA technical overview](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts-technical-overview.html), [Azure Workload Identity overview](https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview), [GKE Workload Identity](https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity).
70
+
71
+ ### Step 3 — Confirm the pod is actually using the federated token
72
+
73
+ Workload identity migrations frequently leave a static credential alongside the new federated path. Cloud SDKs use a credential chain — if a static credential is found earlier in the chain, the federated token is never used.
74
+
75
+ Stress-tests:
76
+
77
+ - AWS SDK credential chain: env (`AWS_ACCESS_KEY_ID`) → shared credentials file → IRSA web identity → instance profile. A leftover env var defeats IRSA.
78
+ - Azure SDK chain: env → managed identity → workload identity → CLI. A leftover client secret in env defeats workload identity.
79
+ - GCP SDK chain: `GOOGLE_APPLICATION_CREDENTIALS` env → metadata server. A mounted SA key file in `GOOGLE_APPLICATION_CREDENTIALS` defeats GKE Workload Identity.
80
+
81
+ Verify with:
82
+
83
+ ```shell
84
+ # AWS — confirm sts:AssumeRoleWithWebIdentity is the auth path
85
+ kubectl exec -it <pod> -n <ns> -- aws sts get-caller-identity
86
+ # Should show "AssumedRole" not "User"
87
+
88
+ # Azure — confirm token exchange
89
+ kubectl exec -it <pod> -n <ns> -- env | grep AZURE_FEDERATED_TOKEN_FILE
90
+
91
+ # GCP — confirm metadata server is reachable and used
92
+ kubectl exec -it <pod> -n <ns> -- curl -s -H "Metadata-Flavor: Google" \
93
+ http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/email
94
+ ```
95
+
96
+ > **Diagnostic only — do not embed in automation.** The instance metadata server is the same primitive that has been weaponized in cloud breaches (notably Capital One 2019). On AWS and Azure clusters the metadata IP is `169.254.169.254`; on GCP it resolves through `metadata.google.internal`. Any pod that can reach the metadata endpoint can request short-lived credentials for the node's identity. Block the metadata service at the network policy layer for workloads that should not read it — see [`cilium-network-policy-review`](../../../cilium/cilium-network-policy-review/SKILL.md) for the egress rule pattern that excludes `169.254.169.254/32`.
97
+
98
+ ### Step 4 — Audit the projected token configuration
99
+
100
+ For provider webhooks, projection is automatic. For the generic projected-token primitive, the Pod spec includes:
101
+
102
+ ```yaml
103
+ spec:
104
+ serviceAccountName: <sa-name>
105
+ volumes:
106
+ - name: token
107
+ projected:
108
+ sources:
109
+ - serviceAccountToken:
110
+ path: token
111
+ audience: <audience>
112
+ expirationSeconds: 3600 # max recommended; tokens are auto-rotated
113
+ ```
114
+
115
+ Critical findings:
116
+
117
+ - `expirationSeconds` longer than 1 hour — projected tokens should be short-lived.
118
+ - `audience` empty — defaults to the API server, which means the token is interchangeable with any ServiceAccount token (no narrowing).
119
+ - Multiple audiences for the same volume — the token can be replayed across audiences.
120
+
121
+ Reference: [Bound Service Account Tokens](https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/#bound-service-account-tokens) and [Token volume projection](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#serviceaccount-token-volume-projection).
122
+
123
+ ### Step 5 — Audit `automountServiceAccountToken`
124
+
125
+ Default is `true`. Every pod gets a token mounted at `/var/run/secrets/kubernetes.io/serviceaccount/token` whether or not the workload uses the Kubernetes API. Findings:
126
+
127
+ - Pod that does not call the K8s API but has `automountServiceAccountToken: true` — token is exfiltratable on container compromise.
128
+ - ServiceAccount with `automountServiceAccountToken: false` but Pod spec overrides with `true` — Pod spec wins; the SA-level safer default is bypassed.
129
+
130
+ Recommended baseline: `automountServiceAccountToken: false` on the ServiceAccount, override only when the workload actually calls the K8s API.
131
+
132
+ ### Step 6 — Audit cross-cluster / cross-account reuse
133
+
134
+ A single IAM role (AWS) or managed identity (Azure) or GSA (GCP) can be trusted from multiple clusters. Findings:
135
+
136
+ - An IAM role trusted from cluster A's OIDC provider AND cluster B's OIDC provider — compromise of cluster B grants the role's permissions.
137
+ - Federated identity credentials on a managed identity from clusters that no longer exist — stale trust; remove.
138
+
139
+ ### Step 7 — Stress-test operational hygiene
140
+
141
+ - Prefer dedicated IAM identities per ServiceAccount, not shared roles across multiple SAs.
142
+ - Prefer narrow IAM policies (`Resource: arn:aws:s3:::specific-bucket/*`) over broad (`Resource: '*'`).
143
+ - Prefer `automountServiceAccountToken: false` as the default and override per workload.
144
+ - Prefer `audience` claims that match the cloud target's expected audience.
145
+ - Test token rotation by killing the projected token file and confirming the SDK refreshes.
146
+
147
+ ## Output
148
+
149
+ Return:
150
+
151
+ - **target**: the workload identity flavor and the ServiceAccount → cloud identity binding,
152
+ - **evidence level**: `live evidence` / `documentation-based` / `sanitized user evidence` / `inference`,
153
+ - **OIDC trust policy scope**: `aud`, `sub`, `iss`, with judgment on narrowness,
154
+ - **fallback assessment**: are static credentials still present? Is the SDK actually using the federated path?,
155
+ - **token projection assessment**: audience, expiration, automountServiceAccountToken posture,
156
+ - **risk findings** (with severity: high / medium / low),
157
+ - **safest next actions** with sample manifest and trust-policy changes,
158
+ - **rollback plan**: how to revert without locking the workload out of the cloud,
159
+ - **assumptions and missing facts**.
160
+
161
+ ## Security notes
162
+
163
+ - Never recommend keeping a long-lived credential Secret "just in case" alongside workload identity.
164
+ - Never recommend wildcards in OIDC trust policy `sub` claim.
165
+ - Never recommend `audience` defaults that allow the projected token to be replayed against the K8s API.
166
+ - Do not print IAM access keys, client secrets, GCP service account JSON, or projected token JWT bodies.
@@ -0,0 +1,30 @@
1
+ # 🛡️ Kyverno Skills
2
+
3
+ <p align="center">
4
+ <!-- 🖼️ Add a Kyverno logo to assets/logos/cnative/kyverno/ and update this path -->
5
+ <span style="font-size:3.5em">🛡️</span>
6
+ </p>
7
+
8
+ This folder contains Kyverno-focused skills curated for this marketplace.
9
+
10
+ ## Local marketplace portfolio
11
+
12
+ This folder contains **1** local Kyverno skill:
13
+
14
+ - `kyverno-policy-review`
15
+
16
+ ## Portfolio posture
17
+
18
+ Kyverno skills for evidence-backed admission policy review across `ValidatingPolicy`, `MutatingPolicy`, `GeneratingPolicy`, `DeletingPolicy`, and `ImageValidatingPolicy` — the stable `policies.kyverno.io/v1` API surface.
19
+
20
+ These skills are intentionally conservative:
21
+
22
+ - prefer `kubectl get policies.kyverno.io -A -o yaml` for live policy state grounding before any review
23
+ - treat `failureAction: Audit` in production as a critical finding — policy violations become silent
24
+ - treat `PolicyException` resources as audit-required escalation paths — every exception is a documented bypass
25
+ - challenge any policy with `background: false` and no admission match — the policy never runs
26
+ - prefer policies that compile to native `ValidatingAdmissionPolicy` (CEL) when complexity allows — fewer moving parts than the Kyverno controller
27
+ - challenge `ImageValidatingPolicy` with `verifyImages` skipped on CVE-only images — supply-chain attestation must remain
28
+ - use official Kyverno documentation (kyverno.io) for policy syntax, CEL expressions, and ValidatingAdmissionPolicy generation
29
+
30
+ Run `npm run validate` after changing cataloged Kyverno skills.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: kyverno-policy-review
3
+ description: Use this skill for Kyverno policy review across the stable policies.kyverno.io/v1 API surface — ValidatingPolicy, MutatingPolicy, GeneratingPolicy, DeletingPolicy, and ImageValidatingPolicy. Trigger when the user asks whether an admission policy is safe, whether a PolicyException is justified, whether a policy should be enforced or audited, whether a Kyverno policy should be replaced by a native ValidatingAdmissionPolicy (CEL), or whether image signature verification is correctly configured.
4
+ metadata:
5
+ author: "github: Raishin"
6
+ version: "0.1.0"
7
+ ---
8
+
9
+ # Kyverno Policy Review
10
+
11
+ ## Purpose
12
+
13
+ Review Kyverno policies and PolicyExceptions against admission correctness, supply chain integrity, blast radius, failure mode, and the Kyverno-vs-native-CEL architectural decision. Kyverno is the most widely deployed Kubernetes policy engine — every misconfigured policy is either a silent allow (security gap) or a silent deny (production outage).
14
+
15
+ ## Lean operating rules
16
+
17
+ - Prefer live cluster evidence (`kubectl get policies.kyverno.io,clusterpolicies,policies,validatingpolicies,mutatingpolicies,imagevalidatingpolicies,policyexceptions -A -o yaml`) when the active client exposes it; otherwise fall back to official Kyverno documentation (kyverno.io) and sanitized YAML from the user.
18
+ - Separate confirmed facts from inference. If the cluster's Kyverno install state, admission webhook configuration, or PolicyReport status was not queried, say so.
19
+ - Treat `failureAction: Audit` (or legacy `validationFailureAction: audit`) on a production-relevant policy as a critical finding — admission violations become silent log lines.
20
+ - Treat any `PolicyException` as an audit-required artifact — every exception is a documented bypass with a name, reason, and reviewer.
21
+ - Challenge `background: false` paired with no `match` admission scope — the policy will never run.
22
+ - Challenge `ImageValidatingPolicy` with `verifyImages: skip` patterns, missing public keys, or `mutateDigest: false` — supply-chain attestations stop being enforced or stop being immutable.
23
+ - Challenge any policy that could compile to a native `ValidatingAdmissionPolicy` (CEL) — fewer moving parts, no Kyverno controller in the admission path.
24
+ - Keep the answer scoped, reversible, least-privilege, and explicit about blockers or unknowns.
25
+
26
+ ## References
27
+
28
+ Load these only when needed:
29
+
30
+ - [Evidence path and tooling](references/mcp-and-evidence.md) — use when choosing live cluster evidence, confirming Kyverno install state, or switching to documentation mode.
31
+ - [Workflow and output contract](references/workflow-and-output.md) — use when executing the full review, applying stress checks, evaluating Kyverno-vs-native-CEL, or formatting the final answer.
32
+ - [Official sources](references/official-sources.md) — use when you need the detailed Kyverno documentation list, CEL expression references, or grounded insights from the Kyverno project.
33
+
34
+ ## Response minimum
35
+
36
+ Return, at minimum:
37
+
38
+ - the scoped target (policy kind, name, match scope) and evidence level,
39
+ - the failure mode (`Audit` vs `Enforce`) and whether it matches the production posture,
40
+ - the main risks or control gaps (PolicyException, wildcard match, missing image signatures, weak CEL expressions),
41
+ - whether the policy could be replaced by a native ValidatingAdmissionPolicy (CEL) and the tradeoff,
42
+ - the safest next actions and rollback plan,
43
+ - the assumptions or blockers that prevent stronger conclusions.
@@ -0,0 +1,30 @@
1
+ {
2
+ "id": "kyverno-policy-review",
3
+ "name": "Kyverno Policy Review",
4
+ "type": "skill",
5
+ "provider": "kyverno",
6
+ "harnesses": [
7
+ "codex",
8
+ "claude-code",
9
+ "cursor",
10
+ "gemini",
11
+ "kiro",
12
+ "other"
13
+ ],
14
+ "summary": "Review Kyverno ValidatingPolicy, MutatingPolicy, GeneratingPolicy, DeletingPolicy, ImageValidatingPolicy, and PolicyException resources for admission correctness, failure mode, supply-chain integrity, and the Kyverno-vs-native-CEL architectural decision.",
15
+ "source_type": "original",
16
+ "official_docs": [
17
+ "https://kyverno.io/docs/",
18
+ "https://kyverno.io/docs/policy-types/overview/",
19
+ "https://kyverno.io/docs/policy-types/cluster-policy/validate/",
20
+ "https://kyverno.io/docs/policy-types/cluster-policy/verify-images/",
21
+ "https://kyverno.io/docs/exceptions/",
22
+ "https://kyverno.io/docs/installation/",
23
+ "https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy/"
24
+ ],
25
+ "security_notes": "Treat failureAction Audit on production policies as a critical finding. Every PolicyException is a documented bypass requiring an owner, reason, and expiry. ImageValidatingPolicy must verify signatures with mutateDigest true. Prefer native ValidatingAdmissionPolicy when CEL alone is sufficient.",
26
+ "last_verified": "2026-05-01",
27
+ "path": "skills/kyverno/kyverno-policy-review",
28
+ "author": "github: Raishin",
29
+ "version": "0.1.0"
30
+ }
@@ -0,0 +1,49 @@
1
+ # Evidence Path and Tooling
2
+
3
+ ## Evidence path
4
+
5
+ 1. Prefer live cluster evidence when a Kubernetes MCP server, `kubectl`, or `kyverno` CLI is available.
6
+ 2. Fall back to official Kyverno documentation (kyverno.io) and the Kubernetes admission control reference when live inspection is unavailable.
7
+ 3. Ask only for sanitized policy YAML, PolicyReport snippets, or `kyverno apply` output when current-state proof matters. Never request kubeconfig contents, admission webhook bearer tokens, image-signing private keys, or secrets.
8
+ 4. Label conclusions as `live evidence`, `documentation-based`, `sanitized user evidence`, or `inference`.
9
+
10
+ ## Useful live-evidence commands
11
+
12
+ ```shell
13
+ # List all Kyverno policy kinds across the cluster (stable v1 API)
14
+ kubectl get validatingpolicies,mutatingpolicies,generatingpolicies,deletingpolicies,imagevalidatingpolicies -A -o yaml
15
+
16
+ # Legacy kinds (still in use on many clusters)
17
+ kubectl get clusterpolicies,policies -A -o yaml
18
+
19
+ # List all PolicyExceptions — every one is a documented bypass
20
+ kubectl get policyexceptions -A -o yaml
21
+
22
+ # View Kyverno controller deployment and webhook config
23
+ kubectl -n kyverno get deploy,svc,validatingwebhookconfiguration,mutatingwebhookconfiguration -o yaml
24
+
25
+ # View Kyverno admission reports — does the policy actually run?
26
+ kubectl get policyreport,clusterpolicyreport -A
27
+
28
+ # Test a policy locally without applying
29
+ kyverno apply policy.yaml --resource resource.yaml
30
+
31
+ # Test against the live cluster
32
+ kyverno apply policy.yaml --cluster
33
+
34
+ # Generate a native ValidatingAdmissionPolicy from a Kyverno policy (preview)
35
+ kyverno migrate-policy policy.yaml --output validatingadmissionpolicy.yaml
36
+ ```
37
+
38
+ ## Kyverno install state to confirm before review
39
+
40
+ - Kyverno controller version (`kubectl -n kyverno get deploy kyverno -o jsonpath='{.spec.template.spec.containers[0].image}'`) — newer versions support more CEL expressions and the stable `policies.kyverno.io/v1` API.
41
+ - Reports Server enabled (`kubectl -n kyverno get deploy reports-server`) — controls whether PolicyReports are stored externally or in etcd.
42
+ - Cleanup controller enabled — required for `DeletingPolicy` resources.
43
+ - Admission controller webhook timeout — Kyverno's default is 10s; aggressive policies can stall pod creation.
44
+
45
+ ## Platform-agnostic execution
46
+
47
+ - Keep examples neutral with placeholders (`<policy-name>`, `<namespace>`, `<image-ref>`) until the user's cluster context and policy state are known.
48
+ - Do not request kubeconfig files, image signing keys, Sigstore Rekor entries, or registry credentials in chat.
49
+ - If a Kubernetes MCP server, `kubectl`, or `kyverno` CLI is unavailable, say so and fall back to reviewing sanitized YAML and the official Kyverno documentation.
@@ -0,0 +1,31 @@
1
+ # Official Sources
2
+
3
+ Load these only when needed:
4
+
5
+ - [Kyverno documentation home](https://kyverno.io/docs/) — use as the entry point for any policy authoring, install, or operator-side question.
6
+ - [Kyverno policy types overview](https://kyverno.io/docs/policy-types/overview/) — use for the stable `policies.kyverno.io/v1` API surface (`ValidatingPolicy`, `MutatingPolicy`, `GeneratingPolicy`, `DeletingPolicy`, `ImageValidatingPolicy`).
7
+ - [Kyverno validate rules](https://kyverno.io/docs/policy-types/cluster-policy/validate/) — use for `failureAction`, `failurePolicy`, CEL validation expressions, `denyConditions`, and the Kyverno-to-ValidatingAdmissionPolicy compilation path.
8
+ - [Kyverno mutate rules](https://kyverno.io/docs/policy-types/cluster-policy/mutate/) — use for `patchStrategicMerge`, `patchesJson6902`, `foreach` mutations, and conditional mutation guards.
9
+ - [Kyverno generate rules](https://kyverno.io/docs/policy-types/cluster-policy/generate/) — use for `synchronize: true` (rule keeps generated resources in sync) and the security implications of generated RoleBindings or NetworkPolicies.
10
+ - [Kyverno verify-images / ImageValidatingPolicy](https://kyverno.io/docs/policy-types/cluster-policy/verify-images/) — use for Cosign keyless and key-based verification, attestation chains, `mutateDigest`, `verifyDigest`, and Sigstore Rekor / Notary configuration.
11
+ - [Kyverno PolicyExceptions](https://kyverno.io/docs/exceptions/) — use for `PolicyException` syntax, the audit posture exceptions create, and `match` / `exclude` semantics.
12
+ - [Kyverno cleanup policies](https://kyverno.io/docs/policy-types/cluster-policy/cleanup/) — use for `DeletingPolicy` cron-driven resource deletion patterns.
13
+ - [Kyverno installation](https://kyverno.io/docs/installation/) — use for Helm install, Reports Server enablement, and admission webhook timing.
14
+ - [Kyverno CLI (`kyverno apply`, `kyverno test`, `kyverno migrate-policy`)](https://kyverno.io/docs/kyverno-cli/) — use for offline policy testing and Kyverno-to-VAP migration.
15
+ - [Kyverno PolicyReport / ClusterPolicyReport](https://kyverno.io/docs/policy-reports/) — use for the OpenReports-format violation records the Reports Server stores.
16
+ - [Kubernetes ValidatingAdmissionPolicy (CEL)](https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy/) — use for the native VAP CEL syntax that Kyverno compiles to.
17
+ - [Kubernetes admission webhook reference](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/) — use for `failurePolicy: Fail` vs `Ignore`, webhook timeout, and the admission chain.
18
+ - [Sigstore Cosign documentation](https://docs.sigstore.dev/cosign/overview/) — use for signing flow that ImageValidatingPolicy verifies.
19
+
20
+ ## Grounded insights worth carrying into the skill
21
+
22
+ - The stable Kyverno API is `policies.kyverno.io/v1` with five kinds: `ValidatingPolicy`, `MutatingPolicy`, `GeneratingPolicy`, `DeletingPolicy`, `ImageValidatingPolicy`. The legacy `kyverno.io/v1` `ClusterPolicy` and `Policy` kinds are still supported but deprecated.
23
+ - Kyverno can compile a `ClusterPolicy` (validate-only, CEL-only) into a native `ValidatingAdmissionPolicy` so admission is enforced by the Kubernetes API server without the Kyverno controller in the request path. This is the leanest deployment when the policy fits VAP's capabilities.
24
+ - `failureAction: Audit` (newer API) and `validationFailureAction: audit` (legacy) silently allow violations. Many security incidents have been traced back to a policy that was set to `Audit` "temporarily" and never promoted to `Enforce`.
25
+ - `PolicyException` resources exempt resources from policy. Every exception is a bypass with no built-in expiry, owner, or revoke trigger — the documentation discipline must come from process.
26
+ - `ImageValidatingPolicy` without `mutateDigest: true` allows a verified tag to be re-pointed to a different image after admission. This is a known image-replacement attack path.
27
+ - Reports Server is a separate component that decouples PolicyReport storage from etcd. Without it, PolicyReports at Fortune 50 scale (millions of resources × dozens of policies) overwhelm etcd.
28
+ - Kyverno's default admission webhook timeout is 10 seconds. Policies that perform `context.apiCall` lookups can hit this timeout and fall back to `failurePolicy` — if `failurePolicy` is `Ignore` (default), violations silently pass.
29
+ - The cleanup controller (which powers `DeletingPolicy`) is a separate deployment and must be installed explicitly via Helm value `cleanupController.enabled=true`.
30
+ - `background: false` disables the periodic scan of existing resources. The policy only runs at admission, so resources created before the policy existed are never evaluated — useful for migrations, dangerous as a default.
31
+ - Aggregated CRDs (Kyverno does not ship these, but operators may) can match Kyverno policies in unexpected ways — confirm `match.any.resources.kinds` does not pick up CRDs from third-party operators.