@raishin/vanguard-frontier-agentic 1.1.0 → 1.2.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.
- package/README.md +245 -316
- package/agents/aws/aws-maestro-agent/AGENT.md +55 -0
- package/agents/aws/aws-maestro-agent/harnesses/claude-code.agent.md +38 -0
- package/agents/aws/aws-maestro-agent/harnesses/codex.toml +34 -0
- package/agents/aws/aws-maestro-agent/harnesses/copilot.agent.md +51 -0
- package/agents/aws/aws-maestro-agent/harnesses/cursor.agent.md +40 -0
- package/agents/aws/aws-maestro-agent/harnesses/gemini.agent.md +39 -0
- package/agents/aws/aws-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/aws/aws-maestro-agent/harnesses/kiro-ide.agent.md +38 -0
- package/agents/aws/aws-maestro-agent/metadata.json +37 -0
- package/agents/azure/AGENTS.md +26 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/AGENT.md +57 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/PERMISSIONS.md +56 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/PREFLIGHT.md +48 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/ROLLBACK.md +36 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/harnesses/codex.toml +32 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/azure/azure-live-aks-rollout-guard-agent/metadata.json +27 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/AGENT.md +57 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/PERMISSIONS.md +43 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/PREFLIGHT.md +50 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/ROLLBACK.md +46 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/harnesses/codex.toml +32 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/azure/azure-live-app-service-slot-swap-guard-agent/metadata.json +26 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/AGENT.md +57 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/PERMISSIONS.md +88 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/PREFLIGHT.md +48 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/ROLLBACK.md +48 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/harnesses/codex.toml +32 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/azure/azure-live-arm-deployment-stack-guard-agent/metadata.json +27 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/AGENT.md +57 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/PERMISSIONS.md +93 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/PREFLIGHT.md +44 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/ROLLBACK.md +49 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/harnesses/codex.toml +32 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/azure/azure-live-cost-budget-action-guard-agent/metadata.json +27 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/AGENT.md +57 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/PERMISSIONS.md +68 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/PREFLIGHT.md +46 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/ROLLBACK.md +44 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/harnesses/codex.toml +32 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/azure/azure-live-keyvault-rotation-purge-guard-agent/metadata.json +27 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/AGENT.md +57 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/PERMISSIONS.md +59 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/PREFLIGHT.md +41 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/ROLLBACK.md +48 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/harnesses/codex.toml +32 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/azure/azure-live-pim-jit-activation-guard-agent/metadata.json +27 -0
- package/agents/azure/azure-maestro-agent/AGENT.md +56 -0
- package/agents/azure/azure-maestro-agent/harnesses/claude-code.agent.md +39 -0
- package/agents/azure/azure-maestro-agent/harnesses/codex.toml +14 -0
- package/agents/azure/azure-maestro-agent/harnesses/copilot.agent.md +52 -0
- package/agents/azure/azure-maestro-agent/harnesses/cursor.agent.md +41 -0
- package/agents/azure/azure-maestro-agent/harnesses/gemini.agent.md +40 -0
- package/agents/azure/azure-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/azure/azure-maestro-agent/harnesses/kiro-ide.agent.md +39 -0
- package/agents/azure/azure-maestro-agent/metadata.json +38 -0
- package/agents/finops/AGENTS.md +36 -0
- package/agents/finops/finops-cloud-price-advisor-agent/AGENT.md +58 -0
- package/agents/finops/finops-cloud-price-advisor-agent/PERMISSIONS.md +112 -0
- package/agents/finops/finops-cloud-price-advisor-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/finops/finops-cloud-price-advisor-agent/harnesses/codex.toml +33 -0
- package/agents/finops/finops-cloud-price-advisor-agent/harnesses/copilot.agent.md +53 -0
- package/agents/finops/finops-cloud-price-advisor-agent/harnesses/cursor.agent.md +40 -0
- package/agents/finops/finops-cloud-price-advisor-agent/harnesses/gemini.agent.md +40 -0
- package/agents/finops/finops-cloud-price-advisor-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/finops/finops-cloud-price-advisor-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/finops/finops-cloud-price-advisor-agent/metadata.json +29 -0
- package/agents/oci/AGENTS.md +28 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/AGENT.md +57 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/PERMISSIONS.md +56 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/PREFLIGHT.md +48 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/ROLLBACK.md +50 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/harnesses/codex.toml +32 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/oci/oci-live-autonomous-db-lifecycle-guard-agent/metadata.json +27 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/AGENT.md +57 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/PERMISSIONS.md +77 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/PREFLIGHT.md +54 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/ROLLBACK.md +53 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/harnesses/codex.toml +32 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/oci/oci-live-cost-budget-runaway-guard-agent/metadata.json +27 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/AGENT.md +57 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/PERMISSIONS.md +87 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/PREFLIGHT.md +49 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/ROLLBACK.md +44 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/harnesses/codex.toml +32 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/oci/oci-live-iam-policy-compartment-guard-agent/metadata.json +27 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/AGENT.md +57 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/PERMISSIONS.md +92 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/PREFLIGHT.md +49 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/ROLLBACK.md +47 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/harnesses/codex.toml +32 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/oci/oci-live-oke-rollout-guard-agent/metadata.json +27 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/AGENT.md +57 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/PERMISSIONS.md +80 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/PREFLIGHT.md +51 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/ROLLBACK.md +45 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/harnesses/codex.toml +32 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/oci/oci-live-resource-manager-stack-guard-agent/metadata.json +27 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/AGENT.md +57 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/PERMISSIONS.md +57 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/PREFLIGHT.md +53 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/ROLLBACK.md +49 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/harnesses/claude-code.agent.md +40 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/harnesses/codex.toml +32 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/harnesses/copilot.agent.md +53 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/harnesses/cursor.agent.md +40 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/harnesses/gemini.agent.md +40 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/harnesses/kiro-cli.agent.json +1 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/harnesses/kiro-ide.agent.md +40 -0
- package/agents/oci/oci-live-vault-key-destruction-guard-agent/metadata.json +27 -0
- package/agents/oci/oci-maestro-agent/AGENT.md +58 -0
- package/agents/oci/oci-maestro-agent/harnesses/claude-code.agent.md +41 -0
- package/agents/oci/oci-maestro-agent/harnesses/codex.toml +14 -0
- package/agents/oci/oci-maestro-agent/harnesses/copilot.agent.md +54 -0
- package/agents/oci/oci-maestro-agent/harnesses/cursor.agent.md +43 -0
- package/agents/oci/oci-maestro-agent/harnesses/gemini.agent.md +42 -0
- package/agents/oci/oci-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/oci/oci-maestro-agent/harnesses/kiro-ide.agent.md +41 -0
- package/agents/oci/oci-maestro-agent/metadata.json +37 -0
- package/agents/terraform/terraform-maestro-agent/AGENT.md +58 -0
- package/agents/terraform/terraform-maestro-agent/harnesses/claude-code.agent.md +41 -0
- package/agents/terraform/terraform-maestro-agent/harnesses/codex.toml +14 -0
- package/agents/terraform/terraform-maestro-agent/harnesses/copilot.agent.md +54 -0
- package/agents/terraform/terraform-maestro-agent/harnesses/cursor.agent.md +43 -0
- package/agents/terraform/terraform-maestro-agent/harnesses/gemini.agent.md +42 -0
- package/agents/terraform/terraform-maestro-agent/harnesses/kiro-cli.agent.json +5 -0
- package/agents/terraform/terraform-maestro-agent/harnesses/kiro-ide.agent.md +41 -0
- package/agents/terraform/terraform-maestro-agent/metadata.json +38 -0
- package/catalog/agents.json +502 -0
- package/catalog/skill-manifest.json +542 -0
- package/catalog/skills.json +436 -0
- package/package.json +1 -1
- package/scripts/export-marketplace-agents.mjs +29 -1
- package/scripts/gen_azure_live_guards.py +1424 -0
- package/scripts/gen_oci_live_guards.py +1510 -0
- package/skills/aws/aws-maestro/SKILL.md +47 -0
- package/skills/aws/aws-maestro/metadata.json +28 -0
- package/skills/aws/aws-maestro/references/official-sources.md +24 -0
- package/skills/aws/aws-maestro/references/safety-checklist.md +42 -0
- package/skills/aws/aws-maestro/references/workflow-and-output.md +127 -0
- package/skills/azure/azure-live-aks-rollout-guard/SKILL.md +49 -0
- package/skills/azure/azure-live-aks-rollout-guard/metadata.json +27 -0
- package/skills/azure/azure-live-aks-rollout-guard/references/official-sources.md +19 -0
- package/skills/azure/azure-live-aks-rollout-guard/references/permission-model.md +54 -0
- package/skills/azure/azure-live-aks-rollout-guard/references/preflight-commands.md +55 -0
- package/skills/azure/azure-live-aks-rollout-guard/references/rollback-playbook.md +38 -0
- package/skills/azure/azure-live-app-service-slot-swap-guard/SKILL.md +49 -0
- package/skills/azure/azure-live-app-service-slot-swap-guard/metadata.json +26 -0
- package/skills/azure/azure-live-app-service-slot-swap-guard/references/official-sources.md +12 -0
- package/skills/azure/azure-live-app-service-slot-swap-guard/references/permission-model.md +40 -0
- package/skills/azure/azure-live-app-service-slot-swap-guard/references/preflight-commands.md +46 -0
- package/skills/azure/azure-live-app-service-slot-swap-guard/references/rollback-playbook.md +46 -0
- package/skills/azure/azure-live-arm-deployment-stack-guard/SKILL.md +49 -0
- package/skills/azure/azure-live-arm-deployment-stack-guard/metadata.json +27 -0
- package/skills/azure/azure-live-arm-deployment-stack-guard/references/official-sources.md +17 -0
- package/skills/azure/azure-live-arm-deployment-stack-guard/references/permission-model.md +68 -0
- package/skills/azure/azure-live-arm-deployment-stack-guard/references/preflight-commands.md +55 -0
- package/skills/azure/azure-live-arm-deployment-stack-guard/references/rollback-playbook.md +53 -0
- package/skills/azure/azure-live-cost-budget-action-guard/SKILL.md +49 -0
- package/skills/azure/azure-live-cost-budget-action-guard/metadata.json +27 -0
- package/skills/azure/azure-live-cost-budget-action-guard/references/official-sources.md +17 -0
- package/skills/azure/azure-live-cost-budget-action-guard/references/permission-model.md +66 -0
- package/skills/azure/azure-live-cost-budget-action-guard/references/preflight-commands.md +48 -0
- package/skills/azure/azure-live-cost-budget-action-guard/references/rollback-playbook.md +40 -0
- package/skills/azure/azure-live-keyvault-rotation-purge-guard/SKILL.md +49 -0
- package/skills/azure/azure-live-keyvault-rotation-purge-guard/metadata.json +27 -0
- package/skills/azure/azure-live-keyvault-rotation-purge-guard/references/official-sources.md +13 -0
- package/skills/azure/azure-live-keyvault-rotation-purge-guard/references/permission-model.md +64 -0
- package/skills/azure/azure-live-keyvault-rotation-purge-guard/references/preflight-commands.md +48 -0
- package/skills/azure/azure-live-keyvault-rotation-purge-guard/references/rollback-playbook.md +44 -0
- package/skills/azure/azure-live-pim-jit-activation-guard/SKILL.md +49 -0
- package/skills/azure/azure-live-pim-jit-activation-guard/metadata.json +27 -0
- package/skills/azure/azure-live-pim-jit-activation-guard/references/official-sources.md +13 -0
- package/skills/azure/azure-live-pim-jit-activation-guard/references/permission-model.md +56 -0
- package/skills/azure/azure-live-pim-jit-activation-guard/references/preflight-commands.md +46 -0
- package/skills/azure/azure-live-pim-jit-activation-guard/references/rollback-playbook.md +45 -0
- package/skills/azure/azure-maestro/SKILL.md +140 -0
- package/skills/azure/azure-maestro/metadata.json +28 -0
- package/skills/finops/finops-cloud-price-advisor/SKILL.md +60 -0
- package/skills/finops/finops-cloud-price-advisor/metadata.json +26 -0
- package/skills/finops/finops-cloud-price-advisor/references/currency-handling.md +100 -0
- package/skills/finops/finops-cloud-price-advisor/references/estimation-workflow.md +145 -0
- package/skills/finops/finops-cloud-price-advisor/references/official-sources.md +64 -0
- package/skills/finops/finops-cloud-price-advisor/references/pricing-apis.md +271 -0
- package/skills/oci/oci-live-autonomous-db-lifecycle-guard/SKILL.md +49 -0
- package/skills/oci/oci-live-autonomous-db-lifecycle-guard/metadata.json +27 -0
- package/skills/oci/oci-live-autonomous-db-lifecycle-guard/references/official-sources.md +13 -0
- package/skills/oci/oci-live-autonomous-db-lifecycle-guard/references/permission-model.md +49 -0
- package/skills/oci/oci-live-autonomous-db-lifecycle-guard/references/preflight-commands.md +58 -0
- package/skills/oci/oci-live-autonomous-db-lifecycle-guard/references/rollback-playbook.md +44 -0
- package/skills/oci/oci-live-cost-budget-runaway-guard/SKILL.md +49 -0
- package/skills/oci/oci-live-cost-budget-runaway-guard/metadata.json +27 -0
- package/skills/oci/oci-live-cost-budget-runaway-guard/references/official-sources.md +17 -0
- package/skills/oci/oci-live-cost-budget-runaway-guard/references/permission-model.md +59 -0
- package/skills/oci/oci-live-cost-budget-runaway-guard/references/preflight-commands.md +42 -0
- package/skills/oci/oci-live-cost-budget-runaway-guard/references/rollback-playbook.md +44 -0
- package/skills/oci/oci-live-iam-policy-compartment-guard/SKILL.md +49 -0
- package/skills/oci/oci-live-iam-policy-compartment-guard/metadata.json +27 -0
- package/skills/oci/oci-live-iam-policy-compartment-guard/references/official-sources.md +13 -0
- package/skills/oci/oci-live-iam-policy-compartment-guard/references/permission-model.md +71 -0
- package/skills/oci/oci-live-iam-policy-compartment-guard/references/preflight-commands.md +49 -0
- package/skills/oci/oci-live-iam-policy-compartment-guard/references/rollback-playbook.md +62 -0
- package/skills/oci/oci-live-oke-rollout-guard/SKILL.md +49 -0
- package/skills/oci/oci-live-oke-rollout-guard/metadata.json +27 -0
- package/skills/oci/oci-live-oke-rollout-guard/references/official-sources.md +18 -0
- package/skills/oci/oci-live-oke-rollout-guard/references/permission-model.md +80 -0
- package/skills/oci/oci-live-oke-rollout-guard/references/preflight-commands.md +55 -0
- package/skills/oci/oci-live-oke-rollout-guard/references/rollback-playbook.md +45 -0
- package/skills/oci/oci-live-resource-manager-stack-guard/SKILL.md +49 -0
- package/skills/oci/oci-live-resource-manager-stack-guard/metadata.json +27 -0
- package/skills/oci/oci-live-resource-manager-stack-guard/references/official-sources.md +12 -0
- package/skills/oci/oci-live-resource-manager-stack-guard/references/permission-model.md +70 -0
- package/skills/oci/oci-live-resource-manager-stack-guard/references/preflight-commands.md +57 -0
- package/skills/oci/oci-live-resource-manager-stack-guard/references/rollback-playbook.md +51 -0
- package/skills/oci/oci-live-vault-key-destruction-guard/SKILL.md +49 -0
- package/skills/oci/oci-live-vault-key-destruction-guard/metadata.json +27 -0
- package/skills/oci/oci-live-vault-key-destruction-guard/references/official-sources.md +13 -0
- package/skills/oci/oci-live-vault-key-destruction-guard/references/permission-model.md +55 -0
- package/skills/oci/oci-live-vault-key-destruction-guard/references/preflight-commands.md +62 -0
- package/skills/oci/oci-live-vault-key-destruction-guard/references/rollback-playbook.md +55 -0
- package/skills/oci/oci-maestro/SKILL.md +163 -0
- package/skills/oci/oci-maestro/metadata.json +27 -0
- package/skills/terraform/terraform-maestro/SKILL.md +123 -0
- package/skills/terraform/terraform-maestro/metadata.json +30 -0
- package/skills/terraform/terraform-maestro/references/official-sources.md +59 -0
- package/skills/terraform/terraform-maestro/references/safety-checklist.md +53 -0
- package/skills/terraform/terraform-maestro/references/workflow-and-output.md +108 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Preflight Commands: Azure Live App Service Slot Swap Guard
|
|
2
|
+
|
|
3
|
+
Run these before initiating a slot swap. Paste sanitized output as evidence.
|
|
4
|
+
|
|
5
|
+
## 1. Confirm identity and App Service target
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
az account show --query "{subscription:id, name:name, user:user.name}"
|
|
9
|
+
az webapp show -g <RESOURCE_GROUP> -n <APP_NAME> \
|
|
10
|
+
--query "{name:name, state:properties.state, hostNames:properties.hostNames}"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 2. List all slots and their current traffic weights
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
az webapp deployment slot list -g <RESOURCE_GROUP> -n <APP_NAME> \
|
|
17
|
+
--query "[].{name:name, state:properties.state}"
|
|
18
|
+
az webapp traffic-routing show -g <RESOURCE_GROUP> -n <APP_NAME>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 3. Compare app settings between slots
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
az webapp config appsettings list -g <RESOURCE_GROUP> -n <APP_NAME> \
|
|
25
|
+
--slot staging --query "[].{name:name, slotSetting:slotSetting}"
|
|
26
|
+
az webapp config appsettings list -g <RESOURCE_GROUP> -n <APP_NAME> \
|
|
27
|
+
--query "[].{name:name, slotSetting:slotSetting}"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Pay special attention to `slotSetting: false` — those settings WILL swap with the slot.
|
|
31
|
+
Settings with `slotSetting: true` are slot-sticky and will NOT be swapped.
|
|
32
|
+
|
|
33
|
+
## 4. Check slot health before swap
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
az webapp show -g <RESOURCE_GROUP> -n <APP_NAME> --slot staging \
|
|
37
|
+
--query "{state:properties.state, availabilityState:properties.availabilityState}"
|
|
38
|
+
# State must be "Running" and availabilityState must be "Normal" before swap
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 5. Review connection strings
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
az webapp config connection-string list -g <RESOURCE_GROUP> -n <APP_NAME> --slot staging \
|
|
45
|
+
--query "[].{name:name, type:type, slotSetting:slotSetting}"
|
|
46
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Rollback Playbook: Azure Live App Service Slot Swap Guard
|
|
2
|
+
|
|
3
|
+
## Immediate swap-back (standard rollback path)
|
|
4
|
+
|
|
5
|
+
The swap operation is symmetric — a second swap returns both slots to their original state.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Verify current slot state before swapping back
|
|
9
|
+
az webapp show -g <RESOURCE_GROUP> -n <APP_NAME> \
|
|
10
|
+
--query "{hostNames:properties.hostNames}"
|
|
11
|
+
az webapp show -g <RESOURCE_GROUP> -n <APP_NAME> --slot staging \
|
|
12
|
+
--query "{hostNames:properties.hostNames}"
|
|
13
|
+
|
|
14
|
+
# Swap back: production → staging (reverts the original swap)
|
|
15
|
+
az webapp deployment slot swap \
|
|
16
|
+
-g <RESOURCE_GROUP> -n <APP_NAME> \
|
|
17
|
+
--slot staging \
|
|
18
|
+
--target-slot production
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Verify after rollback
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
az webapp show -g <RESOURCE_GROUP> -n <APP_NAME> \
|
|
25
|
+
--query "{state:properties.state, defaultHostName:properties.defaultHostName}"
|
|
26
|
+
# Check application health endpoint
|
|
27
|
+
curl -s https://<APP_NAME>.azurewebsites.net/health
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Traffic shifting (partial rollback via A/B routing)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Route 10% of traffic to staging while investigating
|
|
34
|
+
az webapp traffic-routing set -g <RESOURCE_GROUP> -n <APP_NAME> \
|
|
35
|
+
--distribution staging=10
|
|
36
|
+
|
|
37
|
+
# Return all traffic to production
|
|
38
|
+
az webapp traffic-routing clear -g <RESOURCE_GROUP> -n <APP_NAME>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Rollback limitations
|
|
42
|
+
|
|
43
|
+
- Slot swap is symmetric and reversible **only if you swap back before a second swap**.
|
|
44
|
+
- App settings with `slotSetting: false` were swapped — they will swap back.
|
|
45
|
+
- Any data written by the new code version to a shared database or storage is NOT rolled back by swapping.
|
|
46
|
+
- Log stream evidence must be captured before initiating a rollback; logs do not travel with slot state.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: azure-live-arm-deployment-stack-guard
|
|
3
|
+
description: Guard live ARM, Bicep, and Deployment Stack changes with what-if evidence, denySettings review, changeset diff, rollback posture, and approval gates.
|
|
4
|
+
metadata:
|
|
5
|
+
author: "github: Raishin"
|
|
6
|
+
version: "0.1.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Azure Live ARM Deployment Stack Guard
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Act as the guarded live Azure operator for azure-live-arm-deployment-stack-guard work. Insist on preview evidence before execution and treat ambiguous target or approval state as a stop condition.
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
Use this skill when:
|
|
18
|
+
|
|
19
|
+
- an ARM or Bicep deployment must be previewed and possibly executed against a live Azure environment
|
|
20
|
+
- the session involves Deployment Stacks with denySettings and protected resource scopes
|
|
21
|
+
- a human needs guarded execution help with change evidence and rollback design
|
|
22
|
+
|
|
23
|
+
## Lean operating rules
|
|
24
|
+
|
|
25
|
+
- Prefer Azure CLI (`az`) official documentation when available; fall back to Microsoft Learn docs and sanitized user evidence.
|
|
26
|
+
- Do not execute a live Azure change until subscription, resource group, active principal, and resource ownership are explicit.
|
|
27
|
+
- Prefer what-if, preview, describe, status, dry-run, plan, and rollback evidence before execution.
|
|
28
|
+
- If the request skips preview or rollback design, push back.
|
|
29
|
+
- Never print secrets, access tokens, connection strings, or raw environment values. Summarize sanitized evidence only.
|
|
30
|
+
- Load references only when needed.
|
|
31
|
+
|
|
32
|
+
## References
|
|
33
|
+
|
|
34
|
+
Load these only when needed:
|
|
35
|
+
|
|
36
|
+
- [Preflight commands](references/preflight-commands.md) — CLI commands to run before any mutation.
|
|
37
|
+
- [Rollback playbook](references/rollback-playbook.md) — concrete rollback steps for this service.
|
|
38
|
+
- [Permission model](references/permission-model.md) — RBAC role definitions and PIM guidance.
|
|
39
|
+
- [Official sources](references/official-sources.md) — authoritative Azure documentation links.
|
|
40
|
+
|
|
41
|
+
## Response minimum
|
|
42
|
+
|
|
43
|
+
Return, at minimum:
|
|
44
|
+
|
|
45
|
+
- confirmed target subscription, resource group, and principal
|
|
46
|
+
- preflight evidence (what-if diff, status, health check, or plan output)
|
|
47
|
+
- approval status for the proposed mutation
|
|
48
|
+
- rollback posture or explicit statement of what cannot be rolled back
|
|
49
|
+
- post-action verification steps or refusal reason
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "azure-live-arm-deployment-stack-guard",
|
|
3
|
+
"name": "Azure Live ARM Deployment Stack Guard",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "azure",
|
|
6
|
+
"harnesses": [
|
|
7
|
+
"codex",
|
|
8
|
+
"claude-code",
|
|
9
|
+
"cursor",
|
|
10
|
+
"gemini",
|
|
11
|
+
"kiro",
|
|
12
|
+
"other"
|
|
13
|
+
],
|
|
14
|
+
"summary": "Guard live ARM, Bicep, and Deployment Stack changes with what-if evidence, denySettings review, changeset diff, rollback posture, and approval gates.",
|
|
15
|
+
"source_type": "original",
|
|
16
|
+
"official_docs": [
|
|
17
|
+
"https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/deploy-what-if",
|
|
18
|
+
"https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deployment-stacks",
|
|
19
|
+
"https://learn.microsoft.com/en-us/azure/role-based-access-control/deny-assignments",
|
|
20
|
+
"https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/best-practices"
|
|
21
|
+
],
|
|
22
|
+
"security_notes": "Never execute an ARM or Deployment Stack change without what-if evidence, confirmed target scope, denySettings review, and explicit human approval. Repo write access does not authorize live Azure mutations.",
|
|
23
|
+
"last_verified": "2026-04-30",
|
|
24
|
+
"path": "skills/azure/azure-live-arm-deployment-stack-guard",
|
|
25
|
+
"author": "github: Raishin",
|
|
26
|
+
"version": "0.1.0"
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Official Sources: Azure Live ARM Deployment Stack Guard
|
|
2
|
+
|
|
3
|
+
## ARM and Bicep deployments
|
|
4
|
+
|
|
5
|
+
- https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/best-practices
|
|
6
|
+
- https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/deploy-what-if
|
|
7
|
+
- https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/rollback-on-error
|
|
8
|
+
|
|
9
|
+
## Deployment Stacks
|
|
10
|
+
|
|
11
|
+
- https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deployment-stacks
|
|
12
|
+
- https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deployment-stacks-scenarios
|
|
13
|
+
|
|
14
|
+
## Source-grounding rule
|
|
15
|
+
|
|
16
|
+
Use official Microsoft Learn documentation as source of truth for ARM and Bicep behavior.
|
|
17
|
+
Always verify what-if output against live resource state, not just template assumptions.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Permission Model: Azure Live ARM Deployment Stack Guard
|
|
2
|
+
|
|
3
|
+
## Custom role — what-if and stack write, stack deletion excluded
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"Name": "ARM Deployment Stack Guard",
|
|
8
|
+
"IsCustom": true,
|
|
9
|
+
"Description": "Minimum rights for guarded ARM what-if and Deployment Stack changes in one target resource group. Stack deletion is EXCLUDED — it requires a separate PIM-elevated role.",
|
|
10
|
+
"Actions": [
|
|
11
|
+
"Microsoft.Resources/deployments/read",
|
|
12
|
+
"Microsoft.Resources/deployments/write",
|
|
13
|
+
"Microsoft.Resources/deployments/whatIf/action",
|
|
14
|
+
"Microsoft.Resources/deploymentStacks/read",
|
|
15
|
+
"Microsoft.Resources/deploymentStacks/write",
|
|
16
|
+
"Microsoft.Resources/subscriptions/resourceGroups/read"
|
|
17
|
+
],
|
|
18
|
+
"NotActions": [
|
|
19
|
+
"Microsoft.Resources/deploymentStacks/delete"
|
|
20
|
+
],
|
|
21
|
+
"DataActions": [],
|
|
22
|
+
"NotDataActions": [],
|
|
23
|
+
"AssignableScopes": [
|
|
24
|
+
"/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<TARGET_RG>"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
`deploymentStacks/delete` is in `NotActions`. Stack deletion requires a separate
|
|
30
|
+
PIM-eligible role activated only for confirmed decommission windows (see below).
|
|
31
|
+
|
|
32
|
+
## PIM-elevated delete role (activate only for planned decommission)
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"Name": "ARM Deployment Stack Delete (PIM)",
|
|
37
|
+
"IsCustom": true,
|
|
38
|
+
"Description": "Stack deletion only. Must be PIM-activated with approval and time-bound to a decommission window.",
|
|
39
|
+
"Actions": [
|
|
40
|
+
"Microsoft.Resources/deploymentStacks/read",
|
|
41
|
+
"Microsoft.Resources/deploymentStacks/delete"
|
|
42
|
+
],
|
|
43
|
+
"NotActions": [],
|
|
44
|
+
"AssignableScopes": [
|
|
45
|
+
"/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<TARGET_RG>"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Assign as **PIM-eligible only**. Require manager approval. Maximum 2-hour activation.
|
|
51
|
+
|
|
52
|
+
## Deployment Stacks denySettings recommendation
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
az deployment-stack group create \
|
|
56
|
+
--deny-settings-mode denyDelete \
|
|
57
|
+
--deny-settings-apply-to-child-scopes \
|
|
58
|
+
...
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Use `denyWriteAndDelete` for compliance-mandated immutable resources.
|
|
62
|
+
|
|
63
|
+
## Do not assign
|
|
64
|
+
|
|
65
|
+
- `Owner` at subscription scope
|
|
66
|
+
- `Contributor` at management-group scope
|
|
67
|
+
- `Microsoft.Resources/*` wildcards
|
|
68
|
+
- `Microsoft.Authorization/roleAssignments/write` (privilege escalation risk)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Preflight Commands: Azure Live ARM Deployment Stack Guard
|
|
2
|
+
|
|
3
|
+
Run these before any ARM or Deployment Stack mutation. Paste sanitized output as evidence.
|
|
4
|
+
|
|
5
|
+
## 1. Confirm identity and subscription target
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
az account show --query "{subscription:id, name:name, user:user.name}"
|
|
9
|
+
az group show -n <RESOURCE_GROUP> --query "{name:name, location:location, provisioningState:properties.provisioningState}"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 2. Run what-if before any deployment
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# ARM template what-if
|
|
16
|
+
az deployment group what-if \
|
|
17
|
+
-g <RESOURCE_GROUP> \
|
|
18
|
+
--template-file <TEMPLATE.json> \
|
|
19
|
+
--parameters @<PARAMS.json>
|
|
20
|
+
|
|
21
|
+
# Bicep what-if
|
|
22
|
+
az deployment group what-if \
|
|
23
|
+
-g <RESOURCE_GROUP> \
|
|
24
|
+
--template-file <TEMPLATE.bicep> \
|
|
25
|
+
--parameters @<PARAMS.bicepparam>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Review the what-if output for resource replacements (marked with `~` or `-/+`).
|
|
29
|
+
Any replacement of a stateful resource (database, storage, Key Vault) must be
|
|
30
|
+
explicitly approved before proceeding.
|
|
31
|
+
|
|
32
|
+
## 3. Inspect existing Deployment Stack state
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
az deployment-stack group show \
|
|
36
|
+
-n <STACK_NAME> \
|
|
37
|
+
-g <RESOURCE_GROUP> \
|
|
38
|
+
--query "{provisioningState:provisioningState, denySettings:properties.denySettings, resources:properties.resources[].id}"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 4. List managed resources and their protection status
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
az deployment-stack group show -n <STACK_NAME> -g <RESOURCE_GROUP> \
|
|
45
|
+
--query "properties.resources[].{id:id, denyStatus:denyStatus}"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 5. Validate the template without deploying
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
az deployment group validate \
|
|
52
|
+
-g <RESOURCE_GROUP> \
|
|
53
|
+
--template-file <TEMPLATE.json> \
|
|
54
|
+
--parameters @<PARAMS.json>
|
|
55
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Rollback Playbook: Azure Live ARM Deployment Stack Guard
|
|
2
|
+
|
|
3
|
+
## Cancel an in-progress deployment
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# List recent deployments to find the in-flight one
|
|
7
|
+
az deployment group list -g <RESOURCE_GROUP> \
|
|
8
|
+
--query "[?properties.provisioningState=='Running'].{name:name, timestamp:properties.timestamp}"
|
|
9
|
+
|
|
10
|
+
# Cancel by name
|
|
11
|
+
az deployment group cancel -g <RESOURCE_GROUP> -n <DEPLOYMENT_NAME>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Cancellation is best-effort. Resources already provisioned before cancel are NOT torn down.
|
|
15
|
+
|
|
16
|
+
## Redeploy the last known-good template version
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# List deployment history to find the target
|
|
20
|
+
az deployment group list -g <RESOURCE_GROUP> \
|
|
21
|
+
--query "[].{name:name, state:properties.provisioningState, timestamp:properties.timestamp}" \
|
|
22
|
+
--output table
|
|
23
|
+
|
|
24
|
+
# Export the template from a prior successful deployment
|
|
25
|
+
az deployment group export -g <RESOURCE_GROUP> -n <GOOD_DEPLOYMENT_NAME> \
|
|
26
|
+
--output json > rollback-template.json
|
|
27
|
+
|
|
28
|
+
# Redeploy
|
|
29
|
+
az deployment group create \
|
|
30
|
+
-g <RESOURCE_GROUP> \
|
|
31
|
+
--template-file rollback-template.json \
|
|
32
|
+
--parameters @<PARAMS.json>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Deployment Stack — update back to previous config
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Re-apply the previous stack config (update, not recreate)
|
|
39
|
+
az deployment-stack group create \
|
|
40
|
+
-n <STACK_NAME> \
|
|
41
|
+
-g <RESOURCE_GROUP> \
|
|
42
|
+
--template-file rollback-template.json \
|
|
43
|
+
--parameters @<PARAMS.json> \
|
|
44
|
+
--action-on-unmanage deleteResources \
|
|
45
|
+
--deny-settings-mode denyDelete
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Rollback limitations
|
|
49
|
+
|
|
50
|
+
- ARM deployments are additive by default — they do not auto-delete resources added in the failed run.
|
|
51
|
+
- Deployment Stack `deleteResources` on unmanage will delete resources removed from the template.
|
|
52
|
+
- Stateful resources (databases, storage accounts, Key Vaults) cannot be "rolled back" — only re-provisioned from backup.
|
|
53
|
+
- If a resource was replaced (`~` in what-if), the original resource may already be deleted.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: azure-live-cost-budget-action-guard
|
|
3
|
+
description: Gate Azure budget action changes and GPU/HPC SKU provisioning against approved spend limits, with quota audits and emergency spend-stop playbooks.
|
|
4
|
+
metadata:
|
|
5
|
+
author: "github: Raishin"
|
|
6
|
+
version: "0.1.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Azure Live Cost Budget Action Guard
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Act as the guarded live Azure operator for azure-live-cost-budget-action-guard work. Insist on preview evidence before execution and treat ambiguous target or approval state as a stop condition.
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
Use this skill when:
|
|
18
|
+
|
|
19
|
+
- a cost budget action threshold or notification must be modified for a subscription or management group
|
|
20
|
+
- a GPU or HPC VM SKU scale-up is requested and spend-limit approval is required
|
|
21
|
+
- a runaway cost event is detected and emergency quota reduction or VM deallocation is needed
|
|
22
|
+
|
|
23
|
+
## Lean operating rules
|
|
24
|
+
|
|
25
|
+
- Prefer Azure CLI (`az`) official documentation when available; fall back to Microsoft Learn docs and sanitized user evidence.
|
|
26
|
+
- Do not execute a live Azure change until subscription, resource group, active principal, and resource ownership are explicit.
|
|
27
|
+
- Prefer what-if, preview, describe, status, dry-run, plan, and rollback evidence before execution.
|
|
28
|
+
- If the request skips preview or rollback design, push back.
|
|
29
|
+
- Never print secrets, access tokens, connection strings, or raw environment values. Summarize sanitized evidence only.
|
|
30
|
+
- Load references only when needed.
|
|
31
|
+
|
|
32
|
+
## References
|
|
33
|
+
|
|
34
|
+
Load these only when needed:
|
|
35
|
+
|
|
36
|
+
- [Preflight commands](references/preflight-commands.md) — CLI commands to run before any mutation.
|
|
37
|
+
- [Rollback playbook](references/rollback-playbook.md) — concrete rollback steps for this service.
|
|
38
|
+
- [Permission model](references/permission-model.md) — RBAC role definitions and PIM guidance.
|
|
39
|
+
- [Official sources](references/official-sources.md) — authoritative Azure documentation links.
|
|
40
|
+
|
|
41
|
+
## Response minimum
|
|
42
|
+
|
|
43
|
+
Return, at minimum:
|
|
44
|
+
|
|
45
|
+
- confirmed target subscription, resource group, and principal
|
|
46
|
+
- preflight evidence (what-if diff, status, health check, or plan output)
|
|
47
|
+
- approval status for the proposed mutation
|
|
48
|
+
- rollback posture or explicit statement of what cannot be rolled back
|
|
49
|
+
- post-action verification steps or refusal reason
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "azure-live-cost-budget-action-guard",
|
|
3
|
+
"name": "Azure Live Cost Budget Action Guard",
|
|
4
|
+
"type": "skill",
|
|
5
|
+
"provider": "azure",
|
|
6
|
+
"harnesses": [
|
|
7
|
+
"codex",
|
|
8
|
+
"claude-code",
|
|
9
|
+
"cursor",
|
|
10
|
+
"gemini",
|
|
11
|
+
"kiro",
|
|
12
|
+
"other"
|
|
13
|
+
],
|
|
14
|
+
"summary": "Gate Azure budget action changes and GPU/HPC SKU provisioning against approved spend limits, with quota audits and emergency spend-stop playbooks.",
|
|
15
|
+
"source_type": "original",
|
|
16
|
+
"official_docs": [
|
|
17
|
+
"https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets",
|
|
18
|
+
"https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits",
|
|
19
|
+
"https://learn.microsoft.com/en-us/azure/quotas/quickstart-increase-quota-portal",
|
|
20
|
+
"https://learn.microsoft.com/en-us/azure/cost-management-billing/finops/overview-finops"
|
|
21
|
+
],
|
|
22
|
+
"security_notes": "GPU/HPC SKUs (NDv5, H100, A100) can generate $50K+ daily costs. Never approve quota increases or budget threshold raises without explicit spend-approval sign-off from a financial authority.",
|
|
23
|
+
"last_verified": "2026-04-30",
|
|
24
|
+
"path": "skills/azure/azure-live-cost-budget-action-guard",
|
|
25
|
+
"author": "github: Raishin",
|
|
26
|
+
"version": "0.1.0"
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Official Sources: Azure Live Cost Budget Action Guard
|
|
2
|
+
|
|
3
|
+
## Azure Cost Management budgets
|
|
4
|
+
|
|
5
|
+
- https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets
|
|
6
|
+
- https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/manage-automation
|
|
7
|
+
- https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/cost-analysis-common-uses
|
|
8
|
+
|
|
9
|
+
## Azure Quotas and limits
|
|
10
|
+
|
|
11
|
+
- https://learn.microsoft.com/en-us/azure/quotas/quotas-overview
|
|
12
|
+
- https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits
|
|
13
|
+
|
|
14
|
+
## Source-grounding rule
|
|
15
|
+
|
|
16
|
+
Use official Microsoft Learn documentation as the source of truth.
|
|
17
|
+
Budget and quota behavior changes with service versions — verify current API behavior against docs.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Permission Model: Azure Live Cost Budget Action Guard
|
|
2
|
+
|
|
3
|
+
## Custom role — budget read/write, quota read, no VM creation
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"Name": "Cost Budget Action Guard",
|
|
8
|
+
"IsCustom": true,
|
|
9
|
+
"Description": "Read and modify subscription budgets and read compute quotas. Cannot create VMs. Cannot delete budgets.",
|
|
10
|
+
"Actions": [
|
|
11
|
+
"Microsoft.Consumption/budgets/read",
|
|
12
|
+
"Microsoft.Consumption/budgets/write",
|
|
13
|
+
"Microsoft.CostManagement/budgets/read",
|
|
14
|
+
"Microsoft.CostManagement/budgets/write",
|
|
15
|
+
"Microsoft.CostManagement/query/action",
|
|
16
|
+
"Microsoft.Compute/locations/usages/read",
|
|
17
|
+
"Microsoft.Compute/locations/vmSizes/read",
|
|
18
|
+
"Microsoft.Quota/quotas/read",
|
|
19
|
+
"Microsoft.Quota/usages/read"
|
|
20
|
+
],
|
|
21
|
+
"NotActions": [
|
|
22
|
+
"Microsoft.Compute/virtualMachines/write",
|
|
23
|
+
"Microsoft.Compute/virtualMachineScaleSets/write",
|
|
24
|
+
"Microsoft.Quota/quotas/write",
|
|
25
|
+
"Microsoft.Consumption/budgets/delete",
|
|
26
|
+
"Microsoft.CostManagement/budgets/delete"
|
|
27
|
+
],
|
|
28
|
+
"AssignableScopes": [
|
|
29
|
+
"/subscriptions/<SUBSCRIPTION_ID>"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`Microsoft.Quota/quotas/write` is excluded: quota increase requests carry spending risk
|
|
35
|
+
and must go through a separate approval workflow, not this role. VM creation is
|
|
36
|
+
explicitly excluded to prevent the cost guard from becoming a provisioning path.
|
|
37
|
+
|
|
38
|
+
`Microsoft.Consumption/budgets/delete` and `Microsoft.CostManagement/budgets/delete`
|
|
39
|
+
are excluded: deleting a budget silently removes the only cross-region financial
|
|
40
|
+
guardrail and disables every threshold alert on the subscription. Cleanup of stale or
|
|
41
|
+
test budgets must go through a separate PIM-eligible role with MFA + justification gates.
|
|
42
|
+
|
|
43
|
+
## Azure Policy guardrail (deploy alongside the role)
|
|
44
|
+
|
|
45
|
+
Deny GPU VM SKU provisioning without an approved budget tag:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"if": {
|
|
50
|
+
"allOf": [
|
|
51
|
+
{"field": "type", "equals": "Microsoft.Compute/virtualMachines"},
|
|
52
|
+
{"field": "Microsoft.Compute/virtualMachines/sku.name", "in": [
|
|
53
|
+
"Standard_ND96asr_v4", "Standard_NC24rs_v3", "Standard_ND40rs_v2"
|
|
54
|
+
]},
|
|
55
|
+
{"field": "tags.BudgetApproval", "exists": "false"}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
"then": {"effect": "Deny"}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Do not assign
|
|
63
|
+
|
|
64
|
+
- `Cost Management Contributor` at management-group scope
|
|
65
|
+
- `Billing Account Contributor`
|
|
66
|
+
- `Microsoft.Compute/virtualMachines/write` to this role
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Preflight Commands: Azure Live Cost Budget Action Guard
|
|
2
|
+
|
|
3
|
+
Run these before any budget modification. Paste sanitized output as evidence.
|
|
4
|
+
|
|
5
|
+
## 1. Confirm identity and subscription
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
az account show --query "{subscription:id, name:name, user:user.name}"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 2. List current budgets
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
az consumption budget list --query \
|
|
15
|
+
"[].{name:name, amount:properties.amount, timeGrain:properties.timeGrain, currentSpend:properties.currentSpend.amount}"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 3. Inspect a specific budget detail
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
az consumption budget show -n <BUDGET_NAME> \
|
|
22
|
+
--query "{amount:properties.amount, filter:properties.filter, notifications:properties.notifications}"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 4. Check current spend vs. budget
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
az costmanagement query \
|
|
29
|
+
--type ActualCost \
|
|
30
|
+
--dataset-aggregation '{"totalCost":{"name":"PreTaxCost","function":"Sum"}}' \
|
|
31
|
+
--timeframe MonthToDate \
|
|
32
|
+
--scope "/subscriptions/<SUBSCRIPTION_ID>"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 5. Check compute quota usage before action
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
az vm list-usage -l <LOCATION> \
|
|
39
|
+
--query "[?contains(name.value,'cores') || contains(name.value,'GPU')].{name:name.localizedValue, current:currentValue, limit:limit}"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 6. Verify budget action groups are configured
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
az consumption budget show -n <BUDGET_NAME> \
|
|
46
|
+
--query "properties.notifications"
|
|
47
|
+
# All notification.actionGroups should point to valid Action Group resource IDs
|
|
48
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Rollback Playbook: Azure Live Cost Budget Action Guard
|
|
2
|
+
|
|
3
|
+
## Revert a budget modification
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# Inspect current state before revert
|
|
7
|
+
az consumption budget show -n <BUDGET_NAME>
|
|
8
|
+
|
|
9
|
+
# Delete and recreate with original values
|
|
10
|
+
az consumption budget delete -n <BUDGET_NAME>
|
|
11
|
+
|
|
12
|
+
az consumption budget create \
|
|
13
|
+
-n <BUDGET_NAME> \
|
|
14
|
+
--amount <ORIGINAL_AMOUNT> \
|
|
15
|
+
--time-grain <Monthly|Quarterly|Annually> \
|
|
16
|
+
--start-date <YYYY-MM-01> \
|
|
17
|
+
--end-date <YYYY-MM-01> \
|
|
18
|
+
--notification <KEY=VALUE pairs from original>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Remove a runaway action group from a budget
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Show notification rules
|
|
25
|
+
az consumption budget show -n <BUDGET_NAME> --query "properties.notifications"
|
|
26
|
+
|
|
27
|
+
# Update budget to clear action groups on a specific notification key
|
|
28
|
+
az consumption budget create -n <BUDGET_NAME> \
|
|
29
|
+
--amount <AMOUNT> \
|
|
30
|
+
--time-grain Monthly \
|
|
31
|
+
--start-date <DATE> \
|
|
32
|
+
--end-date <DATE>
|
|
33
|
+
# Re-specify only the notification rules you want to keep
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Rollback limitations
|
|
37
|
+
|
|
38
|
+
- Spend that already occurred before the budget alert triggered cannot be reversed.
|
|
39
|
+
- Deleting a budget does NOT stop any VMs or resources — it only removes the alerting rule.
|
|
40
|
+
- Quota increases, once approved by Microsoft, cannot be reduced below the original limit.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: azure-live-keyvault-rotation-purge-guard
|
|
3
|
+
description: Guard Key Vault key rotation, rotation policy changes, soft-delete enforcement, and purge-protection enablement with irreversibility warnings and rollback evidence.
|
|
4
|
+
metadata:
|
|
5
|
+
author: "github: Raishin"
|
|
6
|
+
version: "0.1.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Azure Live Key Vault Rotation Purge Guard
|
|
10
|
+
|
|
11
|
+
## Purpose
|
|
12
|
+
|
|
13
|
+
Act as the guarded live Azure operator for azure-live-keyvault-rotation-purge-guard work. Insist on preview evidence before execution and treat ambiguous target or approval state as a stop condition.
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
Use this skill when:
|
|
18
|
+
|
|
19
|
+
- a Key Vault key or secret rotation must be triggered or scheduled against a live vault
|
|
20
|
+
- soft-delete or purge-protection must be verified or enabled on a production vault
|
|
21
|
+
- a key or secret has been soft-deleted and recovery or permanent purge must be decided
|
|
22
|
+
|
|
23
|
+
## Lean operating rules
|
|
24
|
+
|
|
25
|
+
- Prefer Azure CLI (`az`) official documentation when available; fall back to Microsoft Learn docs and sanitized user evidence.
|
|
26
|
+
- Do not execute a live Azure change until subscription, resource group, active principal, and resource ownership are explicit.
|
|
27
|
+
- Prefer what-if, preview, describe, status, dry-run, plan, and rollback evidence before execution.
|
|
28
|
+
- If the request skips preview or rollback design, push back.
|
|
29
|
+
- Never print secrets, access tokens, connection strings, or raw environment values. Summarize sanitized evidence only.
|
|
30
|
+
- Load references only when needed.
|
|
31
|
+
|
|
32
|
+
## References
|
|
33
|
+
|
|
34
|
+
Load these only when needed:
|
|
35
|
+
|
|
36
|
+
- [Preflight commands](references/preflight-commands.md) — CLI commands to run before any mutation.
|
|
37
|
+
- [Rollback playbook](references/rollback-playbook.md) — concrete rollback steps for this service.
|
|
38
|
+
- [Permission model](references/permission-model.md) — RBAC role definitions and PIM guidance.
|
|
39
|
+
- [Official sources](references/official-sources.md) — authoritative Azure documentation links.
|
|
40
|
+
|
|
41
|
+
## Response minimum
|
|
42
|
+
|
|
43
|
+
Return, at minimum:
|
|
44
|
+
|
|
45
|
+
- confirmed target subscription, resource group, and principal
|
|
46
|
+
- preflight evidence (what-if diff, status, health check, or plan output)
|
|
47
|
+
- approval status for the proposed mutation
|
|
48
|
+
- rollback posture or explicit statement of what cannot be rolled back
|
|
49
|
+
- post-action verification steps or refusal reason
|