@raishin/vanguard-frontier-agentic 1.3.0 → 1.5.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 (261) hide show
  1. package/README.md +23 -1
  2. package/agents/kubernetes/README.md +10 -1
  3. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/AGENT.md +12 -0
  4. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/claude-code.agent.md +12 -0
  5. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/copilot.agent.md +12 -0
  6. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/cursor.agent.md +12 -0
  7. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/gemini.agent.md +12 -0
  8. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/kiro-cli.agent.json +1 -1
  9. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/harnesses/kiro-ide.agent.md +12 -0
  10. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/metadata.json +6 -3
  11. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/references/least-privilege-rbac.yaml +98 -0
  12. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/references/rbac-pre-flight.md +108 -0
  13. package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/references/refusal-list.md +112 -0
  14. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/AGENT.md +13 -1
  15. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/claude-code.agent.md +12 -0
  16. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/copilot.agent.md +12 -0
  17. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/cursor.agent.md +12 -0
  18. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/gemini.agent.md +12 -0
  19. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/kiro-cli.agent.json +1 -1
  20. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/harnesses/kiro-ide.agent.md +12 -0
  21. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/metadata.json +6 -3
  22. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/references/least-privilege-rbac.yaml +92 -0
  23. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/references/rbac-pre-flight.md +108 -0
  24. package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/references/refusal-list.md +112 -0
  25. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/AGENT.md +13 -1
  26. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/claude-code.agent.md +12 -0
  27. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/copilot.agent.md +12 -0
  28. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/cursor.agent.md +12 -0
  29. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/gemini.agent.md +12 -0
  30. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/kiro-cli.agent.json +1 -1
  31. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/harnesses/kiro-ide.agent.md +12 -0
  32. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/metadata.json +6 -3
  33. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/references/least-privilege-rbac.yaml +101 -0
  34. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/references/rbac-pre-flight.md +106 -0
  35. package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/references/refusal-list.md +102 -0
  36. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/AGENT.md +71 -0
  37. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/harnesses/claude-code.agent.md +54 -0
  38. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/harnesses/codex.toml +38 -0
  39. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/harnesses/copilot.agent.md +54 -0
  40. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/harnesses/cursor.agent.md +54 -0
  41. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/harnesses/gemini.agent.md +54 -0
  42. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/harnesses/kiro-cli.agent.json +5 -0
  43. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/harnesses/kiro-ide.agent.md +54 -0
  44. package/agents/kubernetes/kubernetes-live-network-architecture-mutation-guard-agent/metadata.json +44 -0
  45. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/AGENT.md +14 -2
  46. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/claude-code.agent.md +13 -1
  47. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/copilot.agent.md +13 -1
  48. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/cursor.agent.md +13 -1
  49. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/gemini.agent.md +13 -1
  50. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/kiro-cli.agent.json +1 -1
  51. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/harnesses/kiro-ide.agent.md +13 -1
  52. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/metadata.json +6 -3
  53. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/references/least-privilege-rbac.yaml +101 -0
  54. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/references/rbac-pre-flight.md +106 -0
  55. package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/references/refusal-list.md +102 -0
  56. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/AGENT.md +12 -0
  57. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/claude-code.agent.md +12 -0
  58. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/copilot.agent.md +12 -0
  59. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/cursor.agent.md +12 -0
  60. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/gemini.agent.md +12 -0
  61. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/kiro-cli.agent.json +1 -1
  62. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/harnesses/kiro-ide.agent.md +12 -0
  63. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/metadata.json +6 -3
  64. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/references/least-privilege-rbac.yaml +92 -0
  65. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/references/rbac-pre-flight.md +115 -0
  66. package/agents/kubernetes/kubernetes-live-rbac-mutation-guard-agent/references/refusal-list.md +132 -0
  67. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/AGENT.md +15 -3
  68. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/claude-code.agent.md +15 -3
  69. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/codex.toml +2 -2
  70. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/copilot.agent.md +15 -3
  71. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/cursor.agent.md +15 -3
  72. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/gemini.agent.md +15 -3
  73. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/kiro-cli.agent.json +1 -1
  74. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/harnesses/kiro-ide.agent.md +15 -3
  75. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/metadata.json +7 -4
  76. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/references/least-privilege-rbac.yaml +92 -0
  77. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/references/rbac-pre-flight.md +109 -0
  78. package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/references/refusal-list.md +122 -0
  79. package/agents/kubernetes/kubernetes-network-architecture-review-agent/AGENT.md +65 -0
  80. package/agents/kubernetes/kubernetes-network-architecture-review-agent/harnesses/claude-code.agent.md +48 -0
  81. package/agents/kubernetes/kubernetes-network-architecture-review-agent/harnesses/codex.toml +37 -0
  82. package/agents/kubernetes/kubernetes-network-architecture-review-agent/harnesses/copilot.agent.md +48 -0
  83. package/agents/kubernetes/kubernetes-network-architecture-review-agent/harnesses/cursor.agent.md +48 -0
  84. package/agents/kubernetes/kubernetes-network-architecture-review-agent/harnesses/gemini.agent.md +48 -0
  85. package/agents/kubernetes/kubernetes-network-architecture-review-agent/harnesses/kiro-cli.agent.json +5 -0
  86. package/agents/kubernetes/kubernetes-network-architecture-review-agent/harnesses/kiro-ide.agent.md +48 -0
  87. package/agents/kubernetes/kubernetes-network-architecture-review-agent/metadata.json +44 -0
  88. package/agents/kubernetes/kubernetes-psa-review-agent/metadata.json +2 -1
  89. package/agents/terraform/terraform-reviewer/AGENT.md +2 -1
  90. package/catalog/agents.json +78 -12
  91. package/catalog/install-roles.json +8 -4
  92. package/catalog/skill-manifest.json +521 -422
  93. package/catalog/skills.json +67 -0
  94. package/package.json +23 -4
  95. package/schemas/AGENTS.md +14 -0
  96. package/schemas/agent.frontmatter.schema.json +89 -0
  97. package/schemas/agent.schema.json +8 -0
  98. package/schemas/skill.frontmatter.schema.json +95 -0
  99. package/scripts/apply-skill-allowed-tools.py +142 -0
  100. package/scripts/backfill-skill-metadata.py +410 -0
  101. package/scripts/export-marketplace-agents.mjs +175 -0
  102. package/skills/argocd/argo-rollouts-progressive-delivery-review/SKILL.md +3 -0
  103. package/skills/argocd/argocd-gitops-review/SKILL.md +3 -0
  104. package/skills/aws/aws-agentcore/SKILL.md +3 -0
  105. package/skills/aws/aws-api-edge-delivery-review/SKILL.md +3 -0
  106. package/skills/aws/aws-bedrock-agent-security-governor/SKILL.md +3 -0
  107. package/skills/aws/aws-change-impact-advisor/SKILL.md +3 -0
  108. package/skills/aws/aws-ci-cd-release-engineer/SKILL.md +3 -0
  109. package/skills/aws/aws-compliance-evidence-mapper/SKILL.md +3 -0
  110. package/skills/aws/aws-cost-anomaly-watch-coordinator/SKILL.md +3 -0
  111. package/skills/aws/aws-cost-optimization-governor/SKILL.md +3 -0
  112. package/skills/aws/aws-daily-operations-briefing-coordinator/SKILL.md +3 -0
  113. package/skills/aws/aws-data-protection-backup-steward/SKILL.md +3 -0
  114. package/skills/aws/aws-deployment-hotfix-operator/SKILL.md +3 -0
  115. package/skills/aws/aws-devops-agent-skill-designer/SKILL.md +3 -0
  116. package/skills/aws/aws-dynamodb-data-modeling-performance-review/SKILL.md +3 -0
  117. package/skills/aws/aws-ec2-compute-operations-steward/SKILL.md +3 -0
  118. package/skills/aws/aws-ecs-fargate-platform-operator/SKILL.md +3 -0
  119. package/skills/aws/aws-ecs-service-remediation-operator/SKILL.md +3 -0
  120. package/skills/aws/aws-eks-platform-operator/SKILL.md +3 -0
  121. package/skills/aws/aws-event-driven-architecture-review/SKILL.md +3 -0
  122. package/skills/aws/aws-generative-ai-developer/SKILL.md +3 -0
  123. package/skills/aws/aws-iac-change-safety-review/SKILL.md +3 -0
  124. package/skills/aws/aws-iac-patch-executor/SKILL.md +3 -0
  125. package/skills/aws/aws-iam-least-privilege-review/SKILL.md +3 -0
  126. package/skills/aws/aws-kms-secrets-lifecycle-steward/SKILL.md +3 -0
  127. package/skills/aws/aws-landing-zone-governor/SKILL.md +3 -0
  128. package/skills/aws/aws-live-deployment-guarded-operator/SKILL.md +3 -0
  129. package/skills/aws/aws-live-ecs-rollout-guard/SKILL.md +3 -0
  130. package/skills/aws/aws-live-iac-change-guard/SKILL.md +3 -0
  131. package/skills/aws/aws-live-pipeline-approval-operator/SKILL.md +3 -0
  132. package/skills/aws/aws-live-serverless-release-guard/SKILL.md +3 -0
  133. package/skills/aws/aws-maestro/SKILL.md +3 -0
  134. package/skills/aws/aws-migration-cutover-architect/SKILL.md +3 -0
  135. package/skills/aws/aws-network-architect/SKILL.md +3 -0
  136. package/skills/aws/aws-non-destructive-task-automation-advisor/SKILL.md +3 -0
  137. package/skills/aws/aws-observability-incident-responder/SKILL.md +3 -0
  138. package/skills/aws/aws-pipeline-fix-operator/SKILL.md +3 -0
  139. package/skills/aws/aws-private-ca-issuer-review/SKILL.md +3 -0
  140. package/skills/aws/aws-rds-aurora-performance-investigator/SKILL.md +3 -0
  141. package/skills/aws/aws-resilience-bcdr-review/SKILL.md +3 -0
  142. package/skills/aws/aws-s3-data-perimeter-governor/SKILL.md +3 -0
  143. package/skills/aws/aws-security-posture-hardening/SKILL.md +3 -0
  144. package/skills/aws/aws-serverless-production-readiness/SKILL.md +3 -0
  145. package/skills/aws/aws-serverless-rollout-corrector/SKILL.md +3 -0
  146. package/skills/aws/aws-solution-architect/SKILL.md +3 -0
  147. package/skills/aws/aws-ticket-triage-escalation-coordinator/SKILL.md +3 -0
  148. package/skills/azure/azure-ai-foundry-ops-governor/SKILL.md +3 -0
  149. package/skills/azure/azure-aks-platform-operator/SKILL.md +3 -0
  150. package/skills/azure/azure-app-service-production-readiness/SKILL.md +3 -0
  151. package/skills/azure/azure-cosmosdb-application-developer/SKILL.md +3 -0
  152. package/skills/azure/azure-cosmosdb-performance-investigator/SKILL.md +3 -0
  153. package/skills/azure/azure-cosmosdb-platform-operator/SKILL.md +3 -0
  154. package/skills/azure/azure-cost-estimation-review/SKILL.md +3 -0
  155. package/skills/azure/azure-cost-optimization-governor/SKILL.md +3 -0
  156. package/skills/azure/azure-entra-id-specialist/SKILL.md +3 -0
  157. package/skills/azure/azure-governance-policy-guardrails/SKILL.md +3 -0
  158. package/skills/azure/azure-identity-governance-review/SKILL.md +3 -0
  159. package/skills/azure/azure-key-vault-secret-lifecycle-auditor/SKILL.md +3 -0
  160. package/skills/azure/azure-keyvault-certificate-issuer-review/SKILL.md +3 -0
  161. package/skills/azure/azure-landing-zone-architect/SKILL.md +3 -0
  162. package/skills/azure/azure-live-aks-rollout-guard/SKILL.md +3 -0
  163. package/skills/azure/azure-live-app-service-slot-swap-guard/SKILL.md +3 -0
  164. package/skills/azure/azure-live-arm-deployment-stack-guard/SKILL.md +3 -0
  165. package/skills/azure/azure-live-cost-budget-action-guard/SKILL.md +3 -0
  166. package/skills/azure/azure-live-entra-role-assignment-guard/SKILL.md +3 -0
  167. package/skills/azure/azure-live-keyvault-rotation-purge-guard/SKILL.md +3 -0
  168. package/skills/azure/azure-live-pim-jit-activation-guard/SKILL.md +3 -0
  169. package/skills/azure/azure-maestro/SKILL.md +3 -0
  170. package/skills/azure/azure-migrate-landing-zone-cutover/SKILL.md +3 -0
  171. package/skills/azure/azure-network-topology-review/SKILL.md +3 -0
  172. package/skills/azure/azure-observability-investigator/SKILL.md +3 -0
  173. package/skills/azure/azure-platform-automation-devops/SKILL.md +3 -0
  174. package/skills/azure/azure-private-endpoint-adoption-planner/SKILL.md +3 -0
  175. package/skills/azure/azure-rbac-review/SKILL.md +3 -0
  176. package/skills/azure/azure-resilience-bcdr-review/SKILL.md +3 -0
  177. package/skills/azure/azure-resource-health-incident-triage/SKILL.md +3 -0
  178. package/skills/azure/azure-role-selector/SKILL.md +3 -0
  179. package/skills/azure/azure-security-posture-hardening/SKILL.md +3 -0
  180. package/skills/azure/azure-subscription-resource-organization/SKILL.md +3 -0
  181. package/skills/backstage/backstage-scaffolder-template-review/SKILL.md +3 -0
  182. package/skills/cert-manager/cert-manager-issuer-trust-review/SKILL.md +3 -0
  183. package/skills/cilium/cilium-network-policy-review/SKILL.md +3 -0
  184. package/skills/falco/falco-runtime-threat-rules-review/SKILL.md +3 -0
  185. package/skills/finops/finops-cloud-price-advisor/SKILL.md +3 -0
  186. package/skills/fluxcd/fluxcd-kustomization-helmrelease-review/SKILL.md +3 -0
  187. package/skills/istio/istio-ambient-mesh-review/SKILL.md +3 -0
  188. package/skills/kubernetes/README.md +5 -1
  189. package/skills/kubernetes/external-secrets-operator-review/SKILL.md +3 -0
  190. package/skills/kubernetes/kubecost-chargeback-allocation-review/SKILL.md +3 -0
  191. package/skills/kubernetes/kubernetes-live-network-architecture-mutation-guard/SKILL.md +82 -0
  192. package/skills/kubernetes/kubernetes-live-network-architecture-mutation-guard/metadata.json +33 -0
  193. package/skills/kubernetes/kubernetes-live-network-architecture-mutation-guard/references/least-privilege-rbac.yaml +210 -0
  194. package/skills/kubernetes/kubernetes-live-network-architecture-mutation-guard/references/official-sources.md +41 -0
  195. package/skills/kubernetes/kubernetes-live-network-architecture-mutation-guard/references/permitted-mutations.md +173 -0
  196. package/skills/kubernetes/kubernetes-live-network-architecture-mutation-guard/references/rbac-pre-flight.md +252 -0
  197. package/skills/kubernetes/kubernetes-live-network-architecture-mutation-guard/references/refusal-list.md +313 -0
  198. package/skills/kubernetes/kubernetes-live-network-architecture-mutation-guard/references/rollback-patterns.md +103 -0
  199. package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/SKILL.md +3 -0
  200. package/skills/kubernetes/kubernetes-maestro/SKILL.md +3 -0
  201. package/skills/kubernetes/kubernetes-maestro/references/safety-checklist.md +1 -1
  202. package/skills/kubernetes/kubernetes-maestro/references/workflow-and-output.md +57 -5
  203. package/skills/kubernetes/kubernetes-network-architecture-review/SKILL.md +84 -0
  204. package/skills/kubernetes/kubernetes-network-architecture-review/metadata.json +34 -0
  205. package/skills/kubernetes/kubernetes-network-architecture-review/references/dataplane-and-cni.md +89 -0
  206. package/skills/kubernetes/kubernetes-network-architecture-review/references/dns-and-discovery.md +120 -0
  207. package/skills/kubernetes/kubernetes-network-architecture-review/references/mcp-and-evidence.md +53 -0
  208. package/skills/kubernetes/kubernetes-network-architecture-review/references/multi-cluster-and-egress.md +69 -0
  209. package/skills/kubernetes/kubernetes-network-architecture-review/references/official-sources.md +54 -0
  210. package/skills/kubernetes/kubernetes-network-architecture-review/references/service-gateway-routing.md +108 -0
  211. package/skills/kubernetes/kubernetes-network-architecture-review/references/troubleshooting-playbook.md +100 -0
  212. package/skills/kubernetes/kubernetes-pod-security-admission-review/SKILL.md +3 -0
  213. package/skills/kubernetes/kubernetes-pod-spec-review/SKILL.md +3 -0
  214. package/skills/kubernetes/kubernetes-rbac-review/SKILL.md +3 -0
  215. package/skills/kubernetes/kubernetes-workload-identity-review/SKILL.md +3 -0
  216. package/skills/kyverno/kyverno-policy-review/SKILL.md +3 -0
  217. package/skills/oci/oci-autonomous-database-architect/SKILL.md +3 -0
  218. package/skills/oci/oci-certificates-issuer-review/SKILL.md +3 -0
  219. package/skills/oci/oci-cloud-guard-responder/SKILL.md +3 -0
  220. package/skills/oci/oci-compute-instance-agent-operator/SKILL.md +3 -0
  221. package/skills/oci/oci-compute-platform-operator/SKILL.md +3 -0
  222. package/skills/oci/oci-cost-finops-analyst/SKILL.md +3 -0
  223. package/skills/oci/oci-database-platform-dba/SKILL.md +3 -0
  224. package/skills/oci/oci-dbtools-sql-analyst/SKILL.md +3 -0
  225. package/skills/oci/oci-devops-container-platform-engineer/SKILL.md +3 -0
  226. package/skills/oci/oci-exadata-database-architect/SKILL.md +3 -0
  227. package/skills/oci/oci-exadata-platform-architect/SKILL.md +3 -0
  228. package/skills/oci/oci-fusion-apps-environment-operator/SKILL.md +3 -0
  229. package/skills/oci/oci-goldengate-replication-operator/SKILL.md +3 -0
  230. package/skills/oci/oci-identity-access-governor/SKILL.md +3 -0
  231. package/skills/oci/oci-iot-digital-twin-engineer/SKILL.md +3 -0
  232. package/skills/oci/oci-limits-capacity-planner/SKILL.md +3 -0
  233. package/skills/oci/oci-live-autonomous-db-lifecycle-guard/SKILL.md +3 -0
  234. package/skills/oci/oci-live-cost-budget-runaway-guard/SKILL.md +3 -0
  235. package/skills/oci/oci-live-iam-policy-compartment-guard/SKILL.md +3 -0
  236. package/skills/oci/oci-live-network-security-rule-guard/SKILL.md +3 -0
  237. package/skills/oci/oci-live-oke-rollout-guard/SKILL.md +3 -0
  238. package/skills/oci/oci-live-resource-manager-stack-guard/SKILL.md +3 -0
  239. package/skills/oci/oci-live-vault-key-destruction-guard/SKILL.md +3 -0
  240. package/skills/oci/oci-load-balancer-traffic-engineer/SKILL.md +3 -0
  241. package/skills/oci/oci-maestro/SKILL.md +3 -0
  242. package/skills/oci/oci-migration-cutover-architect/SKILL.md +3 -0
  243. package/skills/oci/oci-multi-cloud-architect/SKILL.md +3 -0
  244. package/skills/oci/oci-mysql-heatwave-ai-specialist/SKILL.md +3 -0
  245. package/skills/oci/oci-network-architect/SKILL.md +3 -0
  246. package/skills/oci/oci-observability-incident-responder/SKILL.md +3 -0
  247. package/skills/oci/oci-recovery-service-operator/SKILL.md +3 -0
  248. package/skills/oci/oci-registry-artifact-governor/SKILL.md +3 -0
  249. package/skills/oci/oci-resource-search-inventory-analyst/SKILL.md +3 -0
  250. package/skills/oci/oci-security-compliance-reviewer/SKILL.md +3 -0
  251. package/skills/oci/oci-solution-architect/SKILL.md +3 -0
  252. package/skills/oci/oci-storage-backup-steward/SKILL.md +3 -0
  253. package/skills/oci/oci-support-incident-coordinator/SKILL.md +3 -0
  254. package/skills/oci/oracle-oci-mcp-grounded-advisor/SKILL.md +3 -0
  255. package/skills/opentelemetry/opentelemetry-collector-config-review/SKILL.md +3 -0
  256. package/skills/prometheus/prometheus-alerting-cardinality-review/SKILL.md +3 -0
  257. package/skills/sigstore/sigstore-cosign-supply-chain-review/SKILL.md +3 -0
  258. package/skills/terraform/terraform-maestro/SKILL.md +3 -0
  259. package/skills/velero/velero-backup-restore-guard/SKILL.md +5 -2
  260. package/skills/velero/velero-backup-restore-guard/references/safety-checklist.md +1 -1
  261. package/skills/velero/velero-backup-restore-guard/references/workflow-and-output.md +17 -8
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: kubernetes-live-network-architecture-mutation-guard
3
+ description: Guard live kubectl apply, patch, or create operations on Kubernetes networking *architecture* surface — Service spec (`internalTrafficPolicy`, `externalTrafficPolicy`, `topology-mode`, `trafficDistribution`), CoreDNS Corefile, NodeLocal DNSCache install, Gateway API resources (Gateway / HTTPRoute / GRPCRoute / TLSRoute / ReferenceGrant), and ClusterMesh peer Secrets. HARD REFUSE one-way doors (CNI replacement, kube-proxy mode swap, MTU change, Pod / Service CIDR resize, namespace deletion). Pre-flight `kubectl auth can-i` matrix against a least-privilege ServiceAccount before any write. Use only when an intentional architecture-level networking mutation is requested against a confirmed cluster target with a documented rollback path.
4
+ allowed-tools: Bash Read Edit Grep Glob WebFetch
5
+ metadata:
6
+ author: "github: Raishin"
7
+ version: "0.1.0"
8
+ updated: "2026-05-08"
9
+ category: networking
10
+ ---
11
+
12
+ # Kubernetes Live Network Architecture Mutation Guard
13
+
14
+ ## Purpose
15
+
16
+ Act as the guarded live operator for low-blast-radius, reversible architecture-level networking mutations. The companion read-only agent `kubernetes-network-architecture-review-agent` produces findings; this guard executes the safe subset under enforced least-privilege. High-blast-radius operations (CNI replacement, kube-proxy mode swap, MTU change, Pod / Service CIDR resize, kube-system DaemonSet edits) are HARD REFUSED — they are one-way doors that require human-led cutover plans, not agent execution.
17
+
18
+ ## When to use
19
+
20
+ Use this skill when:
21
+
22
+ - A `Service` needs an `internalTrafficPolicy` / `externalTrafficPolicy` / `service.kubernetes.io/topology-mode` / `spec.trafficDistribution` patch.
23
+ - A `ConfigMap/coredns` Corefile change is required (e.g. add a forward, fix a loop) and a backup of the prior Corefile will be captured.
24
+ - A NodeLocal DNSCache install or upgrade is required (under explicit human gate).
25
+ - Gateway API resources (`Gateway`, `HTTPRoute`, `GRPCRoute`, `TLSRoute`, `ReferenceGrant`) are being created or patched.
26
+ - A Cilium ClusterMesh peer `Secret` is being created in a known namespace under explicit human gate.
27
+
28
+ Do NOT use this skill when:
29
+
30
+ - The change replaces or uninstalls a CNI.
31
+ - The change swaps kube-proxy mode (iptables ↔ IPVS ↔ nftables ↔ Cilium kube-proxy replacement).
32
+ - The change adjusts node MTU.
33
+ - The change resizes Pod CIDR or Service CIDR.
34
+ - The change deletes a `Namespace`, a `kube-system` `DaemonSet`/`Deployment`, a `CustomResourceDefinition`, or a broad `Secret`.
35
+
36
+ For these, refer the user to a human-led cutover plan; the architecture review agent can produce the plan but no agent in this repo will execute it.
37
+
38
+ ## Pre-flight RBAC self-check (mandatory)
39
+
40
+ Before any mutation, run the matrix from `references/rbac-pre-flight.md`. The matrix is grounded against `kubernetes.io/docs/concepts/security/rbac-good-practices`. Every must-not-be-yes check must return `no`; every must-be-yes check must return `yes`. Any deviation: refuse to act and tell the user the binding is over-scoped.
41
+
42
+ If the operator's principal returns `yes` to `kubectl auth can-i '*' '*' --all-namespaces` (i.e. it is `cluster-admin` or in `system:masters`), refuse. Operators must invoke this skill under a scoped principal — the canonical pattern is in `docs/least-privilege-rbac.md`.
43
+
44
+ ## Lean operating rules
45
+
46
+ - Prefer live cluster evidence from `kubectl` when available; fall back to upstream documentation (kubernetes.io, gateway-api.sigs.k8s.io, docs.cilium.io, coredns.io) and sanitized YAML provided by the user.
47
+ - **HARD REFUSE** the one-way doors listed in `references/refusal-list.md`. Do not negotiate.
48
+ - Do not execute any mutation until cluster context, namespace (if scoped), target object name, exact change delta, and a captured pre-mutation `kubectl get ... -o yaml` baseline are all explicit.
49
+ - Capture the current state of the target object as `/tmp/<resource>.before.yaml` (or equivalent path) as the rollback baseline before any write. If the baseline cannot be captured, refuse.
50
+ - Prefer `kubectl patch` over `kubectl apply` when patching specific fields, and prefer `kubectl apply -f baseline.yaml` over `kubectl delete` for rollback.
51
+ - For CoreDNS Corefile changes: keep the prior `ConfigMap` revision captured as `coredns.before.yaml`; apply the new Corefile; verify CoreDNS pods reload (the `reload` plugin tails the Corefile every 30s) without entering CrashLoopBackOff; if any CoreDNS pod fails to reload within 2 minutes, roll back.
52
+ - For Gateway API changes: confirm the `GatewayClass.spec.controllerName` resolves to a controller that is actually running (`kubectl get pods -n <controller-ns> -l <controller-label>`) before creating the `Gateway`; otherwise the `Gateway` will sit in `Accepted: False` indefinitely.
53
+ - For ClusterMesh peer `Secret` creation: confirm the destination namespace is the documented Cilium ClusterMesh namespace (typically `kube-system` for Cilium installations using `kubectl apply` patterns, or `cilium` when Helm-installed with non-default namespace) and the secret name matches the peer cluster identifier exactly. Refuse on any name mismatch.
54
+ - If the proposed change touches a security boundary (e.g. setting `spec.allowedRoutes.namespaces.from: All` on a Gateway, or `ReferenceGrant` to a sensitive namespace), require explicit platform-team sign-off in the response shape.
55
+ - If the target, approval state, baseline capture, or rollback verb is ambiguous, push back and refuse.
56
+ - Never print kubeconfig contents, ServiceAccount tokens, bearer tokens, ClusterMesh peer Secret data fields, or raw cluster credentials. Summarize sanitized evidence only.
57
+ - **Refuse to read or process credentials offered by the operator.** If the user volunteers a kubeconfig file path, pastes a token, or offers a peer Secret payload, refuse to read it. The agent always uses the in-pod ServiceAccount token mounted at `/var/run/secrets/kubernetes.io/serviceaccount/token` and rejects any other credential source. This refusal applies even when the user insists "just this once."
58
+ - Load references only when needed.
59
+
60
+ ## References
61
+
62
+ Load these only when needed:
63
+
64
+ - [Permitted mutations](references/permitted-mutations.md) — the explicit allowlist of mutations this guard will execute and the verb-by-verb safety contract for each.
65
+ - [Refusal list](references/refusal-list.md) — the explicit HARD REFUSE list of one-way-door operations and the rationale for each. Includes the cluster-side blast-radius if the refusal is bypassed.
66
+ - [RBAC pre-flight](references/rbac-pre-flight.md) — the `kubectl auth can-i` matrix that runs before any mutation, with grounding to `kubernetes.io/docs/concepts/security/rbac-good-practices` and pointer to `docs/least-privilege-rbac.md`.
67
+ - [Rollback patterns](references/rollback-patterns.md) — per-mutation-type rollback verb, baseline capture path, and post-rollback verification.
68
+ - [Official sources](references/official-sources.md) — authoritative upstream documentation links.
69
+
70
+ ## Response minimum
71
+
72
+ Return, at minimum:
73
+
74
+ - confirmed cluster context (cluster name, namespace where applicable, principal acting),
75
+ - pre-flight RBAC self-check result (matrix output, must-not rows confirmed `no`, must-be rows confirmed `yes`),
76
+ - pre-mutation baseline path (`/tmp/<resource>.before.yaml`),
77
+ - proposed mutation as the exact `kubectl patch` / `kubectl apply` / `kubectl create` command,
78
+ - blast-radius assessment (which workloads, namespaces, or external systems are affected),
79
+ - approval status with explicit human sign-off requirement when the change touches a security boundary,
80
+ - rollback verb (`kubectl apply -f /tmp/<resource>.before.yaml` for additive; specific delete only when the resource was the agent's own creation),
81
+ - post-mutation verification command (Service patch: `kubectl get endpointslice -l kubernetes.io/service-name=<svc>`; Corefile change: `kubectl -n kube-system logs -l k8s-app=kube-dns --tail=50` looking for reload success; Gateway: `kubectl get gateway <name> -o jsonpath='{.status.conditions}'`),
82
+ - explicit `REFUSED` response with the matching rule from `references/refusal-list.md` if the requested mutation is on the hard-refuse list.
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "kubernetes-live-network-architecture-mutation-guard",
3
+ "name": "Kubernetes Live Network Architecture Mutation Guard",
4
+ "type": "skill",
5
+ "provider": "kubernetes",
6
+ "harnesses": [
7
+ "codex",
8
+ "claude-code",
9
+ "cursor",
10
+ "gemini",
11
+ "kiro",
12
+ "other"
13
+ ],
14
+ "summary": "Guard live kubectl apply/patch/create operations on networking architecture surface — Service spec (internalTrafficPolicy, externalTrafficPolicy, topology-mode, trafficDistribution), CoreDNS Corefile, NodeLocal DNSCache install, Gateway API resources, and ClusterMesh peer Secrets. HARD REFUSE one-way doors (CNI replacement, kube-proxy mode swap, MTU change, Pod / Service CIDR resize, namespace deletion). Pre-flight kubectl auth can-i matrix against a least-privilege ServiceAccount before any write.",
15
+ "source_type": "original",
16
+ "official_docs": [
17
+ "https://kubernetes.io/docs/concepts/security/rbac-good-practices/",
18
+ "https://kubernetes.io/docs/reference/access-authn-authz/rbac/",
19
+ "https://kubernetes.io/docs/reference/kubectl/generated/kubectl_auth/kubectl_auth_can-i/",
20
+ "https://kubernetes.io/docs/concepts/services-networking/service-traffic-policy/",
21
+ "https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/",
22
+ "https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/",
23
+ "https://gateway-api.sigs.k8s.io/api-types/gateway/",
24
+ "https://gateway-api.sigs.k8s.io/api-types/httproute/",
25
+ "https://coredns.io/plugins/reload/",
26
+ "https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/"
27
+ ],
28
+ "security_notes": "This skill is bound to a ServiceAccount with deliberately omitted verbs: no `delete` cluster-wide, no operations on `namespaces` / `customresourcedefinitions` / `kube-system` DaemonSets and Deployments / broad `secrets`. Pre-flight `kubectl auth can-i` matrix MUST run before any mutation; refuses if any must-not check returns `yes` (binding over-scoped) or if operator is in `system:masters` (RBAC bypass). HARD REFUSE list covers one-way doors that are out-of-scope for any agent: CNI replacement, kube-proxy mode swap, MTU change, Pod / Service CIDR resize. CoreDNS Corefile changes require backup capture and post-mutation reload verification within 2 minutes. Gateway resources require GatewayClass controller liveness check before creation. ClusterMesh peer Secret data fields must never be printed or logged.",
29
+ "last_verified": "2026-05-08",
30
+ "path": "skills/kubernetes/kubernetes-live-network-architecture-mutation-guard",
31
+ "author": "github: Raishin",
32
+ "version": "0.1.0"
33
+ }
@@ -0,0 +1,210 @@
1
+ # =====================================================================
2
+ # Least-privilege RBAC for kubernetes-live-network-architecture-mutation-guard-agent
3
+ #
4
+ # Apply BEFORE running the agent.
5
+ # Authoring contract: docs/least-privilege-rbac.md
6
+ # Pre-flight matrix: references/rbac-pre-flight.md
7
+ # Refusal list: references/refusal-list.md (cluster-side enforcement of these omissions)
8
+ #
9
+ # Audit:
10
+ # SA="system:serviceaccount:vanguard-system:vanguard-network-arch-guard"
11
+ # kubectl auth can-i delete namespaces --as=$SA # must return: no
12
+ # kubectl auth can-i patch services -A --as=$SA # must return: yes
13
+ #
14
+ # Per upstream kubernetes.io/docs/concepts/security/rbac-good-practices:
15
+ # "Avoid wildcard permissions, especially to all resources, as this grants
16
+ # access to current and future object types."
17
+ # =====================================================================
18
+ apiVersion: v1
19
+ kind: Namespace
20
+ metadata:
21
+ name: vanguard-system
22
+ labels:
23
+ pod-security.kubernetes.io/enforce: restricted
24
+ pod-security.kubernetes.io/enforce-version: latest
25
+ app.kubernetes.io/managed-by: vanguard-frontier
26
+ ---
27
+ apiVersion: v1
28
+ kind: ServiceAccount
29
+ metadata:
30
+ name: vanguard-network-arch-guard
31
+ namespace: vanguard-system
32
+ annotations:
33
+ vanguard.frontier/agent: "kubernetes-live-network-architecture-mutation-guard-agent"
34
+ vanguard.frontier/scope: "least-privilege-network-architecture"
35
+ vanguard.frontier/contract: "docs/least-privilege-rbac.md"
36
+ automountServiceAccountToken: true
37
+ ---
38
+ apiVersion: rbac.authorization.k8s.io/v1
39
+ kind: ClusterRole
40
+ metadata:
41
+ name: vanguard-network-arch-guard
42
+ rules:
43
+ # ---- READ across networking architecture surface ----
44
+ - apiGroups: [""]
45
+ resources: ["services", "endpoints", "nodes"]
46
+ verbs: ["get", "list", "watch"]
47
+ - apiGroups: ["discovery.k8s.io"]
48
+ resources: ["endpointslices"]
49
+ verbs: ["get", "list", "watch"]
50
+ - apiGroups: ["gateway.networking.k8s.io"]
51
+ resources:
52
+ - "gatewayclasses"
53
+ - "gateways"
54
+ - "httproutes"
55
+ - "grpcroutes"
56
+ - "tlsroutes"
57
+ - "tcproutes"
58
+ - "udproutes"
59
+ - "referencegrants"
60
+ verbs: ["get", "list", "watch"]
61
+ # ---- WRITE on Service spec (low blast radius, reversible) ----
62
+ - apiGroups: [""]
63
+ resources: ["services"]
64
+ verbs: ["patch"]
65
+ # NOTE: "delete" verb DELIBERATELY OMITTED. Rollback uses `kubectl apply -f baseline.yaml`.
66
+ # NOTE: "update" verb omitted in favor of "patch" for narrower change semantics.
67
+ # NOTE: CoreDNS ConfigMap read/write is intentionally ABSENT from this ClusterRole.
68
+ # resourceNames on a ClusterRole restricts only the object name, not the namespace;
69
+ # a ClusterRole rule would let the SA patch any ConfigMap named "coredns" in ANY
70
+ # namespace. A namespaced Role/RoleBinding in kube-system (below) provides the
71
+ # correct least-privilege scope. See docs/least-privilege-rbac.md §Threat model.
72
+ # ---- WRITE on Gateway API resources (user-owned, not control plane) ----
73
+ - apiGroups: ["gateway.networking.k8s.io"]
74
+ resources:
75
+ - "gateways"
76
+ - "httproutes"
77
+ - "grpcroutes"
78
+ - "tlsroutes"
79
+ - "tcproutes"
80
+ - "udproutes"
81
+ - "referencegrants"
82
+ verbs: ["create", "patch"]
83
+ # NOTE: "delete" verb DELIBERATELY OMITTED on Gateway API resources.
84
+ # Rollback to absent state is performed by a human-confirmed operation, not by this agent.
85
+ # NOTE: "gatewayclasses" is read-only; GatewayClass is installed by the controller's Helm chart.
86
+ # =====================================================================
87
+ # DELIBERATELY ABSENT — DO NOT add unless you accept the listed risk.
88
+ # This list is exhaustive against the destructive operations enumerated
89
+ # in references/refusal-list.md. The binding is deny-by-default: anything
90
+ # not granted above is denied at the API server. New attack vectors that
91
+ # emerge in future Kubernetes releases are denied automatically.
92
+ #
93
+ # === Namespaces & finalizers ===
94
+ # apiGroups: [""], resources: ["namespaces"] -> delete kube-system / cilium / istio-system
95
+ # patch with metadata.finalizers paths on any resource -> bypass namespace / PV / CRD finalizer protection
96
+ #
97
+ # === Workload writes in control-plane namespaces ===
98
+ # apiGroups: [""], resources: ["pods"] -> exec / delete on control-plane pods
99
+ # apiGroups: [""], resources: ["pods/exec"] -> shell into cilium-agent / kube-proxy / coredns
100
+ # apiGroups: [""], resources: ["pods/portforward"] -> NetworkPolicy bypass to any reachable Service
101
+ # apiGroups: [""], resources: ["pods/proxy"] -> proxy traffic via apiserver to pod
102
+ # apiGroups: [""], resources: ["pods/binding"] -> manual Pod-to-Node binding, scheduler bypass
103
+ # apiGroups: [""], resources: ["pods/eviction"] -> bypass PodDisruptionBudgets in some configs
104
+ # apiGroups: ["apps"], resources: ["daemonsets"], verbs: write -> remove cilium / kube-proxy / node-local-dns
105
+ # apiGroups: ["apps"], resources: ["deployments"], verbs: write -> remove ingress controllers / mesh control planes
106
+ # apiGroups: ["apps"], resources: ["statefulsets"], verbs: write -> remove etcd-replica / clustered controllers
107
+ #
108
+ # === Node lifecycle ===
109
+ # apiGroups: [""], resources: ["nodes"], verbs: ["patch", "update", "delete"] -> drain / cordon / delete nodes
110
+ # apiGroups: [""], resources: ["nodes/proxy"] -> direct kubelet API, bypasses some RBAC
111
+ # apiGroups: ["coordination.k8s.io"], resources: ["leases"] -> Lease in kube-node-lease, fake node liveness
112
+ #
113
+ # === Secrets & credentials ===
114
+ # apiGroups: [""], resources: ["secrets"] -> cluster-wide credential exposure
115
+ # apiGroups: [""], resources: ["serviceaccounts/token"] -> mint tokens for arbitrary SAs (TokenRequest)
116
+ # apiGroups: ["certificates.k8s.io"], any verb -> approve CSRs, especially with system:masters group
117
+ # apiGroups: ["authentication.k8s.io"], any verb -> tokenreviews, impersonation primitives
118
+ #
119
+ # === Cluster-extension surface (admission, aggregation, scheduling) ===
120
+ # apiGroups: ["admissionregistration.k8s.io"] -> mutating/validating webhook configs (admission bypass)
121
+ # apiGroups: ["apiregistration.k8s.io"] -> APIService aggregation hijack
122
+ # apiGroups: ["apiextensions.k8s.io"] -> CRD install / uninstall
123
+ # apiGroups: ["scheduling.k8s.io"] -> PriorityClass system-cluster-critical / system-node-critical
124
+ # apiGroups: ["policy"], resources: ["poddisruptionbudgets"], verbs: write -> remove eviction protection
125
+ #
126
+ # === Networking control plane ===
127
+ # apiGroups: [""], resources: ["endpoints"], verbs: write -> race with EndpointSlice controller, redirect Service traffic
128
+ # apiGroups: ["discovery.k8s.io"], resources: ["endpointslices"], verbs: write -> same race
129
+ # apiGroups: ["networking.k8s.io"], resources: ["ingressclasses"], verbs: write -> break Ingress controller binding
130
+ # apiGroups: ["networking.k8s.io"], resources: ["networkpolicies"] -> delegated to cilium-network-policy-review
131
+ # apiGroups: ["cilium.io"], resources: ["ciliumnetworkpolicies", "ciliumclusterwidenetworkpolicies"] -> delegated
132
+ # apiGroups: ["security.istio.io"], resources: ["authorizationpolicies", "peerauthentications"] -> delegated
133
+ #
134
+ # === Storage ===
135
+ # apiGroups: ["storage.k8s.io"], resources: ["storageclasses"], verbs: write -> remove default StorageClass, break PVC provisioning
136
+ # apiGroups: [""], resources: ["persistentvolumes"], verbs: write -> orphan cloud volumes
137
+ #
138
+ # === RBAC self-modification ===
139
+ # apiGroups: ["rbac.authorization.k8s.io"] -> binding self-modification, privilege escalation
140
+ #
141
+ # === Wildcards (always anti-pattern) ===
142
+ # any "*" verb or "*" resource -> per upstream RBAC good practices, grants future objects
143
+ #
144
+ # === Cross-cutting verbs ===
145
+ # any "delete" verb on cluster-scoped or namespaced resources -> rollback is `apply -f baseline.yaml`, never delete
146
+ #
147
+ # Add ClusterMesh peer Secret write access (resourceName-locked, narrow
148
+ # namespace) only when the operator explicitly opts in for ClusterMesh
149
+ # peering and accepts the additional review checklist in
150
+ # references/permitted-mutations.md. The narrow scope must be expressed
151
+ # both in the Role (resourceNames: [<peer-cluster-id>]) and in admission
152
+ # policy (Kyverno rule limiting Secret data field shape).
153
+ # =====================================================================
154
+ ---
155
+ apiVersion: rbac.authorization.k8s.io/v1
156
+ kind: ClusterRoleBinding
157
+ metadata:
158
+ name: vanguard-network-arch-guard
159
+ subjects:
160
+ - kind: ServiceAccount
161
+ name: vanguard-network-arch-guard
162
+ namespace: vanguard-system
163
+ roleRef:
164
+ kind: ClusterRole
165
+ name: vanguard-network-arch-guard
166
+ apiGroup: rbac.authorization.k8s.io
167
+ ---
168
+ # =====================================================================
169
+ # Namespaced Role + RoleBinding for CoreDNS ConfigMap access.
170
+ # A ClusterRole with resourceNames restricts only the object name, not
171
+ # the namespace, so the SA would be able to patch any ConfigMap named
172
+ # "coredns" cluster-wide. This Role is bound only in kube-system,
173
+ # providing the correct least-privilege scope.
174
+ # =====================================================================
175
+ apiVersion: rbac.authorization.k8s.io/v1
176
+ kind: Role
177
+ metadata:
178
+ name: vanguard-network-arch-guard-coredns
179
+ namespace: kube-system
180
+ annotations:
181
+ vanguard.frontier/agent: "kubernetes-live-network-architecture-mutation-guard-agent"
182
+ vanguard.frontier/contract: "docs/least-privilege-rbac.md"
183
+ rules:
184
+ # Broad read in kube-system — needed to inspect ConfigMap state before patching.
185
+ - apiGroups: [""]
186
+ resources: ["configmaps"]
187
+ verbs: ["get", "list", "watch"]
188
+ # Patch locked to the single ConfigMap that holds the CoreDNS Corefile.
189
+ # NOTE: "delete" verb DELIBERATELY OMITTED. Rollback uses `kubectl apply -f baseline.yaml`.
190
+ - apiGroups: [""]
191
+ resources: ["configmaps"]
192
+ resourceNames: ["coredns"]
193
+ verbs: ["patch"]
194
+ ---
195
+ apiVersion: rbac.authorization.k8s.io/v1
196
+ kind: RoleBinding
197
+ metadata:
198
+ name: vanguard-network-arch-guard-coredns
199
+ namespace: kube-system
200
+ annotations:
201
+ vanguard.frontier/agent: "kubernetes-live-network-architecture-mutation-guard-agent"
202
+ vanguard.frontier/contract: "docs/least-privilege-rbac.md"
203
+ subjects:
204
+ - kind: ServiceAccount
205
+ name: vanguard-network-arch-guard
206
+ namespace: vanguard-system
207
+ roleRef:
208
+ kind: Role
209
+ name: vanguard-network-arch-guard-coredns
210
+ apiGroup: rbac.authorization.k8s.io
@@ -0,0 +1,41 @@
1
+ # Official sources
2
+
3
+ Authoritative upstream documentation for the surfaces this guard mutates.
4
+
5
+ ## RBAC and authorization
6
+
7
+ - [RBAC Good Practices](https://kubernetes.io/docs/concepts/security/rbac-good-practices/) — the foundational guidance this guard implements: minimal privilege, no wildcards, no `cluster-admin` for routine work, no `system:masters` group membership.
8
+ - [Using RBAC Authorization](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) — the API reference for `Role` / `ClusterRole` / `RoleBinding` / `ClusterRoleBinding`.
9
+ - [`kubectl auth can-i`](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_auth/kubectl_auth_can-i/) — the pre-flight matrix syntax.
10
+ - [User Impersonation](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation) — the recommended pattern: low-privileged operator with `impersonate` rights on the agent's ServiceAccount.
11
+
12
+ ## Service traffic policy and topology-aware routing
13
+
14
+ - [Service Internal Traffic Policy](https://kubernetes.io/docs/concepts/services-networking/service-traffic-policy/) — `internalTrafficPolicy` and `externalTrafficPolicy` semantics.
15
+ - [Topology Aware Routing](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/) — `service.kubernetes.io/topology-mode: Auto` annotation and `spec.trafficDistribution` field.
16
+
17
+ ## CoreDNS
18
+
19
+ - [CoreDNS `kubernetes` plugin](https://coredns.io/plugins/kubernetes/) — the in-cluster DNS plugin reference.
20
+ - [CoreDNS `reload` plugin](https://coredns.io/plugins/reload/) — Corefile change detection (default 30s poll).
21
+ - [CoreDNS `loop` plugin](https://coredns.io/plugins/loop/) — recursion-loop detection (silent failure mode if absent).
22
+ - [CoreDNS `health` plugin](https://coredns.io/plugins/health/) — liveness probe target.
23
+
24
+ ## NodeLocal DNSCache
25
+
26
+ - [Using NodeLocal DNSCache in Kubernetes Clusters](https://kubernetes.io/docs/tasks/administer-cluster/nodelocaldns/) — install manifest, the `__PILLAR__` token substitutions, and the kube-proxy / Cilium kube-proxy replacement preconditions.
27
+
28
+ ## Gateway API
29
+
30
+ - [Gateway API](https://gateway-api.sigs.k8s.io/) — the SIG site (authoritative).
31
+ - [`Gateway` resource](https://gateway-api.sigs.k8s.io/api-types/gateway/) — the listener model and `allowedRoutes` semantics.
32
+ - [`HTTPRoute`](https://gateway-api.sigs.k8s.io/api-types/httproute/) — HTTP route reference.
33
+ - [`GRPCRoute`](https://gateway-api.sigs.k8s.io/api-types/grpcroute/) — gRPC route reference. **GA / Standard channel since Gateway API v1.1.0.**
34
+ - [`ReferenceGrant`](https://gateway-api.sigs.k8s.io/api-types/referencegrant/) — cross-namespace reference authorization.
35
+ - [Gateway API Versioning](https://gateway-api.sigs.k8s.io/concepts/versioning/) — Standard vs Experimental channel semantics.
36
+
37
+ ## Cilium ClusterMesh
38
+
39
+ - [Setting up Cluster Mesh](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/) — peer Secret structure, namespace, and CA trust setup.
40
+ - [ClusterMesh Troubleshooting](https://docs.cilium.io/en/stable/operations/troubleshooting/) — `cilium clustermesh status`, `cilium-dbg troubleshoot clustermesh`, and the KVStoreMesh `kvstoremesh-dbg troubleshoot` command.
41
+ - [KVStoreMesh command reference](https://docs.cilium.io/en/stable/cmdref/clustermesh-apiserver_kvstoremesh/) — `--clustermesh-cache-ttl` (default `0s` means "never revoked"), `--global-ready-timeout` (default 10m).
@@ -0,0 +1,173 @@
1
+ # Permitted mutations
2
+
3
+ This is the explicit allowlist. Any mutation outside this list MUST be either rejected by the prompt rules OR refused by the cluster RBAC binding.
4
+
5
+ ## Service spec patches (low blast radius, reversible)
6
+
7
+ ### `internalTrafficPolicy` / `externalTrafficPolicy`
8
+
9
+ Reversible field on `v1.Service`. Default is `Cluster`; `Local` constrains routing to node-local endpoints.
10
+
11
+ ```bash
12
+ # Capture baseline
13
+ kubectl get svc <name> -n <ns> -o yaml > /tmp/svc-<name>.before.yaml
14
+
15
+ # Apply the patch
16
+ kubectl patch svc <name> -n <ns> --type=merge \
17
+ -p '{"spec":{"externalTrafficPolicy":"Cluster"}}'
18
+
19
+ # Verify EndpointSlices still serve the Service
20
+ kubectl get endpointslice -n <ns> -l kubernetes.io/service-name=<name>
21
+
22
+ # Rollback
23
+ kubectl apply -f /tmp/svc-<name>.before.yaml
24
+ ```
25
+
26
+ Refusal triggers inside this mutation type:
27
+ - Setting `externalTrafficPolicy: Local` on a Service whose backend Pods are not present on every Node that the LoadBalancer health-check targets — blackhole risk.
28
+ - Setting `internalTrafficPolicy: Local` on a Service consumed cluster-wide where backends are not co-located with consumers on every Node.
29
+
30
+ ### `service.kubernetes.io/topology-mode: Auto` annotation
31
+
32
+ Annotation, additive. Only applies when `Service` is multi-zone with sufficient endpoints per zone.
33
+
34
+ ```bash
35
+ kubectl annotate svc <name> -n <ns> \
36
+ service.kubernetes.io/topology-mode=Auto --overwrite
37
+ ```
38
+
39
+ Rollback: `kubectl annotate svc <name> -n <ns> service.kubernetes.io/topology-mode-`
40
+
41
+ ### `spec.trafficDistribution` field (KEP-4444)
42
+
43
+ Newer API; supersedes the annotation when both are set. Field-level patch on `v1.Service`.
44
+
45
+ ```bash
46
+ kubectl patch svc <name> -n <ns> --type=merge \
47
+ -p '{"spec":{"trafficDistribution":"PreferClose"}}'
48
+ ```
49
+
50
+ Rollback: `kubectl patch svc <name> -n <ns> --type=json -p='[{"op":"remove","path":"/spec/trafficDistribution"}]'`
51
+
52
+ ## CoreDNS Corefile patch (medium blast radius, reversible with backup)
53
+
54
+ The CoreDNS `reload` plugin polls the Corefile every 30 seconds. If the new Corefile is invalid, CoreDNS rejects the reload and continues serving the previous config — but if the pod restarts for any other reason, it will fail to start. Always have a baseline.
55
+
56
+ ```bash
57
+ # Capture baseline (CRITICAL — never skip)
58
+ kubectl get cm coredns -n kube-system -o yaml > /tmp/coredns.before.yaml
59
+
60
+ # Apply
61
+ kubectl apply -f /tmp/coredns.new.yaml
62
+
63
+ # Verify reload (look for "Reloading complete" in logs within 60 seconds)
64
+ kubectl -n kube-system logs -l k8s-app=kube-dns --tail=50 --since=2m | grep -i "reload"
65
+
66
+ # Verify no CrashLoopBackOff
67
+ kubectl -n kube-system get pods -l k8s-app=kube-dns
68
+
69
+ # If any pod is unhealthy — rollback
70
+ kubectl apply -f /tmp/coredns.before.yaml
71
+ ```
72
+
73
+ Refusal triggers:
74
+ - New Corefile lacks the `reload` plugin (would prevent future zero-downtime updates).
75
+ - New Corefile lacks the `loop` plugin (CoreDNS forward-loop detection).
76
+ - New Corefile lacks the `health` plugin (liveness probe target removed).
77
+ - New Corefile lacks the `kubernetes` plugin or its `pods insecure` mode set to anything other than the cluster's documented standard.
78
+ - `forward .` target is changed to a private IP without confirming reachability from CoreDNS pod network.
79
+
80
+ ## NodeLocal DNSCache install / upgrade (medium blast radius, requires explicit human gate)
81
+
82
+ Manifest from upstream `kubernetes/dns` repository (`nodelocaldns.yaml`). The install adds a `DaemonSet` and patches kube-proxy iptables / IPVS rules to redirect DNS traffic to the local cache. **This is a node-wide control-plane change**; refuse without an explicit human go-ahead even though the manifest itself is documented.
83
+
84
+ ```bash
85
+ # Capture cluster DNS service IP for the manifest's __PILLAR__LOCAL__DNS__ token
86
+ kubectl get svc -n kube-system kube-dns -o jsonpath='{.spec.clusterIP}'
87
+
88
+ # Apply the upstream-rendered manifest (with values substituted)
89
+ kubectl apply -f /tmp/nodelocaldns-rendered.yaml
90
+
91
+ # Verify rollout — every Node must have a Ready node-local-dns pod within 5 minutes
92
+ kubectl rollout status ds/node-local-dns -n kube-system --timeout=5m
93
+
94
+ # Rollback (uninstall — high impact, plan before applying)
95
+ kubectl delete -f /tmp/nodelocaldns-rendered.yaml
96
+ ```
97
+
98
+ Refusal triggers:
99
+ - Cluster does not run kube-proxy or Cilium kube-proxy replacement (NodeLocalDNS depends on a kube-proxy mode that supports the iptables / IPVS redirect).
100
+ - The `DaemonSet` request lacks `resources.limits.memory` (NodeLocal DNSCache OOM is a known node-wide DNS outage).
101
+ - The `DaemonSet` request lacks a `PodDisruptionBudget`.
102
+ - Node selector excludes any node — partial DNS coverage is worse than none.
103
+
104
+ ## Gateway API resources (medium blast radius, reversible)
105
+
106
+ ### `Gateway` resource
107
+
108
+ ```bash
109
+ # Pre-check: GatewayClass must reference a controller that is actually running
110
+ GWC=$(yq '.spec.gatewayClassName' /tmp/gw.yaml)
111
+ CONTROLLER=$(kubectl get gatewayclass $GWC -o jsonpath='{.spec.controllerName}')
112
+ # Confirm controller pods are Ready before applying
113
+
114
+ kubectl apply -f /tmp/gw.yaml
115
+ kubectl wait --for=condition=Programmed gateway/<name> -n <ns> --timeout=2m
116
+
117
+ # Status verification
118
+ kubectl get gateway <name> -n <ns> -o jsonpath='{.status.conditions}'
119
+ ```
120
+
121
+ Refusal triggers:
122
+ - `GatewayClass` does not exist or its controller is not running.
123
+ - `spec.allowedRoutes.namespaces.from: All` without an accompanying `ReferenceGrant` strategy — security boundary expansion.
124
+ - `Listener` overlap on (port, protocol, hostname) with existing Gateway in same scope.
125
+
126
+ ### `HTTPRoute` / `GRPCRoute` / `TLSRoute`
127
+
128
+ GA / Standard channel since Gateway API v1.1.0 (per `gateway-api.sigs.k8s.io/api-types/grpcroute`).
129
+
130
+ ```bash
131
+ kubectl apply -f /tmp/route.yaml
132
+ kubectl wait --for=condition=Accepted httproute/<name> -n <ns> --timeout=1m
133
+
134
+ # Status verification — Accepted: True AND ResolvedRefs: True per parent
135
+ kubectl get httproute <name> -n <ns> -o jsonpath='{.status.parents}'
136
+ ```
137
+
138
+ Refusal triggers:
139
+ - Route attaches to a Gateway that is not in `Programmed: True`.
140
+ - `parentRefs` reference a Gateway in another namespace without a matching `ReferenceGrant`.
141
+
142
+ ### `ReferenceGrant`
143
+
144
+ Cross-namespace authorization for routes. Always-additive; deletion can break in-flight routes.
145
+
146
+ ```bash
147
+ kubectl apply -f /tmp/refgrant.yaml
148
+ # No status conditions; verify by querying the route's ResolvedRefs.
149
+ ```
150
+
151
+ ## Cilium ClusterMesh peer Secret (medium blast radius, requires explicit human gate)
152
+
153
+ Creates a `Secret` in the Cilium namespace whose data field carries the peer cluster's etcd client certificate, key, and CA. **Never log or print the data fields.**
154
+
155
+ ```bash
156
+ # Capture baseline (confirm absence)
157
+ kubectl get secret cilium-clustermesh -n kube-system 2>&1 | tee /tmp/clustermesh-pre.txt
158
+
159
+ # Apply the peer secret — secret data is sensitive
160
+ kubectl apply -f /tmp/clustermesh-peer.yaml
161
+
162
+ # Verify ClusterMesh comes up
163
+ kubectl exec -n kube-system ds/cilium -- cilium clustermesh status
164
+
165
+ # Rollback
166
+ kubectl delete secret cilium-clustermesh -n kube-system
167
+ ```
168
+
169
+ Refusal triggers:
170
+ - Secret destination namespace does not match the documented Cilium ClusterMesh namespace for this cluster.
171
+ - Secret name does not exactly match the peer cluster identifier.
172
+ - Secret data contains plaintext that looks like a CA or client key but is not properly base64-encoded for the `Secret` `data` field.
173
+ - ClusterMesh peer `policy-default-local-cluster` flag has not been considered (delegate to `cilium-network-policy-review-agent`).