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,427 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: model-supply-chain-security
|
|
3
|
+
description: Secure the AI model supply chain with artifact signing, provenance attestation,
|
|
4
|
+
SBOM workflows, dependency controls, and trusted model promotion.
|
|
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: Requires the relevant security tooling (scanners, vault CLIs) and an
|
|
14
|
+
authorized scope for any active assessment. Docs-only; helper scripts and templates
|
|
15
|
+
not bundled.
|
|
16
|
+
metadata:
|
|
17
|
+
author: devops-skills
|
|
18
|
+
version: '1.0'
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Model Supply Chain Security
|
|
22
|
+
|
|
23
|
+
Protect models and inference components from tampering, dependency compromise, and untrusted artifact promotion.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
Use this skill when:
|
|
28
|
+
- Pulling pretrained models from public registries (Hugging Face, TensorFlow Hub)
|
|
29
|
+
- Building model-serving containers for production deployment
|
|
30
|
+
- Establishing trust policies for ML artifact promotion across environments
|
|
31
|
+
- Responding to supply chain incidents affecting ML dependencies
|
|
32
|
+
- Meeting SLSA or SOC2 compliance requirements for AI systems
|
|
33
|
+
|
|
34
|
+
## Prerequisites
|
|
35
|
+
|
|
36
|
+
- `cosign` v2+ installed for signing and verification
|
|
37
|
+
- `syft` for SBOM generation of model-serving images
|
|
38
|
+
- `crane` or `skopeo` for OCI image inspection
|
|
39
|
+
- Container registry with signature support (GHCR, ECR, ACR, Artifact Registry)
|
|
40
|
+
- CI/CD pipeline with provenance generation capability
|
|
41
|
+
|
|
42
|
+
## Threats
|
|
43
|
+
|
|
44
|
+
- Poisoned pretrained weights or adapters
|
|
45
|
+
- Malicious model conversion tools or loaders
|
|
46
|
+
- Compromised build pipelines and registries
|
|
47
|
+
- Insecure runtime images with critical CVEs
|
|
48
|
+
- Typosquatting on model registries
|
|
49
|
+
- Deserialization attacks via pickle or custom loaders
|
|
50
|
+
|
|
51
|
+
## Control Objectives
|
|
52
|
+
|
|
53
|
+
- Verify artifact integrity end-to-end
|
|
54
|
+
- Prove provenance for every promoted model
|
|
55
|
+
- Detect vulnerable dependencies before deploy
|
|
56
|
+
- Restrict execution to trusted signed artifacts
|
|
57
|
+
|
|
58
|
+
## Model Signing with Cosign
|
|
59
|
+
|
|
60
|
+
### Sign a Model Artifact
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Generate a keypair (store private key securely)
|
|
64
|
+
cosign generate-key-pair
|
|
65
|
+
|
|
66
|
+
# Sign an OCI-packaged model image
|
|
67
|
+
cosign sign --key cosign.key ghcr.io/acme/ml-models/sentiment:v2.1.0
|
|
68
|
+
|
|
69
|
+
# Keyless signing with Sigstore (uses OIDC identity)
|
|
70
|
+
cosign sign ghcr.io/acme/ml-models/sentiment:v2.1.0
|
|
71
|
+
|
|
72
|
+
# Verify the signature
|
|
73
|
+
cosign verify --key cosign.pub ghcr.io/acme/ml-models/sentiment:v2.1.0
|
|
74
|
+
|
|
75
|
+
# Keyless verification (requires certificate identity)
|
|
76
|
+
cosign verify \
|
|
77
|
+
--certificate-identity=ci-bot@acme.iam.gserviceaccount.com \
|
|
78
|
+
--certificate-oidc-issuer=https://accounts.google.com \
|
|
79
|
+
ghcr.io/acme/ml-models/sentiment:v2.1.0
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Sign Model Weight Files Directly
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# For model files stored as blobs (not OCI images)
|
|
86
|
+
# Compute digest and sign
|
|
87
|
+
sha256sum model-weights.safetensors > model-weights.sha256
|
|
88
|
+
cosign sign-blob --key cosign.key model-weights.safetensors \
|
|
89
|
+
--output-signature model-weights.sig \
|
|
90
|
+
--output-certificate model-weights.crt
|
|
91
|
+
|
|
92
|
+
# Verify blob signature
|
|
93
|
+
cosign verify-blob --key cosign.pub \
|
|
94
|
+
--signature model-weights.sig \
|
|
95
|
+
model-weights.safetensors
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## SLSA for ML Pipelines
|
|
99
|
+
|
|
100
|
+
### SLSA Level Requirements for Model Builds
|
|
101
|
+
|
|
102
|
+
```yaml
|
|
103
|
+
# slsa-requirements.yaml
|
|
104
|
+
slsa_levels:
|
|
105
|
+
level_1:
|
|
106
|
+
- Build process is scripted (not manual)
|
|
107
|
+
- Provenance document generated automatically
|
|
108
|
+
level_2:
|
|
109
|
+
- Build runs on hosted CI service
|
|
110
|
+
- Provenance is authenticated (signed)
|
|
111
|
+
- Source is version controlled
|
|
112
|
+
level_3:
|
|
113
|
+
- Build environment is ephemeral and isolated
|
|
114
|
+
- Provenance is non-falsifiable (hardened builder)
|
|
115
|
+
- Source integrity verified (two-person review)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Generate SLSA Provenance for Model Training
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
# .github/workflows/model-build-slsa.yml
|
|
122
|
+
name: Model Build with SLSA Provenance
|
|
123
|
+
on:
|
|
124
|
+
push:
|
|
125
|
+
tags: ['model-v*']
|
|
126
|
+
|
|
127
|
+
jobs:
|
|
128
|
+
train-and-package:
|
|
129
|
+
runs-on: ubuntu-latest
|
|
130
|
+
permissions:
|
|
131
|
+
id-token: write
|
|
132
|
+
contents: read
|
|
133
|
+
packages: write
|
|
134
|
+
steps:
|
|
135
|
+
- uses: actions/checkout@v4
|
|
136
|
+
|
|
137
|
+
- name: Train model
|
|
138
|
+
run: python train.py --config configs/production.yaml
|
|
139
|
+
|
|
140
|
+
- name: Package model as OCI artifact
|
|
141
|
+
run: |
|
|
142
|
+
oras push ghcr.io/acme/ml-models/sentiment:${{ github.ref_name }} \
|
|
143
|
+
model-weights.safetensors:application/vnd.acme.model.safetensors \
|
|
144
|
+
model-config.json:application/json
|
|
145
|
+
|
|
146
|
+
- name: Generate SBOM for training environment
|
|
147
|
+
run: |
|
|
148
|
+
syft dir:. -o cyclonedx-json > training-sbom.json
|
|
149
|
+
|
|
150
|
+
- name: Sign and attest
|
|
151
|
+
run: |
|
|
152
|
+
cosign sign ghcr.io/acme/ml-models/sentiment:${{ github.ref_name }}
|
|
153
|
+
cosign attest --predicate training-sbom.json \
|
|
154
|
+
--type cyclonedx \
|
|
155
|
+
ghcr.io/acme/ml-models/sentiment:${{ github.ref_name }}
|
|
156
|
+
|
|
157
|
+
- name: Generate provenance
|
|
158
|
+
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.0.0
|
|
159
|
+
with:
|
|
160
|
+
image: ghcr.io/acme/ml-models/sentiment
|
|
161
|
+
digest: ${{ steps.push.outputs.digest }}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Model Cards for Provenance
|
|
165
|
+
|
|
166
|
+
```yaml
|
|
167
|
+
# model-card.yaml
|
|
168
|
+
model_details:
|
|
169
|
+
name: "sentiment-classifier-v2.1.0"
|
|
170
|
+
version: "2.1.0"
|
|
171
|
+
type: "text-classification"
|
|
172
|
+
framework: "pytorch"
|
|
173
|
+
license: "Apache-2.0"
|
|
174
|
+
|
|
175
|
+
provenance:
|
|
176
|
+
training_data:
|
|
177
|
+
source: "s3://acme-datasets/sentiment-v3/"
|
|
178
|
+
hash: "sha256:abc123..."
|
|
179
|
+
data_card_ref: "https://internal.acme.com/data-cards/sentiment-v3"
|
|
180
|
+
training_config:
|
|
181
|
+
source: "git://github.com/acme/ml-models@abc123"
|
|
182
|
+
hyperparameters:
|
|
183
|
+
learning_rate: 0.00005
|
|
184
|
+
epochs: 10
|
|
185
|
+
batch_size: 32
|
|
186
|
+
build_environment:
|
|
187
|
+
builder: "github-actions"
|
|
188
|
+
runner: "ubuntu-22.04"
|
|
189
|
+
python: "3.11.7"
|
|
190
|
+
torch: "2.1.2"
|
|
191
|
+
cuda: "12.1"
|
|
192
|
+
build_id: "gh-actions-12345"
|
|
193
|
+
commit_sha: "abc123def456"
|
|
194
|
+
build_timestamp: "2025-01-15T10:30:00Z"
|
|
195
|
+
signed_by: "ci-bot@acme.iam.gserviceaccount.com"
|
|
196
|
+
|
|
197
|
+
performance:
|
|
198
|
+
accuracy: 0.94
|
|
199
|
+
f1_score: 0.93
|
|
200
|
+
evaluation_dataset: "s3://acme-datasets/sentiment-eval-v3/"
|
|
201
|
+
evaluation_hash: "sha256:def456..."
|
|
202
|
+
|
|
203
|
+
security:
|
|
204
|
+
vulnerability_scan: "clean"
|
|
205
|
+
sbom_ref: "ghcr.io/acme/ml-models/sentiment:v2.1.0.sbom"
|
|
206
|
+
last_security_review: "2025-01-10"
|
|
207
|
+
known_limitations:
|
|
208
|
+
- "May produce biased outputs for underrepresented languages"
|
|
209
|
+
- "Not evaluated for adversarial robustness"
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Registry Scanning
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# Scan model-serving image for CVEs
|
|
216
|
+
trivy image ghcr.io/acme/ml-models/sentiment-serving:v2.1.0
|
|
217
|
+
|
|
218
|
+
# Generate SBOM for the serving container
|
|
219
|
+
syft ghcr.io/acme/ml-models/sentiment-serving:v2.1.0 -o spdx-json > serving-sbom.json
|
|
220
|
+
|
|
221
|
+
# Scan SBOM for vulnerabilities
|
|
222
|
+
grype sbom:serving-sbom.json --fail-on critical
|
|
223
|
+
|
|
224
|
+
# Check for known-malicious model files (pickle scanning)
|
|
225
|
+
pip install fickling
|
|
226
|
+
fickling --check model.pkl
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Automated Registry Scan Pipeline
|
|
230
|
+
|
|
231
|
+
```yaml
|
|
232
|
+
# .github/workflows/registry-scan.yml
|
|
233
|
+
name: Nightly Registry Scan
|
|
234
|
+
on:
|
|
235
|
+
schedule:
|
|
236
|
+
- cron: '0 2 * * *'
|
|
237
|
+
|
|
238
|
+
jobs:
|
|
239
|
+
scan:
|
|
240
|
+
runs-on: ubuntu-latest
|
|
241
|
+
strategy:
|
|
242
|
+
matrix:
|
|
243
|
+
image:
|
|
244
|
+
- ghcr.io/acme/ml-models/sentiment-serving:latest
|
|
245
|
+
- ghcr.io/acme/ml-models/embedding-serving:latest
|
|
246
|
+
- ghcr.io/acme/ml-models/rag-api:latest
|
|
247
|
+
steps:
|
|
248
|
+
- name: Scan image
|
|
249
|
+
run: |
|
|
250
|
+
trivy image --severity CRITICAL,HIGH \
|
|
251
|
+
--exit-code 1 \
|
|
252
|
+
--format json \
|
|
253
|
+
--output scan-$(echo ${{ matrix.image }} | tr '/:' '-').json \
|
|
254
|
+
${{ matrix.image }}
|
|
255
|
+
|
|
256
|
+
- name: Verify signatures are still valid
|
|
257
|
+
run: |
|
|
258
|
+
cosign verify \
|
|
259
|
+
--certificate-identity=ci-bot@acme.iam.gserviceaccount.com \
|
|
260
|
+
--certificate-oidc-issuer=https://accounts.google.com \
|
|
261
|
+
${{ matrix.image }}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Promotion Policy Enforcement
|
|
265
|
+
|
|
266
|
+
```python
|
|
267
|
+
#!/usr/bin/env python3
|
|
268
|
+
"""model_promotion_gate.py - Verify model meets all promotion criteria."""
|
|
269
|
+
|
|
270
|
+
import subprocess
|
|
271
|
+
import json
|
|
272
|
+
import sys
|
|
273
|
+
|
|
274
|
+
def check_signature(image: str) -> bool:
|
|
275
|
+
result = subprocess.run(
|
|
276
|
+
["cosign", "verify", "--certificate-identity=ci-bot@acme.iam.gserviceaccount.com",
|
|
277
|
+
"--certificate-oidc-issuer=https://accounts.google.com", image],
|
|
278
|
+
capture_output=True, text=True,
|
|
279
|
+
)
|
|
280
|
+
return result.returncode == 0
|
|
281
|
+
|
|
282
|
+
def check_vulnerabilities(image: str) -> bool:
|
|
283
|
+
result = subprocess.run(
|
|
284
|
+
["trivy", "image", "--severity", "CRITICAL", "--exit-code", "1",
|
|
285
|
+
"--quiet", image],
|
|
286
|
+
capture_output=True, text=True,
|
|
287
|
+
)
|
|
288
|
+
return result.returncode == 0
|
|
289
|
+
|
|
290
|
+
def check_sbom_exists(image: str) -> bool:
|
|
291
|
+
result = subprocess.run(
|
|
292
|
+
["cosign", "verify-attestation", "--type", "cyclonedx",
|
|
293
|
+
"--certificate-identity=ci-bot@acme.iam.gserviceaccount.com",
|
|
294
|
+
"--certificate-oidc-issuer=https://accounts.google.com", image],
|
|
295
|
+
capture_output=True, text=True,
|
|
296
|
+
)
|
|
297
|
+
return result.returncode == 0
|
|
298
|
+
|
|
299
|
+
def check_model_card(image: str) -> bool:
|
|
300
|
+
result = subprocess.run(
|
|
301
|
+
["cosign", "verify-attestation", "--type", "custom",
|
|
302
|
+
"--certificate-identity=ci-bot@acme.iam.gserviceaccount.com",
|
|
303
|
+
"--certificate-oidc-issuer=https://accounts.google.com", image],
|
|
304
|
+
capture_output=True, text=True,
|
|
305
|
+
)
|
|
306
|
+
return result.returncode == 0
|
|
307
|
+
|
|
308
|
+
def main():
|
|
309
|
+
image = sys.argv[1]
|
|
310
|
+
checks = {
|
|
311
|
+
"signature_valid": check_signature(image),
|
|
312
|
+
"no_critical_cves": check_vulnerabilities(image),
|
|
313
|
+
"sbom_attached": check_sbom_exists(image),
|
|
314
|
+
"model_card_present": check_model_card(image),
|
|
315
|
+
}
|
|
316
|
+
all_passed = all(checks.values())
|
|
317
|
+
for name, passed in checks.items():
|
|
318
|
+
status = "PASS" if passed else "FAIL"
|
|
319
|
+
print(f" [{status}] {name}")
|
|
320
|
+
if not all_passed:
|
|
321
|
+
print("Promotion BLOCKED: not all checks passed.")
|
|
322
|
+
sys.exit(1)
|
|
323
|
+
print("Promotion APPROVED: all checks passed.")
|
|
324
|
+
|
|
325
|
+
if __name__ == "__main__":
|
|
326
|
+
main()
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Runtime Hardening
|
|
330
|
+
|
|
331
|
+
- Run inference containers as non-root.
|
|
332
|
+
- Apply egress restrictions to prevent unauthorized downloads.
|
|
333
|
+
- Mount model volumes read-only when possible.
|
|
334
|
+
- Alert on unsigned artifact pull attempts.
|
|
335
|
+
- Use `safetensors` format instead of pickle to prevent deserialization attacks.
|
|
336
|
+
|
|
337
|
+
```yaml
|
|
338
|
+
# kubernetes deployment hardening
|
|
339
|
+
apiVersion: apps/v1
|
|
340
|
+
kind: Deployment
|
|
341
|
+
metadata:
|
|
342
|
+
name: model-serving
|
|
343
|
+
spec:
|
|
344
|
+
template:
|
|
345
|
+
spec:
|
|
346
|
+
securityContext:
|
|
347
|
+
runAsNonRoot: true
|
|
348
|
+
runAsUser: 1000
|
|
349
|
+
fsGroup: 1000
|
|
350
|
+
containers:
|
|
351
|
+
- name: inference
|
|
352
|
+
image: ghcr.io/acme/ml-models/sentiment-serving:v2.1.0
|
|
353
|
+
securityContext:
|
|
354
|
+
readOnlyRootFilesystem: true
|
|
355
|
+
allowPrivilegeEscalation: false
|
|
356
|
+
capabilities:
|
|
357
|
+
drop: ["ALL"]
|
|
358
|
+
volumeMounts:
|
|
359
|
+
- name: model-weights
|
|
360
|
+
mountPath: /models
|
|
361
|
+
readOnly: true
|
|
362
|
+
resources:
|
|
363
|
+
limits:
|
|
364
|
+
memory: "4Gi"
|
|
365
|
+
nvidia.com/gpu: "1"
|
|
366
|
+
volumes:
|
|
367
|
+
- name: model-weights
|
|
368
|
+
persistentVolumeClaim:
|
|
369
|
+
claimName: model-weights-pvc
|
|
370
|
+
readOnly: true
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Kyverno Policy for Admission Control
|
|
374
|
+
|
|
375
|
+
```yaml
|
|
376
|
+
apiVersion: kyverno.io/v1
|
|
377
|
+
kind: ClusterPolicy
|
|
378
|
+
metadata:
|
|
379
|
+
name: require-signed-model-images
|
|
380
|
+
spec:
|
|
381
|
+
validationFailureAction: Enforce
|
|
382
|
+
rules:
|
|
383
|
+
- name: verify-model-image-signature
|
|
384
|
+
match:
|
|
385
|
+
any:
|
|
386
|
+
- resources:
|
|
387
|
+
kinds: ["Pod"]
|
|
388
|
+
namespaces: ["ml-serving"]
|
|
389
|
+
verifyImages:
|
|
390
|
+
- imageReferences: ["ghcr.io/acme/ml-models/*"]
|
|
391
|
+
attestors:
|
|
392
|
+
- entries:
|
|
393
|
+
- keyless:
|
|
394
|
+
subject: "ci-bot@acme.iam.gserviceaccount.com"
|
|
395
|
+
issuer: "https://accounts.google.com"
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
## Troubleshooting
|
|
399
|
+
|
|
400
|
+
| Problem | Cause | Solution |
|
|
401
|
+
|---------|-------|----------|
|
|
402
|
+
| `cosign verify` fails with "no matching signatures" | Image was pushed without signing | Re-run the signing step; check CI pipeline logs |
|
|
403
|
+
| Provenance attestation missing | SLSA generator not configured | Add slsa-github-generator to the build workflow |
|
|
404
|
+
| Trivy reports CVEs in base image | Stale base image | Update `FROM` image in Dockerfile; rebuild and re-sign |
|
|
405
|
+
| Pickle deserialization warning | Model saved in unsafe format | Convert to safetensors: `model.save_pretrained(".", safe_serialization=True)` |
|
|
406
|
+
| Keyless verification fails | Wrong OIDC issuer or identity | Check `--certificate-identity` and `--certificate-oidc-issuer` flags |
|
|
407
|
+
| Model card not found for artifact | Attestation not attached to digest | Attach with `cosign attest --predicate model-card.yaml --type custom IMAGE` |
|
|
408
|
+
|
|
409
|
+
## Related Skills
|
|
410
|
+
|
|
411
|
+
- sbom-supply-chain (`sbom-supply-chain`) - Generate SBOM and provenance evidence
|
|
412
|
+
- container-hardening (`container-hardening`) - Harden runtime container posture
|
|
413
|
+
- model-registry-governance (`model-registry-governance`) - Controlled lifecycle and approvals
|
|
414
|
+
|
|
415
|
+
## Limitations
|
|
416
|
+
|
|
417
|
+
- Apply guidance only within authorized scope; test destructive steps in non-production first.
|
|
418
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
419
|
+
|
|
420
|
+
### Example
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
# Read-only first: inventory before any active step.
|
|
424
|
+
which <tool> && <tool> --help | head -n 20
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
> 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.
|