opencode-skills-collection 4.0.68 → 4.0.70
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/bundled-skills/.antigravity-install-manifest.json +304 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/api-integration-architect/SKILL.md +241 -0
- package/bundled-skills/apify-generate-output-schema/SKILL.md +438 -0
- package/bundled-skills/apify-integration-development/SKILL.md +168 -0
- package/bundled-skills/apify-integration-development/references/ai-framework-package.md +158 -0
- package/bundled-skills/apify-integration-development/references/ai-harness-plugin.md +192 -0
- package/bundled-skills/apify-integration-development/references/sdk-integration.md +236 -0
- package/bundled-skills/apify-integration-development/references/workflow-automation.md +163 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/architecture-review/README.md +42 -0
- package/bundled-skills/architecture-review/SKILL.md +77 -0
- package/bundled-skills/architecture-review/examples.md +11 -0
- package/bundled-skills/architecture-review/reference/best-practices.md +7 -0
- package/bundled-skills/architecture-review/reference/capabilities.md +20 -0
- package/bundled-skills/architecture-review/reference/fallbacks.md +11 -0
- package/bundled-skills/architecture-review/reference/graph.md +15 -0
- package/bundled-skills/architecture-review/reference/mcp.md +14 -0
- package/bundled-skills/architecture-review/reference/workflow.md +15 -0
- package/bundled-skills/architecture-review/templates/architecture-review.md +21 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/code-review-sensei/SKILL.md +177 -0
- package/bundled-skills/codebase-onboarding/README.md +42 -0
- package/bundled-skills/codebase-onboarding/SKILL.md +77 -0
- package/bundled-skills/codebase-onboarding/examples.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/best-practices.md +7 -0
- package/bundled-skills/codebase-onboarding/reference/capabilities.md +20 -0
- package/bundled-skills/codebase-onboarding/reference/fallbacks.md +11 -0
- package/bundled-skills/codebase-onboarding/reference/graph.md +15 -0
- package/bundled-skills/codebase-onboarding/reference/mcp.md +14 -0
- package/bundled-skills/codebase-onboarding/reference/workflow.md +15 -0
- package/bundled-skills/codebase-onboarding/templates/repository-onboarding.md +21 -0
- package/bundled-skills/connection-auth-rules/SKILL.md +199 -0
- package/bundled-skills/connection-auth-rules/fetch_schema.py +320 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-analysis/README.md +42 -0
- package/bundled-skills/dependency-analysis/SKILL.md +76 -0
- package/bundled-skills/dependency-analysis/examples.md +11 -0
- package/bundled-skills/dependency-analysis/reference/best-practices.md +7 -0
- package/bundled-skills/dependency-analysis/reference/capabilities.md +20 -0
- package/bundled-skills/dependency-analysis/reference/fallbacks.md +11 -0
- package/bundled-skills/dependency-analysis/reference/graph.md +15 -0
- package/bundled-skills/dependency-analysis/reference/mcp.md +14 -0
- package/bundled-skills/dependency-analysis/reference/workflow.md +15 -0
- package/bundled-skills/dependency-analysis/templates/dependency-review.md +21 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/devops-pipeline-builder/SKILL.md +200 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/eas-app-stores/SKILL.md +197 -0
- package/bundled-skills/eas-app-stores/agents/openai.yaml +4 -0
- package/bundled-skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/bundled-skills/eas-app-stores/references/ios-app-store.md +376 -0
- package/bundled-skills/eas-app-stores/references/native-ios.md +167 -0
- package/bundled-skills/eas-app-stores/references/play-store.md +244 -0
- package/bundled-skills/eas-app-stores/references/testflight.md +62 -0
- package/bundled-skills/eas-app-stores/references/workflows.md +120 -0
- package/bundled-skills/eas-hosting/SKILL.md +448 -0
- package/bundled-skills/eas-hosting/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/SKILL.md +75 -0
- package/bundled-skills/eas-observe/agents/openai.yaml +4 -0
- package/bundled-skills/eas-observe/references/metrics.md +98 -0
- package/bundled-skills/eas-observe/references/queries.md +403 -0
- package/bundled-skills/eas-observe/references/setup.md +476 -0
- package/bundled-skills/eas-observe/references/third-party.md +136 -0
- package/bundled-skills/eas-simulator/SKILL.md +251 -0
- package/bundled-skills/eas-simulator/agents/openai.yaml +4 -0
- package/bundled-skills/eas-simulator/references/controllers.md +135 -0
- package/bundled-skills/eas-simulator/references/run-your-app.md +240 -0
- package/bundled-skills/eas-simulator/references/troubleshooting.md +47 -0
- package/bundled-skills/eas-workflows/SKILL.md +119 -0
- package/bundled-skills/eas-workflows/agents/openai.yaml +4 -0
- package/bundled-skills/eas-workflows/scripts/fetch.js +109 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/expo-animation/LICENSE +21 -0
- package/bundled-skills/expo-animation/RECIPES.md +385 -0
- package/bundled-skills/expo-animation/SKILL.md +295 -0
- package/bundled-skills/expo-animation/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/SKILL.md +178 -0
- package/bundled-skills/fact-check-x-unified/agents/openai.yaml +4 -0
- package/bundled-skills/fact-check-x-unified/references/acceptance-criteria.md +44 -0
- package/bundled-skills/fact-check-x-unified/references/contracts.md +39 -0
- package/bundled-skills/fact-check-x-unified/scripts/common.py +31 -0
- package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +1832 -0
- package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +324 -0
- package/bundled-skills/fact-check-x-unified/tests/anchor_downgrade_test.py +90 -0
- package/bundled-skills/fact-check-x-unified/tests/multi_platform_test.py +369 -0
- package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +740 -0
- package/bundled-skills/fact-check-x-unified/tests/stage_checkpoint_test.py +103 -0
- package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +156 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/gpt-taste/SKILL.md +8 -1
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hf-cli/SKILL.md +263 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/huggingface-community-evals/SKILL.md +228 -0
- package/bundled-skills/huggingface-community-evals/examples/.env.example +3 -0
- package/bundled-skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
- package/bundled-skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
- package/bundled-skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
- package/bundled-skills/huggingface-datasets/SKILL.md +130 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-social/SKILL.md +182 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/longbridge-derivatives/SKILL.md +117 -0
- package/bundled-skills/longbridge-derivatives/references/option.md +36 -0
- package/bundled-skills/longbridge-derivatives/references/options-advanced.md +101 -0
- package/bundled-skills/longbridge-derivatives/references/options-pnl.md +74 -0
- package/bundled-skills/longbridge-derivatives/references/options-strategy.md +82 -0
- package/bundled-skills/longbridge-derivatives/references/options-volatility.md +70 -0
- package/bundled-skills/longbridge-derivatives/references/warrant.md +12 -0
- package/bundled-skills/longbridge-quant/SKILL.md +151 -0
- package/bundled-skills/longbridge-quant/references/correlation.md +51 -0
- package/bundled-skills/longbridge-quant/references/execution-model.md +68 -0
- package/bundled-skills/longbridge-quant/references/factor-research.md +95 -0
- package/bundled-skills/longbridge-quant/references/factor-screen.md +101 -0
- package/bundled-skills/longbridge-quant/references/hedging.md +136 -0
- package/bundled-skills/longbridge-quant/references/ml-strategy.md +77 -0
- package/bundled-skills/longbridge-quant/references/multifactor.md +68 -0
- package/bundled-skills/longbridge-quant/references/pairs-trading.md +61 -0
- package/bundled-skills/longbridge-quant/references/quant-cli.md +133 -0
- package/bundled-skills/longbridge-quant/references/quant-stats.md +150 -0
- package/bundled-skills/longbridge-quant/references/seasonality.md +50 -0
- package/bundled-skills/longbridge-quant/references/strategy-optimizer.md +68 -0
- package/bundled-skills/longbridge-quant/references/volatility-strategy.md +52 -0
- package/bundled-skills/longbridge-research/SKILL.md +187 -0
- package/bundled-skills/longbridge-research/references/company-profile.md +96 -0
- package/bundled-skills/longbridge-research/references/company-tearsheet.md +82 -0
- package/bundled-skills/longbridge-research/references/competitive-analysis.md +81 -0
- package/bundled-skills/longbridge-research/references/consensus.md +92 -0
- package/bundled-skills/longbridge-research/references/coverage-initiation.md +76 -0
- package/bundled-skills/longbridge-research/references/defi-yield.md +60 -0
- package/bundled-skills/longbridge-research/references/finance-calendar.md +165 -0
- package/bundled-skills/longbridge-research/references/financial-planning.md +77 -0
- package/bundled-skills/longbridge-research/references/forecast-eps.md +39 -0
- package/bundled-skills/longbridge-research/references/fund-holder.md +44 -0
- package/bundled-skills/longbridge-research/references/hkipo-analysis.md +101 -0
- package/bundled-skills/longbridge-research/references/industry-peers.md +46 -0
- package/bundled-skills/longbridge-research/references/industry-rank.md +62 -0
- package/bundled-skills/longbridge-research/references/insider-trades.md +48 -0
- package/bundled-skills/longbridge-research/references/institution-rating.md +62 -0
- package/bundled-skills/longbridge-research/references/investment-ideas.md +69 -0
- package/bundled-skills/longbridge-research/references/investment-proposal.md +95 -0
- package/bundled-skills/longbridge-research/references/investors.md +87 -0
- package/bundled-skills/longbridge-research/references/onchain.md +70 -0
- package/bundled-skills/longbridge-research/references/post-investment.md +76 -0
- package/bundled-skills/longbridge-research/references/shareholder.md +72 -0
- package/bundled-skills/longbridge-research/references/short-positions.md +50 -0
- package/bundled-skills/longbridge-research/references/short-trades.md +50 -0
- package/bundled-skills/longbridge-research/references/stock-research.md +61 -0
- package/bundled-skills/longbridge-research/references/thesis-tracker.md +64 -0
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/makepad-2-0-animation/SKILL.md +318 -0
- package/bundled-skills/makepad-2-0-animation/references/animator-reference.md +433 -0
- package/bundled-skills/makepad-2-0-dsl/SKILL.md +492 -0
- package/bundled-skills/makepad-2-0-dsl/references/dsl-syntax-reference.md +511 -0
- package/bundled-skills/makepad-2-0-dsl/references/extended-guide.md +56 -0
- package/bundled-skills/makepad-2-0-dsl/references/property-system.md +757 -0
- package/bundled-skills/makepad-2-0-events/SKILL.md +497 -0
- package/bundled-skills/makepad-2-0-events/references/event-patterns.md +802 -0
- package/bundled-skills/makepad-2-0-events/references/extended-guide.md +590 -0
- package/bundled-skills/makepad-2-0-layout/SKILL.md +499 -0
- package/bundled-skills/makepad-2-0-layout/references/extended-guide.md +243 -0
- package/bundled-skills/makepad-2-0-layout/references/layout-patterns.md +881 -0
- package/bundled-skills/makepad-2-0-widgets/SKILL.md +261 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-advanced.md +648 -0
- package/bundled-skills/makepad-2-0-widgets/references/widget-catalog.md +547 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meeting-distiller-pro/SKILL.md +120 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-asset-health/SKILL.md +12 -1
- package/bundled-skills/monte-carlo-context-detection/SKILL.md +170 -0
- package/bundled-skills/monte-carlo-context-detection/references/signal-definitions.md +46 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/remotion-captions/SKILL.md +57 -0
- package/bundled-skills/remotion-captions/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-captions/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-captions/display-captions.md +190 -0
- package/bundled-skills/remotion-captions/import-srt-captions.md +73 -0
- package/bundled-skills/remotion-captions/transcribe-captions.md +70 -0
- package/bundled-skills/remotion-create/SKILL.md +106 -0
- package/bundled-skills/remotion-create/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-create/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-create/tailwind.md +11 -0
- package/bundled-skills/remotion-create/video-layout.md +9 -0
- package/bundled-skills/remotion-docs/SKILL.md +67 -0
- package/bundled-skills/remotion-docs/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-docs/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-interactivity/SKILL.md +270 -0
- package/bundled-skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-interactivity/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/SKILL.md +48 -0
- package/bundled-skills/remotion-render/agents/openai.yaml +7 -0
- package/bundled-skills/remotion-render/assets/remotion-icon.svg +4 -0
- package/bundled-skills/remotion-render/transparent-videos.md +106 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-pricing-strategist/SKILL.md +169 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/score-eval/SKILL.md +35 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/writing-guidelines/SKILL.md +60 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +7874 -277
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: policy-as-code
|
|
3
|
+
description: Implement policy as code with OPA, Sentinel, and Kyverno. Automate policy
|
|
4
|
+
enforcement in CI/CD and infrastructure. Use when enforcing compliance through automation.
|
|
5
|
+
category: security
|
|
6
|
+
risk: safe
|
|
7
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
8
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-20'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Checklist and framework guidance; no privileged tooling required. Apply
|
|
14
|
+
controls through your own change process.
|
|
15
|
+
metadata:
|
|
16
|
+
author: devops-skills
|
|
17
|
+
version: '1.0'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Policy as Code
|
|
21
|
+
|
|
22
|
+
Automate policy enforcement through code using OPA/Rego, Kyverno, Checkov, and CI/CD integration to prevent compliance violations before they reach production.
|
|
23
|
+
|
|
24
|
+
## Open Policy Agent (OPA) Rego Policies
|
|
25
|
+
|
|
26
|
+
```rego
|
|
27
|
+
# deny_public_s3.rego - Deny S3 buckets with public access
|
|
28
|
+
package terraform.aws.s3
|
|
29
|
+
|
|
30
|
+
import rego.v1
|
|
31
|
+
|
|
32
|
+
deny contains msg if {
|
|
33
|
+
resource := input.resource_changes[_]
|
|
34
|
+
resource.type == "aws_s3_bucket"
|
|
35
|
+
resource.change.after.acl == "public-read"
|
|
36
|
+
msg := sprintf(
|
|
37
|
+
"S3 bucket '%s' has public-read ACL. All buckets must be private. [Policy: no-public-s3]",
|
|
38
|
+
[resource.address]
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
deny contains msg if {
|
|
43
|
+
resource := input.resource_changes[_]
|
|
44
|
+
resource.type == "aws_s3_bucket"
|
|
45
|
+
resource.change.after.acl == "public-read-write"
|
|
46
|
+
msg := sprintf(
|
|
47
|
+
"S3 bucket '%s' has public-read-write ACL. This is strictly prohibited. [Policy: no-public-s3]",
|
|
48
|
+
[resource.address]
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```rego
|
|
54
|
+
# require_encryption.rego - Require encryption on data stores
|
|
55
|
+
package terraform.aws.encryption
|
|
56
|
+
|
|
57
|
+
import rego.v1
|
|
58
|
+
|
|
59
|
+
deny contains msg if {
|
|
60
|
+
resource := input.resource_changes[_]
|
|
61
|
+
resource.type == "aws_db_instance"
|
|
62
|
+
not resource.change.after.storage_encrypted
|
|
63
|
+
msg := sprintf(
|
|
64
|
+
"RDS instance '%s' does not have storage encryption enabled. [Policy: require-rds-encryption]",
|
|
65
|
+
[resource.address]
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
deny contains msg if {
|
|
70
|
+
resource := input.resource_changes[_]
|
|
71
|
+
resource.type == "aws_ebs_volume"
|
|
72
|
+
not resource.change.after.encrypted
|
|
73
|
+
msg := sprintf(
|
|
74
|
+
"EBS volume '%s' is not encrypted. [Policy: require-ebs-encryption]",
|
|
75
|
+
[resource.address]
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
deny contains msg if {
|
|
80
|
+
resource := input.resource_changes[_]
|
|
81
|
+
resource.type == "aws_s3_bucket"
|
|
82
|
+
not has_encryption(resource)
|
|
83
|
+
msg := sprintf(
|
|
84
|
+
"S3 bucket '%s' does not have default encryption configured. [Policy: require-s3-encryption]",
|
|
85
|
+
[resource.address]
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
has_encryption(resource) if {
|
|
90
|
+
resource.change.after.server_side_encryption_configuration[_]
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```rego
|
|
95
|
+
# require_tags.rego - Enforce mandatory tagging
|
|
96
|
+
package terraform.aws.tags
|
|
97
|
+
|
|
98
|
+
import rego.v1
|
|
99
|
+
|
|
100
|
+
required_tags := {"Environment", "Owner", "CostCenter", "DataClassification"}
|
|
101
|
+
|
|
102
|
+
deny contains msg if {
|
|
103
|
+
resource := input.resource_changes[_]
|
|
104
|
+
tags := object.get(resource.change.after, "tags", {})
|
|
105
|
+
missing := required_tags - {key | tags[key]}
|
|
106
|
+
count(missing) > 0
|
|
107
|
+
msg := sprintf(
|
|
108
|
+
"Resource '%s' is missing required tags: %v. [Policy: required-tags]",
|
|
109
|
+
[resource.address, missing]
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
```rego
|
|
115
|
+
# restrict_regions.rego - Limit resource deployment to approved regions
|
|
116
|
+
package terraform.aws.regions
|
|
117
|
+
|
|
118
|
+
import rego.v1
|
|
119
|
+
|
|
120
|
+
approved_regions := {"us-east-1", "us-west-2", "eu-west-1"}
|
|
121
|
+
|
|
122
|
+
deny contains msg if {
|
|
123
|
+
resource := input.resource_changes[_]
|
|
124
|
+
provider_config := input.configuration.provider_config.aws
|
|
125
|
+
region := provider_config.expressions.region.constant_value
|
|
126
|
+
not region in approved_regions
|
|
127
|
+
msg := sprintf(
|
|
128
|
+
"Resource '%s' is in region '%s'. Approved regions: %v. [Policy: approved-regions]",
|
|
129
|
+
[resource.address, region, approved_regions]
|
|
130
|
+
)
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Evaluate OPA policies against Terraform plan
|
|
136
|
+
terraform plan -out=tfplan
|
|
137
|
+
terraform show -json tfplan > tfplan.json
|
|
138
|
+
|
|
139
|
+
# Run OPA evaluation
|
|
140
|
+
opa eval \
|
|
141
|
+
--data policies/ \
|
|
142
|
+
--input tfplan.json \
|
|
143
|
+
"data.terraform.aws.s3.deny" \
|
|
144
|
+
--format pretty
|
|
145
|
+
|
|
146
|
+
# Use conftest for easier CI integration
|
|
147
|
+
conftest test tfplan.json --policy policies/ --output table
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Kyverno Kubernetes Policies
|
|
151
|
+
|
|
152
|
+
```yaml
|
|
153
|
+
# require-labels.yaml - Enforce required labels on all pods
|
|
154
|
+
apiVersion: kyverno.io/v1
|
|
155
|
+
kind: ClusterPolicy
|
|
156
|
+
metadata:
|
|
157
|
+
name: require-labels
|
|
158
|
+
annotations:
|
|
159
|
+
policies.kyverno.io/title: Require Labels
|
|
160
|
+
policies.kyverno.io/category: Best Practices
|
|
161
|
+
policies.kyverno.io/severity: medium
|
|
162
|
+
spec:
|
|
163
|
+
validationFailureAction: Enforce
|
|
164
|
+
background: true
|
|
165
|
+
rules:
|
|
166
|
+
- name: check-required-labels
|
|
167
|
+
match:
|
|
168
|
+
any:
|
|
169
|
+
- resources:
|
|
170
|
+
kinds:
|
|
171
|
+
- Pod
|
|
172
|
+
validate:
|
|
173
|
+
message: >-
|
|
174
|
+
Labels 'app.kubernetes.io/name', 'app.kubernetes.io/version',
|
|
175
|
+
and 'team' are required on all Pods.
|
|
176
|
+
pattern:
|
|
177
|
+
metadata:
|
|
178
|
+
labels:
|
|
179
|
+
app.kubernetes.io/name: "?*"
|
|
180
|
+
app.kubernetes.io/version: "?*"
|
|
181
|
+
team: "?*"
|
|
182
|
+
---
|
|
183
|
+
# disallow-privileged.yaml - Block privileged containers
|
|
184
|
+
apiVersion: kyverno.io/v1
|
|
185
|
+
kind: ClusterPolicy
|
|
186
|
+
metadata:
|
|
187
|
+
name: disallow-privileged-containers
|
|
188
|
+
annotations:
|
|
189
|
+
policies.kyverno.io/title: Disallow Privileged Containers
|
|
190
|
+
policies.kyverno.io/category: Pod Security
|
|
191
|
+
policies.kyverno.io/severity: high
|
|
192
|
+
spec:
|
|
193
|
+
validationFailureAction: Enforce
|
|
194
|
+
background: true
|
|
195
|
+
rules:
|
|
196
|
+
- name: deny-privileged
|
|
197
|
+
match:
|
|
198
|
+
any:
|
|
199
|
+
- resources:
|
|
200
|
+
kinds:
|
|
201
|
+
- Pod
|
|
202
|
+
validate:
|
|
203
|
+
message: "Privileged containers are not allowed."
|
|
204
|
+
pattern:
|
|
205
|
+
spec:
|
|
206
|
+
containers:
|
|
207
|
+
- securityContext:
|
|
208
|
+
privileged: "false"
|
|
209
|
+
=(initContainers):
|
|
210
|
+
- securityContext:
|
|
211
|
+
privileged: "false"
|
|
212
|
+
---
|
|
213
|
+
# require-resource-limits.yaml - Enforce resource limits
|
|
214
|
+
apiVersion: kyverno.io/v1
|
|
215
|
+
kind: ClusterPolicy
|
|
216
|
+
metadata:
|
|
217
|
+
name: require-resource-limits
|
|
218
|
+
annotations:
|
|
219
|
+
policies.kyverno.io/title: Require Resource Limits
|
|
220
|
+
policies.kyverno.io/severity: medium
|
|
221
|
+
spec:
|
|
222
|
+
validationFailureAction: Enforce
|
|
223
|
+
background: true
|
|
224
|
+
rules:
|
|
225
|
+
- name: check-resource-limits
|
|
226
|
+
match:
|
|
227
|
+
any:
|
|
228
|
+
- resources:
|
|
229
|
+
kinds:
|
|
230
|
+
- Pod
|
|
231
|
+
validate:
|
|
232
|
+
message: "All containers must have CPU and memory limits defined."
|
|
233
|
+
pattern:
|
|
234
|
+
spec:
|
|
235
|
+
containers:
|
|
236
|
+
- resources:
|
|
237
|
+
limits:
|
|
238
|
+
memory: "?*"
|
|
239
|
+
cpu: "?*"
|
|
240
|
+
---
|
|
241
|
+
# disallow-latest-tag.yaml - Block usage of 'latest' image tag
|
|
242
|
+
apiVersion: kyverno.io/v1
|
|
243
|
+
kind: ClusterPolicy
|
|
244
|
+
metadata:
|
|
245
|
+
name: disallow-latest-tag
|
|
246
|
+
annotations:
|
|
247
|
+
policies.kyverno.io/title: Disallow Latest Tag
|
|
248
|
+
policies.kyverno.io/severity: medium
|
|
249
|
+
spec:
|
|
250
|
+
validationFailureAction: Enforce
|
|
251
|
+
background: true
|
|
252
|
+
rules:
|
|
253
|
+
- name: validate-image-tag
|
|
254
|
+
match:
|
|
255
|
+
any:
|
|
256
|
+
- resources:
|
|
257
|
+
kinds:
|
|
258
|
+
- Pod
|
|
259
|
+
validate:
|
|
260
|
+
message: "Images must use a specific tag, not 'latest'."
|
|
261
|
+
pattern:
|
|
262
|
+
spec:
|
|
263
|
+
containers:
|
|
264
|
+
- image: "!*:latest & *:*"
|
|
265
|
+
---
|
|
266
|
+
# restrict-image-registries.yaml - Allow only approved registries
|
|
267
|
+
apiVersion: kyverno.io/v1
|
|
268
|
+
kind: ClusterPolicy
|
|
269
|
+
metadata:
|
|
270
|
+
name: restrict-image-registries
|
|
271
|
+
annotations:
|
|
272
|
+
policies.kyverno.io/title: Restrict Image Registries
|
|
273
|
+
policies.kyverno.io/severity: high
|
|
274
|
+
spec:
|
|
275
|
+
validationFailureAction: Enforce
|
|
276
|
+
background: true
|
|
277
|
+
rules:
|
|
278
|
+
- name: validate-registries
|
|
279
|
+
match:
|
|
280
|
+
any:
|
|
281
|
+
- resources:
|
|
282
|
+
kinds:
|
|
283
|
+
- Pod
|
|
284
|
+
validate:
|
|
285
|
+
message: >-
|
|
286
|
+
Images must come from approved registries:
|
|
287
|
+
123456789012.dkr.ecr.us-east-1.amazonaws.com or ghcr.io/your-org.
|
|
288
|
+
pattern:
|
|
289
|
+
spec:
|
|
290
|
+
containers:
|
|
291
|
+
- image: "123456789012.dkr.ecr.*.amazonaws.com/* | ghcr.io/your-org/*"
|
|
292
|
+
---
|
|
293
|
+
# require-networkpolicy.yaml - Ensure namespaces have NetworkPolicies
|
|
294
|
+
apiVersion: kyverno.io/v1
|
|
295
|
+
kind: ClusterPolicy
|
|
296
|
+
metadata:
|
|
297
|
+
name: require-networkpolicy
|
|
298
|
+
annotations:
|
|
299
|
+
policies.kyverno.io/title: Require Network Policy
|
|
300
|
+
policies.kyverno.io/severity: high
|
|
301
|
+
spec:
|
|
302
|
+
validationFailureAction: Audit
|
|
303
|
+
background: true
|
|
304
|
+
rules:
|
|
305
|
+
- name: check-networkpolicy
|
|
306
|
+
match:
|
|
307
|
+
any:
|
|
308
|
+
- resources:
|
|
309
|
+
kinds:
|
|
310
|
+
- Deployment
|
|
311
|
+
preconditions:
|
|
312
|
+
all:
|
|
313
|
+
- key: "{{request.object.metadata.namespace}}"
|
|
314
|
+
operator: NotIn
|
|
315
|
+
value: ["kube-system", "kube-public"]
|
|
316
|
+
validate:
|
|
317
|
+
message: "A NetworkPolicy must exist in namespace '{{request.object.metadata.namespace}}' before deploying workloads."
|
|
318
|
+
deny:
|
|
319
|
+
conditions:
|
|
320
|
+
all:
|
|
321
|
+
- key: "{{request.object.metadata.namespace}}"
|
|
322
|
+
operator: AnyNotIn
|
|
323
|
+
value: "{{request.object.metadata.namespace}}"
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
## Checkov Custom Checks
|
|
327
|
+
|
|
328
|
+
```python
|
|
329
|
+
# custom_checks/require_s3_versioning.py
|
|
330
|
+
from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck
|
|
331
|
+
from checkov.common.models.enums import CheckResult, CheckCategories
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
class S3Versioning(BaseResourceCheck):
|
|
335
|
+
def __init__(self):
|
|
336
|
+
name = "Ensure S3 bucket has versioning enabled"
|
|
337
|
+
id = "CUSTOM_S3_001"
|
|
338
|
+
supported_resources = ["aws_s3_bucket_versioning"]
|
|
339
|
+
categories = [CheckCategories.BACKUP_AND_RECOVERY]
|
|
340
|
+
super().__init__(name=name, id=id,
|
|
341
|
+
categories=categories,
|
|
342
|
+
supported_resources=supported_resources)
|
|
343
|
+
|
|
344
|
+
def scan_resource_conf(self, conf):
|
|
345
|
+
versioning = conf.get("versioning_configuration", [{}])
|
|
346
|
+
if isinstance(versioning, list):
|
|
347
|
+
versioning = versioning[0] if versioning else {}
|
|
348
|
+
status = versioning.get("status", ["Disabled"])
|
|
349
|
+
if isinstance(status, list):
|
|
350
|
+
status = status[0]
|
|
351
|
+
return CheckResult.PASSED if status == "Enabled" else CheckResult.FAILED
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
check = S3Versioning()
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
```python
|
|
358
|
+
# custom_checks/require_rds_backup.py
|
|
359
|
+
from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck
|
|
360
|
+
from checkov.common.models.enums import CheckResult, CheckCategories
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
class RDSBackupRetention(BaseResourceCheck):
|
|
364
|
+
def __init__(self):
|
|
365
|
+
name = "Ensure RDS has backup retention of at least 7 days"
|
|
366
|
+
id = "CUSTOM_RDS_001"
|
|
367
|
+
supported_resources = ["aws_db_instance"]
|
|
368
|
+
categories = [CheckCategories.BACKUP_AND_RECOVERY]
|
|
369
|
+
super().__init__(name=name, id=id,
|
|
370
|
+
categories=categories,
|
|
371
|
+
supported_resources=supported_resources)
|
|
372
|
+
|
|
373
|
+
def scan_resource_conf(self, conf):
|
|
374
|
+
retention = conf.get("backup_retention_period", [0])
|
|
375
|
+
if isinstance(retention, list):
|
|
376
|
+
retention = retention[0]
|
|
377
|
+
return CheckResult.PASSED if int(retention) >= 7 else CheckResult.FAILED
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
check = RDSBackupRetention()
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
# Run Checkov with custom checks
|
|
385
|
+
checkov -d ./terraform \
|
|
386
|
+
--framework terraform \
|
|
387
|
+
--external-checks-dir ./custom_checks \
|
|
388
|
+
--output cli \
|
|
389
|
+
--compact
|
|
390
|
+
|
|
391
|
+
# Run specific check IDs
|
|
392
|
+
checkov -d ./terraform \
|
|
393
|
+
--check CUSTOM_S3_001,CUSTOM_RDS_001,CKV_AWS_18,CKV_AWS_19
|
|
394
|
+
|
|
395
|
+
# Generate SARIF output for GitHub Advanced Security integration
|
|
396
|
+
checkov -d ./terraform \
|
|
397
|
+
--framework terraform \
|
|
398
|
+
--output sarif \
|
|
399
|
+
--output-file checkov-results.sarif
|
|
400
|
+
|
|
401
|
+
# Skip specific checks with documented justification
|
|
402
|
+
checkov -d ./terraform \
|
|
403
|
+
--skip-check CKV_AWS_145 \
|
|
404
|
+
--skip-check CKV_AWS_79
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
## Contents
|
|
409
|
+
|
|
410
|
+
- [CI/CD Pipeline Integration](references/details.md)
|
|
411
|
+
- [Policy Exception Management](references/details.md)
|
|
412
|
+
- [Policy Testing](references/details.md)
|
|
413
|
+
- [Best Practices](references/details.md)
|
|
414
|
+
|
|
415
|
+
## When to Use
|
|
416
|
+
|
|
417
|
+
- Enforcing security and compliance policies on infrastructure-as-code changes
|
|
418
|
+
- Preventing misconfigured Kubernetes workloads from deploying
|
|
419
|
+
- Automating guardrails in CI/CD pipelines for Terraform, CloudFormation, or Helm
|
|
420
|
+
- Implementing organizational standards that must be consistently applied
|
|
421
|
+
- Replacing manual approval gates with automated policy checks
|
|
422
|
+
|
|
423
|
+
## Limitations
|
|
424
|
+
|
|
425
|
+
- Guidance and checklists only; not legal advice and not a substitute for a qualified auditor.
|
|
426
|
+
- Docs-only import: upstream templates and scripts not bundled.
|
|
427
|
+
|
|
428
|
+
### Example
|
|
429
|
+
|
|
430
|
+
```markdown
|
|
431
|
+
Map this skill's control checklist to our current evidence and list gaps.
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
> Adapted from [BagelHole/DevOps-Security-Agent-Skills](https://github.com/BagelHole/DevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `policy-as-code`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## CI/CD Pipeline Integration
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
# GitHub Actions - Policy enforcement in PR workflow
|
|
9
|
+
name: Policy Checks
|
|
10
|
+
on:
|
|
11
|
+
pull_request:
|
|
12
|
+
paths:
|
|
13
|
+
- 'terraform/**'
|
|
14
|
+
- 'kubernetes/**'
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
terraform-policy:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Setup Terraform
|
|
23
|
+
uses: hashicorp/setup-terraform@v3
|
|
24
|
+
|
|
25
|
+
- name: Terraform Init and Plan
|
|
26
|
+
working-directory: terraform/
|
|
27
|
+
run: |
|
|
28
|
+
terraform init -backend=false
|
|
29
|
+
terraform plan -out=tfplan
|
|
30
|
+
terraform show -json tfplan > tfplan.json
|
|
31
|
+
|
|
32
|
+
- name: OPA Policy Check
|
|
33
|
+
uses: open-policy-agent/setup-opa@v2
|
|
34
|
+
with:
|
|
35
|
+
version: latest
|
|
36
|
+
- run: |
|
|
37
|
+
RESULTS=$(opa eval \
|
|
38
|
+
--data policies/ \
|
|
39
|
+
--input terraform/tfplan.json \
|
|
40
|
+
--format json \
|
|
41
|
+
"data.terraform" | jq '.result[0].expressions[0].value')
|
|
42
|
+
DENY_COUNT=$(echo "$RESULTS" | jq '[.. | .deny? // empty | .[] ] | length')
|
|
43
|
+
if [ "$DENY_COUNT" -gt 0 ]; then
|
|
44
|
+
echo "::error::Policy violations found:"
|
|
45
|
+
echo "$RESULTS" | jq '.. | .deny? // empty | .[]'
|
|
46
|
+
exit 1
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
- name: Checkov Scan
|
|
50
|
+
uses: bridgecrewio/checkov-action@v12
|
|
51
|
+
with:
|
|
52
|
+
directory: terraform/
|
|
53
|
+
framework: terraform
|
|
54
|
+
output_format: cli,sarif
|
|
55
|
+
output_file_path: console,checkov-results.sarif
|
|
56
|
+
soft_fail: false
|
|
57
|
+
external_checks_dirs: custom_checks/
|
|
58
|
+
|
|
59
|
+
- name: Upload SARIF
|
|
60
|
+
if: always()
|
|
61
|
+
uses: github/codeql-action/upload-sarif@v3
|
|
62
|
+
with:
|
|
63
|
+
sarif_file: checkov-results.sarif
|
|
64
|
+
|
|
65
|
+
kubernetes-policy:
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
steps:
|
|
68
|
+
- uses: actions/checkout@v4
|
|
69
|
+
|
|
70
|
+
- name: Install Kyverno CLI
|
|
71
|
+
run: |
|
|
72
|
+
curl -LO https://github.com/kyverno/kyverno/releases/latest/download/kyverno-cli_linux_amd64.tar.gz
|
|
73
|
+
tar -xzf kyverno-cli_linux_amd64.tar.gz
|
|
74
|
+
sudo mv kyverno /usr/local/bin/
|
|
75
|
+
|
|
76
|
+
- name: Test Kyverno Policies
|
|
77
|
+
run: |
|
|
78
|
+
kyverno apply policies/kyverno/ \
|
|
79
|
+
--resource kubernetes/manifests/ \
|
|
80
|
+
--detailed-results \
|
|
81
|
+
--output-format table
|
|
82
|
+
|
|
83
|
+
- name: Conftest Kubernetes Manifests
|
|
84
|
+
uses: open-policy-agent/conftest-action@v2
|
|
85
|
+
with:
|
|
86
|
+
files: kubernetes/manifests/
|
|
87
|
+
policy: policies/kubernetes/
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
## Policy Exception Management
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
exception_workflow:
|
|
95
|
+
request:
|
|
96
|
+
fields:
|
|
97
|
+
- policy_id: "Which policy needs an exception"
|
|
98
|
+
- resource: "Specific resource requiring exception"
|
|
99
|
+
- justification: "Business reason for the exception"
|
|
100
|
+
- compensating_controls: "Alternative mitigations in place"
|
|
101
|
+
- duration: "Temporary (with expiry) or permanent"
|
|
102
|
+
- requestor: "Person requesting"
|
|
103
|
+
- approver: "Security team member who approved"
|
|
104
|
+
|
|
105
|
+
approval_process:
|
|
106
|
+
1: "Requestor submits exception with justification"
|
|
107
|
+
2: "Security team reviews and assesses risk"
|
|
108
|
+
3: "Compensating controls verified"
|
|
109
|
+
4: "Exception approved or denied with rationale"
|
|
110
|
+
5: "Exception documented in registry"
|
|
111
|
+
6: "Automated enforcement updated to allow exception"
|
|
112
|
+
|
|
113
|
+
enforcement:
|
|
114
|
+
opa: |
|
|
115
|
+
# Exception list loaded as data
|
|
116
|
+
# policies/exceptions.json
|
|
117
|
+
# {"exceptions": [{"resource": "aws_s3_bucket.public_website", "policy": "no-public-s3", "expires": "2025-06-01"}]}
|
|
118
|
+
kyverno: |
|
|
119
|
+
# Use Kyverno PolicyException resource
|
|
120
|
+
apiVersion: kyverno.io/v2beta1
|
|
121
|
+
kind: PolicyException
|
|
122
|
+
metadata:
|
|
123
|
+
name: allow-public-website
|
|
124
|
+
namespace: web
|
|
125
|
+
spec:
|
|
126
|
+
exceptions:
|
|
127
|
+
- policyName: disallow-privileged-containers
|
|
128
|
+
ruleNames:
|
|
129
|
+
- deny-privileged
|
|
130
|
+
match:
|
|
131
|
+
any:
|
|
132
|
+
- resources:
|
|
133
|
+
kinds:
|
|
134
|
+
- Pod
|
|
135
|
+
names:
|
|
136
|
+
- legacy-app-*
|
|
137
|
+
|
|
138
|
+
review_schedule:
|
|
139
|
+
- Review all active exceptions quarterly
|
|
140
|
+
- Expire temporary exceptions automatically
|
|
141
|
+
- Re-justify permanent exceptions annually
|
|
142
|
+
- Track exception count trends as a security metric
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
## Policy Testing
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Test OPA policies with mock input
|
|
150
|
+
mkdir -p policies/tests
|
|
151
|
+
|
|
152
|
+
# Create test input
|
|
153
|
+
cat > policies/tests/public_bucket_test.json <<'EOF'
|
|
154
|
+
{
|
|
155
|
+
"resource_changes": [{
|
|
156
|
+
"address": "aws_s3_bucket.test",
|
|
157
|
+
"type": "aws_s3_bucket",
|
|
158
|
+
"change": {
|
|
159
|
+
"after": {"acl": "public-read"}
|
|
160
|
+
}
|
|
161
|
+
}]
|
|
162
|
+
}
|
|
163
|
+
EOF
|
|
164
|
+
|
|
165
|
+
# Run test
|
|
166
|
+
opa eval --data policies/ --input policies/tests/public_bucket_test.json \
|
|
167
|
+
"data.terraform.aws.s3.deny" --format pretty
|
|
168
|
+
# Should output the deny message
|
|
169
|
+
|
|
170
|
+
# OPA unit tests
|
|
171
|
+
cat > policies/tests/s3_test.rego <<'EOF'
|
|
172
|
+
package terraform.aws.s3_test
|
|
173
|
+
|
|
174
|
+
import rego.v1
|
|
175
|
+
import data.terraform.aws.s3
|
|
176
|
+
|
|
177
|
+
test_deny_public_bucket if {
|
|
178
|
+
result := s3.deny with input as {"resource_changes": [{"address": "test", "type": "aws_s3_bucket", "change": {"after": {"acl": "public-read"}}}]}
|
|
179
|
+
count(result) > 0
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
test_allow_private_bucket if {
|
|
183
|
+
result := s3.deny with input as {"resource_changes": [{"address": "test", "type": "aws_s3_bucket", "change": {"after": {"acl": "private"}}}]}
|
|
184
|
+
count(result) == 0
|
|
185
|
+
}
|
|
186
|
+
EOF
|
|
187
|
+
|
|
188
|
+
opa test policies/ -v
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
## Best Practices
|
|
193
|
+
|
|
194
|
+
- Version control all policies alongside the infrastructure code they govern
|
|
195
|
+
- Start in audit/warn mode and transition to enforce after verifying no false positives
|
|
196
|
+
- Write unit tests for every policy to catch regressions and verify intended behavior
|
|
197
|
+
- Implement a formal exception process: never disable policies to bypass legitimate checks
|
|
198
|
+
- Use policy results as PR status checks to block non-compliant merges
|
|
199
|
+
- Layer policies: Checkov for static analysis, OPA for Terraform plan evaluation, Kyverno for runtime
|
|
200
|
+
- Tag policies with compliance framework references (e.g., SOC 2 CC6.1, PCI Req 2.2)
|
|
201
|
+
- Monitor policy violation trends over time to identify systemic issues
|
|
202
|
+
- Provide clear, actionable error messages that explain how to fix violations
|
|
203
|
+
- Roll out new policies gradually: inform teams, give a remediation window, then enforce
|
|
204
|
+
|