opencode-skills-collection 4.0.67 → 4.0.69

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.
Files changed (329) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +281 -1
  2. package/bundled-skills/access-review/SKILL.md +394 -0
  3. package/bundled-skills/access-review/references/details.md +121 -0
  4. package/bundled-skills/agent-evals/SKILL.md +420 -0
  5. package/bundled-skills/agent-observability/SKILL.md +346 -0
  6. package/bundled-skills/agent-observability/references/details.md +786 -0
  7. package/bundled-skills/ai-agent-security/SKILL.md +393 -0
  8. package/bundled-skills/ai-agent-security/references/details.md +912 -0
  9. package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
  10. package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
  11. package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
  12. package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
  13. package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
  14. package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
  15. package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
  16. package/bundled-skills/alerting-oncall/SKILL.md +458 -0
  17. package/bundled-skills/alerting-oncall/references/details.md +84 -0
  18. package/bundled-skills/anti-slop-design/SKILL.md +393 -0
  19. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
  20. package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
  21. package/bundled-skills/argocd-gitops/SKILL.md +469 -0
  22. package/bundled-skills/arm-templates/SKILL.md +438 -0
  23. package/bundled-skills/arm-templates/references/details.md +64 -0
  24. package/bundled-skills/artifact-yylo/SKILL.md +122 -0
  25. package/bundled-skills/asset-inventory/SKILL.md +412 -0
  26. package/bundled-skills/asset-inventory/references/details.md +127 -0
  27. package/bundled-skills/audit-logging/SKILL.md +476 -0
  28. package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
  29. package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
  30. package/bundled-skills/aws-ec2/SKILL.md +426 -0
  31. package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
  32. package/bundled-skills/aws-iam/SKILL.md +463 -0
  33. package/bundled-skills/aws-lambda/SKILL.md +428 -0
  34. package/bundled-skills/aws-rds/SKILL.md +380 -0
  35. package/bundled-skills/aws-s3/SKILL.md +434 -0
  36. package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
  37. package/bundled-skills/aws-vpc/SKILL.md +436 -0
  38. package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
  39. package/bundled-skills/azure-aks/SKILL.md +423 -0
  40. package/bundled-skills/azure-devops/SKILL.md +457 -0
  41. package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
  42. package/bundled-skills/azure-keyvault/SKILL.md +455 -0
  43. package/bundled-skills/azure-keyvault/references/details.md +83 -0
  44. package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
  45. package/bundled-skills/azure-networking/SKILL.md +448 -0
  46. package/bundled-skills/azure-networking/references/details.md +135 -0
  47. package/bundled-skills/azure-sql/SKILL.md +413 -0
  48. package/bundled-skills/azure-sql/references/details.md +113 -0
  49. package/bundled-skills/azure-vms/SKILL.md +402 -0
  50. package/bundled-skills/azure-vms/references/details.md +134 -0
  51. package/bundled-skills/backup-recovery/SKILL.md +388 -0
  52. package/bundled-skills/bb-methodology/SKILL.md +451 -0
  53. package/bundled-skills/bb-methodology/references/details.md +120 -0
  54. package/bundled-skills/block-storage/SKILL.md +371 -0
  55. package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
  56. package/bundled-skills/blue-green-deploy/references/details.md +90 -0
  57. package/bundled-skills/bug-bounty/SKILL.md +447 -0
  58. package/bundled-skills/bug-bounty/references/details.md +1316 -0
  59. package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
  60. package/bundled-skills/business-continuity/SKILL.md +463 -0
  61. package/bundled-skills/career-ops/SKILL.md +186 -0
  62. package/bundled-skills/cdn-setup/SKILL.md +374 -0
  63. package/bundled-skills/change-management/SKILL.md +438 -0
  64. package/bundled-skills/change-management/references/details.md +105 -0
  65. package/bundled-skills/circleci/SKILL.md +475 -0
  66. package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
  67. package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
  68. package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
  69. package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
  70. package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
  71. package/bundled-skills/cloudformation/SKILL.md +461 -0
  72. package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
  73. package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
  74. package/bundled-skills/container-hardening/SKILL.md +126 -0
  75. package/bundled-skills/container-registries/SKILL.md +435 -0
  76. package/bundled-skills/container-scanning/SKILL.md +416 -0
  77. package/bundled-skills/convex-backend/SKILL.md +338 -0
  78. package/bundled-skills/dast-scanning/SKILL.md +437 -0
  79. package/bundled-skills/database-backups/SKILL.md +425 -0
  80. package/bundled-skills/datadog/SKILL.md +487 -0
  81. package/bundled-skills/dependency-scanning/SKILL.md +457 -0
  82. package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
  83. package/bundled-skills/disaster-recovery/SKILL.md +374 -0
  84. package/bundled-skills/disaster-recovery/references/details.md +219 -0
  85. package/bundled-skills/dns-management/SKILL.md +375 -0
  86. package/bundled-skills/docker-compose/SKILL.md +482 -0
  87. package/bundled-skills/docker-management/SKILL.md +426 -0
  88. package/bundled-skills/ebpf-observability/SKILL.md +436 -0
  89. package/bundled-skills/ebpf-observability/references/details.md +542 -0
  90. package/bundled-skills/elk-stack/SKILL.md +487 -0
  91. package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
  92. package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
  93. package/bundled-skills/feature-flags/SKILL.md +426 -0
  94. package/bundled-skills/feature-flags/references/details.md +86 -0
  95. package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
  96. package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
  97. package/bundled-skills/firewall-config/SKILL.md +479 -0
  98. package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
  99. package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
  100. package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
  101. package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
  102. package/bundled-skills/gcp-compute/SKILL.md +319 -0
  103. package/bundled-skills/gcp-gke/SKILL.md +307 -0
  104. package/bundled-skills/gcp-networking/SKILL.md +293 -0
  105. package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
  106. package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
  107. package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
  108. package/bundled-skills/gdpr-compliance/references/details.md +145 -0
  109. package/bundled-skills/geo-audit/SKILL.md +368 -0
  110. package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
  111. package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
  112. package/bundled-skills/geo-citability/SKILL.md +350 -0
  113. package/bundled-skills/geo-compare/SKILL.md +340 -0
  114. package/bundled-skills/geo-content/SKILL.md +383 -0
  115. package/bundled-skills/geo-crawlers/SKILL.md +408 -0
  116. package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
  117. package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
  118. package/bundled-skills/geo-proposal/SKILL.md +378 -0
  119. package/bundled-skills/geo-prospect/SKILL.md +225 -0
  120. package/bundled-skills/geo-report/SKILL.md +436 -0
  121. package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
  122. package/bundled-skills/geo-schema/SKILL.md +408 -0
  123. package/bundled-skills/geo-technical/SKILL.md +78 -0
  124. package/bundled-skills/geo-technical/references/details.md +543 -0
  125. package/bundled-skills/git-workflow/SKILL.md +460 -0
  126. package/bundled-skills/github-actions/SKILL.md +368 -0
  127. package/bundled-skills/gitlab-ci/SKILL.md +340 -0
  128. package/bundled-skills/google-no-code/SKILL.md +136 -0
  129. package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
  130. package/bundled-skills/gpu-server-management/SKILL.md +236 -0
  131. package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
  132. package/bundled-skills/helm-charts/SKILL.md +469 -0
  133. package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
  134. package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
  135. package/bundled-skills/hunt-ato/SKILL.md +184 -0
  136. package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
  137. package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
  138. package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
  139. package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
  140. package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
  141. package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
  142. package/bundled-skills/hunt-cicd/SKILL.md +311 -0
  143. package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
  144. package/bundled-skills/hunt-cors/SKILL.md +335 -0
  145. package/bundled-skills/hunt-dom/SKILL.md +323 -0
  146. package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
  147. package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
  148. package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
  149. package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
  150. package/bundled-skills/hunt-grpc/SKILL.md +317 -0
  151. package/bundled-skills/hunt-host-header/SKILL.md +309 -0
  152. package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
  153. package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
  154. package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
  155. package/bundled-skills/hunt-idor/SKILL.md +434 -0
  156. package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
  157. package/bundled-skills/hunt-k8s/SKILL.md +337 -0
  158. package/bundled-skills/hunt-laravel/SKILL.md +255 -0
  159. package/bundled-skills/hunt-ldap/SKILL.md +351 -0
  160. package/bundled-skills/hunt-lfi/SKILL.md +311 -0
  161. package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
  162. package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
  163. package/bundled-skills/hunt-misc/SKILL.md +378 -0
  164. package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
  165. package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
  166. package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
  167. package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
  168. package/bundled-skills/hunt-oauth/SKILL.md +459 -0
  169. package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
  170. package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
  171. package/bundled-skills/hunt-race-condition/references/details.md +159 -0
  172. package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
  173. package/bundled-skills/hunt-rce/SKILL.md +444 -0
  174. package/bundled-skills/hunt-rce/references/details.md +110 -0
  175. package/bundled-skills/hunt-saml/SKILL.md +156 -0
  176. package/bundled-skills/hunt-session/SKILL.md +342 -0
  177. package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
  178. package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
  179. package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
  180. package/bundled-skills/hunt-springboot/SKILL.md +285 -0
  181. package/bundled-skills/hunt-sqli/SKILL.md +466 -0
  182. package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
  183. package/bundled-skills/hunt-ssrf/references/details.md +179 -0
  184. package/bundled-skills/hunt-ssti/SKILL.md +163 -0
  185. package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
  186. package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
  187. package/bundled-skills/hunt-xxe/SKILL.md +466 -0
  188. package/bundled-skills/i-have-adhd/SKILL.md +170 -0
  189. package/bundled-skills/idea-evaluator/SKILL.md +75 -0
  190. package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
  191. package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
  192. package/bundled-skills/identity-access-management/SKILL.md +382 -0
  193. package/bundled-skills/identity-access-management/references/details.md +524 -0
  194. package/bundled-skills/incident-management/SKILL.md +484 -0
  195. package/bundled-skills/incident-response/SKILL.md +448 -0
  196. package/bundled-skills/incident-response/references/details.md +113 -0
  197. package/bundled-skills/interview-me/SKILL.md +248 -0
  198. package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
  199. package/bundled-skills/jenkins/SKILL.md +462 -0
  200. package/bundled-skills/jev-use/SKILL.md +158 -0
  201. package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
  202. package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
  203. package/bundled-skills/kubernetes-ops/references/details.md +108 -0
  204. package/bundled-skills/kustomize/SKILL.md +478 -0
  205. package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
  206. package/bundled-skills/linux-administration/SKILL.md +367 -0
  207. package/bundled-skills/linux-hardening/SKILL.md +154 -0
  208. package/bundled-skills/llm-app-security/SKILL.md +389 -0
  209. package/bundled-skills/llm-app-security/references/details.md +674 -0
  210. package/bundled-skills/llm-caching/SKILL.md +334 -0
  211. package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
  212. package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
  213. package/bundled-skills/llm-gateway/SKILL.md +282 -0
  214. package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
  215. package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
  216. package/bundled-skills/load-balancing/SKILL.md +403 -0
  217. package/bundled-skills/loki-logging/SKILL.md +479 -0
  218. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
  219. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
  220. package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
  221. package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
  222. package/bundled-skills/mcp-server-security/SKILL.md +356 -0
  223. package/bundled-skills/mcp-server-security/references/details.md +745 -0
  224. package/bundled-skills/mdm-device-management/SKILL.md +404 -0
  225. package/bundled-skills/mdm-device-management/references/details.md +410 -0
  226. package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
  227. package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
  228. package/bundled-skills/model-registry-governance/SKILL.md +452 -0
  229. package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
  230. package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
  231. package/bundled-skills/mongodb/SKILL.md +436 -0
  232. package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
  233. package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
  234. package/bundled-skills/mysql/SKILL.md +390 -0
  235. package/bundled-skills/new-relic/SKILL.md +472 -0
  236. package/bundled-skills/nfs-storage/SKILL.md +356 -0
  237. package/bundled-skills/object-storage/SKILL.md +378 -0
  238. package/bundled-skills/offensive-osint/SKILL.md +443 -0
  239. package/bundled-skills/okta-attack/SKILL.md +436 -0
  240. package/bundled-skills/ollama-stack/SKILL.md +379 -0
  241. package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
  242. package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
  243. package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
  244. package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
  245. package/bundled-skills/openshift/SKILL.md +485 -0
  246. package/bundled-skills/opentelemetry/SKILL.md +438 -0
  247. package/bundled-skills/opentelemetry/references/details.md +78 -0
  248. package/bundled-skills/opentofu-migration/SKILL.md +349 -0
  249. package/bundled-skills/osint-methodology/SKILL.md +460 -0
  250. package/bundled-skills/osint-methodology/references/details.md +1350 -0
  251. package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
  252. package/bundled-skills/penetration-testing/SKILL.md +152 -0
  253. package/bundled-skills/performance-tuning/SKILL.md +381 -0
  254. package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
  255. package/bundled-skills/planetscale/SKILL.md +297 -0
  256. package/bundled-skills/platform-engineering/SKILL.md +348 -0
  257. package/bundled-skills/platform-engineering/references/details.md +944 -0
  258. package/bundled-skills/podman/SKILL.md +405 -0
  259. package/bundled-skills/policy-as-code/SKILL.md +434 -0
  260. package/bundled-skills/policy-as-code/references/details.md +204 -0
  261. package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
  262. package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
  263. package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
  264. package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
  265. package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
  266. package/bundled-skills/rag-observability-evals/references/details.md +92 -0
  267. package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
  268. package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
  269. package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
  270. package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
  271. package/bundled-skills/redis/SKILL.md +421 -0
  272. package/bundled-skills/redteam-report-template/SKILL.md +370 -0
  273. package/bundled-skills/report-writing/SKILL.md +426 -0
  274. package/bundled-skills/report-writing/references/details.md +187 -0
  275. package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
  276. package/bundled-skills/reverse-proxy/SKILL.md +420 -0
  277. package/bundled-skills/runbook-creation/SKILL.md +438 -0
  278. package/bundled-skills/runbook-creation/references/details.md +71 -0
  279. package/bundled-skills/saas-security-posture/SKILL.md +415 -0
  280. package/bundled-skills/sast-scanning/SKILL.md +444 -0
  281. package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
  282. package/bundled-skills/security-arsenal/SKILL.md +446 -0
  283. package/bundled-skills/security-arsenal/references/details.md +540 -0
  284. package/bundled-skills/security-automation/SKILL.md +146 -0
  285. package/bundled-skills/semantic-versioning/SKILL.md +434 -0
  286. package/bundled-skills/semantic-versioning/references/details.md +83 -0
  287. package/bundled-skills/service-mesh/SKILL.md +422 -0
  288. package/bundled-skills/soc2-compliance/SKILL.md +409 -0
  289. package/bundled-skills/sops-encryption/SKILL.md +124 -0
  290. package/bundled-skills/sre-dashboards/SKILL.md +143 -0
  291. package/bundled-skills/ssh-configuration/SKILL.md +324 -0
  292. package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
  293. package/bundled-skills/ssl-tls-management/references/details.md +99 -0
  294. package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
  295. package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
  296. package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
  297. package/bundled-skills/systemd-services/SKILL.md +379 -0
  298. package/bundled-skills/terraform-aws/SKILL.md +125 -0
  299. package/bundled-skills/terraform-azure/SKILL.md +415 -0
  300. package/bundled-skills/terraform-azure/references/details.md +231 -0
  301. package/bundled-skills/terraform-gcp/SKILL.md +369 -0
  302. package/bundled-skills/threat-modeling/SKILL.md +487 -0
  303. package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
  304. package/bundled-skills/user-management/SKILL.md +383 -0
  305. package/bundled-skills/using-agent-skills/SKILL.md +220 -0
  306. package/bundled-skills/vector-database-ops/SKILL.md +300 -0
  307. package/bundled-skills/vendor-management/SKILL.md +439 -0
  308. package/bundled-skills/vendor-management/references/details.md +109 -0
  309. package/bundled-skills/vercel-deployments/SKILL.md +296 -0
  310. package/bundled-skills/vllm-server/SKILL.md +236 -0
  311. package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
  312. package/bundled-skills/vpn-setup/SKILL.md +452 -0
  313. package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
  314. package/bundled-skills/waf-setup/SKILL.md +354 -0
  315. package/bundled-skills/waf-setup/references/details.md +211 -0
  316. package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
  317. package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
  318. package/bundled-skills/web2-recon/SKILL.md +440 -0
  319. package/bundled-skills/web2-recon/references/details.md +319 -0
  320. package/bundled-skills/web3-audit/SKILL.md +445 -0
  321. package/bundled-skills/web3-audit/references/details.md +224 -0
  322. package/bundled-skills/wiki-yylo/SKILL.md +114 -0
  323. package/bundled-skills/windows-hardening/SKILL.md +454 -0
  324. package/bundled-skills/windows-hardening/references/details.md +204 -0
  325. package/bundled-skills/windows-server/SKILL.md +318 -0
  326. package/bundled-skills/workflow-yylo/SKILL.md +107 -0
  327. package/bundled-skills/zero-trust/SKILL.md +461 -0
  328. package/package.json +1 -1
  329. package/skills_index.json +6924 -0
@@ -0,0 +1,269 @@
1
+ ---
2
+ name: rag-infrastructure
3
+ description: Build and operate Retrieval-Augmented Generation (RAG) infrastructure
4
+ with vector stores, embedding pipelines, and hybrid search.
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
+ # RAG Infrastructure
21
+
22
+ Production infrastructure for Retrieval-Augmented Generation: ingest documents, generate embeddings, store in vector databases, and serve grounded LLM responses.
23
+
24
+ ## When to Use This Skill
25
+
26
+ Use this skill when:
27
+ - Building a knowledge base Q&A system over internal documents
28
+ - Implementing semantic search over large document collections
29
+ - Reducing LLM hallucinations with retrieved context
30
+ - Setting up embedding pipelines and vector store infrastructure
31
+ - Deploying hybrid search (dense + sparse/BM25)
32
+
33
+ ## Prerequisites
34
+
35
+ - Python 3.10+ with `pip`
36
+ - A vector database (Qdrant, Weaviate, Pinecone, or pgvector)
37
+ - An embedding model (OpenAI, Cohere, or local via `sentence-transformers`)
38
+ - An LLM endpoint (OpenAI API or self-hosted vLLM)
39
+ - Docker for local vector DB deployment
40
+
41
+ ## Architecture Overview
42
+
43
+ ```
44
+ Documents → Chunker → Embedder → Vector Store
45
+
46
+ User Query → Embedder → Vector Store (search) → Reranker → LLM → Answer
47
+ ```
48
+
49
+ ## Embedding Pipeline
50
+
51
+ ```python
52
+ from sentence_transformers import SentenceTransformer
53
+ from qdrant_client import QdrantClient
54
+ from qdrant_client.models import Distance, VectorParams, PointStruct
55
+ import uuid
56
+
57
+ # Local embedding model (no API cost)
58
+ model = SentenceTransformer("BAAI/bge-large-en-v1.5")
59
+
60
+ # Connect to Qdrant
61
+ client = QdrantClient("http://localhost:6333")
62
+
63
+ # Create collection
64
+ client.create_collection(
65
+ collection_name="knowledge-base",
66
+ vectors_config=VectorParams(size=1024, distance=Distance.COSINE),
67
+ )
68
+
69
+ def ingest_documents(docs: list[dict]):
70
+ """Chunk, embed, and upsert documents."""
71
+ points = []
72
+ for doc in docs:
73
+ chunks = chunk_text(doc["text"], chunk_size=512, overlap=50)
74
+ embeddings = model.encode(chunks, batch_size=32, show_progress_bar=True)
75
+ for chunk, embedding in zip(chunks, embeddings):
76
+ points.append(PointStruct(
77
+ id=str(uuid.uuid4()),
78
+ vector=embedding.tolist(),
79
+ payload={"text": chunk, "source": doc["source"], "title": doc["title"]},
80
+ ))
81
+ client.upsert(collection_name="knowledge-base", points=points)
82
+ print(f"Ingested {len(points)} chunks")
83
+ ```
84
+
85
+ ## Chunking Strategies
86
+
87
+ ```python
88
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
89
+
90
+ def chunk_text(text: str, chunk_size: int = 512, overlap: int = 50) -> list[str]:
91
+ """Recursive character splitter — best general-purpose strategy."""
92
+ splitter = RecursiveCharacterTextSplitter(
93
+ chunk_size=chunk_size,
94
+ chunk_overlap=overlap,
95
+ separators=["\n\n", "\n", ". ", " ", ""],
96
+ )
97
+ return splitter.split_text(text)
98
+
99
+ # For code/markdown — use language-aware splitter
100
+ from langchain.text_splitter import MarkdownHeaderTextSplitter
101
+
102
+ headers = [("#", "H1"), ("##", "H2"), ("###", "H3")]
103
+ md_splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers)
104
+ ```
105
+
106
+ ## Hybrid Search (Dense + Sparse)
107
+
108
+ ```python
109
+ from qdrant_client.models import SparseVector, SparseVectorParams, NamedSparseVector
110
+ from fastembed import SparseTextEmbedding
111
+
112
+ # Qdrant hybrid collection (dense + BM25 sparse)
113
+ client.create_collection(
114
+ collection_name="hybrid-kb",
115
+ vectors_config={"dense": VectorParams(size=1024, distance=Distance.COSINE)},
116
+ sparse_vectors_config={"sparse": SparseVectorParams()},
117
+ )
118
+
119
+ sparse_model = SparseTextEmbedding("prithivida/Splade_PP_en_v1")
120
+
121
+ def hybrid_search(query: str, top_k: int = 10) -> list[dict]:
122
+ dense_vec = model.encode(query).tolist()
123
+ sparse_vec = list(sparse_model.embed(query))[0]
124
+
125
+ results = client.query_points(
126
+ collection_name="hybrid-kb",
127
+ prefetch=[
128
+ {"query": dense_vec, "using": "dense", "limit": 20},
129
+ {"query": SparseVector(indices=sparse_vec.indices.tolist(),
130
+ values=sparse_vec.values.tolist()),
131
+ "using": "sparse", "limit": 20},
132
+ ],
133
+ query={"fusion": "rrf"}, # Reciprocal Rank Fusion
134
+ limit=top_k,
135
+ )
136
+ return [{"text": p.payload["text"], "score": p.score} for p in results.points]
137
+ ```
138
+
139
+ ## Reranking
140
+
141
+ ```python
142
+ import cohere
143
+
144
+ co = cohere.Client("your-api-key")
145
+
146
+ def rerank(query: str, candidates: list[str], top_n: int = 5) -> list[str]:
147
+ """Rerank retrieved chunks for relevance (improves RAG quality ~20-30%)."""
148
+ response = co.rerank(
149
+ model="rerank-english-v3.0",
150
+ query=query,
151
+ documents=candidates,
152
+ top_n=top_n,
153
+ )
154
+ return [candidates[r.index] for r in response.results]
155
+
156
+ # Alternative: local reranker (no API cost)
157
+ from sentence_transformers import CrossEncoder
158
+ reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L-6-v2")
159
+
160
+ def local_rerank(query: str, candidates: list[str], top_n: int = 5) -> list[str]:
161
+ pairs = [[query, c] for c in candidates]
162
+ scores = reranker.predict(pairs)
163
+ ranked = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True)
164
+ return [text for text, _ in ranked[:top_n]]
165
+ ```
166
+
167
+ ## RAG Query Pipeline
168
+
169
+ ```python
170
+ from openai import OpenAI
171
+
172
+ llm = OpenAI(base_url="http://localhost:8000/v1", api_key="..." # no real key needed for local endpoints)
173
+
174
+ def rag_query(user_question: str) -> str:
175
+ # 1. Retrieve
176
+ candidates = hybrid_search(user_question, top_k=20)
177
+ texts = [c["text"] for c in candidates]
178
+
179
+ # 2. Rerank
180
+ top_chunks = local_rerank(user_question, texts, top_n=5)
181
+
182
+ # 3. Generate
183
+ context = "\n\n---\n\n".join(top_chunks)
184
+ response = llm.chat.completions.create(
185
+ model="meta-llama/Llama-3.1-8B-Instruct",
186
+ messages=[
187
+ {"role": "system", "content": (
188
+ "Answer the question using only the provided context. "
189
+ "If the answer isn't in the context, say so.\n\nContext:\n" + context
190
+ )},
191
+ {"role": "user", "content": user_question},
192
+ ],
193
+ temperature=0.1,
194
+ max_tokens=1024,
195
+ )
196
+ return response.choices[0].message.content
197
+ ```
198
+
199
+ ## Docker Compose: Full RAG Stack
200
+
201
+ ```yaml
202
+ services:
203
+ qdrant:
204
+ image: qdrant/qdrant:latest
205
+ volumes:
206
+ - qdrant-data:/qdrant/storage
207
+ ports:
208
+ - "6333:6333"
209
+ restart: unless-stopped
210
+
211
+ redis:
212
+ image: redis:7-alpine
213
+ volumes:
214
+ - redis-data:/data
215
+ restart: unless-stopped
216
+
217
+ ingestion-worker:
218
+ build: ./ingestion
219
+ environment:
220
+ - QDRANT_URL=http://qdrant:6333
221
+ - REDIS_URL=redis://redis:6379
222
+ depends_on: [qdrant, redis]
223
+ restart: unless-stopped
224
+
225
+ rag-api:
226
+ build: ./api
227
+ ports:
228
+ - "8080:8080"
229
+ environment:
230
+ - QDRANT_URL=http://qdrant:6333
231
+ - LLM_BASE_URL=http://vllm:8000/v1
232
+ depends_on: [qdrant]
233
+ restart: unless-stopped
234
+
235
+ volumes:
236
+ qdrant-data:
237
+ redis-data:
238
+ ```
239
+
240
+ ## Common Issues
241
+
242
+ | Issue | Cause | Fix |
243
+ |-------|-------|-----|
244
+ | Poor retrieval quality | Chunk size too large | Try 256–512 tokens; overlap 10–15% |
245
+ | LLM ignores retrieved context | Context too long | Rerank and keep top 3–5 chunks |
246
+ | Slow ingestion | Sequential embedding | Use `batch_size=64` and async upserts |
247
+ | Stale documents | No re-ingestion pipeline | Track `doc_hash`; re-embed on change |
248
+ | High embedding costs | All chunks re-embedded | Cache embeddings with hash-based dedup |
249
+
250
+ ## Best Practices
251
+
252
+ - Use `BAAI/bge-large-en-v1.5` or `nomic-embed-text` for strong free embeddings.
253
+ - Always rerank before passing to LLM — 5 precise chunks beat 20 noisy ones.
254
+ - Store source metadata (URL, page, section) in vector payloads for citations.
255
+ - Use namespace/tenant isolation in the vector store for multi-tenant RAG.
256
+ - Evaluate with RAGAS metrics: faithfulness, answer relevancy, context precision.
257
+
258
+ ## Related Skills
259
+
260
+ - vector-database-ops (`vector-database-ops`) - Qdrant/Weaviate management
261
+ - vllm-server (`vllm-server`) - Self-hosted LLM endpoint
262
+ - ollama-stack (`ollama-stack`) - Local LLM for development
263
+ - ai-pipeline-orchestration (`ai-pipeline-orchestration`) - Ingestion pipelines
264
+
265
+ ## Limitations
266
+
267
+ - Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
268
+ - Docs-only import: upstream scripts and templates not bundled.
269
+
@@ -0,0 +1,444 @@
1
+ ---
2
+ name: rag-observability-evals
3
+ description: Monitor and evaluate RAG systems with retrieval quality metrics, groundedness
4
+ checks, hallucination detection, and continuous regression testing.
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 platform CLIs (kubectl, helm, terraform, git,
14
+ CI runners) and authorized access to the target environment. Docs-only; helper scripts
15
+ and templates not bundled.
16
+ metadata:
17
+ author: devops-skills
18
+ version: '1.0'
19
+ ---
20
+
21
+ # RAG Observability and Evaluations
22
+
23
+ Run retrieval-augmented generation like a measurable production system, not a black box.
24
+
25
+ ## Prerequisites
26
+
27
+ - RAG pipeline with instrumented retrieval and generation stages
28
+ - Python 3.10+ with evaluation libraries (ragas, langchain, openai)
29
+ - Prometheus endpoint for custom metrics export
30
+ - Benchmark dataset with gold-standard question/answer/source triples
31
+ - OpenTelemetry SDK integrated into the RAG service
32
+
33
+ ## What to Measure
34
+
35
+ ### Retrieval Quality
36
+ - Recall@k and MRR for top-k chunks
37
+ - Citation coverage and source freshness
38
+ - Embedding drift and index staleness
39
+
40
+ ### Generation Quality
41
+ - Groundedness score (answer supported by retrieved context)
42
+ - Hallucination rate by route/use case
43
+ - Instruction adherence and format validity
44
+
45
+ ### Reliability and Cost
46
+ - p50/p95 latency split by retrieval vs generation
47
+ - Token usage per stage
48
+ - Cache hit rate and cost per successful answer
49
+
50
+ ## RAGAS Evaluation Script
51
+
52
+ ```python
53
+ # rag_eval.py
54
+ """Evaluate RAG pipeline quality using RAGAS metrics."""
55
+ from ragas import evaluate
56
+ from ragas.metrics import (
57
+ faithfulness,
58
+ answer_relevancy,
59
+ context_precision,
60
+ context_recall,
61
+ context_entity_recall,
62
+ answer_similarity,
63
+ )
64
+ from datasets import Dataset
65
+ import json
66
+ import sys
67
+
68
+ def load_eval_dataset(path: str) -> Dataset:
69
+ """Load evaluation dataset with required columns."""
70
+ with open(path) as f:
71
+ data = json.load(f)
72
+
73
+ return Dataset.from_dict({
74
+ "question": [d["question"] for d in data],
75
+ "answer": [d["generated_answer"] for d in data],
76
+ "contexts": [d["retrieved_contexts"] for d in data],
77
+ "ground_truth": [d["reference_answer"] for d in data],
78
+ })
79
+
80
+ def run_evaluation(dataset_path: str, output_path: str):
81
+ """Run full RAGAS evaluation suite."""
82
+ dataset = load_eval_dataset(dataset_path)
83
+
84
+ metrics = [
85
+ faithfulness,
86
+ answer_relevancy,
87
+ context_precision,
88
+ context_recall,
89
+ context_entity_recall,
90
+ answer_similarity,
91
+ ]
92
+
93
+ results = evaluate(dataset, metrics=metrics)
94
+
95
+ # Print summary
96
+ print("=== RAG Evaluation Results ===")
97
+ for metric_name, score in results.items():
98
+ print(f" {metric_name}: {score:.4f}")
99
+
100
+ # Save detailed results
101
+ with open(output_path, "w") as f:
102
+ json.dump({
103
+ "summary": {k: float(v) for k, v in results.items()},
104
+ "dataset_size": len(dataset),
105
+ }, f, indent=2)
106
+
107
+ return results
108
+
109
+ if __name__ == "__main__":
110
+ run_evaluation(sys.argv[1], sys.argv[2])
111
+ ```
112
+
113
+ ## Groundedness Scoring
114
+
115
+ ```python
116
+ # groundedness.py
117
+ """Score whether generated answers are grounded in retrieved context."""
118
+ from openai import OpenAI
119
+ import json
120
+ from typing import List
121
+
122
+ client = OpenAI()
123
+
124
+ GROUNDEDNESS_PROMPT = """You are evaluating whether an AI answer is fully grounded
125
+ in the provided context documents. Score each claim in the answer.
126
+
127
+ Context documents:
128
+ {contexts}
129
+
130
+ Answer to evaluate:
131
+ {answer}
132
+
133
+ For each distinct claim in the answer, determine:
134
+ 1. SUPPORTED - the claim is directly supported by the context
135
+ 2. PARTIALLY_SUPPORTED - the claim is partially supported
136
+ 3. NOT_SUPPORTED - the claim has no support in the context
137
+
138
+ Return JSON:
139
+ {{
140
+ "claims": [
141
+ {{"claim": "...", "verdict": "SUPPORTED|PARTIALLY_SUPPORTED|NOT_SUPPORTED", "evidence": "..."}}
142
+ ],
143
+ "groundedness_score": <float 0-1>,
144
+ "unsupported_claims": ["..."]
145
+ }}
146
+ """
147
+
148
+ def score_groundedness(answer: str, contexts: List[str]) -> dict:
149
+ """Score groundedness of a single answer against its contexts."""
150
+ context_text = "\n---\n".join(
151
+ f"[Document {i+1}]: {c}" for i, c in enumerate(contexts)
152
+ )
153
+
154
+ response = client.chat.completions.create(
155
+ model="gpt-4o",
156
+ messages=[{
157
+ "role": "user",
158
+ "content": GROUNDEDNESS_PROMPT.format(
159
+ contexts=context_text, answer=answer
160
+ ),
161
+ }],
162
+ response_format={"type": "json_object"},
163
+ temperature=0,
164
+ )
165
+
166
+ return json.loads(response.choices[0].message.content)
167
+
168
+ def batch_groundedness(eval_data: list) -> dict:
169
+ """Score groundedness for a batch of QA pairs."""
170
+ scores = []
171
+ unsupported_count = 0
172
+ total_claims = 0
173
+
174
+ for item in eval_data:
175
+ result = score_groundedness(
176
+ item["generated_answer"],
177
+ item["retrieved_contexts"],
178
+ )
179
+ scores.append(result["groundedness_score"])
180
+ unsupported_count += len(result["unsupported_claims"])
181
+ total_claims += len(result["claims"])
182
+
183
+ avg_score = sum(scores) / len(scores) if scores else 0
184
+ return {
185
+ "average_groundedness": avg_score,
186
+ "total_claims": total_claims,
187
+ "unsupported_claims": unsupported_count,
188
+ "unsupported_rate": unsupported_count / total_claims if total_claims else 0,
189
+ "sample_count": len(eval_data),
190
+ }
191
+ ```
192
+
193
+ ## Retrieval Quality Metrics
194
+
195
+ ```python
196
+ # retrieval_metrics.py
197
+ """Compute retrieval quality metrics for RAG evaluation."""
198
+ from typing import List, Set
199
+ import numpy as np
200
+
201
+ def recall_at_k(
202
+ retrieved_ids: List[str],
203
+ relevant_ids: Set[str],
204
+ k: int
205
+ ) -> float:
206
+ """Compute Recall@K for a single query."""
207
+ top_k = set(retrieved_ids[:k])
208
+ if not relevant_ids:
209
+ return 0.0
210
+ return len(top_k & relevant_ids) / len(relevant_ids)
211
+
212
+ def mrr(
213
+ retrieved_ids: List[str],
214
+ relevant_ids: Set[str]
215
+ ) -> float:
216
+ """Compute Mean Reciprocal Rank for a single query."""
217
+ for i, doc_id in enumerate(retrieved_ids):
218
+ if doc_id in relevant_ids:
219
+ return 1.0 / (i + 1)
220
+ return 0.0
221
+
222
+ def ndcg_at_k(
223
+ retrieved_ids: List[str],
224
+ relevant_ids: Set[str],
225
+ k: int
226
+ ) -> float:
227
+ """Compute NDCG@K for a single query."""
228
+ dcg = 0.0
229
+ for i, doc_id in enumerate(retrieved_ids[:k]):
230
+ if doc_id in relevant_ids:
231
+ dcg += 1.0 / np.log2(i + 2)
232
+
233
+ ideal_dcg = sum(1.0 / np.log2(i + 2) for i in range(min(len(relevant_ids), k)))
234
+ return dcg / ideal_dcg if ideal_dcg > 0 else 0.0
235
+
236
+ def compute_retrieval_metrics(
237
+ queries: list,
238
+ k_values: list = [1, 3, 5, 10]
239
+ ) -> dict:
240
+ """Compute aggregate retrieval metrics across all queries."""
241
+ results = {}
242
+ for k in k_values:
243
+ recalls = [
244
+ recall_at_k(q["retrieved_ids"], set(q["relevant_ids"]), k)
245
+ for q in queries
246
+ ]
247
+ mrrs = [mrr(q["retrieved_ids"], set(q["relevant_ids"])) for q in queries]
248
+ ndcgs = [
249
+ ndcg_at_k(q["retrieved_ids"], set(q["relevant_ids"]), k)
250
+ for q in queries
251
+ ]
252
+ results[f"recall@{k}"] = np.mean(recalls)
253
+ results[f"ndcg@{k}"] = np.mean(ndcgs)
254
+
255
+ results["mrr"] = np.mean(mrrs)
256
+ return results
257
+ ```
258
+
259
+ ## Prometheus Metrics Export
260
+
261
+ ```python
262
+ # rag_metrics_exporter.py
263
+ """Export RAG quality metrics to Prometheus."""
264
+ from prometheus_client import Histogram, Counter, Gauge, start_http_server
265
+ import time
266
+
267
+ # Latency histograms by stage
268
+ RETRIEVAL_LATENCY = Histogram(
269
+ "rag_retrieval_duration_seconds",
270
+ "Time spent in retrieval stage",
271
+ ["index_name", "retriever_type"],
272
+ buckets=[0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0],
273
+ )
274
+
275
+ GENERATION_LATENCY = Histogram(
276
+ "rag_generation_duration_seconds",
277
+ "Time spent in generation stage",
278
+ ["model", "route"],
279
+ buckets=[0.5, 1.0, 2.0, 5.0, 10.0, 30.0],
280
+ )
281
+
282
+ RERANKING_LATENCY = Histogram(
283
+ "rag_reranking_duration_seconds",
284
+ "Time spent in reranking stage",
285
+ ["reranker_model"],
286
+ buckets=[0.05, 0.1, 0.25, 0.5, 1.0],
287
+ )
288
+
289
+ # Quality gauges (updated from offline evals)
290
+ GROUNDEDNESS_SCORE = Gauge(
291
+ "rag_groundedness_score",
292
+ "Latest groundedness evaluation score",
293
+ ["route", "model"],
294
+ )
295
+
296
+ FAITHFULNESS_SCORE = Gauge(
297
+ "rag_faithfulness_score",
298
+ "Latest faithfulness evaluation score",
299
+ ["route", "model"],
300
+ )
301
+
302
+ CONTEXT_PRECISION = Gauge(
303
+ "rag_context_precision_score",
304
+ "Latest context precision score",
305
+ ["route", "index_name"],
306
+ )
307
+
308
+ RECALL_AT_K = Gauge(
309
+ "rag_recall_at_k",
310
+ "Recall@K for retrieval",
311
+ ["k", "index_name"],
312
+ )
313
+
314
+ # Operational counters
315
+ REQUESTS_TOTAL = Counter(
316
+ "rag_requests_total",
317
+ "Total RAG requests",
318
+ ["route", "status"],
319
+ )
320
+
321
+ HALLUCINATION_DETECTED = Counter(
322
+ "rag_hallucination_detected_total",
323
+ "Detected hallucinations",
324
+ ["route", "severity"],
325
+ )
326
+
327
+ FALLBACK_TRIGGERED = Counter(
328
+ "rag_fallback_triggered_total",
329
+ "Times RAG fell back to abstain/default",
330
+ ["route", "reason"],
331
+ )
332
+
333
+ TOKENS_USED = Counter(
334
+ "rag_tokens_used_total",
335
+ "Tokens consumed by stage",
336
+ ["stage", "model"],
337
+ )
338
+
339
+ CACHE_HITS = Counter(
340
+ "rag_cache_hits_total",
341
+ "Semantic cache hits",
342
+ ["cache_type"],
343
+ )
344
+
345
+ # Index health
346
+ INDEX_STALENESS_SECONDS = Gauge(
347
+ "rag_index_staleness_seconds",
348
+ "Seconds since last index update",
349
+ ["index_name"],
350
+ )
351
+
352
+ INDEX_DOCUMENT_COUNT = Gauge(
353
+ "rag_index_document_count",
354
+ "Number of documents in index",
355
+ ["index_name"],
356
+ )
357
+
358
+ def start_metrics_server(port: int = 9090):
359
+ """Start Prometheus metrics HTTP server."""
360
+ start_http_server(port)
361
+ print(f"RAG metrics server running on :{port}/metrics")
362
+ ```
363
+
364
+ ## Evaluation Pipeline
365
+
366
+ 1. Curate a benchmark set with gold answers and source docs.
367
+ 2. Run nightly offline evals for every retriever/model configuration.
368
+ 3. Execute online shadow evals on sampled production traffic.
369
+ 4. Gate releases on minimum quality + safety + latency thresholds.
370
+
371
+ ```yaml
372
+ # eval-pipeline-cron.yaml
373
+ apiVersion: batch/v1
374
+ kind: CronJob
375
+ metadata:
376
+ name: rag-nightly-eval
377
+ namespace: ai-evals
378
+ spec:
379
+ schedule: "0 2 * * *"
380
+ jobTemplate:
381
+ spec:
382
+ template:
383
+ spec:
384
+ containers:
385
+ - name: eval-runner
386
+ image: registry.internal/rag-eval:latest
387
+ command:
388
+ - python
389
+ - -m
390
+ - rag_eval
391
+ - --dataset=/data/benchmark_v3.json
392
+ - --output=/results/nightly-$(date +%Y%m%d).json
393
+ - --push-metrics
394
+ - --fail-on-regression
395
+ env:
396
+ - name: PROMETHEUS_PUSHGATEWAY
397
+ value: "http://pushgateway:9091"
398
+ - name: MLFLOW_TRACKING_URI
399
+ value: "http://mlflow:5000"
400
+ volumeMounts:
401
+ - name: eval-data
402
+ mountPath: /data
403
+ - name: results
404
+ mountPath: /results
405
+ volumes:
406
+ - name: eval-data
407
+ persistentVolumeClaim:
408
+ claimName: eval-benchmark-data
409
+ - name: results
410
+ persistentVolumeClaim:
411
+ claimName: eval-results
412
+ restartPolicy: OnFailure
413
+ ```
414
+
415
+
416
+ ## Contents
417
+
418
+ - [Alerting Strategy](references/details.md)
419
+ - [Practical Guardrails](references/details.md)
420
+ - [Incident Triage Checklist](references/details.md)
421
+ - [Troubleshooting](references/details.md)
422
+ - [Related Skills](references/details.md)
423
+
424
+ ## When to Use This Skill
425
+
426
+ - Deploying a RAG system to production and need quality monitoring
427
+ - Setting up automated evaluation pipelines for retrieval and generation
428
+ - Debugging hallucination or relevance regressions
429
+ - Building dashboards for RAG-specific golden signals
430
+ - Establishing quality gates for RAG pipeline changes
431
+
432
+ ## Limitations
433
+
434
+ - Guidance executes against real environments: confirm target, blast radius, and rollback plan before applying anything.
435
+ - Never deploy to production without explicit approval. Docs-only import: upstream scripts and templates not bundled.
436
+
437
+ ### Example
438
+
439
+ ```bash
440
+ git status && git diff --stat
441
+ kubectl diff -f manifest.yaml
442
+ ```
443
+
444
+ > 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.