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,92 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `rag-observability-evals`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## Alerting Strategy
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
# rag-alerts.yaml
|
|
9
|
+
groups:
|
|
10
|
+
- name: rag-quality-alerts
|
|
11
|
+
rules:
|
|
12
|
+
- alert: GroundednessDropped
|
|
13
|
+
expr: rag_groundedness_score < 0.75
|
|
14
|
+
for: 10m
|
|
15
|
+
labels:
|
|
16
|
+
severity: sev2
|
|
17
|
+
annotations:
|
|
18
|
+
summary: "Groundedness score dropped below 0.75 for {{ $labels.route }}"
|
|
19
|
+
|
|
20
|
+
- alert: HallucinationSpike
|
|
21
|
+
expr: |
|
|
22
|
+
rate(rag_hallucination_detected_total[15m])
|
|
23
|
+
/ rate(rag_requests_total[15m]) > 0.10
|
|
24
|
+
for: 5m
|
|
25
|
+
labels:
|
|
26
|
+
severity: sev1
|
|
27
|
+
|
|
28
|
+
- alert: IndexStale
|
|
29
|
+
expr: rag_index_staleness_seconds > 86400
|
|
30
|
+
for: 5m
|
|
31
|
+
labels:
|
|
32
|
+
severity: sev3
|
|
33
|
+
annotations:
|
|
34
|
+
summary: "Index {{ $labels.index_name }} not updated in 24h"
|
|
35
|
+
|
|
36
|
+
- alert: HighFallbackRate
|
|
37
|
+
expr: |
|
|
38
|
+
rate(rag_fallback_triggered_total[10m])
|
|
39
|
+
/ rate(rag_requests_total[10m]) > 0.20
|
|
40
|
+
for: 10m
|
|
41
|
+
labels:
|
|
42
|
+
severity: sev2
|
|
43
|
+
|
|
44
|
+
- alert: RetrievalLatencyHigh
|
|
45
|
+
expr: |
|
|
46
|
+
histogram_quantile(0.95,
|
|
47
|
+
rate(rag_retrieval_duration_seconds_bucket[5m])
|
|
48
|
+
) > 2.0
|
|
49
|
+
for: 5m
|
|
50
|
+
labels:
|
|
51
|
+
severity: sev2
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
## Practical Guardrails
|
|
56
|
+
|
|
57
|
+
- Force citations for high-risk domains.
|
|
58
|
+
- Return abstain/fallback when confidence is below threshold.
|
|
59
|
+
- Re-rank retrieved chunks before final generation.
|
|
60
|
+
- Use query rewriting only with strict regression tests.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Incident Triage Checklist
|
|
64
|
+
|
|
65
|
+
| Symptom | Check First | Check Second |
|
|
66
|
+
|---------|-------------|--------------|
|
|
67
|
+
| Groundedness dropped | Embedding model change? | Chunking/indexing logic change? |
|
|
68
|
+
| Retrieval returning irrelevant docs | Index freshness and document count | Embedding model version mismatch |
|
|
69
|
+
| Latency spike in retrieval | Vector DB connection pool and load | Index size growth beyond threshold |
|
|
70
|
+
| Cost per answer increasing | Token usage per stage breakdown | Cache hit rate decline |
|
|
71
|
+
| Hallucination spike | Model version or temperature change | Context window overflow (truncated docs) |
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## Troubleshooting
|
|
75
|
+
|
|
76
|
+
| Issue | Diagnosis | Resolution |
|
|
77
|
+
|-------|-----------|------------|
|
|
78
|
+
| RAGAS eval returns 0 for all metrics | Check dataset format matches expected schema | Ensure contexts are lists, not strings |
|
|
79
|
+
| Groundedness score unreliable | LLM judge inconsistency | Increase judge sample size, set temperature=0 |
|
|
80
|
+
| Index staleness alert firing | Ingestion pipeline failure | Check data source connectivity and ingestion logs |
|
|
81
|
+
| Retrieval recall dropping | Embedding drift after model update | Re-index corpus with current embedding model |
|
|
82
|
+
| High latency in generation | Context too large for model | Reduce top-k or add summarization step |
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
## Related Skills
|
|
86
|
+
|
|
87
|
+
- rag-infrastructure (`rag-infrastructure`) - Deploy robust RAG backends
|
|
88
|
+
- agent-observability (`agent-observability`) - Instrument requests, traces, and costs
|
|
89
|
+
- agent-evals (`agent-evals`) - Build repeatable eval suites
|
|
90
|
+
- ai-sre-incident-response (`ai-sre-incident-response`) - Incident response for quality regressions
|
|
91
|
+
- opentelemetry (`opentelemetry`) - Distributed tracing for RAG pipelines
|
|
92
|
+
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: recon-scope-triage
|
|
3
|
+
description: Triage ASM/recon output for ownership before testing
|
|
4
|
+
category: security
|
|
5
|
+
risk: offensive
|
|
6
|
+
source: https://github.com/elementalsouls/Claude-BugHunter
|
|
7
|
+
source_repo: elementalsouls/Claude-BugHunter
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: '2026-09-20'
|
|
10
|
+
license: MIT
|
|
11
|
+
license_source: https://github.com/elementalsouls/Claude-BugHunter/blob/main/LICENSE
|
|
12
|
+
compatibility: Requires explicit written authorization for a target scope plus the
|
|
13
|
+
relevant testing tools for this technique. Docs-only; helper scripts and commands
|
|
14
|
+
not bundled.
|
|
15
|
+
sources: authorized-engagement
|
|
16
|
+
report_count: 1
|
|
17
|
+
---
|
|
18
|
+
> **⚠️ AUTHORIZED USE ONLY**
|
|
19
|
+
> This skill is for educational purposes or authorized security assessments only.
|
|
20
|
+
> You must have explicit, written permission from the system owner before using this tool.
|
|
21
|
+
> Misuse of this tool is illegal and strictly prohibited.
|
|
22
|
+
|
|
23
|
+
> **Mandatory confirmation gate**
|
|
24
|
+
> Before running any command that probes, exploits, changes, persists on, extracts data from, or attempts credential access against a target:
|
|
25
|
+
> 1. Ask the user to state the exact target URL, IP, account, or resource.
|
|
26
|
+
> 2. Ask the user to confirm written authorization and the permitted scope.
|
|
27
|
+
> 3. Show the exact command(s) and explain their expected effect.
|
|
28
|
+
> 4. Wait for explicit confirmation in the current conversation.
|
|
29
|
+
>
|
|
30
|
+
> Without that confirmation, remain read-only and provide defensive guidance only. Prefer a sandbox, disposable VM, or controlled lab.
|
|
31
|
+
|
|
32
|
+
## When to use this skill
|
|
33
|
+
|
|
34
|
+
Trigger when:
|
|
35
|
+
- The target brand is a common/dictionary word or shared term (e.g. `apex`, `summit`, `vertex`, `nova`, `core`, `orbit`, `pulse`, `unity`…)
|
|
36
|
+
- You receive an ASM report, recon export, breach combo, repo list, bucket list, or mobile-app list to act on
|
|
37
|
+
- A "Critical" count looks implausibly high (hundreds) for the org's size
|
|
38
|
+
- Any asset's ownership is asserted by the tool but not *proven*
|
|
39
|
+
|
|
40
|
+
The two failure modes this skill prevents:
|
|
41
|
+
1. **Wasting the engagement** testing/triaging assets that aren't the target's.
|
|
42
|
+
2. **Attacking an innocent third party** that merely shares the name — out of scope, and real harm.
|
|
43
|
+
|
|
44
|
+
**Rule: ownership is guilty-until-proven. An asset is the target's only when a concrete ownership signal ties it to the target — never because a scanner's keyword matched.**
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## The collision sources (where keyword-matching lies)
|
|
49
|
+
|
|
50
|
+
| Recon source | How it collides | Verify ownership by |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| **GitHub repos** | Search matched the brand word in repo name / topic / a string | Repo owner is the org's GH org; commits from org emails; code references the org's real domains/infra. A repo named `<word>-backend` by a random user = noise. |
|
|
53
|
+
| **Cloud buckets** (S3/GCS) | Bucket names are a **global namespace**; `<word>-static`, `<word>-data`, `<word>-public` exist for *someone* | Bucket content references the target; bucket name correlates with a *confirmed* target subdomain (`x.target.com` ↔ `x-public`) AND content matches; ACL/owner metadata. Generic content (other-language, other-industry) = not theirs. |
|
|
54
|
+
| **Mobile apps** | Store search matched the brand word in app name / package | Publisher account = the org; package reverse-DNS = an owned domain (`com.<owneddomain>.app`); dev cert; app calls owned API hosts. Mature ASM tools emit an "apps_accepted=0" / ownership-confidence field — read it. |
|
|
55
|
+
| **Breach corpora / combos** | Email local-or-domain contains the brand word | **Exact** owned-domain match only (`@target.com`), not `@<word>group.com` / `@something<word>.com`. A different domain that contains the word is a different org. |
|
|
56
|
+
| **Typosquats** | Generated permutations of the name | These are *defensive*/brand-protection findings, not offensive scope — note and move on. |
|
|
57
|
+
| **Stack/forum/paste hits** | Brand word in body | Body references the target's real domain/subdomain/employee/secret. Ownership-confidence < threshold = drop. |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Web "Critical" triage — the soft-404 control
|
|
62
|
+
|
|
63
|
+
Automated `.env` / `.git` / `actuator` / admin-panel "Criticals" are overwhelmingly **soft-404s**: SPA/framework catch-alls returning HTTP 200 (or 403) for *every* path. Verify EACH before believing it:
|
|
64
|
+
```bash
|
|
65
|
+
# the "finding"
|
|
66
|
+
curl -s -o /tmp/a -w "%{http_code} %{size_download}\n" https://host.target.com/.env
|
|
67
|
+
# a junk control on the same host
|
|
68
|
+
curl -s -o /tmp/b -w "%{http_code} %{size_download}\n" https://host.target.com/zzz-nonsense-$RANDOM
|
|
69
|
+
# identical byte length / body → FALSE POSITIVE (catch-all), discard
|
|
70
|
+
cmp -s /tmp/a /tmp/b && echo "SOFT-404 false positive" || echo "differs — investigate"
|
|
71
|
+
```
|
|
72
|
+
Real exposures have a content-type + signature that differs from the catch-all (`.git/config` starts `[core]`; `.env` has `KEY=value`; phpinfo has the XHTML-transitional doctype + `PHP Version`). A physical `.php`/`phpinfo.php` that returns a *bigger/different* body than the junk control is the real-vs-soft-404 tell.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## The triage workflow
|
|
77
|
+
|
|
78
|
+
1. **Confirm the canonical owned-domain set first** (the SOW/program domain + its verified subdomains + the verified Entra/Okta/Google tenant brand name). This is your ownership anchor.
|
|
79
|
+
2. **For each asset class, apply the verify-by column above.** No signal → quarantine, don't test.
|
|
80
|
+
3. **Re-baseline the severity counts** against only-owned assets. Report the *delta* — "N Criticals → M after ownership + soft-404 triage" is itself a finding about the ASM program.
|
|
81
|
+
4. **Quarantine collisions explicitly** (a `loot/quarantined_<source>.txt`) so it's auditable that you saw them and chose not to target them.
|
|
82
|
+
5. **Surface the meta-finding:** if the supplied ASM/recon feed is mostly false-positive, that misallocates the owner's remediation budget and buries real risk — write it up (Medium/Strategic).
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Anti-patterns
|
|
87
|
+
|
|
88
|
+
- **Trusting the tool's "owned" label.** Tools keyword-match; they don't prove ownership. Verify.
|
|
89
|
+
- **Targeting a same-named third party** because it was "in the report." Out of scope + real harm. A combo line `user@<word>company.com` is a different company's employee.
|
|
90
|
+
- **Reporting soft-404s as exposures.** Always run the junk-path control.
|
|
91
|
+
- **Counting typosquats / missing-headers / brand-collision repos as offensive findings.** They're defensive/hygiene/noise — they pad the report and erode credibility.
|
|
92
|
+
- **Skipping triage "to save time."** Untriaged, you spend the whole engagement on other people's assets and find nothing real.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Why this matters (calibration)
|
|
97
|
+
|
|
98
|
+
For a target whose brand is a common word, expect the bulk of automated "owned" assets to be collisions:
|
|
99
|
+
- **Repos** that are unrelated open-source projects (ad-block lists, scrapers, student projects, a different company's SDK) merely containing the word.
|
|
100
|
+
- **Mobile apps** published by entirely different companies that share the name — banks, credit unions, dating apps, dispensaries, home-care services are all real-world collision categories. (Good ASM tooling will tell you it accepted *zero* as owned.)
|
|
101
|
+
- **Cloud buckets** in the global namespace holding some unrelated org's content (other-language documents, demo/sample data, another industry's files).
|
|
102
|
+
- **Breach combos** full of emails from sibling-named-but-different companies (`<word>group.com`, `<region><word>.com`).
|
|
103
|
+
|
|
104
|
+
On a real engagement against a dictionary-word brand, after clearing this noise the only genuinely-owned high-severity finding was discoverable solely by manual tradecraft (a JS-bundle → API discovery, see `hunt-spa-api`) — it was nowhere in the hundreds of scanner "Criticals." Triage-first is what made the engagement productive instead of a goose chase.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Related Skills & Chains
|
|
109
|
+
|
|
110
|
+
- **`triage-validation`** — asset-ownership triage (this skill) precedes finding-validity triage (the 7-Question Gate). Ownership first, then validity.
|
|
111
|
+
- **`redteam-mindset`** — "aggressive default" means probe every *owned* live surface; this skill defines which surfaces are owned so persistence isn't wasted on collisions.
|
|
112
|
+
- **`hunt-spa-api`** — once an API host passes ownership triage, this is how you test it.
|
|
113
|
+
- **`offensive-osint` / `osint-methodology`** — feed ownership anchors (verified domains, tenant brand, dev accounts) from OSINT into this triage.
|
|
114
|
+
|
|
115
|
+
## Limitations
|
|
116
|
+
|
|
117
|
+
- Authorized scope only: the confirmation gate above is mandatory before any probing, exploitation, or credential-access command.
|
|
118
|
+
- Docs-only import: upstream helper scripts, commands, engine, and research assets are not bundled; reinstall tooling from the source repo when needed.
|
|
119
|
+
- Validate every finding (see `triage-validation`) before reporting; report via `report-writing`. Prefer a sandbox, disposable VM, or controlled lab.
|
|
120
|
+
|
|
121
|
+
### Example
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Read-only first step; confirm scope before anything active.
|
|
125
|
+
cat scope.txt # target list from the authorized engagement brief
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
> Adapted from [elementalsouls/Claude-BugHunter](https://github.com/elementalsouls/Claude-BugHunter) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: executable helpers, commands, engine, and research assets not bundled.
|
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: redis
|
|
3
|
+
description: Configure Redis for caching and data storage. Set up clustering, persistence,
|
|
4
|
+
and Sentinel. Use when implementing Redis caching or queues.
|
|
5
|
+
category: devops
|
|
6
|
+
risk: critical
|
|
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 OS/platform tooling and privileged access where
|
|
14
|
+
noted. Docs-only; helper scripts and templates not bundled.
|
|
15
|
+
metadata:
|
|
16
|
+
author: devops-skills
|
|
17
|
+
version: '1.0'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Redis
|
|
21
|
+
|
|
22
|
+
Configure, operate, and optimize Redis for caching, queues, rate limiting, and real-time data storage.
|
|
23
|
+
|
|
24
|
+
## When to Use
|
|
25
|
+
|
|
26
|
+
- You need a low-latency in-memory cache to reduce database load.
|
|
27
|
+
- Your application requires rate limiting, session storage, or leaderboards.
|
|
28
|
+
- You need pub/sub messaging between services.
|
|
29
|
+
- You want a distributed lock or job queue backed by an in-memory store.
|
|
30
|
+
|
|
31
|
+
## Prerequisites
|
|
32
|
+
|
|
33
|
+
- Linux server or Docker.
|
|
34
|
+
- Root or sudo access for package installation.
|
|
35
|
+
- Redis 7.x recommended for production.
|
|
36
|
+
|
|
37
|
+
## Installation and Setup
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Debian / Ubuntu
|
|
41
|
+
sudo apt update
|
|
42
|
+
sudo apt install -y redis-server
|
|
43
|
+
|
|
44
|
+
# RHEL / Amazon Linux
|
|
45
|
+
sudo dnf install -y redis
|
|
46
|
+
|
|
47
|
+
# Start and enable
|
|
48
|
+
sudo systemctl enable --now redis-server
|
|
49
|
+
|
|
50
|
+
# Verify
|
|
51
|
+
redis-cli ping
|
|
52
|
+
# Expected output: PONG
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Core Configuration
|
|
56
|
+
|
|
57
|
+
Edit `/etc/redis/redis.conf`:
|
|
58
|
+
|
|
59
|
+
```ini
|
|
60
|
+
# Network
|
|
61
|
+
bind 0.0.0.0
|
|
62
|
+
port 6379
|
|
63
|
+
protected-mode yes
|
|
64
|
+
requirepass strong_redis_password
|
|
65
|
+
|
|
66
|
+
# Memory
|
|
67
|
+
maxmemory 2gb
|
|
68
|
+
maxmemory-policy allkeys-lru
|
|
69
|
+
|
|
70
|
+
# Connections
|
|
71
|
+
maxclients 10000
|
|
72
|
+
timeout 300
|
|
73
|
+
tcp-keepalive 60
|
|
74
|
+
|
|
75
|
+
# Logging
|
|
76
|
+
loglevel notice
|
|
77
|
+
logfile /var/log/redis/redis-server.log
|
|
78
|
+
|
|
79
|
+
# Security — disable dangerous commands in production
|
|
80
|
+
rename-command FLUSHALL ""
|
|
81
|
+
rename-command FLUSHDB ""
|
|
82
|
+
rename-command CONFIG ""
|
|
83
|
+
rename-command DEBUG ""
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
sudo systemctl restart redis-server
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## redis-cli Commands Reference
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Connect with authentication
|
|
94
|
+
redis-cli -a strong_redis_password
|
|
95
|
+
|
|
96
|
+
# Connect to a remote host
|
|
97
|
+
redis-cli -h 10.0.0.5 -p 6379 -a strong_redis_password
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### String Operations
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
SET user:1:name "Alice"
|
|
104
|
+
GET user:1:name
|
|
105
|
+
|
|
106
|
+
# Set with TTL (seconds)
|
|
107
|
+
SETEX session:abc123 3600 '{"userId":1}'
|
|
108
|
+
|
|
109
|
+
# Set only if key does not exist (distributed lock pattern)
|
|
110
|
+
SET lock:order:42 "worker-1" NX EX 30
|
|
111
|
+
|
|
112
|
+
# Increment counters
|
|
113
|
+
INCR page:views:/home
|
|
114
|
+
INCRBY api:quota:user:1 -1
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Hash Operations
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
HSET user:1 name "Alice" email "alice@example.com" plan "pro"
|
|
121
|
+
HGET user:1 email
|
|
122
|
+
HGETALL user:1
|
|
123
|
+
HINCRBY user:1 login_count 1
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### List Operations (Queues)
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
LPUSH queue:emails '{"to":"alice@example.com","subject":"Welcome"}'
|
|
130
|
+
RPOP queue:emails
|
|
131
|
+
LLEN queue:emails
|
|
132
|
+
|
|
133
|
+
# Blocking pop (worker pattern)
|
|
134
|
+
BRPOP queue:emails 30
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Set and Sorted Set Operations
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
# Sets — unique tags
|
|
141
|
+
SADD article:1:tags "redis" "database" "caching"
|
|
142
|
+
SMEMBERS article:1:tags
|
|
143
|
+
SISMEMBER article:1:tags "redis"
|
|
144
|
+
|
|
145
|
+
# Sorted sets — leaderboards
|
|
146
|
+
ZADD leaderboard 1500 "player:1" 2300 "player:2" 1800 "player:3"
|
|
147
|
+
ZREVRANGE leaderboard 0 9 WITHSCORES
|
|
148
|
+
ZINCRBY leaderboard 100 "player:1"
|
|
149
|
+
ZRANK leaderboard "player:2"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Key Management
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
KEYS user:* # avoid in production — use SCAN instead
|
|
156
|
+
SCAN 0 MATCH user:* COUNT 100
|
|
157
|
+
TTL session:abc123
|
|
158
|
+
PERSIST session:abc123
|
|
159
|
+
DEL user:old
|
|
160
|
+
EXPIRE user:1 86400
|
|
161
|
+
TYPE user:1
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Persistence
|
|
165
|
+
|
|
166
|
+
### RDB Snapshots
|
|
167
|
+
|
|
168
|
+
```ini
|
|
169
|
+
# redis.conf — save snapshots at intervals
|
|
170
|
+
save 900 1 # snapshot if >= 1 key changed in 900 seconds
|
|
171
|
+
save 300 10 # snapshot if >= 10 keys changed in 300 seconds
|
|
172
|
+
save 60 10000 # snapshot if >= 10000 keys changed in 60 seconds
|
|
173
|
+
|
|
174
|
+
dbfilename dump.rdb
|
|
175
|
+
dir /var/lib/redis
|
|
176
|
+
rdbcompression yes
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### AOF (Append-Only File)
|
|
180
|
+
|
|
181
|
+
```ini
|
|
182
|
+
appendonly yes
|
|
183
|
+
appendfilename "appendonly.aof"
|
|
184
|
+
appendfsync everysec # good balance of safety and performance
|
|
185
|
+
# Options: always (safest, slowest), everysec (recommended), no (OS decides)
|
|
186
|
+
|
|
187
|
+
# AOF rewrite thresholds
|
|
188
|
+
auto-aof-rewrite-percentage 100
|
|
189
|
+
auto-aof-rewrite-min-size 64mb
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Recommended Production Strategy
|
|
193
|
+
|
|
194
|
+
Use both RDB and AOF together. RDB provides fast restarts and compact backups. AOF provides durability down to 1-second granularity.
|
|
195
|
+
|
|
196
|
+
```ini
|
|
197
|
+
save 900 1
|
|
198
|
+
save 300 10
|
|
199
|
+
appendonly yes
|
|
200
|
+
appendfsync everysec
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Redis Sentinel (High Availability)
|
|
204
|
+
|
|
205
|
+
Sentinel monitors Redis instances and performs automatic failover.
|
|
206
|
+
|
|
207
|
+
### Sentinel Configuration
|
|
208
|
+
|
|
209
|
+
```ini
|
|
210
|
+
# /etc/redis/sentinel.conf
|
|
211
|
+
port 26379
|
|
212
|
+
sentinel monitor mymaster 10.0.0.1 6379 2
|
|
213
|
+
sentinel auth-pass mymaster strong_redis_password
|
|
214
|
+
sentinel down-after-milliseconds mymaster 5000
|
|
215
|
+
sentinel failover-timeout mymaster 60000
|
|
216
|
+
sentinel parallel-syncs mymaster 1
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Run at least three Sentinel instances for quorum.
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# Start Sentinel
|
|
223
|
+
redis-sentinel /etc/redis/sentinel.conf
|
|
224
|
+
|
|
225
|
+
# Query Sentinel
|
|
226
|
+
redis-cli -p 26379 SENTINEL masters
|
|
227
|
+
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
|
|
228
|
+
redis-cli -p 26379 SENTINEL replicas mymaster
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Redis Cluster Mode
|
|
232
|
+
|
|
233
|
+
Cluster mode distributes data across multiple shards automatically.
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Create a 6-node cluster (3 masters + 3 replicas)
|
|
237
|
+
redis-cli --cluster create \
|
|
238
|
+
10.0.0.1:6379 10.0.0.2:6379 10.0.0.3:6379 \
|
|
239
|
+
10.0.0.4:6379 10.0.0.5:6379 10.0.0.6:6379 \
|
|
240
|
+
--cluster-replicas 1 -a strong_redis_password
|
|
241
|
+
|
|
242
|
+
# Check cluster status
|
|
243
|
+
redis-cli -c -a strong_redis_password CLUSTER INFO
|
|
244
|
+
redis-cli -c -a strong_redis_password CLUSTER NODES
|
|
245
|
+
|
|
246
|
+
# Add a new node
|
|
247
|
+
redis-cli --cluster add-node 10.0.0.7:6379 10.0.0.1:6379
|
|
248
|
+
|
|
249
|
+
# Rebalance slots
|
|
250
|
+
redis-cli --cluster rebalance 10.0.0.1:6379
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
```ini
|
|
254
|
+
# redis.conf for cluster nodes
|
|
255
|
+
cluster-enabled yes
|
|
256
|
+
cluster-config-file nodes.conf
|
|
257
|
+
cluster-node-timeout 5000
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Common Patterns
|
|
261
|
+
|
|
262
|
+
### Caching with TTL
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Cache a database query result for 5 minutes
|
|
266
|
+
SET cache:user:42:profile '{"name":"Alice","plan":"pro"}' EX 300
|
|
267
|
+
|
|
268
|
+
# Cache-aside pattern (pseudocode):
|
|
269
|
+
# 1. GET cache:key -> if hit, return
|
|
270
|
+
# 2. Query database
|
|
271
|
+
# 3. SET cache:key result EX 300
|
|
272
|
+
# 4. Return result
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Rate Limiting (Sliding Window)
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# Allow 100 requests per minute per user
|
|
279
|
+
# Using a sorted set with timestamps as scores
|
|
280
|
+
ZADD ratelimit:user:42 1700000000.123 "req-uuid-1"
|
|
281
|
+
ZREMRANGEBYSCORE ratelimit:user:42 0 1699999940.000
|
|
282
|
+
ZCARD ratelimit:user:42
|
|
283
|
+
EXPIRE ratelimit:user:42 60
|
|
284
|
+
# If ZCARD >= 100, reject the request
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Pub/Sub Messaging
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Terminal 1 — subscriber
|
|
291
|
+
redis-cli -a strong_redis_password
|
|
292
|
+
SUBSCRIBE notifications:order-updates
|
|
293
|
+
|
|
294
|
+
# Terminal 2 — publisher
|
|
295
|
+
redis-cli -a strong_redis_password
|
|
296
|
+
PUBLISH notifications:order-updates '{"orderId":42,"status":"shipped"}'
|
|
297
|
+
|
|
298
|
+
# Pattern subscription
|
|
299
|
+
PSUBSCRIBE notifications:*
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Distributed Locking (Redlock Pattern)
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# Acquire lock
|
|
306
|
+
SET lock:resource:42 "worker-abc" NX EX 30
|
|
307
|
+
# Returns OK if acquired, nil if already held
|
|
308
|
+
|
|
309
|
+
# Release lock (use Lua script to ensure atomicity)
|
|
310
|
+
redis-cli -a strong_redis_password EVAL "
|
|
311
|
+
if redis.call('get', KEYS[1]) == ARGV[1] then
|
|
312
|
+
return redis.call('del', KEYS[1])
|
|
313
|
+
else
|
|
314
|
+
return 0
|
|
315
|
+
end
|
|
316
|
+
" 1 lock:resource:42 "worker-abc"
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Docker Compose Setup
|
|
320
|
+
|
|
321
|
+
```yaml
|
|
322
|
+
# docker-compose.yml
|
|
323
|
+
version: "3.9"
|
|
324
|
+
|
|
325
|
+
services:
|
|
326
|
+
redis:
|
|
327
|
+
image: redis:7-alpine
|
|
328
|
+
restart: unless-stopped
|
|
329
|
+
ports:
|
|
330
|
+
- "6379:6379"
|
|
331
|
+
volumes:
|
|
332
|
+
- redis_data:/data
|
|
333
|
+
- ./redis.conf:/usr/local/etc/redis/redis.conf:ro
|
|
334
|
+
command: redis-server /usr/local/etc/redis/redis.conf
|
|
335
|
+
healthcheck:
|
|
336
|
+
test: ["CMD", "redis-cli", "-a", "strong_redis_password", "ping"]
|
|
337
|
+
interval: 10s
|
|
338
|
+
timeout: 5s
|
|
339
|
+
retries: 5
|
|
340
|
+
|
|
341
|
+
redis-sentinel:
|
|
342
|
+
image: redis:7-alpine
|
|
343
|
+
restart: unless-stopped
|
|
344
|
+
ports:
|
|
345
|
+
- "26379:26379"
|
|
346
|
+
volumes:
|
|
347
|
+
- ./sentinel.conf:/usr/local/etc/redis/sentinel.conf
|
|
348
|
+
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
|
|
349
|
+
depends_on:
|
|
350
|
+
redis:
|
|
351
|
+
condition: service_healthy
|
|
352
|
+
|
|
353
|
+
redis-commander:
|
|
354
|
+
image: rediscommander/redis-commander:latest
|
|
355
|
+
restart: unless-stopped
|
|
356
|
+
ports:
|
|
357
|
+
- "8081:8081"
|
|
358
|
+
environment:
|
|
359
|
+
REDIS_HOSTS: "local:redis:6379:0:strong_redis_password"
|
|
360
|
+
depends_on:
|
|
361
|
+
redis:
|
|
362
|
+
condition: service_healthy
|
|
363
|
+
|
|
364
|
+
volumes:
|
|
365
|
+
redis_data:
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
docker compose up -d
|
|
370
|
+
redis-cli -h 127.0.0.1 -a strong_redis_password ping
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Monitoring
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
# Real-time stats
|
|
377
|
+
redis-cli -a strong_redis_password INFO stats
|
|
378
|
+
redis-cli -a strong_redis_password INFO memory
|
|
379
|
+
redis-cli -a strong_redis_password INFO replication
|
|
380
|
+
|
|
381
|
+
# Key metrics to watch
|
|
382
|
+
redis-cli -a strong_redis_password INFO stats | grep -E "keyspace_hits|keyspace_misses"
|
|
383
|
+
# Hit ratio = hits / (hits + misses) — aim for > 95%
|
|
384
|
+
|
|
385
|
+
# Memory usage breakdown
|
|
386
|
+
redis-cli -a strong_redis_password MEMORY STATS
|
|
387
|
+
|
|
388
|
+
# Slow log (queries > 10ms by default)
|
|
389
|
+
redis-cli -a strong_redis_password SLOWLOG GET 10
|
|
390
|
+
redis-cli -a strong_redis_password SLOWLOG LEN
|
|
391
|
+
|
|
392
|
+
# Monitor all commands in real time (debugging only — impacts performance)
|
|
393
|
+
redis-cli -a strong_redis_password MONITOR
|
|
394
|
+
|
|
395
|
+
# Connected clients
|
|
396
|
+
redis-cli -a strong_redis_password CLIENT LIST
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## Troubleshooting
|
|
400
|
+
|
|
401
|
+
| Symptom | Likely Cause | Fix |
|
|
402
|
+
|---|---|---|
|
|
403
|
+
| `OOM command not allowed` | `maxmemory` limit reached | Increase `maxmemory` or set a stricter eviction policy |
|
|
404
|
+
| High latency spikes | RDB save or AOF rewrite forking | Use `save ""` to disable RDB if AOF is enabled; tune `auto-aof-rewrite-min-size` |
|
|
405
|
+
| `LOADING Redis is loading the dataset in memory` | Large dataset being restored on startup | Wait for load to complete; consider smaller dataset or faster disk |
|
|
406
|
+
| Cache hit ratio < 90% | TTLs too short or working set exceeds memory | Increase `maxmemory`; review TTL strategy |
|
|
407
|
+
| Sentinel not failing over | Fewer than quorum Sentinels reachable | Ensure >= 3 Sentinels are running and network-connected |
|
|
408
|
+
| `CROSSSLOT` error in cluster | Multi-key command spans slots | Use hash tags `{user:42}:profile` to colocate related keys |
|
|
409
|
+
|
|
410
|
+
## Related Skills
|
|
411
|
+
|
|
412
|
+
- postgresql (`postgresql-devsec`) - Primary database that Redis caches
|
|
413
|
+
- mysql (`mysql`) - Primary database that Redis caches
|
|
414
|
+
- mongodb (`mongodb`) - Document database that Redis can front
|
|
415
|
+
- database-backups (`database-backups`) - Include RDB files in backup strategy
|
|
416
|
+
|
|
417
|
+
## Limitations
|
|
418
|
+
|
|
419
|
+
- Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
|
|
420
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
421
|
+
|