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.
Files changed (491) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +304 -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/api-integration-architect/SKILL.md +241 -0
  19. package/bundled-skills/apify-generate-output-schema/SKILL.md +438 -0
  20. package/bundled-skills/apify-integration-development/SKILL.md +168 -0
  21. package/bundled-skills/apify-integration-development/references/ai-framework-package.md +158 -0
  22. package/bundled-skills/apify-integration-development/references/ai-harness-plugin.md +192 -0
  23. package/bundled-skills/apify-integration-development/references/sdk-integration.md +236 -0
  24. package/bundled-skills/apify-integration-development/references/workflow-automation.md +163 -0
  25. package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
  26. package/bundled-skills/architecture-review/README.md +42 -0
  27. package/bundled-skills/architecture-review/SKILL.md +77 -0
  28. package/bundled-skills/architecture-review/examples.md +11 -0
  29. package/bundled-skills/architecture-review/reference/best-practices.md +7 -0
  30. package/bundled-skills/architecture-review/reference/capabilities.md +20 -0
  31. package/bundled-skills/architecture-review/reference/fallbacks.md +11 -0
  32. package/bundled-skills/architecture-review/reference/graph.md +15 -0
  33. package/bundled-skills/architecture-review/reference/mcp.md +14 -0
  34. package/bundled-skills/architecture-review/reference/workflow.md +15 -0
  35. package/bundled-skills/architecture-review/templates/architecture-review.md +21 -0
  36. package/bundled-skills/argocd-gitops/SKILL.md +469 -0
  37. package/bundled-skills/arm-templates/SKILL.md +438 -0
  38. package/bundled-skills/arm-templates/references/details.md +64 -0
  39. package/bundled-skills/asset-inventory/SKILL.md +412 -0
  40. package/bundled-skills/asset-inventory/references/details.md +127 -0
  41. package/bundled-skills/audit-logging/SKILL.md +476 -0
  42. package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
  43. package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
  44. package/bundled-skills/aws-ec2/SKILL.md +426 -0
  45. package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
  46. package/bundled-skills/aws-iam/SKILL.md +463 -0
  47. package/bundled-skills/aws-lambda/SKILL.md +428 -0
  48. package/bundled-skills/aws-rds/SKILL.md +380 -0
  49. package/bundled-skills/aws-s3/SKILL.md +434 -0
  50. package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
  51. package/bundled-skills/aws-vpc/SKILL.md +436 -0
  52. package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
  53. package/bundled-skills/azure-aks/SKILL.md +423 -0
  54. package/bundled-skills/azure-devops/SKILL.md +457 -0
  55. package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
  56. package/bundled-skills/azure-keyvault/SKILL.md +455 -0
  57. package/bundled-skills/azure-keyvault/references/details.md +83 -0
  58. package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
  59. package/bundled-skills/azure-networking/SKILL.md +448 -0
  60. package/bundled-skills/azure-networking/references/details.md +135 -0
  61. package/bundled-skills/azure-sql/SKILL.md +413 -0
  62. package/bundled-skills/azure-sql/references/details.md +113 -0
  63. package/bundled-skills/azure-vms/SKILL.md +402 -0
  64. package/bundled-skills/azure-vms/references/details.md +134 -0
  65. package/bundled-skills/backup-recovery/SKILL.md +388 -0
  66. package/bundled-skills/bb-methodology/SKILL.md +451 -0
  67. package/bundled-skills/bb-methodology/references/details.md +120 -0
  68. package/bundled-skills/block-storage/SKILL.md +371 -0
  69. package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
  70. package/bundled-skills/blue-green-deploy/references/details.md +90 -0
  71. package/bundled-skills/bug-bounty/SKILL.md +447 -0
  72. package/bundled-skills/bug-bounty/references/details.md +1316 -0
  73. package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
  74. package/bundled-skills/business-continuity/SKILL.md +463 -0
  75. package/bundled-skills/career-ops/SKILL.md +186 -0
  76. package/bundled-skills/cdn-setup/SKILL.md +374 -0
  77. package/bundled-skills/change-management/SKILL.md +438 -0
  78. package/bundled-skills/change-management/references/details.md +105 -0
  79. package/bundled-skills/circleci/SKILL.md +475 -0
  80. package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
  81. package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
  82. package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
  83. package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
  84. package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
  85. package/bundled-skills/cloudformation/SKILL.md +461 -0
  86. package/bundled-skills/code-review-sensei/SKILL.md +177 -0
  87. package/bundled-skills/codebase-onboarding/README.md +42 -0
  88. package/bundled-skills/codebase-onboarding/SKILL.md +77 -0
  89. package/bundled-skills/codebase-onboarding/examples.md +11 -0
  90. package/bundled-skills/codebase-onboarding/reference/best-practices.md +7 -0
  91. package/bundled-skills/codebase-onboarding/reference/capabilities.md +20 -0
  92. package/bundled-skills/codebase-onboarding/reference/fallbacks.md +11 -0
  93. package/bundled-skills/codebase-onboarding/reference/graph.md +15 -0
  94. package/bundled-skills/codebase-onboarding/reference/mcp.md +14 -0
  95. package/bundled-skills/codebase-onboarding/reference/workflow.md +15 -0
  96. package/bundled-skills/codebase-onboarding/templates/repository-onboarding.md +21 -0
  97. package/bundled-skills/connection-auth-rules/SKILL.md +199 -0
  98. package/bundled-skills/connection-auth-rules/fetch_schema.py +320 -0
  99. package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
  100. package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
  101. package/bundled-skills/container-hardening/SKILL.md +126 -0
  102. package/bundled-skills/container-registries/SKILL.md +435 -0
  103. package/bundled-skills/container-scanning/SKILL.md +416 -0
  104. package/bundled-skills/convex-backend/SKILL.md +338 -0
  105. package/bundled-skills/dast-scanning/SKILL.md +437 -0
  106. package/bundled-skills/database-backups/SKILL.md +425 -0
  107. package/bundled-skills/datadog/SKILL.md +487 -0
  108. package/bundled-skills/dependency-analysis/README.md +42 -0
  109. package/bundled-skills/dependency-analysis/SKILL.md +76 -0
  110. package/bundled-skills/dependency-analysis/examples.md +11 -0
  111. package/bundled-skills/dependency-analysis/reference/best-practices.md +7 -0
  112. package/bundled-skills/dependency-analysis/reference/capabilities.md +20 -0
  113. package/bundled-skills/dependency-analysis/reference/fallbacks.md +11 -0
  114. package/bundled-skills/dependency-analysis/reference/graph.md +15 -0
  115. package/bundled-skills/dependency-analysis/reference/mcp.md +14 -0
  116. package/bundled-skills/dependency-analysis/reference/workflow.md +15 -0
  117. package/bundled-skills/dependency-analysis/templates/dependency-review.md +21 -0
  118. package/bundled-skills/dependency-scanning/SKILL.md +457 -0
  119. package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
  120. package/bundled-skills/devops-pipeline-builder/SKILL.md +200 -0
  121. package/bundled-skills/disaster-recovery/SKILL.md +374 -0
  122. package/bundled-skills/disaster-recovery/references/details.md +219 -0
  123. package/bundled-skills/dns-management/SKILL.md +375 -0
  124. package/bundled-skills/docker-compose/SKILL.md +482 -0
  125. package/bundled-skills/docker-management/SKILL.md +426 -0
  126. package/bundled-skills/eas-app-stores/SKILL.md +197 -0
  127. package/bundled-skills/eas-app-stores/agents/openai.yaml +4 -0
  128. package/bundled-skills/eas-app-stores/references/app-store-metadata.md +497 -0
  129. package/bundled-skills/eas-app-stores/references/ios-app-store.md +376 -0
  130. package/bundled-skills/eas-app-stores/references/native-ios.md +167 -0
  131. package/bundled-skills/eas-app-stores/references/play-store.md +244 -0
  132. package/bundled-skills/eas-app-stores/references/testflight.md +62 -0
  133. package/bundled-skills/eas-app-stores/references/workflows.md +120 -0
  134. package/bundled-skills/eas-hosting/SKILL.md +448 -0
  135. package/bundled-skills/eas-hosting/agents/openai.yaml +4 -0
  136. package/bundled-skills/eas-observe/SKILL.md +75 -0
  137. package/bundled-skills/eas-observe/agents/openai.yaml +4 -0
  138. package/bundled-skills/eas-observe/references/metrics.md +98 -0
  139. package/bundled-skills/eas-observe/references/queries.md +403 -0
  140. package/bundled-skills/eas-observe/references/setup.md +476 -0
  141. package/bundled-skills/eas-observe/references/third-party.md +136 -0
  142. package/bundled-skills/eas-simulator/SKILL.md +251 -0
  143. package/bundled-skills/eas-simulator/agents/openai.yaml +4 -0
  144. package/bundled-skills/eas-simulator/references/controllers.md +135 -0
  145. package/bundled-skills/eas-simulator/references/run-your-app.md +240 -0
  146. package/bundled-skills/eas-simulator/references/troubleshooting.md +47 -0
  147. package/bundled-skills/eas-workflows/SKILL.md +119 -0
  148. package/bundled-skills/eas-workflows/agents/openai.yaml +4 -0
  149. package/bundled-skills/eas-workflows/scripts/fetch.js +109 -0
  150. package/bundled-skills/ebpf-observability/SKILL.md +436 -0
  151. package/bundled-skills/ebpf-observability/references/details.md +542 -0
  152. package/bundled-skills/elk-stack/SKILL.md +487 -0
  153. package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
  154. package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
  155. package/bundled-skills/expo-animation/LICENSE +21 -0
  156. package/bundled-skills/expo-animation/RECIPES.md +385 -0
  157. package/bundled-skills/expo-animation/SKILL.md +295 -0
  158. package/bundled-skills/expo-animation/agents/openai.yaml +4 -0
  159. package/bundled-skills/fact-check-x-unified/SKILL.md +178 -0
  160. package/bundled-skills/fact-check-x-unified/agents/openai.yaml +4 -0
  161. package/bundled-skills/fact-check-x-unified/references/acceptance-criteria.md +44 -0
  162. package/bundled-skills/fact-check-x-unified/references/contracts.md +39 -0
  163. package/bundled-skills/fact-check-x-unified/scripts/common.py +31 -0
  164. package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +1832 -0
  165. package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +324 -0
  166. package/bundled-skills/fact-check-x-unified/tests/anchor_downgrade_test.py +90 -0
  167. package/bundled-skills/fact-check-x-unified/tests/multi_platform_test.py +369 -0
  168. package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +740 -0
  169. package/bundled-skills/fact-check-x-unified/tests/stage_checkpoint_test.py +103 -0
  170. package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +156 -0
  171. package/bundled-skills/feature-flags/SKILL.md +426 -0
  172. package/bundled-skills/feature-flags/references/details.md +86 -0
  173. package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
  174. package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
  175. package/bundled-skills/firewall-config/SKILL.md +479 -0
  176. package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
  177. package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
  178. package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
  179. package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
  180. package/bundled-skills/gcp-compute/SKILL.md +319 -0
  181. package/bundled-skills/gcp-gke/SKILL.md +307 -0
  182. package/bundled-skills/gcp-networking/SKILL.md +293 -0
  183. package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
  184. package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
  185. package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
  186. package/bundled-skills/gdpr-compliance/references/details.md +145 -0
  187. package/bundled-skills/geo-audit/SKILL.md +368 -0
  188. package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
  189. package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
  190. package/bundled-skills/geo-citability/SKILL.md +350 -0
  191. package/bundled-skills/geo-compare/SKILL.md +340 -0
  192. package/bundled-skills/geo-content/SKILL.md +383 -0
  193. package/bundled-skills/geo-crawlers/SKILL.md +408 -0
  194. package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
  195. package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
  196. package/bundled-skills/geo-proposal/SKILL.md +378 -0
  197. package/bundled-skills/geo-prospect/SKILL.md +225 -0
  198. package/bundled-skills/geo-report/SKILL.md +436 -0
  199. package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
  200. package/bundled-skills/geo-schema/SKILL.md +408 -0
  201. package/bundled-skills/geo-technical/SKILL.md +78 -0
  202. package/bundled-skills/geo-technical/references/details.md +543 -0
  203. package/bundled-skills/git-workflow/SKILL.md +460 -0
  204. package/bundled-skills/github-actions/SKILL.md +368 -0
  205. package/bundled-skills/gitlab-ci/SKILL.md +340 -0
  206. package/bundled-skills/gpt-taste/SKILL.md +8 -1
  207. package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
  208. package/bundled-skills/gpu-server-management/SKILL.md +236 -0
  209. package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
  210. package/bundled-skills/helm-charts/SKILL.md +469 -0
  211. package/bundled-skills/hf-cli/SKILL.md +263 -0
  212. package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
  213. package/bundled-skills/huggingface-community-evals/SKILL.md +228 -0
  214. package/bundled-skills/huggingface-community-evals/examples/.env.example +3 -0
  215. package/bundled-skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  216. package/bundled-skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  217. package/bundled-skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  218. package/bundled-skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  219. package/bundled-skills/huggingface-datasets/SKILL.md +130 -0
  220. package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
  221. package/bundled-skills/hunt-ato/SKILL.md +184 -0
  222. package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
  223. package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
  224. package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
  225. package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
  226. package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
  227. package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
  228. package/bundled-skills/hunt-cicd/SKILL.md +311 -0
  229. package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
  230. package/bundled-skills/hunt-cors/SKILL.md +335 -0
  231. package/bundled-skills/hunt-dom/SKILL.md +323 -0
  232. package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
  233. package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
  234. package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
  235. package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
  236. package/bundled-skills/hunt-grpc/SKILL.md +317 -0
  237. package/bundled-skills/hunt-host-header/SKILL.md +309 -0
  238. package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
  239. package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
  240. package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
  241. package/bundled-skills/hunt-idor/SKILL.md +434 -0
  242. package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
  243. package/bundled-skills/hunt-k8s/SKILL.md +337 -0
  244. package/bundled-skills/hunt-laravel/SKILL.md +255 -0
  245. package/bundled-skills/hunt-ldap/SKILL.md +351 -0
  246. package/bundled-skills/hunt-lfi/SKILL.md +311 -0
  247. package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
  248. package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
  249. package/bundled-skills/hunt-misc/SKILL.md +378 -0
  250. package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
  251. package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
  252. package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
  253. package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
  254. package/bundled-skills/hunt-oauth/SKILL.md +459 -0
  255. package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
  256. package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
  257. package/bundled-skills/hunt-race-condition/references/details.md +159 -0
  258. package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
  259. package/bundled-skills/hunt-rce/SKILL.md +444 -0
  260. package/bundled-skills/hunt-rce/references/details.md +110 -0
  261. package/bundled-skills/hunt-saml/SKILL.md +156 -0
  262. package/bundled-skills/hunt-session/SKILL.md +342 -0
  263. package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
  264. package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
  265. package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
  266. package/bundled-skills/hunt-springboot/SKILL.md +285 -0
  267. package/bundled-skills/hunt-sqli/SKILL.md +466 -0
  268. package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
  269. package/bundled-skills/hunt-ssrf/references/details.md +179 -0
  270. package/bundled-skills/hunt-ssti/SKILL.md +163 -0
  271. package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
  272. package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
  273. package/bundled-skills/hunt-xxe/SKILL.md +466 -0
  274. package/bundled-skills/i-have-adhd/SKILL.md +170 -0
  275. package/bundled-skills/identity-access-management/SKILL.md +382 -0
  276. package/bundled-skills/identity-access-management/references/details.md +524 -0
  277. package/bundled-skills/incident-management/SKILL.md +484 -0
  278. package/bundled-skills/incident-response/SKILL.md +448 -0
  279. package/bundled-skills/incident-response/references/details.md +113 -0
  280. package/bundled-skills/interview-me/SKILL.md +248 -0
  281. package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
  282. package/bundled-skills/jenkins/SKILL.md +462 -0
  283. package/bundled-skills/jev-social/SKILL.md +182 -0
  284. package/bundled-skills/jev-use/SKILL.md +158 -0
  285. package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
  286. package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
  287. package/bundled-skills/kubernetes-ops/references/details.md +108 -0
  288. package/bundled-skills/kustomize/SKILL.md +478 -0
  289. package/bundled-skills/linux-administration/SKILL.md +367 -0
  290. package/bundled-skills/linux-hardening/SKILL.md +154 -0
  291. package/bundled-skills/llm-app-security/SKILL.md +389 -0
  292. package/bundled-skills/llm-app-security/references/details.md +674 -0
  293. package/bundled-skills/llm-caching/SKILL.md +334 -0
  294. package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
  295. package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
  296. package/bundled-skills/llm-gateway/SKILL.md +282 -0
  297. package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
  298. package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
  299. package/bundled-skills/load-balancing/SKILL.md +403 -0
  300. package/bundled-skills/loki-logging/SKILL.md +479 -0
  301. package/bundled-skills/longbridge-derivatives/SKILL.md +117 -0
  302. package/bundled-skills/longbridge-derivatives/references/option.md +36 -0
  303. package/bundled-skills/longbridge-derivatives/references/options-advanced.md +101 -0
  304. package/bundled-skills/longbridge-derivatives/references/options-pnl.md +74 -0
  305. package/bundled-skills/longbridge-derivatives/references/options-strategy.md +82 -0
  306. package/bundled-skills/longbridge-derivatives/references/options-volatility.md +70 -0
  307. package/bundled-skills/longbridge-derivatives/references/warrant.md +12 -0
  308. package/bundled-skills/longbridge-quant/SKILL.md +151 -0
  309. package/bundled-skills/longbridge-quant/references/correlation.md +51 -0
  310. package/bundled-skills/longbridge-quant/references/execution-model.md +68 -0
  311. package/bundled-skills/longbridge-quant/references/factor-research.md +95 -0
  312. package/bundled-skills/longbridge-quant/references/factor-screen.md +101 -0
  313. package/bundled-skills/longbridge-quant/references/hedging.md +136 -0
  314. package/bundled-skills/longbridge-quant/references/ml-strategy.md +77 -0
  315. package/bundled-skills/longbridge-quant/references/multifactor.md +68 -0
  316. package/bundled-skills/longbridge-quant/references/pairs-trading.md +61 -0
  317. package/bundled-skills/longbridge-quant/references/quant-cli.md +133 -0
  318. package/bundled-skills/longbridge-quant/references/quant-stats.md +150 -0
  319. package/bundled-skills/longbridge-quant/references/seasonality.md +50 -0
  320. package/bundled-skills/longbridge-quant/references/strategy-optimizer.md +68 -0
  321. package/bundled-skills/longbridge-quant/references/volatility-strategy.md +52 -0
  322. package/bundled-skills/longbridge-research/SKILL.md +187 -0
  323. package/bundled-skills/longbridge-research/references/company-profile.md +96 -0
  324. package/bundled-skills/longbridge-research/references/company-tearsheet.md +82 -0
  325. package/bundled-skills/longbridge-research/references/competitive-analysis.md +81 -0
  326. package/bundled-skills/longbridge-research/references/consensus.md +92 -0
  327. package/bundled-skills/longbridge-research/references/coverage-initiation.md +76 -0
  328. package/bundled-skills/longbridge-research/references/defi-yield.md +60 -0
  329. package/bundled-skills/longbridge-research/references/finance-calendar.md +165 -0
  330. package/bundled-skills/longbridge-research/references/financial-planning.md +77 -0
  331. package/bundled-skills/longbridge-research/references/forecast-eps.md +39 -0
  332. package/bundled-skills/longbridge-research/references/fund-holder.md +44 -0
  333. package/bundled-skills/longbridge-research/references/hkipo-analysis.md +101 -0
  334. package/bundled-skills/longbridge-research/references/industry-peers.md +46 -0
  335. package/bundled-skills/longbridge-research/references/industry-rank.md +62 -0
  336. package/bundled-skills/longbridge-research/references/insider-trades.md +48 -0
  337. package/bundled-skills/longbridge-research/references/institution-rating.md +62 -0
  338. package/bundled-skills/longbridge-research/references/investment-ideas.md +69 -0
  339. package/bundled-skills/longbridge-research/references/investment-proposal.md +95 -0
  340. package/bundled-skills/longbridge-research/references/investors.md +87 -0
  341. package/bundled-skills/longbridge-research/references/onchain.md +70 -0
  342. package/bundled-skills/longbridge-research/references/post-investment.md +76 -0
  343. package/bundled-skills/longbridge-research/references/shareholder.md +72 -0
  344. package/bundled-skills/longbridge-research/references/short-positions.md +50 -0
  345. package/bundled-skills/longbridge-research/references/short-trades.md +50 -0
  346. package/bundled-skills/longbridge-research/references/stock-research.md +61 -0
  347. package/bundled-skills/longbridge-research/references/thesis-tracker.md +64 -0
  348. package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
  349. package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
  350. package/bundled-skills/makepad-2-0-animation/SKILL.md +318 -0
  351. package/bundled-skills/makepad-2-0-animation/references/animator-reference.md +433 -0
  352. package/bundled-skills/makepad-2-0-dsl/SKILL.md +492 -0
  353. package/bundled-skills/makepad-2-0-dsl/references/dsl-syntax-reference.md +511 -0
  354. package/bundled-skills/makepad-2-0-dsl/references/extended-guide.md +56 -0
  355. package/bundled-skills/makepad-2-0-dsl/references/property-system.md +757 -0
  356. package/bundled-skills/makepad-2-0-events/SKILL.md +497 -0
  357. package/bundled-skills/makepad-2-0-events/references/event-patterns.md +802 -0
  358. package/bundled-skills/makepad-2-0-events/references/extended-guide.md +590 -0
  359. package/bundled-skills/makepad-2-0-layout/SKILL.md +499 -0
  360. package/bundled-skills/makepad-2-0-layout/references/extended-guide.md +243 -0
  361. package/bundled-skills/makepad-2-0-layout/references/layout-patterns.md +881 -0
  362. package/bundled-skills/makepad-2-0-widgets/SKILL.md +261 -0
  363. package/bundled-skills/makepad-2-0-widgets/references/widget-advanced.md +648 -0
  364. package/bundled-skills/makepad-2-0-widgets/references/widget-catalog.md +547 -0
  365. package/bundled-skills/mcp-server-security/SKILL.md +356 -0
  366. package/bundled-skills/mcp-server-security/references/details.md +745 -0
  367. package/bundled-skills/mdm-device-management/SKILL.md +404 -0
  368. package/bundled-skills/mdm-device-management/references/details.md +410 -0
  369. package/bundled-skills/meeting-distiller-pro/SKILL.md +120 -0
  370. package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
  371. package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
  372. package/bundled-skills/model-registry-governance/SKILL.md +452 -0
  373. package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
  374. package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
  375. package/bundled-skills/mongodb/SKILL.md +436 -0
  376. package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +12 -1
  377. package/bundled-skills/monte-carlo-asset-health/SKILL.md +12 -1
  378. package/bundled-skills/monte-carlo-context-detection/SKILL.md +170 -0
  379. package/bundled-skills/monte-carlo-context-detection/references/signal-definitions.md +46 -0
  380. package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
  381. package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
  382. package/bundled-skills/mysql/SKILL.md +390 -0
  383. package/bundled-skills/new-relic/SKILL.md +472 -0
  384. package/bundled-skills/nfs-storage/SKILL.md +356 -0
  385. package/bundled-skills/object-storage/SKILL.md +378 -0
  386. package/bundled-skills/offensive-osint/SKILL.md +443 -0
  387. package/bundled-skills/okta-attack/SKILL.md +436 -0
  388. package/bundled-skills/ollama-stack/SKILL.md +379 -0
  389. package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
  390. package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
  391. package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
  392. package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
  393. package/bundled-skills/openshift/SKILL.md +485 -0
  394. package/bundled-skills/opentelemetry/SKILL.md +438 -0
  395. package/bundled-skills/opentelemetry/references/details.md +78 -0
  396. package/bundled-skills/opentofu-migration/SKILL.md +349 -0
  397. package/bundled-skills/osint-methodology/SKILL.md +460 -0
  398. package/bundled-skills/osint-methodology/references/details.md +1350 -0
  399. package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
  400. package/bundled-skills/penetration-testing/SKILL.md +152 -0
  401. package/bundled-skills/performance-tuning/SKILL.md +381 -0
  402. package/bundled-skills/planetscale/SKILL.md +297 -0
  403. package/bundled-skills/platform-engineering/SKILL.md +348 -0
  404. package/bundled-skills/platform-engineering/references/details.md +944 -0
  405. package/bundled-skills/podman/SKILL.md +405 -0
  406. package/bundled-skills/policy-as-code/SKILL.md +434 -0
  407. package/bundled-skills/policy-as-code/references/details.md +204 -0
  408. package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
  409. package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
  410. package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
  411. package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
  412. package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
  413. package/bundled-skills/rag-observability-evals/references/details.md +92 -0
  414. package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
  415. package/bundled-skills/redis/SKILL.md +421 -0
  416. package/bundled-skills/redteam-report-template/SKILL.md +370 -0
  417. package/bundled-skills/remotion-captions/SKILL.md +57 -0
  418. package/bundled-skills/remotion-captions/agents/openai.yaml +7 -0
  419. package/bundled-skills/remotion-captions/assets/remotion-icon.svg +4 -0
  420. package/bundled-skills/remotion-captions/display-captions.md +190 -0
  421. package/bundled-skills/remotion-captions/import-srt-captions.md +73 -0
  422. package/bundled-skills/remotion-captions/transcribe-captions.md +70 -0
  423. package/bundled-skills/remotion-create/SKILL.md +106 -0
  424. package/bundled-skills/remotion-create/agents/openai.yaml +7 -0
  425. package/bundled-skills/remotion-create/assets/remotion-icon.svg +4 -0
  426. package/bundled-skills/remotion-create/tailwind.md +11 -0
  427. package/bundled-skills/remotion-create/video-layout.md +9 -0
  428. package/bundled-skills/remotion-docs/SKILL.md +67 -0
  429. package/bundled-skills/remotion-docs/agents/openai.yaml +7 -0
  430. package/bundled-skills/remotion-docs/assets/remotion-icon.svg +4 -0
  431. package/bundled-skills/remotion-interactivity/SKILL.md +270 -0
  432. package/bundled-skills/remotion-interactivity/agents/openai.yaml +7 -0
  433. package/bundled-skills/remotion-interactivity/assets/remotion-icon.svg +4 -0
  434. package/bundled-skills/remotion-render/SKILL.md +48 -0
  435. package/bundled-skills/remotion-render/agents/openai.yaml +7 -0
  436. package/bundled-skills/remotion-render/assets/remotion-icon.svg +4 -0
  437. package/bundled-skills/remotion-render/transparent-videos.md +106 -0
  438. package/bundled-skills/report-writing/SKILL.md +426 -0
  439. package/bundled-skills/report-writing/references/details.md +187 -0
  440. package/bundled-skills/reverse-proxy/SKILL.md +420 -0
  441. package/bundled-skills/runbook-creation/SKILL.md +438 -0
  442. package/bundled-skills/runbook-creation/references/details.md +71 -0
  443. package/bundled-skills/saas-pricing-strategist/SKILL.md +169 -0
  444. package/bundled-skills/saas-security-posture/SKILL.md +415 -0
  445. package/bundled-skills/sast-scanning/SKILL.md +444 -0
  446. package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
  447. package/bundled-skills/score-eval/SKILL.md +35 -0
  448. package/bundled-skills/security-arsenal/SKILL.md +446 -0
  449. package/bundled-skills/security-arsenal/references/details.md +540 -0
  450. package/bundled-skills/security-automation/SKILL.md +146 -0
  451. package/bundled-skills/semantic-versioning/SKILL.md +434 -0
  452. package/bundled-skills/semantic-versioning/references/details.md +83 -0
  453. package/bundled-skills/service-mesh/SKILL.md +422 -0
  454. package/bundled-skills/soc2-compliance/SKILL.md +409 -0
  455. package/bundled-skills/sops-encryption/SKILL.md +124 -0
  456. package/bundled-skills/sre-dashboards/SKILL.md +143 -0
  457. package/bundled-skills/ssh-configuration/SKILL.md +324 -0
  458. package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
  459. package/bundled-skills/ssl-tls-management/references/details.md +99 -0
  460. package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
  461. package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
  462. package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
  463. package/bundled-skills/systemd-services/SKILL.md +379 -0
  464. package/bundled-skills/terraform-aws/SKILL.md +125 -0
  465. package/bundled-skills/terraform-azure/SKILL.md +415 -0
  466. package/bundled-skills/terraform-azure/references/details.md +231 -0
  467. package/bundled-skills/terraform-gcp/SKILL.md +369 -0
  468. package/bundled-skills/threat-modeling/SKILL.md +487 -0
  469. package/bundled-skills/user-management/SKILL.md +383 -0
  470. package/bundled-skills/using-agent-skills/SKILL.md +220 -0
  471. package/bundled-skills/vector-database-ops/SKILL.md +300 -0
  472. package/bundled-skills/vendor-management/SKILL.md +439 -0
  473. package/bundled-skills/vendor-management/references/details.md +109 -0
  474. package/bundled-skills/vercel-deployments/SKILL.md +296 -0
  475. package/bundled-skills/vllm-server/SKILL.md +236 -0
  476. package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
  477. package/bundled-skills/vpn-setup/SKILL.md +452 -0
  478. package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
  479. package/bundled-skills/waf-setup/SKILL.md +354 -0
  480. package/bundled-skills/waf-setup/references/details.md +211 -0
  481. package/bundled-skills/web2-recon/SKILL.md +440 -0
  482. package/bundled-skills/web2-recon/references/details.md +319 -0
  483. package/bundled-skills/web3-audit/SKILL.md +445 -0
  484. package/bundled-skills/web3-audit/references/details.md +224 -0
  485. package/bundled-skills/windows-hardening/SKILL.md +454 -0
  486. package/bundled-skills/windows-hardening/references/details.md +204 -0
  487. package/bundled-skills/windows-server/SKILL.md +318 -0
  488. package/bundled-skills/writing-guidelines/SKILL.md +60 -0
  489. package/bundled-skills/zero-trust/SKILL.md +461 -0
  490. package/package.json +1 -1
  491. package/skills_index.json +7874 -277
@@ -0,0 +1,318 @@
1
+ ---
2
+ name: cloudflare-pages
3
+ description: Deploy static sites and full-stack apps on Cloudflare Pages with previews,
4
+ functions, and custom domains.
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
+ # Cloudflare Pages
21
+
22
+ Deploy frontend projects with preview builds, edge functions, and global CDN delivery on Cloudflare's network.
23
+
24
+ ## When to Use
25
+
26
+ - Deploying static sites (React, Vue, Astro, Hugo, Next.js static export).
27
+ - Full-stack applications using Pages Functions for server-side logic.
28
+ - Projects that need automatic preview deployments per pull request.
29
+ - Teams that want zero-config CDN with custom domain and TLS.
30
+ - Migrating from Vercel, Netlify, or GitHub Pages to Cloudflare's ecosystem.
31
+
32
+ ## Prerequisites
33
+
34
+ - Node.js 18+ and npm installed locally.
35
+ - A Cloudflare account (free tier works for most projects).
36
+ - Wrangler CLI installed: `npm install -g wrangler`.
37
+ - Authenticated via `wrangler login` or `CLOUDFLARE_API_TOKEN` environment variable.
38
+ - Source code in a Git repository (GitHub or GitLab for dashboard integration).
39
+
40
+ ## Project Setup via Wrangler
41
+
42
+ ### Create a New Project
43
+
44
+ ```bash
45
+ # Create a new Pages project
46
+ npx wrangler pages project create my-site
47
+
48
+ # List existing projects
49
+ npx wrangler pages project list
50
+
51
+ # Delete a project (removes all deployments)
52
+ npx wrangler pages project delete my-site
53
+ ```
54
+
55
+ ### Deploy from Local Build Output
56
+
57
+ ```bash
58
+ # Build your framework first
59
+ npm run build
60
+
61
+ # Deploy the output directory
62
+ npx wrangler pages deploy dist --project-name=my-site
63
+
64
+ # Deploy with a custom branch name (triggers preview URL)
65
+ npx wrangler pages deploy dist --project-name=my-site --branch=feature-auth
66
+
67
+ # Deploy and get the deployment URL in JSON
68
+ npx wrangler pages deploy dist --project-name=my-site --branch=main 2>&1 | tail -1
69
+ ```
70
+
71
+ ### List and Manage Deployments
72
+
73
+ ```bash
74
+ # List recent deployments
75
+ npx wrangler pages deployment list --project-name=my-site
76
+
77
+ # Tail live logs from a deployment
78
+ npx wrangler pages deployment tail --project-name=my-site --environment=production
79
+ ```
80
+
81
+ ## Dashboard Git Integration
82
+
83
+ 1. Navigate to **Workers & Pages > Create application > Pages**.
84
+ 2. Connect your GitHub or GitLab account.
85
+ 3. Select the repository and configure:
86
+ - **Production branch**: `main`
87
+ - **Build command**: `npm run build`
88
+ - **Build output directory**: `dist` (or `build`, `.next`, `public` depending on framework)
89
+ 4. Set environment variables per environment (Production vs Preview).
90
+
91
+ ### Framework Presets
92
+
93
+ Cloudflare auto-detects frameworks. Override if needed:
94
+
95
+ | Framework | Build Command | Output Directory |
96
+ |------------|----------------------|------------------|
97
+ | React CRA | `npm run build` | `build` |
98
+ | Vite | `npm run build` | `dist` |
99
+ | Next.js | `npx @cloudflare/next-on-pages` | `.vercel/output/static` |
100
+ | Astro | `npm run build` | `dist` |
101
+ | Hugo | `hugo` | `public` |
102
+ | SvelteKit | `npm run build` | `.svelte-kit/cloudflare` |
103
+
104
+ ## Preview Deployments
105
+
106
+ Every non-production branch gets a unique preview URL automatically.
107
+
108
+ ```
109
+ # URL format for preview deployments
110
+ https://<commit-hash>.<project-name>.pages.dev
111
+ https://<branch-name>.<project-name>.pages.dev
112
+ ```
113
+
114
+ ### Branch-Based Access Control
115
+
116
+ ```bash
117
+ # Set preview branch patterns in wrangler.toml (Pages-specific)
118
+ # Or configure via dashboard: Settings > Builds & deployments
119
+ # Include branches: feature/*, staging
120
+ # Exclude branches: dependabot/*
121
+ ```
122
+
123
+ ### Preview Comment on Pull Requests
124
+
125
+ Enable the Cloudflare Pages GitHub App to post deployment URLs as PR comments. Configure under **Settings > Builds & deployments > Preview comment**.
126
+
127
+ ## Pages Functions
128
+
129
+ Pages Functions provide server-side logic deployed alongside your static site. Place files in a `functions/` directory at the project root.
130
+
131
+ ### Basic API Route
132
+
133
+ ```typescript
134
+ // functions/api/hello.ts
135
+ export const onRequestGet: PagesFunction = async (context) => {
136
+ return new Response(JSON.stringify({ message: "Hello from the edge" }), {
137
+ headers: { "Content-Type": "application/json" },
138
+ });
139
+ };
140
+
141
+ // functions/api/users/[id].ts — dynamic route parameter
142
+ export const onRequestGet: PagesFunction = async (context) => {
143
+ const userId = context.params.id;
144
+ return new Response(JSON.stringify({ userId }), {
145
+ headers: { "Content-Type": "application/json" },
146
+ });
147
+ };
148
+ ```
149
+
150
+ ### Middleware
151
+
152
+ ```typescript
153
+ // functions/_middleware.ts — runs before all routes
154
+ export const onRequest: PagesFunction = async (context) => {
155
+ const authHeader = context.request.headers.get("Authorization");
156
+ if (!authHeader || !authHeader.startsWith("Bearer ")) {
157
+ return new Response("Unauthorized", { status: 401 });
158
+ }
159
+ return context.next();
160
+ };
161
+ ```
162
+
163
+ ### Functions with Bindings
164
+
165
+ ```typescript
166
+ // functions/api/data.ts — using KV and D1 bindings
167
+ interface Env {
168
+ MY_KV: KVNamespace;
169
+ MY_DB: D1Database;
170
+ MY_BUCKET: R2Bucket;
171
+ }
172
+
173
+ export const onRequestGet: PagesFunction<Env> = async (context) => {
174
+ // Read from KV
175
+ const cached = await context.env.MY_KV.get("key");
176
+ if (cached) return new Response(cached);
177
+
178
+ // Query D1
179
+ const result = await context.env.MY_DB.prepare(
180
+ "SELECT * FROM items LIMIT 10"
181
+ ).all();
182
+
183
+ // Cache in KV
184
+ await context.env.MY_KV.put("key", JSON.stringify(result.results), {
185
+ expirationTtl: 300,
186
+ });
187
+
188
+ return Response.json(result.results);
189
+ };
190
+ ```
191
+
192
+ ## Wrangler Configuration
193
+
194
+ ```toml
195
+ # wrangler.toml — Pages project configuration
196
+ name = "my-site"
197
+ compatibility_date = "2024-09-01"
198
+ pages_build_output_dir = "dist"
199
+
200
+ # KV namespace binding
201
+ [[kv_namespaces]]
202
+ binding = "MY_KV"
203
+ id = "abc123def456"
204
+
205
+ # D1 database binding
206
+ [[d1_databases]]
207
+ binding = "MY_DB"
208
+ database_name = "my-app-db"
209
+ database_id = "xxxx-yyyy-zzzz"
210
+
211
+ # R2 bucket binding
212
+ [[r2_buckets]]
213
+ binding = "MY_BUCKET"
214
+ bucket_name = "app-assets"
215
+
216
+ # Environment variables
217
+ [vars]
218
+ API_BASE_URL = "https://api.example.com"
219
+ ```
220
+
221
+ ## Headers and Redirects
222
+
223
+ ### Custom Headers
224
+
225
+ ```
226
+ # public/_headers
227
+ /assets/*
228
+ Cache-Control: public, max-age=31536000, immutable
229
+
230
+ /*
231
+ X-Frame-Options: DENY
232
+ X-Content-Type-Options: nosniff
233
+ Referrer-Policy: strict-origin-when-cross-origin
234
+ Permissions-Policy: camera=(), microphone=(), geolocation=()
235
+ Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'
236
+
237
+ /api/*
238
+ Access-Control-Allow-Origin: https://example.com
239
+ Access-Control-Allow-Methods: GET, POST, OPTIONS
240
+ ```
241
+
242
+ ### Redirects
243
+
244
+ ```
245
+ # public/_redirects
246
+ /old-page /new-page 301
247
+ /blog/:slug /posts/:slug 301
248
+ /docs/* https://docs.example.com/:splat 302
249
+ /home / 302
250
+ ```
251
+
252
+ ## Custom Domains
253
+
254
+ ```bash
255
+ # Add a custom domain via Cloudflare dashboard:
256
+ # Pages project > Custom domains > Set up a custom domain
257
+
258
+ # Or via API
259
+ curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/my-site/domains" \
260
+ -H "Authorization: Bearer $CF_API_TOKEN" \
261
+ -H "Content-Type: application/json" \
262
+ -d '{"name":"www.example.com"}'
263
+ ```
264
+
265
+ ## CI/CD Integration
266
+
267
+ ### GitHub Actions
268
+
269
+ ```yaml
270
+ # .github/workflows/deploy.yml
271
+ name: Deploy to Cloudflare Pages
272
+ on:
273
+ push:
274
+ branches: [main]
275
+ pull_request:
276
+
277
+ jobs:
278
+ deploy:
279
+ runs-on: ubuntu-latest
280
+ steps:
281
+ - uses: actions/checkout@v4
282
+ - uses: actions/setup-node@v4
283
+ with:
284
+ node-version: 20
285
+ cache: npm
286
+ - run: npm ci
287
+ - run: npm run build
288
+ - uses: cloudflare/wrangler-action@v3
289
+ with:
290
+ apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
291
+ accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
292
+ command: pages deploy dist --project-name=my-site
293
+ ```
294
+
295
+ ## Troubleshooting
296
+
297
+ | Symptom | Cause | Fix |
298
+ |---------|-------|-----|
299
+ | Build fails with out-of-memory | Build exceeds 1 GB RAM limit | Reduce dependencies; use `NODE_OPTIONS=--max_old_space_size=768` |
300
+ | Functions return 404 | `functions/` directory not at project root | Move `functions/` to repo root, not inside `src/` |
301
+ | Preview URL shows old content | Browser cache or stale deployment | Hard refresh; check deployment list for latest commit hash |
302
+ | Custom domain shows SSL error | DNS not proxied through Cloudflare | Enable orange cloud (proxy) on the CNAME record |
303
+ | `_headers` file ignored | File not in build output directory | Place in `public/` so it copies to `dist/` during build |
304
+ | Bindings undefined in Functions | Missing `wrangler.toml` or dashboard config | Add bindings in `wrangler.toml` and redeploy |
305
+ | 1 MB function size limit exceeded | Too many dependencies bundled | Tree-shake; move large deps to KV or R2 |
306
+
307
+ ## Related Skills
308
+
309
+ - cloudflare-workers (`cloudflare-workers`) - Edge backend logic and API routes
310
+ - cloudflare-r2 (`cloudflare-r2`) - Object storage for assets and uploads
311
+ - cloudflare-zero-trust (`cloudflare-zero-trust`) - Protect preview deployments with Access policies
312
+ - cdn-setup (`cdn-setup`) - General CDN configuration patterns
313
+
314
+ ## Limitations
315
+
316
+ - Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
317
+ - Docs-only import: upstream scripts and templates not bundled.
318
+
@@ -0,0 +1,353 @@
1
+ ---
2
+ name: cloudflare-r2
3
+ description: Manage Cloudflare R2 buckets, lifecycle, and signed URLs. Use for low-egress
4
+ object storage and media delivery.
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
+ # Cloudflare R2
21
+
22
+ S3-compatible object storage with zero egress fees, built on Cloudflare's global network.
23
+
24
+ ## When to Use
25
+
26
+ - Storing user uploads, media files, backups, or static assets.
27
+ - Replacing AWS S3 to eliminate egress costs for read-heavy workloads.
28
+ - Serving files at the edge via Workers or public bucket access.
29
+ - Building multi-cloud storage that avoids vendor lock-in (S3 API compatible).
30
+ - Storing ML model artifacts, training data, or inference results.
31
+
32
+ ## Prerequisites
33
+
34
+ - Cloudflare account with R2 enabled (dashboard > R2 > subscribe).
35
+ - Wrangler CLI v3+ installed: `npm install -g wrangler`.
36
+ - Authenticated via `wrangler login` or `CLOUDFLARE_API_TOKEN`.
37
+ - For S3 API access: R2 API token created under **R2 > Manage R2 API Tokens**.
38
+
39
+ ## Bucket Management with Wrangler
40
+
41
+ ### Create and List Buckets
42
+
43
+ ```bash
44
+ # Create a new bucket
45
+ npx wrangler r2 bucket create app-assets
46
+
47
+ # Create a bucket in a specific region (hint for data locality)
48
+ npx wrangler r2 bucket create eu-uploads --location=eu
49
+
50
+ # List all buckets
51
+ npx wrangler r2 bucket list
52
+
53
+ # Delete an empty bucket
54
+ npx wrangler r2 bucket delete old-bucket
55
+ ```
56
+
57
+ ### Object Operations
58
+
59
+ ```bash
60
+ # Upload a single file
61
+ npx wrangler r2 object put app-assets/images/logo.png --file=./logo.png
62
+
63
+ # Upload with content type
64
+ npx wrangler r2 object put app-assets/data/report.json \
65
+ --file=./report.json \
66
+ --content-type="application/json"
67
+
68
+ # Download an object
69
+ npx wrangler r2 object get app-assets/images/logo.png --file=./downloaded-logo.png
70
+
71
+ # Delete an object
72
+ npx wrangler r2 object delete app-assets/images/old-logo.png
73
+
74
+ # Get object metadata
75
+ npx wrangler r2 object head app-assets/images/logo.png
76
+ ```
77
+
78
+ ## S3-Compatible API Access
79
+
80
+ R2 supports the S3 API, so existing tools (AWS CLI, boto3, s3cmd) work out of the box.
81
+
82
+ ### Generate R2 API Tokens
83
+
84
+ 1. Go to **R2 > Manage R2 API Tokens > Create API token**.
85
+ 2. Select permissions: Object Read & Write, or Object Read only.
86
+ 3. Scope to specific buckets if possible.
87
+ 4. Save the Access Key ID and Secret Access Key.
88
+
89
+ ### AWS CLI Configuration
90
+
91
+ ```bash
92
+ # Configure a named profile for R2
93
+ aws configure --profile r2
94
+ # Access Key ID: <your-r2-access-key>
95
+ # Secret Access Key: <your-r2-secret-key>
96
+ # Region: auto
97
+ # Output: json
98
+
99
+ # Use the R2 endpoint
100
+ export R2_ENDPOINT="https://<ACCOUNT_ID>.r2.cloudflarestorage.com"
101
+
102
+ # List buckets
103
+ aws s3 ls --endpoint-url=$R2_ENDPOINT --profile=r2
104
+
105
+ # Sync a directory
106
+ aws s3 sync ./dist s3://app-assets/static/ \
107
+ --endpoint-url=$R2_ENDPOINT \
108
+ --profile=r2
109
+
110
+ # Copy a file
111
+ aws s3 cp ./backup.tar.gz s3://app-assets/backups/backup-$(date +%Y%m%d).tar.gz \
112
+ --endpoint-url=$R2_ENDPOINT \
113
+ --profile=r2
114
+
115
+ # List objects with prefix
116
+ aws s3 ls s3://app-assets/images/ \
117
+ --endpoint-url=$R2_ENDPOINT \
118
+ --profile=r2
119
+
120
+ # Remove objects by prefix
121
+ aws s3 rm s3://app-assets/tmp/ --recursive \
122
+ --endpoint-url=$R2_ENDPOINT \
123
+ --profile=r2
124
+ ```
125
+
126
+ ### Python boto3 Client
127
+
128
+ ```python
129
+ import boto3
130
+
131
+ s3 = boto3.client(
132
+ "s3",
133
+ endpoint_url="https://<ACCOUNT_ID>.r2.cloudflarestorage.com",
134
+ aws_access_key_id="<R2_ACCESS_KEY>",
135
+ aws_secret_access_key="<R2_SECRET_KEY>",
136
+ region_name="auto",
137
+ )
138
+
139
+ # Upload file
140
+ s3.upload_file("./report.pdf", "app-assets", "reports/report.pdf")
141
+
142
+ # Generate presigned URL (valid for 1 hour)
143
+ url = s3.generate_presigned_url(
144
+ "get_object",
145
+ Params={"Bucket": "app-assets", "Key": "reports/report.pdf"},
146
+ ExpiresIn=3600,
147
+ )
148
+ print(url)
149
+
150
+ # List objects
151
+ response = s3.list_objects_v2(Bucket="app-assets", Prefix="images/", MaxKeys=100)
152
+ for obj in response.get("Contents", []):
153
+ print(f"{obj['Key']} - {obj['Size']} bytes")
154
+ ```
155
+
156
+ ## Worker Bindings
157
+
158
+ Bind R2 buckets to Workers or Pages Functions for server-side access without API tokens.
159
+
160
+ ### Wrangler Configuration
161
+
162
+ ```toml
163
+ # wrangler.toml
164
+ name = "asset-worker"
165
+ main = "src/index.ts"
166
+ compatibility_date = "2024-09-01"
167
+
168
+ [[r2_buckets]]
169
+ binding = "ASSETS"
170
+ bucket_name = "app-assets"
171
+
172
+ [[r2_buckets]]
173
+ binding = "UPLOADS"
174
+ bucket_name = "user-uploads"
175
+ ```
176
+
177
+ ### Worker with R2 Operations
178
+
179
+ ```typescript
180
+ // src/index.ts
181
+ interface Env {
182
+ ASSETS: R2Bucket;
183
+ UPLOADS: R2Bucket;
184
+ }
185
+
186
+ export default {
187
+ async fetch(request: Request, env: Env): Promise<Response> {
188
+ const url = new URL(request.url);
189
+
190
+ // GET — serve file from R2
191
+ if (request.method === "GET") {
192
+ const key = url.pathname.slice(1); // strip leading /
193
+ const object = await env.ASSETS.get(key);
194
+
195
+ if (!object) {
196
+ return new Response("Not Found", { status: 404 });
197
+ }
198
+
199
+ const headers = new Headers();
200
+ object.writeHttpMetadata(headers);
201
+ headers.set("etag", object.httpEtag);
202
+ headers.set("cache-control", "public, max-age=86400");
203
+
204
+ return new Response(object.body, { headers });
205
+ }
206
+
207
+ // PUT — upload file to R2
208
+ if (request.method === "PUT") {
209
+ const key = url.pathname.slice(1);
210
+ const contentType = request.headers.get("content-type") || "application/octet-stream";
211
+
212
+ await env.UPLOADS.put(key, request.body, {
213
+ httpMetadata: { contentType },
214
+ customMetadata: { uploadedAt: new Date().toISOString() },
215
+ });
216
+
217
+ return new Response(JSON.stringify({ key, status: "uploaded" }), {
218
+ headers: { "Content-Type": "application/json" },
219
+ });
220
+ }
221
+
222
+ // DELETE — remove file
223
+ if (request.method === "DELETE") {
224
+ const key = url.pathname.slice(1);
225
+ await env.UPLOADS.delete(key);
226
+ return new Response(null, { status: 204 });
227
+ }
228
+
229
+ return new Response("Method Not Allowed", { status: 405 });
230
+ },
231
+ };
232
+ ```
233
+
234
+ ### Presigned URL Generation in a Worker
235
+
236
+ ```typescript
237
+ // Generate time-limited signed URLs using Workers
238
+ import { AwsClient } from "aws4fetch";
239
+
240
+ interface Env {
241
+ R2_ACCESS_KEY: string;
242
+ R2_SECRET_KEY: string;
243
+ R2_ACCOUNT_ID: string;
244
+ }
245
+
246
+ export default {
247
+ async fetch(request: Request, env: Env): Promise<Response> {
248
+ const aws = new AwsClient({
249
+ accessKeyId: env.R2_ACCESS_KEY,
250
+ secretAccessKey: env.R2_SECRET_KEY,
251
+ });
252
+
253
+ const url = new URL(request.url);
254
+ const key = url.searchParams.get("key");
255
+ if (!key) return new Response("Missing key", { status: 400 });
256
+
257
+ const r2Url = `https://${env.R2_ACCOUNT_ID}.r2.cloudflarestorage.com/app-assets/${key}`;
258
+
259
+ const signed = await aws.sign(new Request(r2Url), {
260
+ aws: { signQuery: true },
261
+ });
262
+
263
+ return Response.json({ url: signed.url });
264
+ },
265
+ };
266
+ ```
267
+
268
+ ## Public Bucket Access
269
+
270
+ Enable public access to serve files directly without a Worker.
271
+
272
+ 1. Go to **R2 > bucket > Settings > Public access**.
273
+ 2. Enable and set a custom domain (e.g., `assets.example.com`).
274
+ 3. Objects are accessible at `https://assets.example.com/<key>`.
275
+
276
+ ```bash
277
+ # Or enable via the r2.dev subdomain (for testing)
278
+ # Bucket Settings > R2.dev subdomain > Allow Access
279
+ # URL: https://pub-<hash>.r2.dev/<key>
280
+ ```
281
+
282
+ ## Lifecycle Rules
283
+
284
+ Configure automatic object expiration or transition.
285
+
286
+ ```bash
287
+ # Set lifecycle rules via the Cloudflare dashboard:
288
+ # R2 > bucket > Settings > Object lifecycle rules
289
+
290
+ # Or via API
291
+ curl -X PUT "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/r2/buckets/app-assets/lifecycle" \
292
+ -H "Authorization: Bearer $CF_API_TOKEN" \
293
+ -H "Content-Type: application/json" \
294
+ -d '{
295
+ "rules": [
296
+ {
297
+ "id": "expire-tmp-files",
298
+ "enabled": true,
299
+ "conditions": { "prefix": "tmp/" },
300
+ "actions": { "deleteObject": { "daysAfterCreationDate": 7 } }
301
+ },
302
+ {
303
+ "id": "expire-old-logs",
304
+ "enabled": true,
305
+ "conditions": { "prefix": "logs/" },
306
+ "actions": { "deleteObject": { "daysAfterCreationDate": 90 } }
307
+ }
308
+ ]
309
+ }'
310
+ ```
311
+
312
+ ## CORS Configuration
313
+
314
+ ```bash
315
+ # Set CORS policy for browser-based uploads
316
+ curl -X PUT "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/r2/buckets/app-assets/cors" \
317
+ -H "Authorization: Bearer $CF_API_TOKEN" \
318
+ -H "Content-Type: application/json" \
319
+ -d '{
320
+ "corsRules": [
321
+ {
322
+ "allowedOrigins": ["https://example.com"],
323
+ "allowedMethods": ["GET", "PUT", "HEAD"],
324
+ "allowedHeaders": ["Content-Type", "Authorization"],
325
+ "maxAgeSeconds": 3600
326
+ }
327
+ ]
328
+ }'
329
+ ```
330
+
331
+ ## Troubleshooting
332
+
333
+ | Symptom | Cause | Fix |
334
+ |---------|-------|-----|
335
+ | `NoSuchBucket` error via S3 API | Wrong endpoint or bucket name | Verify endpoint is `https://<ACCOUNT_ID>.r2.cloudflarestorage.com` |
336
+ | `SignatureDoesNotMatch` | Incorrect secret key or endpoint mismatch | Regenerate R2 API token; ensure region is `auto` |
337
+ | Uploads succeed but GET returns 404 | Key path mismatch (leading slash) | R2 keys should not start with `/` |
338
+ | Slow uploads for large files | Single-stream upload | Use multipart upload; set `--expected-size` with wrangler |
339
+ | CORS errors in browser | Missing CORS config on bucket | Add CORS rules for your origin domain |
340
+ | Worker binding returns `undefined` | `wrangler.toml` binding name mismatch | Verify `binding` name matches `Env` interface property |
341
+ | Public access returns 403 | Public access not enabled | Enable in bucket Settings > Public access |
342
+
343
+ ## Related Skills
344
+
345
+ - cloudflare-workers (`cloudflare-workers`) - Signed URL generation and edge file serving
346
+ - cloudflare-pages (`cloudflare-pages`) - Pages Functions with R2 bindings
347
+ - cdn-setup (`cdn-setup`) - CDN configuration for asset delivery
348
+
349
+ ## Limitations
350
+
351
+ - Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
352
+ - Docs-only import: upstream scripts and templates not bundled.
353
+