@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,179 @@
1
+ # Workflow and output contract
2
+
3
+ Use this reference only when performing a full Backstage Scaffolder template review, producing implementation guidance, triaging a scaffolder security incident, or completing a production-readiness pass.
4
+
5
+ ## Review domains
6
+
7
+ Check these areas before giving a verdict:
8
+
9
+ - Template `metadata.name`, `spec.owner`, and namespace scoping
10
+ - Each `steps:` entry: action type, input parameters, and provisioning blast radius
11
+ - Input `parameters:` schema: type enforcement, `maxLength`, `pattern`, `enum`, and data-flow into step inputs
12
+ - RBAC permission gate: presence and scope of `@backstage/plugin-permission-backend` policies for this template
13
+ - Integration secret scope: GitHub PAT, Azure DevOps token, or other credential used by `publish:*` actions
14
+ - `catalog:register` usage: whether registered YAML is user-supplied or template-controlled
15
+ - `output:` stanza: whether plaintext secrets or credentials are surfaced in the Backstage UI
16
+
17
+ ## Safe workflow
18
+
19
+ 1. **Frame scope**
20
+ - Template name and `spec.owner`:
21
+ - Target environment (dev / staging / production):
22
+ - Backstage version and active plugins:
23
+ - Whether `@backstage/plugin-permission-backend` is installed:
24
+ - Required outcome of this review:
25
+ - Explicit non-goals:
26
+
27
+ 2. **Collect evidence**
28
+ - Prefer user-provided sanitized Template YAML as primary evidence.
29
+ - Confirm Backstage version and installed plugins from `app-config.yaml` or Backstage `package.json`.
30
+ - Label each finding as `user-provided evidence`, `documentation-based`, or `inference`.
31
+
32
+ 3. **Map action blast radius**
33
+ For each `steps[].action`, ask:
34
+ ```
35
+ - What external system does this action write to?
36
+ - What credential does it use and what is that credential's scope?
37
+ - Is there an RBAC permission policy gating this template for that action?
38
+ - Can a user-controlled input reach this action unsanitized?
39
+ ```
40
+ Example: `publish:github` with `repoUrl: ${{ parameters.repoName }}` where `repoName` has no `pattern`
41
+ validation — a value like `../../../sensitive-repo` could traverse the expected org boundary.
42
+
43
+ 4. **Validate input parameter schema**
44
+ Check each parameter field:
45
+ ```yaml
46
+ parameters:
47
+ - title: Repository Name
48
+ properties:
49
+ repoName:
50
+ type: string
51
+ # REQUIRED: maxLength to prevent oversized inputs
52
+ maxLength: 63
53
+ # REQUIRED: pattern to block path traversal and injection
54
+ pattern: '^[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$'
55
+ ```
56
+ Missing `maxLength` or `pattern` on fields that flow into `publish:github.repoUrl`,
57
+ `roadiehq:utils:fs:write`, or shell-exec actions is a HIGH finding.
58
+
59
+ 5. **Check RBAC permission gate**
60
+ A permission policy protecting a Terraform-provisioning template looks like:
61
+ ```typescript
62
+ // packages/backend/src/plugins/permission.ts
63
+ if (
64
+ isPermission(request.permission, scaffolderTemplateRules.instantiateTemplate)
65
+ ) {
66
+ if (request.credentials.principal.type === 'user') {
67
+ const groups = await catalogClient.getEntities({
68
+ filter: { kind: 'Group', 'spec.members': request.credentials.principal.userEntityRef }
69
+ });
70
+ const isPlatformEngineer = groups.items.some(g => g.metadata.name === 'platform-engineers');
71
+ return { result: isPlatformEngineer ? AuthorizeResult.ALLOW : AuthorizeResult.DENY };
72
+ }
73
+ }
74
+ ```
75
+ If no policy like this exists for infrastructure-provisioning templates, flag as CRITICAL.
76
+
77
+ 6. **Assess integration secret scope**
78
+ Examine the Backstage `integrations:` config that the template's `publish:*` action uses:
79
+ ```yaml
80
+ # app-config.yaml
81
+ integrations:
82
+ github:
83
+ - host: github.com
84
+ token: ${GITHUB_TOKEN} # scope: repo (read/write all repos in org)
85
+ ```
86
+ A token with `repo` scope on all org repos means any template using `publish:github`
87
+ can write to any repo in the org. Prefer a scoped GitHub App with per-repo installation.
88
+
89
+ 7. **Review catalog:register usage**
90
+ ```yaml
91
+ steps:
92
+ - id: register
93
+ action: catalog:register
94
+ input:
95
+ repoContentsUrl: ${{ steps['publish'].output.repoContentsUrl }}
96
+ catalogInfoPath: '/catalog-info.yaml'
97
+ ```
98
+ If `catalogInfoPath` or the registered YAML content is user-controlled (not template-generated),
99
+ it can inject arbitrary `spec.owner`, `spec.lifecycle`, or `metadata.annotations` values
100
+ into the catalog — overwriting existing entities' ownership metadata. Flag as MEDIUM.
101
+
102
+ 8. **Inspect output stanza**
103
+ ```yaml
104
+ output:
105
+ links:
106
+ - title: Repository
107
+ url: ${{ steps['publish'].output.remoteUrl }}
108
+ # HIGH: do not surface generated credentials here
109
+ # - title: Database password
110
+ # url: ${{ steps['create-db'].output.password }}
111
+ ```
112
+ Any `output:` value that contains a generated password, API key, connection string,
113
+ or bearer token is a HIGH finding — it persists in the Backstage task log in plaintext.
114
+
115
+ 9. **Recommend the smallest safe action**
116
+ - Prefer narrowing input validation before adding RBAC, as validation is deploy-free.
117
+ - For RBAC gaps, provide the minimum permission policy snippet.
118
+ - If the safest action is to quarantine the template (mark it `spec.lifecycle: deprecated`
119
+ and alert the platform team), say that plainly.
120
+
121
+ ## Validation commands
122
+
123
+ ```bash
124
+ # List all templates in the catalog
125
+ kubectl get templates -n backstage --all-namespaces
126
+
127
+ # Inspect a specific template
128
+ kubectl get template <name> -n backstage -o yaml
129
+
130
+ # Check whether permission backend plugin is present
131
+ grep -r 'plugin-permission-backend' packages/backend/package.json
132
+
133
+ # List Backstage integrations config (sanitize before sharing)
134
+ grep -A5 'integrations:' app-config.yaml
135
+
136
+ # Enumerate templates with no permission policy annotation
137
+ kubectl get templates -A -o json | jq '.items[] | select(.metadata.annotations["backstage.io/permission-policy"] == null) | .metadata.name'
138
+ ```
139
+
140
+ ## Output contract
141
+
142
+ Return this structure:
143
+
144
+ ```markdown
145
+ # Backstage Scaffolder Template Review: <template-name>
146
+
147
+ ## Executive verdict
148
+ - Status: SAFE / SAFE WITH RISKS / NOT SAFE / NEEDS EVIDENCE
149
+ - Biggest risk:
150
+ - Evidence level:
151
+
152
+ ## Scope and assumptions
153
+ - Template name and owner:
154
+ - Backstage version:
155
+ - Permission backend installed:
156
+ - Confirmed:
157
+ - Unknown:
158
+ - Out of scope:
159
+
160
+ ## Findings
161
+
162
+ | Severity | Field / Step | Finding | Evidence | Why it matters | Minimum safe action |
163
+ |---|---|---|---|---|---|
164
+
165
+ ## Action blast radius summary
166
+
167
+ | Step ID | Action | Blast radius | RBAC gated? |
168
+ |---|---|---|---|
169
+
170
+ ## Recommended actions
171
+ 1. <action> — owner: <owner>, validation: <check>, rollback: <rollback>
172
+
173
+ ## Validation
174
+ - Commands or checks:
175
+ - Expected result:
176
+
177
+ ## Residual risk
178
+ - <risk or explicit none>
179
+ ```
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: cert-manager-issuer-trust-review
3
+ description: Use this skill when reviewing cert-manager PKI configuration for Kubernetes clusters. Trigger when the user asks about Issuer or ClusterIssuer scope, CertificateRequestPolicy coverage, certificate SAN or duration risks, trust-manager bundle distribution, SPIFFE mesh CA integration, cert-manager webhook health, or cloud CA authentication method.
4
+ metadata:
5
+ author: "github: Raishin"
6
+ version: "0.1.0"
7
+ ---
8
+
9
+ # cert-manager Issuer Trust Review
10
+
11
+ ## Purpose
12
+
13
+ Review cert-manager Issuer and ClusterIssuer scope, CertificateRequestPolicy (approver-policy) authorization coverage, certificate SAN wildcard and duration risks, trust-manager CA bundle distribution blast radius, SPIFFE/service-mesh CA integration, and cloud-backed CA authentication method. cert-manager's security posture depends on whether namespace-scoped request authorization exists — without CertificateRequestPolicy, any namespace can issue a certificate for any DNS name from a shared ClusterIssuer.
14
+
15
+ ## Lean operating rules
16
+
17
+ - Prefer live evidence (`kubectl get clusterissuer,issuer -A -o yaml`, `kubectl get certificaterequestpolicy -o yaml`, `kubectl get certificate -A -o yaml`) when the active client exposes it; otherwise fall back to official cert-manager documentation and sanitized YAML from the user.
18
+ - Separate confirmed facts from inference. If CertificateRequestPolicy deployment, certificate health, or trust-manager bundle scope was not directly queried, say so.
19
+ - Treat no CertificateRequestPolicy deployed cluster-wide as a critical finding — any cert request in any namespace is auto-approved against any ClusterIssuer.
20
+ - Treat a ClusterIssuer backed by a corporate private CA with no namespace restriction via CertificateRequestPolicy as a high finding — any namespace can request corp-trusted certs.
21
+ - Treat Certificate `spec.dnsNames` containing wildcards like `*.internal.company.com` for a single microservice as a high finding — overly broad trust grants.
22
+ - Treat `spec.duration` exceeding 90 days for workload certs as a high finding; certs with `duration: 87600h` (10 years) are critical.
23
+ - Treat cert-manager-webhook in a degraded or failing state as a high finding — no new cert renewals can complete.
24
+ - Treat a trust-manager Bundle with no namespace selector distributing CA bundles to all namespaces as a medium finding unless intentionally cluster-wide.
25
+ - Keep the answer scoped, evidence-labeled, and explicit about what was not queried.
26
+
27
+ ## References
28
+
29
+ Load these only when needed:
30
+ - [Workflow and output contract](references/workflow-and-output.md)
31
+
32
+ ## Response minimum
33
+
34
+ Return, at minimum:
35
+ - the scoped target (ClusterIssuer, Issuer, Certificate, CertificateRequestPolicy, or trust-manager Bundle) and evidence level,
36
+ - the issuer type and backing CA (self-signed, ACME, AWS PCA, Azure Key Vault, Vault, etc.) and whether it is namespace-scoped or cluster-scoped,
37
+ - CertificateRequestPolicy presence and subject/issuer constraint coverage,
38
+ - certificate SAN scope and duration for any reviewed Certificate resources,
39
+ - trust-manager Bundle distribution scope,
40
+ - the safest next actions and any assumptions or blockers.
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "cert-manager-issuer-trust-review",
3
+ "name": "cert-manager Issuer Trust Review",
4
+ "type": "skill",
5
+ "provider": "cert-manager",
6
+ "harnesses": ["codex", "claude-code", "cursor", "gemini", "kiro", "other"],
7
+ "summary": "Review cert-manager Issuer and ClusterIssuer scope, CertificateRequestPolicy (approver-policy) coverage, certificate SAN and duration risks, trust-manager bundle distribution, and cloud CA integration authentication for Kubernetes PKI posture.",
8
+ "source_type": "original",
9
+ "official_docs": [
10
+ "https://cert-manager.io/docs/",
11
+ "https://cert-manager.io/docs/concepts/certificate/",
12
+ "https://cert-manager.io/docs/concepts/issuer/",
13
+ "https://cert-manager.io/docs/projects/approver-policy/",
14
+ "https://cert-manager.io/docs/projects/trust-manager/",
15
+ "https://cert-manager.io/docs/configuration/"
16
+ ],
17
+ "security_notes": "A ClusterIssuer backed by a corporate Private CA with no CertificateRequestPolicy means any namespace can issue certs for any DNS name trusted by the corporate CA, enabling MITM against internal mTLS services.",
18
+ "last_verified": "2026-05-02",
19
+ "path": "skills/cert-manager/cert-manager-issuer-trust-review",
20
+ "author": "github: Raishin",
21
+ "version": "0.1.0"
22
+ }
@@ -0,0 +1,222 @@
1
+ # Workflow and Output Contract
2
+
3
+ ## Workflow
4
+
5
+ ### Step 1 — Identify scope and collect raw evidence
6
+
7
+ 1. Confirm the review target: a ClusterIssuer, a namespace-scoped Issuer, a Certificate resource, a CertificateRequestPolicy, or a trust-manager Bundle.
8
+ 2. List all issuers and their types:
9
+ ```bash
10
+ kubectl get clusterissuer -o yaml
11
+ kubectl get issuer -A -o yaml
12
+ ```
13
+ For each issuer, note the `spec` type: `acme`, `ca`, `selfSigned`, `vault`, `venafi`, `acmepca` (AWS), `azureKeyVault`.
14
+ 3. List all CertificateRequestPolicy resources (approver-policy CRD):
15
+ ```bash
16
+ kubectl get certificaterequestpolicy -o yaml
17
+ ```
18
+ If the CRD does not exist, approver-policy is not installed — all cert requests are auto-approved. Record this as a critical gap.
19
+ 4. List certificates with their issuers and SAN content:
20
+ ```bash
21
+ kubectl get certificate -A -o custom-columns=\
22
+ "NS:.metadata.namespace,NAME:.metadata.name,ISSUER:.spec.issuerRef.name,\
23
+ KIND:.spec.issuerRef.kind,DURATION:.spec.duration,DNS:.spec.dnsNames"
24
+ ```
25
+
26
+ ### Step 2 — Audit ClusterIssuer vs Issuer scope
27
+
28
+ 1. For every ClusterIssuer, determine what namespaces can reference it:
29
+ - A `ClusterIssuer` has no namespace — any Certificate in any namespace can reference it.
30
+ - An `Issuer` is namespace-scoped — only Certificates in the same namespace can reference it.
31
+ 2. For cloud-backed ClusterIssuers (AWS PCA, Azure Key Vault, Vault), check the authentication method:
32
+ ```bash
33
+ # AWS PCA ClusterIssuer — check for IRSA annotation
34
+ kubectl get clusterissuer <name> -o jsonpath='{.spec.acmepca}' 2>/dev/null
35
+ kubectl get serviceaccount -n cert-manager cert-manager -o jsonpath='{.metadata.annotations}'
36
+ ```
37
+ Flag as **HIGH** if the ClusterIssuer authenticates to a cloud CA using static credentials (AWS access key, Azure client secret) instead of workload identity (IRSA, Azure Workload Identity).
38
+ 3. Example of a safely scoped setup vs a risky setup:
39
+ ```yaml
40
+ # SAFE: Namespace-scoped Issuer, only one namespace can use it
41
+ apiVersion: cert-manager.io/v1
42
+ kind: Issuer
43
+ metadata:
44
+ name: internal-ca
45
+ namespace: payments
46
+ spec:
47
+ ca:
48
+ secretName: payments-ca-secret
49
+
50
+ # RISKY: ClusterIssuer for corporate CA with no request policy
51
+ apiVersion: cert-manager.io/v1
52
+ kind: ClusterIssuer
53
+ metadata:
54
+ name: corp-private-ca
55
+ spec:
56
+ acmepca:
57
+ arn: arn:aws:acm-pca:us-east-1:123456789:certificate-authority/abc
58
+ ```
59
+
60
+ ### Step 3 — Audit CertificateRequestPolicy coverage
61
+
62
+ CertificateRequestPolicy is the RBAC layer for PKI. Without it, any Certificate resource is auto-approved.
63
+
64
+ 1. Verify approver-policy is installed:
65
+ ```bash
66
+ kubectl get crd certificaterequestpolicies.policy.cert-manager.io
67
+ ```
68
+ If not found, record as **CRITICAL**: all certificate requests are auto-approved.
69
+ 2. For each CertificateRequestPolicy, inspect the subject constraints:
70
+ ```bash
71
+ kubectl get certificaterequestpolicy <name> -o yaml
72
+ ```
73
+ Check:
74
+ - `spec.allowed.dnsNames.values` — which DNS names the policy permits
75
+ - `spec.allowed.dnsNames.validations` — regex constraints on allowed names
76
+ - `spec.allowed.subject` — allowed subject distinguished names
77
+ - `spec.selector.issuerRef` — which issuers this policy covers
78
+ - `spec.selector.namespace` — which namespaces this policy governs
79
+ 3. Example of a correctly constrained CertificateRequestPolicy:
80
+ ```yaml
81
+ apiVersion: policy.cert-manager.io/v1alpha1
82
+ kind: CertificateRequestPolicy
83
+ metadata:
84
+ name: payments-internal-certs
85
+ spec:
86
+ allowed:
87
+ dnsNames:
88
+ values:
89
+ - "*.payments.svc.cluster.local"
90
+ validations:
91
+ - rule: self.endsWith('.payments.svc.cluster.local')
92
+ message: "DNS name must be in payments namespace service domain"
93
+ subject:
94
+ organizations:
95
+ values: ["payments-team"]
96
+ usages:
97
+ - "digital signature"
98
+ - "key encipherment"
99
+ - "server auth"
100
+ - "client auth"
101
+ selector:
102
+ issuerRef:
103
+ name: corp-private-ca
104
+ kind: ClusterIssuer
105
+ group: cert-manager.io
106
+ namespace:
107
+ matchLabels:
108
+ team: payments
109
+ ```
110
+ 4. Flag as **CRITICAL** if no CertificateRequestPolicy restricts a ClusterIssuer backed by a corporate or cloud CA.
111
+ 5. Flag as **HIGH** if a CertificateRequestPolicy allows `dnsNames` with a wildcard that covers high-value internal FQDNs (e.g., `*.internal.company.com`).
112
+
113
+ ### Step 4 — Audit Certificate SAN and duration
114
+
115
+ 1. For each Certificate, review `spec.dnsNames` for excessive scope:
116
+ ```bash
117
+ kubectl get certificate -A -o yaml | grep -A 5 "dnsNames"
118
+ ```
119
+ 2. Flag as **HIGH** any Certificate where a single microservice's cert includes:
120
+ - `*.internal.company.com` (covers all internal services)
121
+ - `*.svc.cluster.local` (covers all cluster services)
122
+ 3. Review certificate duration and renewal:
123
+ ```bash
124
+ kubectl get certificate -A -o custom-columns=\
125
+ "NAME:.metadata.name,DURATION:.spec.duration,RENEW:.spec.renewBefore,READY:.status.conditions[0].status"
126
+ ```
127
+ - Flag as **HIGH** if `duration` exceeds `8760h` (1 year) for workload certs.
128
+ - Flag as **CRITICAL** if `duration` is `87600h` (10 years) or similar for workload certs.
129
+ - Flag as **MEDIUM** if `renewBefore` is not set or is less than 1/3 of `duration`.
130
+ 4. Verify certificate readiness:
131
+ ```bash
132
+ kubectl get certificate -A | grep -v "True"
133
+ ```
134
+ Any certificate not in `Ready=True` state that is approaching expiry is a **HIGH** finding.
135
+
136
+ ### Step 5 — Audit cert-manager webhook health
137
+
138
+ A failing cert-manager webhook blocks all new certificate issuance and renewals.
139
+
140
+ 1. Check webhook pod health:
141
+ ```bash
142
+ kubectl get pods -n cert-manager
143
+ kubectl describe deployment cert-manager-webhook -n cert-manager
144
+ ```
145
+ 2. Check webhook configuration:
146
+ ```bash
147
+ kubectl get validatingwebhookconfiguration cert-manager-webhook -o yaml | grep -A 5 "failurePolicy"
148
+ ```
149
+ `failurePolicy: Fail` means a webhook outage blocks all cert operations. `failurePolicy: Ignore` means webhook failures are skipped — cert validation is bypassed.
150
+ 3. Check for recent CertificateRequest failures:
151
+ ```bash
152
+ kubectl get certificaterequest -A | grep -v "True"
153
+ kubectl describe certificaterequest -A | grep -A 5 "Reason:"
154
+ ```
155
+ 4. Flag as **HIGH** if the cert-manager-webhook deployment has unavailable replicas and any certificates are approaching expiry within 30 days.
156
+
157
+ ### Step 6 — Audit trust-manager Bundle distribution
158
+
159
+ 1. List trust-manager Bundles:
160
+ ```bash
161
+ kubectl get bundle -o yaml
162
+ kubectl get configmapbundle -o yaml 2>/dev/null
163
+ ```
164
+ 2. For each Bundle, check the target namespace selector:
165
+ ```yaml
166
+ # RISKY: no namespaceSelector distributes to all namespaces
167
+ spec:
168
+ target:
169
+ configMap:
170
+ key: "bundle.pem"
171
+ namespaceSelector: {} # matches all namespaces
172
+
173
+ # SAFE: explicit namespace label selector
174
+ spec:
175
+ target:
176
+ configMap:
177
+ key: "bundle.pem"
178
+ namespaceSelector:
179
+ matchLabels:
180
+ cert-manager.io/trust-bundle: "enabled"
181
+ ```
182
+ 3. Flag as **MEDIUM** if a Bundle distributes a corporate or cloud CA bundle to all namespaces without a restrictive namespace selector — untrusted workloads receive the CA and can potentially use it for internal service impersonation if combined with a cert issuance gap.
183
+
184
+ ### Step 7 — Audit SPIFFE / service mesh CA integration
185
+
186
+ 1. Check if cert-manager is serving as the Istio CA via istio-csr:
187
+ ```bash
188
+ kubectl get pods -n istio-system | grep cert-manager
189
+ kubectl get cm istio -n istio-system -o yaml | grep caAddress
190
+ ```
191
+ 2. If cert-manager feeds the mesh trust domain, the ClusterIssuer it references is the root of trust for all SPIFFE SVIDs in the mesh.
192
+ - A compromised ClusterIssuer in this scenario allows forging any SPIFFE SVID for any mesh workload.
193
+ - Flag as **HIGH** if the mesh CA ClusterIssuer uses a shared corporate private CA without CertificateRequestPolicy constraints on the istio-csr service account.
194
+ 3. For Linkerd:
195
+ ```bash
196
+ kubectl get secret linkerd-identity-issuer -n linkerd -o yaml | grep -v "^ tls"
197
+ ```
198
+ Verify the issuer cert expiry is managed by cert-manager and has a `renewBefore` set.
199
+
200
+ ## Output
201
+
202
+ Return:
203
+
204
+ - **target**: ClusterIssuer/Issuer names, Certificate references, or CertificateRequestPolicy names, with evidence source,
205
+ - **evidence level**: `live evidence` / `documentation-based` / `sanitized user evidence` / `inference`,
206
+ - **issuer scope**: namespace-scoped Issuer or cluster-wide ClusterIssuer, backing CA type, authentication method (workload identity vs static credentials),
207
+ - **CertificateRequestPolicy coverage**: present/absent, constrained issuers, allowed DNS names scope, namespace selector,
208
+ - **certificate SAN and duration audit**: wildcard SAN findings, duration exceeding recommended thresholds, renewBefore settings,
209
+ - **webhook health**: cert-manager-webhook pod state, failurePolicy, any CertificateRequest failures,
210
+ - **trust-manager posture**: Bundle distribution scope, namespace selector presence,
211
+ - **mesh integration**: whether cert-manager feeds a mesh CA and the blast radius of that issuer,
212
+ - **risk findings** (with severity: critical / high / medium / low),
213
+ - **safest next actions** with sample YAML,
214
+ - **assumptions and missing facts**.
215
+
216
+ ## Security notes
217
+
218
+ - Never recommend removing CertificateRequestPolicy to unblock a blocked cert request — the correct path is to add an appropriate policy.
219
+ - Never request or print CA private key contents, PKCS#12 bundles, Vault tokens, or AWS credentials.
220
+ - A ClusterIssuer backed by a corporate Private CA with no CertificateRequestPolicy is equivalent to an open PKI endpoint — any namespace can issue trusted certs for any FQDN.
221
+ - Always confirm approver-policy CRD presence before concluding that cert requests are constrained.
222
+ - cert-manager `failurePolicy: Ignore` on the webhook means the webhook can be bypassed — verify this is not used in production cert issuance paths for sensitive CAs.
@@ -0,0 +1,30 @@
1
+ # 🐝 Cilium Skills
2
+
3
+ <p align="center">
4
+ <!-- 🖼️ Add a Cilium logo to assets/logos/cnative/cilium/ and update this path -->
5
+ <span style="font-size:3.5em">🐝</span>
6
+ </p>
7
+
8
+ This folder contains Cilium-focused skills curated for this marketplace.
9
+
10
+ ## Local marketplace portfolio
11
+
12
+ This folder contains **1** local Cilium skill:
13
+
14
+ - `cilium-network-policy-review`
15
+
16
+ ## Portfolio posture
17
+
18
+ Cilium skills for evidence-backed eBPF networking review covering the three policy formats (`NetworkPolicy`, `CiliumNetworkPolicy`, `CiliumClusterwideNetworkPolicy`), L7 policy via embedded Envoy, ClusterMesh cross-cluster semantics, Hubble flow observability, and `CiliumEgressGatewayPolicy` for SNAT egress.
19
+
20
+ These skills are intentionally conservative:
21
+
22
+ - prefer `kubectl get networkpolicies,ciliumnetworkpolicies,ciliumclusterwidenetworkpolicies,ciliumegressgatewaypolicies -A -o yaml` for live policy state grounding before any review
23
+ - treat **removal of a default-deny `NetworkPolicy`** as a critical finding — pods become reachable from any source/destination
24
+ - challenge `CiliumNetworkPolicy` egress with `toCIDRSet: [0.0.0.0/0]` — unrestricted egress = data exfiltration path
25
+ - challenge `policy-default-local-cluster` flag changes in ClusterMesh — cross-cluster policy semantics change globally for every existing policy
26
+ - challenge `CiliumEgressGatewayPolicy` IP collisions — two policies SNATing to the same IP cause silent connection breakage
27
+ - prefer `cilium clustermesh inspect-policy-default-local-cluster` before any flag flip — it lists every policy that would change behavior
28
+ - use official Cilium documentation (docs.cilium.io) for policy syntax, CRD versions, ClusterMesh setup, and L7 policy semantics
29
+
30
+ Run `npm run validate` after changing cataloged Cilium skills.
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: cilium-network-policy-review
3
+ description: Use this skill for Cilium network policy review across the three policy formats (Kubernetes NetworkPolicy, CiliumNetworkPolicy, CiliumClusterwideNetworkPolicy), L7 policy via embedded Envoy, ClusterMesh cross-cluster semantics, Hubble flow observability, and CiliumEgressGatewayPolicy. Trigger when the user asks whether a network policy is too broad, whether default-deny is in place, whether L7 rules will actually be enforced, whether ClusterMesh policy semantics are correct, or whether an egress gateway IP collision is possible.
4
+ metadata:
5
+ author: "github: Raishin"
6
+ version: "0.1.0"
7
+ ---
8
+
9
+ # Cilium Network Policy Review
10
+
11
+ ## Purpose
12
+
13
+ Review Cilium policy resources against zero-trust correctness, blast radius, and the operational traps unique to eBPF-backed networking. Cilium's policy surface is broader than native Kubernetes NetworkPolicy — `CiliumNetworkPolicy` adds L7 rules, FQDN matching, ICMP control, and identity-based selectors; `CiliumClusterwideNetworkPolicy` applies cluster-wide; `CiliumEgressGatewayPolicy` controls SNAT egress IPs; and `policy-default-local-cluster` changes how policy evaluates across ClusterMesh.
14
+
15
+ ## Lean operating rules
16
+
17
+ - Prefer live cluster evidence (`kubectl get networkpolicies,ciliumnetworkpolicies,ciliumclusterwidenetworkpolicies,ciliumegressgatewaypolicies -A -o yaml`, `cilium policy get`, `cilium clustermesh inspect-policy-default-local-cluster`, and Hubble flow observation) when the active client exposes it; otherwise fall back to official Cilium documentation (docs.cilium.io) and sanitized YAML.
18
+ - Separate confirmed facts from inference. If Cilium agent state, ClusterMesh peer status, or Hubble flow data was not queried, say so.
19
+ - Treat **removal of a default-deny `NetworkPolicy`** in a namespace as a critical finding — pods become reachable from any source/destination unless another policy provides isolation.
20
+ - Treat `CiliumNetworkPolicy` egress with `toCIDRSet: [{cidr: 0.0.0.0/0}]` (no `except` for sensitive CIDRs) as a critical finding — unrestricted egress is a documented data exfiltration path.
21
+ - Treat any change to `policy-default-local-cluster` in a ClusterMesh deployment as critical-blast-radius — every existing policy's cross-cluster semantics flip simultaneously.
22
+ - Challenge `CiliumEgressGatewayPolicy` with the same `egressIP` used in two policies — silent connection breakage when both match.
23
+ - Challenge L7 rules in `CiliumNetworkPolicy` for namespaces where Envoy proxy is not enabled — L7 fields require the proxy.
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 Cilium version and ClusterMesh 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 across the three policy formats and ClusterMesh, or formatting the final answer.
32
+ - [Official sources](references/official-sources.md) — use when you need the detailed Cilium documentation list, CRD schema, and grounded insights.
33
+
34
+ ## Response minimum
35
+
36
+ Return, at minimum:
37
+
38
+ - the scoped target (namespace `NetworkPolicy`, namespace `CiliumNetworkPolicy`, cluster-wide `CiliumClusterwideNetworkPolicy`, `CiliumEgressGatewayPolicy`) and evidence level,
39
+ - the default-deny posture in the affected namespace(s),
40
+ - the L7 enforcement assessment (Envoy proxy enabled / required) and whether L7 rules will actually run,
41
+ - the ClusterMesh assessment when applicable (`policy-default-local-cluster` semantics),
42
+ - the safest next actions and rollback plan,
43
+ - the assumptions or blockers that prevent stronger conclusions.
@@ -0,0 +1,30 @@
1
+ {
2
+ "id": "cilium-network-policy-review",
3
+ "name": "Cilium Network Policy Review",
4
+ "type": "skill",
5
+ "provider": "cilium",
6
+ "harnesses": [
7
+ "codex",
8
+ "claude-code",
9
+ "cursor",
10
+ "gemini",
11
+ "kiro",
12
+ "other"
13
+ ],
14
+ "summary": "Review Cilium NetworkPolicy, CiliumNetworkPolicy, CiliumClusterwideNetworkPolicy, CiliumEgressGatewayPolicy, and ClusterMesh policy-default-local-cluster behavior for zero-trust correctness, blast radius, L7 enforcement, and egress gateway IP correctness.",
15
+ "source_type": "original",
16
+ "official_docs": [
17
+ "https://docs.cilium.io/en/stable/",
18
+ "https://docs.cilium.io/en/stable/network/kubernetes/policy/",
19
+ "https://docs.cilium.io/en/stable/security/policy/",
20
+ "https://docs.cilium.io/en/stable/network/clustermesh/",
21
+ "https://docs.cilium.io/en/stable/network/egress-gateway/egress-gateway/",
22
+ "https://docs.cilium.io/en/stable/observability/hubble/",
23
+ "https://docs.cilium.io/en/stable/cmdref/cilium_clustermesh_inspect-policy-default-local-cluster/"
24
+ ],
25
+ "security_notes": "Removal of default-deny NetworkPolicy collapses namespace isolation. Unrestricted egress (0.0.0.0/0) is a documented exfiltration path. ClusterMesh policy-default-local-cluster flag flip changes cross-cluster semantics for every existing policy globally. CiliumEgressGatewayPolicy IP collisions cause silent connection breakage.",
26
+ "last_verified": "2026-05-01",
27
+ "path": "skills/cilium/cilium-network-policy-review",
28
+ "author": "github: Raishin",
29
+ "version": "0.1.0"
30
+ }
@@ -0,0 +1,52 @@
1
+ # Evidence Path and Tooling
2
+
3
+ ## Evidence path
4
+
5
+ 1. Prefer live cluster evidence when a Kubernetes MCP server, `kubectl`, the `cilium` CLI, and Hubble are available against the cluster.
6
+ 2. Fall back to the official Cilium documentation (docs.cilium.io) for policy syntax, CRD schema, and ClusterMesh semantics when live inspection is unavailable.
7
+ 3. Ask only for sanitized policy YAML, `cilium policy get` output, Hubble flow snippets, or ClusterMesh status output when current-state proof matters.
8
+ 4. Label conclusions as `live evidence`, `documentation-based`, `sanitized user evidence`, or `inference`.
9
+
10
+ ## Useful live-evidence commands
11
+
12
+ ```shell
13
+ # All policy formats across the cluster
14
+ kubectl get networkpolicies,ciliumnetworkpolicies,ciliumclusterwidenetworkpolicies -A -o yaml
15
+
16
+ # Egress gateway policies
17
+ kubectl get ciliumegressgatewaypolicies -A -o yaml
18
+
19
+ # Cilium agent state and policy enforcement
20
+ kubectl -n kube-system get pods -l k8s-app=cilium -o name
21
+ kubectl -n kube-system exec -it <cilium-pod> -- cilium status
22
+ kubectl -n kube-system exec -it <cilium-pod> -- cilium policy get
23
+ kubectl -n kube-system exec -it <cilium-pod> -- cilium endpoint list
24
+
25
+ # Hubble flow observation (live traffic vs policy)
26
+ hubble observe --from-namespace <ns> --to-namespace <ns> --verdict DROPPED
27
+ hubble observe --to-fqdn <fqdn> --verdict DROPPED --last 1000
28
+
29
+ # ClusterMesh state
30
+ cilium clustermesh status
31
+ cilium clustermesh inspect-policy-default-local-cluster -A -o json
32
+
33
+ # Policy verification — what does Cilium think this pod is allowed to do?
34
+ kubectl -n kube-system exec -it <cilium-pod> -- \
35
+ cilium policy trace --src-k8s-pod <ns>/<src-pod> --dst-k8s-pod <ns>/<dst-pod>
36
+ ```
37
+
38
+ ## Cilium state to confirm before review
39
+
40
+ - Cilium version (`kubectl -n kube-system exec <cilium-pod> -- cilium version`) — L7 policy support, ClusterMesh features, and CRD versions evolve across releases.
41
+ - Envoy proxy enabled — required for L7 policy fields (`toPorts.rules.http`, `toPorts.rules.kafka`, `toPorts.rules.dns`).
42
+ - ClusterMesh enabled (`cilium clustermesh status`) — multi-cluster policies are evaluated differently when ClusterMesh is up.
43
+ - `policy-default-local-cluster` setting (per cluster, configurable via Helm) — changes whether policies match cross-cluster identities by default.
44
+ - IPAM mode (`cluster-pool`, `kubernetes`, `eni`, `azure`, `aws-eni`) — affects the IP pool and any egress gateway IP planning.
45
+ - Hubble enabled — required for flow observability and policy debugging.
46
+ - Tetragon installed (separate but Cilium-affiliated) — runtime security; relevant when reviewing combined eBPF posture.
47
+
48
+ ## Sanitization rules
49
+
50
+ - Never request kubeconfig contents, ClusterMesh peer Secrets, or Cilium agent tokens.
51
+ - Replace identifiable cluster IDs, peer cluster URLs, public egress IPs (when sensitive), and namespace names with placeholders unless the user provides them.
52
+ - Do not print Cilium agent service account tokens.
@@ -0,0 +1,30 @@
1
+ # Official Sources
2
+
3
+ Load these only when needed:
4
+
5
+ - [Cilium documentation home](https://docs.cilium.io/en/stable/) — use as the entry point for any Cilium question.
6
+ - [Network Policy](https://docs.cilium.io/en/stable/network/kubernetes/policy/) — use for the three policy formats (`NetworkPolicy`, `CiliumNetworkPolicy`, `CiliumClusterwideNetworkPolicy`) and how Cilium distributes them.
7
+ - [Policy language reference](https://docs.cilium.io/en/stable/security/policy/language/) — use for `endpointSelector`, `toEndpoints`, `toCIDRSet`, `toFQDNs`, `toServices`, `toEntities`, L7 HTTP/Kafka/DNS rule syntax.
8
+ - [Policy enforcement modes](https://docs.cilium.io/en/stable/security/policy/intro/) — use for `default`, `always`, `never` enforcement modes and Cilium's identity-based model.
9
+ - [ClusterMesh overview](https://docs.cilium.io/en/stable/network/clustermesh/) — use for multi-cluster service discovery, identity propagation, and cross-cluster policy.
10
+ - [`cilium clustermesh inspect-policy-default-local-cluster`](https://docs.cilium.io/en/stable/cmdref/cilium_clustermesh_inspect-policy-default-local-cluster/) — use before any flag flip; lists every policy whose scope would change.
11
+ - [Egress Gateway](https://docs.cilium.io/en/stable/network/egress-gateway/egress-gateway/) — use for `CiliumEgressGatewayPolicy` SNAT semantics, gateway node selection, and IP collision behavior.
12
+ - [Hubble Observability](https://docs.cilium.io/en/stable/observability/hubble/) — use for flow observation, drop debugging, and policy verification.
13
+ - [Hubble CLI reference](https://docs.cilium.io/en/stable/cmdref/hubble/) — use for `hubble observe` filters and output formats.
14
+ - [Cilium Ingress / Gateway API](https://docs.cilium.io/en/stable/network/servicemesh/) — use when Cilium service mesh (sidecar-free) is in scope alongside policy.
15
+ - [Cilium Service Mesh Beta / GA notes](https://docs.cilium.io/en/stable/network/servicemesh/) — use to understand when Cilium service mesh replaces Istio in the L7 enforcement path.
16
+ - [Tetragon documentation](https://tetragon.io/docs/) — use when runtime security observability and enforcement is in scope alongside Cilium network policy.
17
+ - [Cilium release notes](https://github.com/cilium/cilium/releases) — use for version-specific behavior changes, especially around `policy-default-local-cluster` defaults.
18
+
19
+ ## Grounded insights worth carrying into the skill
20
+
21
+ - Cilium supports three policy formats simultaneously in one cluster: native `NetworkPolicy`, `CiliumNetworkPolicy` (CNP) for namespace-scoped L3-L7, and `CiliumClusterwideNetworkPolicy` (CCNP) for cluster-wide L3-L7.
22
+ - `CiliumNetworkPolicy` adds capabilities native NetworkPolicy lacks: FQDN matching (`toFQDNs`), L7 HTTP/Kafka/DNS rules, identity-based selectors (Cilium endpoint identities derived from labels), `toEntities` (cluster, world, host, kube-apiserver), and ICMP rules.
23
+ - Cilium's effective policy is the **union** of all selecting allows. There is no DENY action — restriction comes from default-deny on selected pods plus explicit allow rules that collectively define the allowed graph.
24
+ - A pod becomes deny-by-default only when **at least one ingress policy selects it for ingress** or **at least one egress policy selects it for egress**. Pods with no selecting policy are allow-all in that direction.
25
+ - ClusterMesh's `policy-default-local-cluster` flag changes whether identity selectors match endpoints in peer clusters. Setting it to `true` (the newer default in 1.16+) makes selectors local-only unless the policy explicitly opts into cross-cluster matching with `cluster: <name>`. Migrating an existing cluster from `false` to `true` silently breaks every policy that depended on cross-cluster matching.
26
+ - `CiliumEgressGatewayPolicy` controls SNAT egress IPs for selected pods. The most common operational pitfall is two policies SNATing to the same `egressIP` — connection-tracking on the gateway node confuses replies, and connections drop intermittently.
27
+ - L7 policy fields (HTTP, Kafka, DNS) require Cilium's embedded Envoy proxy. Without Envoy enabled, the L7 fields are either rejected at admission or silently dropped depending on the Cilium version. Always verify Envoy state before relying on L7.
28
+ - `toCIDRSet: [{cidr: 0.0.0.0/0}]` with no `except` for the cloud metadata service IP (`169.254.169.254` on AWS/Azure/GCP) is the exfiltration path AWS Capital One famously suffered from. Cilium's `except` clause is the right tool to block it while still allowing general internet egress.
29
+ - Hubble flow observation is the only reliable way to verify what Cilium's eBPF programs are actually doing — static policy review can miss conflicts between policies that share endpoint selectors but differ in port or L7 rules.
30
+ - Tetragon (eBPF runtime security) is a separate Cilium-affiliated project, not part of Cilium itself. When a review touches runtime syscall monitoring, link to Tetragon docs explicitly rather than assuming Cilium provides it.