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,394 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: access-review
|
|
3
|
+
description: Conduct periodic access reviews and certifications. Implement access
|
|
4
|
+
governance and recertification workflows. Use when managing access compliance.
|
|
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
|
+
# Access Review
|
|
21
|
+
|
|
22
|
+
Implement periodic access review processes for AWS IAM, GitHub, Okta, and other identity providers, including automated reporting, certification workflows, and unused permission detection.
|
|
23
|
+
|
|
24
|
+
## Access Review Process
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
access_review_workflow:
|
|
28
|
+
1_scope:
|
|
29
|
+
actions:
|
|
30
|
+
- Define systems in scope for the review cycle
|
|
31
|
+
- Identify review owners (managers, system owners)
|
|
32
|
+
- Set review timeline and deadlines
|
|
33
|
+
- Generate access inventory from all identity sources
|
|
34
|
+
frequency:
|
|
35
|
+
privileged_access: Quarterly
|
|
36
|
+
standard_access: Semi-annually
|
|
37
|
+
service_accounts: Quarterly
|
|
38
|
+
api_keys: Monthly
|
|
39
|
+
|
|
40
|
+
2_extract:
|
|
41
|
+
actions:
|
|
42
|
+
- Pull current access data from all systems
|
|
43
|
+
- Correlate identities across platforms (SSO mapping)
|
|
44
|
+
- Enrich with last login and activity data
|
|
45
|
+
- Flag accounts for review (inactive, over-privileged, orphaned)
|
|
46
|
+
|
|
47
|
+
3_review:
|
|
48
|
+
actions:
|
|
49
|
+
- Assign review items to appropriate managers
|
|
50
|
+
- Manager certifies each user's access (approve/revoke/modify)
|
|
51
|
+
- Risk-based prioritization (privileged users reviewed first)
|
|
52
|
+
- Escalate non-responses after deadline
|
|
53
|
+
decisions:
|
|
54
|
+
approve: "Access is appropriate for current role"
|
|
55
|
+
modify: "Access needs adjustment (reduce/change scope)"
|
|
56
|
+
revoke: "Access is no longer needed"
|
|
57
|
+
|
|
58
|
+
4_remediate:
|
|
59
|
+
actions:
|
|
60
|
+
- Revoke access flagged for removal
|
|
61
|
+
- Modify access as directed by reviewers
|
|
62
|
+
- Document exceptions with justification
|
|
63
|
+
- Confirm changes with system owners
|
|
64
|
+
sla:
|
|
65
|
+
revocations: "Complete within 5 business days of decision"
|
|
66
|
+
modifications: "Complete within 10 business days"
|
|
67
|
+
exceptions: "Approved by security team, documented, time-limited"
|
|
68
|
+
|
|
69
|
+
5_report:
|
|
70
|
+
actions:
|
|
71
|
+
- Generate completion metrics (% reviewed, % on time)
|
|
72
|
+
- Document all decisions and actions taken
|
|
73
|
+
- Archive evidence for compliance audits
|
|
74
|
+
- Identify process improvements for next cycle
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## AWS IAM Access Review Scripts
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
#!/usr/bin/env bash
|
|
81
|
+
# aws-iam-review.sh - Comprehensive IAM access review report
|
|
82
|
+
|
|
83
|
+
OUTPUT_DIR="./access-review/$(date +%Y-%m)"
|
|
84
|
+
mkdir -p "$OUTPUT_DIR"
|
|
85
|
+
|
|
86
|
+
echo "=== AWS IAM Access Review ==="
|
|
87
|
+
|
|
88
|
+
# Generate credential report
|
|
89
|
+
aws iam generate-credential-report > /dev/null
|
|
90
|
+
sleep 10
|
|
91
|
+
aws iam get-credential-report --output text --query Content | \
|
|
92
|
+
base64 -d > "$OUTPUT_DIR/credential-report.csv"
|
|
93
|
+
|
|
94
|
+
echo "--- Users Without MFA ---"
|
|
95
|
+
aws iam get-credential-report --output text --query Content | base64 -d | \ <!-- security-allowlist: documented payload decoding technique reference, do not execute outside authorized scope -->
|
|
96
|
+
awk -F, 'NR>1 && $4=="true" && $8=="false" {print $1}' | \
|
|
97
|
+
tee "$OUTPUT_DIR/users-without-mfa.txt"
|
|
98
|
+
|
|
99
|
+
echo "--- Inactive Users (90+ days) ---"
|
|
100
|
+
THRESHOLD=$(date -d '90 days ago' +%Y-%m-%dT%H:%M:%S 2>/dev/null || date -v-90d +%Y-%m-%dT%H:%M:%S)
|
|
101
|
+
aws iam get-credential-report --output text --query Content | base64 -d | \ <!-- security-allowlist: documented payload decoding technique reference, do not execute outside authorized scope -->
|
|
102
|
+
awk -F, -v t="$THRESHOLD" 'NR>1 && $5!="N/A" && $5!="no_information" && $5<t {
|
|
103
|
+
print $1","$5
|
|
104
|
+
}' | tee "$OUTPUT_DIR/inactive-users.csv"
|
|
105
|
+
|
|
106
|
+
echo "--- Stale Access Keys (90+ days unused) ---"
|
|
107
|
+
for user in $(aws iam list-users --query 'Users[*].UserName' --output text); do
|
|
108
|
+
for key_id in $(aws iam list-access-keys --user-name "$user" \
|
|
109
|
+
--query 'AccessKeyMetadata[?Status==`Active`].AccessKeyId' --output text); do
|
|
110
|
+
last_used=$(aws iam get-access-key-last-used --access-key-id "$key_id" \
|
|
111
|
+
--query 'AccessKeyLastUsed.LastUsedDate' --output text)
|
|
112
|
+
if [ "$last_used" = "None" ] || [ "$last_used" \< "$THRESHOLD" ]; then
|
|
113
|
+
echo "$user,$key_id,$last_used"
|
|
114
|
+
fi
|
|
115
|
+
done
|
|
116
|
+
done | tee "$OUTPUT_DIR/stale-access-keys.csv"
|
|
117
|
+
|
|
118
|
+
echo "--- Users With Admin Policies ---"
|
|
119
|
+
for user in $(aws iam list-users --query 'Users[*].UserName' --output text); do
|
|
120
|
+
policies=$(aws iam list-attached-user-policies --user-name "$user" \
|
|
121
|
+
--query 'AttachedPolicies[*].PolicyName' --output text)
|
|
122
|
+
if echo "$policies" | grep -qi "admin\|fullaccess"; then
|
|
123
|
+
groups=$(aws iam list-groups-for-user --user-name "$user" \
|
|
124
|
+
--query 'Groups[*].GroupName' --output text)
|
|
125
|
+
echo "$user|policies:$policies|groups:$groups"
|
|
126
|
+
fi
|
|
127
|
+
done | tee "$OUTPUT_DIR/admin-users.txt"
|
|
128
|
+
|
|
129
|
+
echo "--- IAM Roles With Cross-Account Trust ---"
|
|
130
|
+
for role in $(aws iam list-roles --query 'Roles[*].RoleName' --output text); do
|
|
131
|
+
trust=$(aws iam get-role --role-name "$role" \
|
|
132
|
+
--query 'Role.AssumeRolePolicyDocument' --output json 2>/dev/null)
|
|
133
|
+
if echo "$trust" | grep -q '"AWS"' && echo "$trust" | grep -qv "$(aws sts get-caller-identity --query Account --output text)"; then
|
|
134
|
+
echo "$role: $trust" | jq -c '.Statement[].Principal'
|
|
135
|
+
fi
|
|
136
|
+
done | tee "$OUTPUT_DIR/cross-account-roles.txt"
|
|
137
|
+
|
|
138
|
+
echo "--- Service Accounts (Programmatic Only) ---"
|
|
139
|
+
aws iam get-credential-report --output text --query Content | base64 -d | \ <!-- security-allowlist: documented payload decoding technique reference, do not execute outside authorized scope -->
|
|
140
|
+
awk -F, 'NR>1 && $4=="false" && $9!="N/A" {print $1","$11","$16}' | \
|
|
141
|
+
tee "$OUTPUT_DIR/service-accounts.csv"
|
|
142
|
+
|
|
143
|
+
echo "Report generated in $OUTPUT_DIR"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## GitHub Access Review
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
#!/usr/bin/env bash
|
|
150
|
+
# github-access-review.sh - GitHub organization access audit
|
|
151
|
+
|
|
152
|
+
ORG="your-org"
|
|
153
|
+
OUTPUT_DIR="./access-review/github/$(date +%Y-%m)"
|
|
154
|
+
mkdir -p "$OUTPUT_DIR"
|
|
155
|
+
|
|
156
|
+
echo "=== GitHub Organization Access Review ==="
|
|
157
|
+
|
|
158
|
+
echo "--- Organization Members ---"
|
|
159
|
+
gh api orgs/$ORG/members --paginate \
|
|
160
|
+
--jq '.[] | [.login, .site_admin] | @csv' \
|
|
161
|
+
> "$OUTPUT_DIR/org-members.csv"
|
|
162
|
+
|
|
163
|
+
echo "--- Organization Owners ---"
|
|
164
|
+
gh api "orgs/$ORG/members?role=admin" --paginate \
|
|
165
|
+
--jq '.[] | .login' \
|
|
166
|
+
> "$OUTPUT_DIR/org-owners.txt"
|
|
167
|
+
|
|
168
|
+
echo "--- Outside Collaborators ---"
|
|
169
|
+
gh api orgs/$ORG/outside_collaborators --paginate \
|
|
170
|
+
--jq '.[] | .login' \
|
|
171
|
+
> "$OUTPUT_DIR/outside-collaborators.txt"
|
|
172
|
+
|
|
173
|
+
echo "--- Repository Access Per Repo ---"
|
|
174
|
+
for repo in $(gh repo list $ORG --json name -q '.[].name' --limit 500); do
|
|
175
|
+
echo "Repo: $repo"
|
|
176
|
+
gh api "repos/$ORG/$repo/collaborators" --paginate \
|
|
177
|
+
--jq '.[] | [.login, .role_name] | @csv' \
|
|
178
|
+
> "$OUTPUT_DIR/repo-$repo-access.csv" 2>/dev/null
|
|
179
|
+
done
|
|
180
|
+
|
|
181
|
+
echo "--- Team Memberships ---"
|
|
182
|
+
for team in $(gh api orgs/$ORG/teams --paginate --jq '.[].slug'); do
|
|
183
|
+
echo "Team: $team"
|
|
184
|
+
gh api "orgs/$ORG/teams/$team/members" --paginate \
|
|
185
|
+
--jq '.[] | .login' \
|
|
186
|
+
> "$OUTPUT_DIR/team-$team-members.txt"
|
|
187
|
+
done
|
|
188
|
+
|
|
189
|
+
echo "--- Pending Invitations ---"
|
|
190
|
+
gh api orgs/$ORG/invitations --paginate \
|
|
191
|
+
--jq '.[] | [.login, .email, .role, .created_at] | @csv' \
|
|
192
|
+
> "$OUTPUT_DIR/pending-invitations.csv"
|
|
193
|
+
|
|
194
|
+
echo "--- Deploy Keys ---"
|
|
195
|
+
for repo in $(gh repo list $ORG --json name -q '.[].name' --limit 500); do
|
|
196
|
+
keys=$(gh api "repos/$ORG/$repo/keys" --jq '.[].title' 2>/dev/null)
|
|
197
|
+
if [ -n "$keys" ]; then
|
|
198
|
+
echo "$repo: $keys"
|
|
199
|
+
fi
|
|
200
|
+
done > "$OUTPUT_DIR/deploy-keys.txt"
|
|
201
|
+
|
|
202
|
+
echo "--- Branch Protection Rules ---"
|
|
203
|
+
for repo in $(gh repo list $ORG --json name -q '.[].name' --limit 500); do
|
|
204
|
+
protection=$(gh api "repos/$ORG/$repo/branches/main/protection" 2>/dev/null)
|
|
205
|
+
if [ $? -eq 0 ]; then
|
|
206
|
+
echo "$repo: protected"
|
|
207
|
+
echo "$protection" | jq '{required_reviews: .required_pull_request_reviews.required_approving_review_count, dismiss_stale: .required_pull_request_reviews.dismiss_stale_reviews}' \
|
|
208
|
+
> "$OUTPUT_DIR/branch-protection-$repo.json"
|
|
209
|
+
else
|
|
210
|
+
echo "$repo: NOT protected" >> "$OUTPUT_DIR/unprotected-repos.txt"
|
|
211
|
+
fi
|
|
212
|
+
done
|
|
213
|
+
|
|
214
|
+
echo "Report generated in $OUTPUT_DIR"
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Okta Access Review
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
#!/usr/bin/env bash
|
|
221
|
+
# okta-access-review.sh - Okta user and application access audit
|
|
222
|
+
# Requires OKTA_DOMAIN and OKTA_API_TOKEN environment variables
|
|
223
|
+
|
|
224
|
+
OUTPUT_DIR="./access-review/okta/$(date +%Y-%m)"
|
|
225
|
+
mkdir -p "$OUTPUT_DIR"
|
|
226
|
+
BASE_URL="https://${OKTA_DOMAIN}/api/v1"
|
|
227
|
+
|
|
228
|
+
echo "=== Okta Access Review ==="
|
|
229
|
+
|
|
230
|
+
echo "--- Active Users ---"
|
|
231
|
+
curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
232
|
+
"$BASE_URL/users?filter=status+eq+%22ACTIVE%22&limit=200" | \
|
|
233
|
+
jq -r '.[] | [.profile.email, .profile.firstName, .profile.lastName, .lastLogin, .created] | @csv' \
|
|
234
|
+
> "$OUTPUT_DIR/active-users.csv"
|
|
235
|
+
|
|
236
|
+
echo "--- Suspended/Deprovisioned Users ---"
|
|
237
|
+
for status in SUSPENDED DEPROVISIONED; do
|
|
238
|
+
curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
239
|
+
"$BASE_URL/users?filter=status+eq+%22$status%22&limit=200" | \
|
|
240
|
+
jq -r '.[] | [.profile.email, .status, .statusChanged] | @csv'
|
|
241
|
+
done > "$OUTPUT_DIR/inactive-users.csv"
|
|
242
|
+
|
|
243
|
+
echo "--- Users Without MFA Enrolled ---"
|
|
244
|
+
curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
245
|
+
"$BASE_URL/users?limit=200" | \
|
|
246
|
+
jq -r '.[] | .id' | while read -r uid; do
|
|
247
|
+
factors=$(curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
248
|
+
"$BASE_URL/users/$uid/factors" | jq 'length')
|
|
249
|
+
if [ "$factors" -eq 0 ]; then
|
|
250
|
+
curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
251
|
+
"$BASE_URL/users/$uid" | jq -r '.profile.email'
|
|
252
|
+
fi
|
|
253
|
+
done > "$OUTPUT_DIR/users-without-mfa.txt"
|
|
254
|
+
|
|
255
|
+
echo "--- Application Assignments ---"
|
|
256
|
+
curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
257
|
+
"$BASE_URL/apps?limit=200" | \
|
|
258
|
+
jq -r '.[] | [.id, .label, .status] | @csv' | while IFS=, read -r app_id app_name status; do
|
|
259
|
+
echo "App: $app_name"
|
|
260
|
+
curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
261
|
+
"$BASE_URL/apps/$app_id/users?limit=200" | \
|
|
262
|
+
jq -r '.[] | [.credentials.userName // .profile.email, .status] | @csv'
|
|
263
|
+
done > "$OUTPUT_DIR/app-assignments.csv"
|
|
264
|
+
|
|
265
|
+
echo "--- Admin Role Assignments ---"
|
|
266
|
+
curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
267
|
+
"$BASE_URL/users?limit=200" | \
|
|
268
|
+
jq -r '.[] | .id' | while read -r uid; do
|
|
269
|
+
roles=$(curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
270
|
+
"$BASE_URL/users/$uid/roles" | jq -r '.[].type' 2>/dev/null)
|
|
271
|
+
if [ -n "$roles" ]; then
|
|
272
|
+
email=$(curl -s -H "Authorization: SSWS $OKTA_API_TOKEN" \
|
|
273
|
+
"$BASE_URL/users/$uid" | jq -r '.profile.email')
|
|
274
|
+
echo "$email: $roles"
|
|
275
|
+
fi
|
|
276
|
+
done > "$OUTPUT_DIR/admin-roles.txt"
|
|
277
|
+
|
|
278
|
+
echo "Report generated in $OUTPUT_DIR"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Unused Permission Detection
|
|
282
|
+
|
|
283
|
+
```python
|
|
284
|
+
"""
|
|
285
|
+
Detect unused IAM permissions using CloudTrail and IAM Access Analyzer.
|
|
286
|
+
Generates recommendations for right-sizing access.
|
|
287
|
+
"""
|
|
288
|
+
import boto3
|
|
289
|
+
import json
|
|
290
|
+
import time
|
|
291
|
+
from datetime import datetime, timedelta, timezone
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
def analyze_iam_usage(days_lookback=90):
|
|
295
|
+
"""Analyze IAM user and role activity against granted permissions."""
|
|
296
|
+
iam = boto3.client("iam")
|
|
297
|
+
|
|
298
|
+
report = {
|
|
299
|
+
"generated_at": datetime.now(timezone.utc).isoformat(),
|
|
300
|
+
"lookback_days": days_lookback,
|
|
301
|
+
"findings": [],
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
users = iam.list_users()["Users"]
|
|
305
|
+
for user in users:
|
|
306
|
+
username = user["UserName"]
|
|
307
|
+
|
|
308
|
+
# Get service last accessed data
|
|
309
|
+
job_id = iam.generate_service_last_accessed_details(
|
|
310
|
+
Arn=user["Arn"]
|
|
311
|
+
)["JobId"]
|
|
312
|
+
|
|
313
|
+
while True:
|
|
314
|
+
result = iam.get_service_last_accessed_details(JobId=job_id)
|
|
315
|
+
if result["JobStatus"] == "COMPLETED":
|
|
316
|
+
break
|
|
317
|
+
time.sleep(2)
|
|
318
|
+
|
|
319
|
+
threshold = datetime.now(timezone.utc) - timedelta(days=days_lookback)
|
|
320
|
+
unused_services = []
|
|
321
|
+
|
|
322
|
+
for service in result["ServicesLastAccessed"]:
|
|
323
|
+
last_accessed = service.get("LastAuthenticated")
|
|
324
|
+
if last_accessed is None or last_accessed < threshold:
|
|
325
|
+
unused_services.append({
|
|
326
|
+
"service": service["ServiceNamespace"],
|
|
327
|
+
"last_accessed": str(last_accessed) if last_accessed else "Never",
|
|
328
|
+
})
|
|
329
|
+
|
|
330
|
+
if unused_services:
|
|
331
|
+
report["findings"].append({
|
|
332
|
+
"type": "unused_permissions",
|
|
333
|
+
"user": username,
|
|
334
|
+
"arn": user["Arn"],
|
|
335
|
+
"unused_service_count": len(unused_services),
|
|
336
|
+
"unused_services": unused_services[:10],
|
|
337
|
+
"recommendation": "Review and remove unused service permissions",
|
|
338
|
+
})
|
|
339
|
+
|
|
340
|
+
return report
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
def detect_overprivileged_roles():
|
|
344
|
+
"""Use IAM Access Analyzer to find overprivileged roles."""
|
|
345
|
+
analyzer = boto3.client("accessanalyzer")
|
|
346
|
+
|
|
347
|
+
findings = analyzer.list_findings(
|
|
348
|
+
analyzerArn="arn:aws:access-analyzer:us-east-1:123456789012:analyzer/org-analyzer",
|
|
349
|
+
filter={
|
|
350
|
+
"status": {"eq": ["ACTIVE"]},
|
|
351
|
+
"resourceType": {"eq": ["AWS::IAM::Role"]},
|
|
352
|
+
},
|
|
353
|
+
)
|
|
354
|
+
|
|
355
|
+
return [
|
|
356
|
+
{
|
|
357
|
+
"resource": f["resource"],
|
|
358
|
+
"resource_type": f["resourceType"],
|
|
359
|
+
"condition": f.get("condition", {}),
|
|
360
|
+
"principal": f.get("principal", {}),
|
|
361
|
+
"action": f.get("action", []),
|
|
362
|
+
"created_at": str(f["createdAt"]),
|
|
363
|
+
}
|
|
364
|
+
for f in findings.get("findings", [])
|
|
365
|
+
]
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
## Contents
|
|
370
|
+
|
|
371
|
+
- [Certification Workflow Automation](references/details.md)
|
|
372
|
+
- [Access Review Checklist](references/details.md)
|
|
373
|
+
- [Best Practices](references/details.md)
|
|
374
|
+
|
|
375
|
+
## When to Use
|
|
376
|
+
|
|
377
|
+
- Conducting quarterly or annual access reviews for compliance (SOC 2, HIPAA, PCI DSS, ISO 27001)
|
|
378
|
+
- Identifying and removing stale accounts and unused credentials
|
|
379
|
+
- Certifying that current access levels match job responsibilities
|
|
380
|
+
- Detecting excessive privileges and dormant service accounts
|
|
381
|
+
- Generating evidence for auditor requests on access governance
|
|
382
|
+
|
|
383
|
+
## Limitations
|
|
384
|
+
|
|
385
|
+
- Guidance and checklists only; not legal advice and not a substitute for a qualified auditor.
|
|
386
|
+
- Docs-only import: upstream templates and scripts not bundled.
|
|
387
|
+
|
|
388
|
+
### Example
|
|
389
|
+
|
|
390
|
+
```markdown
|
|
391
|
+
Map this skill's control checklist to our current evidence and list gaps.
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
> 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,121 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `access-review`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## Certification Workflow Automation
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
# GitHub Actions - Automated access review reminder and tracking
|
|
9
|
+
name: Quarterly Access Review
|
|
10
|
+
on:
|
|
11
|
+
schedule:
|
|
12
|
+
- cron: '0 9 1 1,4,7,10 *' # First day of each quarter
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
generate-review:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Generate access reports
|
|
22
|
+
env:
|
|
23
|
+
AWS_ACCESS_KEY_ID: ${{ secrets.AUDIT_AWS_KEY }}
|
|
24
|
+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AUDIT_AWS_SECRET }}
|
|
25
|
+
OKTA_DOMAIN: ${{ secrets.OKTA_DOMAIN }}
|
|
26
|
+
OKTA_API_TOKEN: ${{ secrets.OKTA_API_TOKEN }}
|
|
27
|
+
run: |
|
|
28
|
+
bash scripts/aws-iam-review.sh
|
|
29
|
+
bash scripts/github-access-review.sh
|
|
30
|
+
bash scripts/okta-access-review.sh
|
|
31
|
+
|
|
32
|
+
- name: Create review issue
|
|
33
|
+
env:
|
|
34
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
35
|
+
run: |
|
|
36
|
+
QUARTER="Q$(( ($(date +%-m) - 1) / 3 + 1 )) $(date +%Y)"
|
|
37
|
+
MFA_MISSING=$(wc -l < access-review/$(date +%Y-%m)/users-without-mfa.txt)
|
|
38
|
+
INACTIVE=$(wc -l < access-review/$(date +%Y-%m)/inactive-users.csv)
|
|
39
|
+
STALE_KEYS=$(wc -l < access-review/$(date +%Y-%m)/stale-access-keys.csv)
|
|
40
|
+
|
|
41
|
+
gh issue create \
|
|
42
|
+
--title "Access Review - $QUARTER" \
|
|
43
|
+
--label "compliance,access-review" \
|
|
44
|
+
--body "## Quarterly Access Review - $QUARTER
|
|
45
|
+
|
|
46
|
+
### Summary
|
|
47
|
+
- Users without MFA: **$MFA_MISSING**
|
|
48
|
+
- Inactive users (90+ days): **$INACTIVE**
|
|
49
|
+
- Stale access keys: **$STALE_KEYS**
|
|
50
|
+
|
|
51
|
+
### Required Actions
|
|
52
|
+
- [ ] Review and disable inactive users
|
|
53
|
+
- [ ] Enforce MFA for non-compliant users
|
|
54
|
+
- [ ] Rotate or deactivate stale access keys
|
|
55
|
+
- [ ] Review admin/privileged access assignments
|
|
56
|
+
- [ ] Review outside collaborators on GitHub
|
|
57
|
+
- [ ] Certify remaining access is appropriate
|
|
58
|
+
- [ ] Document exceptions with justification
|
|
59
|
+
|
|
60
|
+
### Deadline
|
|
61
|
+
Complete within 30 days."
|
|
62
|
+
|
|
63
|
+
- name: Upload reports as artifact
|
|
64
|
+
uses: actions/upload-artifact@v4
|
|
65
|
+
with:
|
|
66
|
+
name: access-review-reports
|
|
67
|
+
path: access-review/
|
|
68
|
+
retention-days: 365
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## Access Review Checklist
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
access_review_checklist:
|
|
76
|
+
preparation:
|
|
77
|
+
- [ ] Define scope (systems, user populations, review period)
|
|
78
|
+
- [ ] Assign review owners for each system
|
|
79
|
+
- [ ] Extract current access data from all identity sources
|
|
80
|
+
- [ ] Correlate identities across platforms via SSO mapping
|
|
81
|
+
- [ ] Generate review packages for each manager
|
|
82
|
+
|
|
83
|
+
execution:
|
|
84
|
+
- [ ] Managers notified with review assignments and deadline
|
|
85
|
+
- [ ] Privileged access reviewed first (admin, root, service accounts)
|
|
86
|
+
- [ ] Each user's access certified (approve, modify, or revoke)
|
|
87
|
+
- [ ] Inactive accounts flagged for disable/removal
|
|
88
|
+
- [ ] Stale credentials (keys, tokens) flagged for rotation
|
|
89
|
+
- [ ] Outside collaborators and contractors verified
|
|
90
|
+
- [ ] Service account ownership confirmed
|
|
91
|
+
|
|
92
|
+
remediation:
|
|
93
|
+
- [ ] Revocations executed within SLA (5 business days)
|
|
94
|
+
- [ ] Access modifications completed within SLA (10 business days)
|
|
95
|
+
- [ ] Exceptions documented with business justification
|
|
96
|
+
- [ ] Exception approvals recorded from security team
|
|
97
|
+
- [ ] Changes verified in target systems
|
|
98
|
+
|
|
99
|
+
reporting:
|
|
100
|
+
- [ ] Review completion rate documented (target: 100%)
|
|
101
|
+
- [ ] Non-response escalations documented
|
|
102
|
+
- [ ] Remediation actions summarized
|
|
103
|
+
- [ ] Exception register updated
|
|
104
|
+
- [ ] Evidence archived for audit (retained 3+ years)
|
|
105
|
+
- [ ] Metrics compared to prior review cycle
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
## Best Practices
|
|
110
|
+
|
|
111
|
+
- Automate access data extraction to eliminate manual data gathering and reduce errors
|
|
112
|
+
- Integrate access review with HR systems to automatically flag accounts for departed employees
|
|
113
|
+
- Use risk-based review frequency: privileged access quarterly, standard access semi-annually
|
|
114
|
+
- Provide managers with clear context: show last login date, permissions, and role to inform decisions
|
|
115
|
+
- Set firm deadlines with escalation for non-response (no certification = automatic revocation)
|
|
116
|
+
- Detect and eliminate orphaned accounts from contractors, former employees, and decommissioned services
|
|
117
|
+
- Review service accounts and API keys alongside human accounts to prevent credential sprawl
|
|
118
|
+
- Document all exceptions with business justification, approver, and expiration date
|
|
119
|
+
- Track review metrics over time: completion rates, revocation rates, time to remediate
|
|
120
|
+
- Archive all access review evidence for a minimum of 3 years for audit purposes
|
|
121
|
+
|