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,524 @@
1
+ # Details (moved from SKILL.md)
2
+
3
+ > Extended reference content for `identity-access-management`, kept under `references/` so the entrypoint stays within the audit budget.
4
+
5
+ ## 5. SSO Integration Patterns
6
+
7
+ ### SAML vs OIDC Decision Guide
8
+
9
+ | Factor | SAML 2.0 | OIDC / OAuth 2.0 |
10
+ |---|---|---|
11
+ | Best for | Enterprise SaaS apps | SPAs, mobile apps, APIs |
12
+ | Token format | XML assertions | JWT tokens |
13
+ | Setup complexity | Higher (certificates, metadata XML) | Lower (client ID + secret) |
14
+ | Logout | Inconsistent (SLO is poorly supported) | Token expiry + revocation |
15
+ | Use when | App only supports SAML | You have a choice, or need API auth |
16
+
17
+ **Rule of thumb**: If the SaaS vendor supports OIDC, prefer it. If they only support SAML, use SAML. Never use LDAP-over-internet.
18
+
19
+ ### Integrating Common SaaS Apps
20
+
21
+ #### Slack Enterprise SSO
22
+
23
+ ```bash
24
+ # Okta OIDC integration for Slack
25
+ # 1. In Okta: Applications > Browse App Catalog > Slack
26
+ # 2. Configure with your Slack workspace URL
27
+ # 3. Enable SCIM provisioning
28
+
29
+ # Verify Slack SCIM connection
30
+ curl -s -H "Authorization: Bearer ${SLACK_SCIM_TOKEN}" \
31
+ "https://api.slack.com/scim/v2/Users?count=5" | jq '.Resources[].userName'
32
+ ```
33
+
34
+ #### GitHub Organization SSO
35
+
36
+ ```bash
37
+ # Configure SAML for GitHub Org (requires GitHub Enterprise Cloud)
38
+ # 1. GitHub Org Settings > Authentication security > Enable SAML
39
+ # 2. Provide IdP SSO URL, IdP issuer, public certificate from your IdP
40
+
41
+ # Use GitHub CLI to verify SSO status
42
+ gh api orgs/company/credential-authorizations --paginate \
43
+ | jq '.[] | {login: .login, credential_type: .credential_type, authorized_at: .authorized_credential_note}'
44
+
45
+ # Require SAML SSO for all org members
46
+ gh api -X PATCH orgs/company \
47
+ -f saml_enforced=true
48
+ ```
49
+
50
+ #### AWS SSO (IAM Identity Center)
51
+
52
+ ```bash
53
+ # Configure AWS IAM Identity Center with external IdP
54
+ aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text
55
+
56
+ INSTANCE_ARN="arn:aws:sso:::instance/ssoins-1234567890"
57
+ IDENTITY_STORE_ID="d-1234567890"
58
+
59
+ # Create a permission set
60
+ aws sso-admin create-permission-set \
61
+ --instance-arn "$INSTANCE_ARN" \
62
+ --name "DeveloperAccess" \
63
+ --description "Read-only + deploy access for engineers" \
64
+ --session-duration "PT8H"
65
+
66
+ # Attach AWS managed policy to permission set
67
+ PERMISSION_SET_ARN="arn:aws:sso:::permissionSet/ssoins-1234567890/ps-abc123"
68
+ aws sso-admin attach-managed-policy-to-permission-set \
69
+ --instance-arn "$INSTANCE_ARN" \
70
+ --permission-set-arn "$PERMISSION_SET_ARN" \
71
+ --managed-policy-arn "arn:aws:iam::aws:policy/ReadOnlyAccess"
72
+
73
+ # Assign group to AWS account with permission set
74
+ aws sso-admin create-account-assignment \
75
+ --instance-arn "$INSTANCE_ARN" \
76
+ --target-id "123456789012" \
77
+ --target-type AWS_ACCOUNT \
78
+ --permission-set-arn "$PERMISSION_SET_ARN" \
79
+ --principal-type GROUP \
80
+ --principal-id "a1b2c3d4-5678-90ab-cdef-GROUP001"
81
+ ```
82
+
83
+ ---
84
+
85
+
86
+ ## 6. SCIM Provisioning
87
+
88
+ SCIM (System for Cross-domain Identity Management) automates user lifecycle across SaaS apps.
89
+
90
+ ### SCIM API Examples
91
+
92
+ ```bash
93
+ # Standard SCIM 2.0 endpoints (most IdPs and SaaS apps follow this)
94
+ SCIM_BASE="https://app.example.com/scim/v2"
95
+ SCIM_TOKEN="your-scim-bearer-token"
96
+
97
+ # List users
98
+ curl -s -H "Authorization: Bearer ${SCIM_TOKEN}" \
99
+ "${SCIM_BASE}/Users?count=10&startIndex=1" | jq '.Resources[] | {id, userName, active}'
100
+
101
+ # Create a user via SCIM
102
+ curl -s -X POST \
103
+ -H "Authorization: Bearer ${SCIM_TOKEN}" \
104
+ -H "Content-Type: application/scim+json" \
105
+ "${SCIM_BASE}/Users" \
106
+ -d '{
107
+ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
108
+ "userName": "alice@company.com",
109
+ "name": { "givenName": "Alice", "familyName": "Engineer" },
110
+ "emails": [{ "primary": true, "value": "alice@company.com", "type": "work" }],
111
+ "active": true,
112
+ "groups": []
113
+ }' | jq '{id, userName, active}'
114
+
115
+ # Deactivate a user via SCIM (PATCH is the standard for partial updates)
116
+ USER_SCIM_ID="abc-123-def"
117
+ curl -s -X PATCH \
118
+ -H "Authorization: Bearer ${SCIM_TOKEN}" \
119
+ -H "Content-Type: application/scim+json" \
120
+ "${SCIM_BASE}/Users/${USER_SCIM_ID}" \
121
+ -d '{
122
+ "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
123
+ "Operations": [{ "op": "replace", "value": { "active": false } }]
124
+ }' | jq '{id, userName, active}'
125
+
126
+ # Delete a user permanently via SCIM
127
+ curl -s -X DELETE \
128
+ -H "Authorization: Bearer ${SCIM_TOKEN}" \
129
+ "${SCIM_BASE}/Users/${USER_SCIM_ID}"
130
+ ```
131
+
132
+ ### SCIM Group Management
133
+
134
+ ```bash
135
+ # Create a group via SCIM
136
+ curl -s -X POST \
137
+ -H "Authorization: Bearer ${SCIM_TOKEN}" \
138
+ -H "Content-Type: application/scim+json" \
139
+ "${SCIM_BASE}/Groups" \
140
+ -d '{
141
+ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
142
+ "displayName": "Engineering",
143
+ "members": [
144
+ { "value": "user-id-001", "display": "alice@company.com" },
145
+ { "value": "user-id-002", "display": "bob@company.com" }
146
+ ]
147
+ }' | jq '{id, displayName}'
148
+
149
+ # Add a member to an existing group
150
+ GROUP_SCIM_ID="grp-456"
151
+ curl -s -X PATCH \
152
+ -H "Authorization: Bearer ${SCIM_TOKEN}" \
153
+ -H "Content-Type: application/scim+json" \
154
+ "${SCIM_BASE}/Groups/${GROUP_SCIM_ID}" \
155
+ -d '{
156
+ "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
157
+ "Operations": [{
158
+ "op": "add",
159
+ "path": "members",
160
+ "value": [{ "value": "user-id-003" }]
161
+ }]
162
+ }'
163
+ ```
164
+
165
+ ---
166
+
167
+
168
+ ## 7. MFA Enforcement
169
+
170
+ ### WebAuthn / Passkeys (Strongest)
171
+
172
+ WebAuthn (FIDO2) hardware keys and passkeys are phishing-resistant and should be the primary MFA factor.
173
+
174
+ ```bash
175
+ # Okta: Enforce WebAuthn as primary factor
176
+ curl -s -X PUT \
177
+ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
178
+ -H "Content-Type: application/json" \
179
+ "${OKTA_ORG_URL}/api/v1/org/factors/webauthn" \
180
+ -d '{ "status": "ACTIVE" }'
181
+
182
+ # Google Workspace: Enforce security keys only (disable SMS/voice)
183
+ gam update org "/" 2sv enforced allowedmethods security_key
184
+
185
+ # Azure AD: Require phishing-resistant MFA via conditional access
186
+ # (use the Graph API conditional access endpoint with authenticationStrengths)
187
+ curl -s -X POST \
188
+ -H "Authorization: Bearer ${ACCESS_TOKEN}" \
189
+ -H "Content-Type: application/json" \
190
+ "https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies" \
191
+ -d '{
192
+ "displayName": "Require phishing-resistant MFA for admins",
193
+ "state": "enabled",
194
+ "conditions": {
195
+ "users": { "includeRoles": ["62e90394-69f5-4237-9190-012177145e10"] },
196
+ "applications": { "includeApplications": ["All"] }
197
+ },
198
+ "grantControls": {
199
+ "operator": "OR",
200
+ "authenticationStrength": {
201
+ "id": "00000000-0000-0000-0000-000000000004"
202
+ }
203
+ }
204
+ }'
205
+ ```
206
+
207
+ ### TOTP Backup Configuration
208
+
209
+ ```bash
210
+ # Generate backup codes for users (Okta)
211
+ USER_ID="00u1abc123"
212
+ curl -s -X POST \
213
+ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
214
+ "${OKTA_ORG_URL}/api/v1/users/${USER_ID}/factors" \
215
+ -d '{
216
+ "factorType": "token:software:totp",
217
+ "provider": "GOOGLE"
218
+ }' | jq '{id: .id, status: .status}'
219
+ ```
220
+
221
+ ### MFA Bypass Procedure (Emergency)
222
+
223
+ ```bash
224
+ # Okta: Reset MFA for a locked-out user
225
+ USER_ID="00u1abc123"
226
+ # List enrolled factors
227
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
228
+ "${OKTA_ORG_URL}/api/v1/users/${USER_ID}/factors" | jq '.[].factorType'
229
+
230
+ # Delete a specific factor to allow re-enrollment
231
+ FACTOR_ID="fct1abc123"
232
+ curl -s -X DELETE \
233
+ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
234
+ "${OKTA_ORG_URL}/api/v1/users/${USER_ID}/factors/${FACTOR_ID}"
235
+
236
+ # Google Workspace: Generate backup verification codes
237
+ gam user alice@company.com update backupcodes
238
+
239
+ # Azure AD: Require re-registration of MFA methods
240
+ az rest --method DELETE \
241
+ --url "https://graph.microsoft.com/v1.0/users/${USER_OID}/authentication/phoneMethods/3179e48a-750b-4051-897c-87b9720928f7"
242
+ ```
243
+
244
+ ---
245
+
246
+
247
+ ## 8. Role-Based Access Control
248
+
249
+ ### Group-Based Access Patterns
250
+
251
+ Map every application permission to a group, never to an individual user.
252
+
253
+ ```bash
254
+ # Naming convention: APP-ROLE
255
+ # Examples:
256
+ # aws-developer -> AWS ReadOnly + deploy
257
+ # aws-admin -> AWS AdministratorAccess
258
+ # github-engineer -> GitHub write access
259
+ # github-admin -> GitHub admin access
260
+ # slack-member -> Slack standard member
261
+ # pagerduty-oncall -> PagerDuty responder role
262
+
263
+ # Okta: Create group rules for automatic assignment based on department
264
+ curl -s -X POST \
265
+ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
266
+ -H "Content-Type: application/json" \
267
+ "${OKTA_ORG_URL}/api/v1/groups/rules" \
268
+ -d '{
269
+ "type": "group_rule",
270
+ "name": "Auto-assign engineers to GitHub",
271
+ "conditions": {
272
+ "expression": {
273
+ "value": "user.department == \"Engineering\"",
274
+ "type": "urn:okta:expression:1.0"
275
+ }
276
+ },
277
+ "actions": {
278
+ "assignUserToGroups": { "groupIds": ["GITHUB_ENGINEERS_GROUP_ID"] }
279
+ }
280
+ }'
281
+ ```
282
+
283
+ ### Just-in-Time (JIT) Access
284
+
285
+ ```bash
286
+ # AWS: Grant temporary elevated access using STS assume-role
287
+ # The user assumes a role that expires after a set duration
288
+ aws sts assume-role \
289
+ --role-arn "arn:aws:iam::123456789012:role/EmergencyAdmin" \
290
+ --role-session-name "alice-incident-2026-03-24" \
291
+ --duration-seconds 3600 \
292
+ | jq '{AccessKeyId: .Credentials.AccessKeyId, Expiration: .Credentials.Expiration}'
293
+
294
+ # Okta: Create a time-limited group membership (via API scheduled task)
295
+ # Add user to admin group
296
+ curl -s -X PUT \
297
+ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
298
+ "${OKTA_ORG_URL}/api/v1/groups/${ADMIN_GROUP_ID}/users/${USER_ID}"
299
+
300
+ # Schedule removal after 4 hours (use a cron job or automation tool)
301
+ echo "0 */4 * * * curl -s -X DELETE -H 'Authorization: SSWS ${OKTA_API_TOKEN}' \
302
+ '${OKTA_ORG_URL}/api/v1/groups/${ADMIN_GROUP_ID}/users/${USER_ID}'" | crontab -
303
+ ```
304
+
305
+ ### Break-Glass Accounts
306
+
307
+ ```bash
308
+ # Create break-glass accounts that bypass SSO/MFA for emergency access
309
+ # These accounts must be:
310
+ # 1. Excluded from conditional access / MFA policies
311
+ # 2. Protected with extremely long passwords stored in a physical safe
312
+ # 3. Monitored with alerts on any usage
313
+
314
+ # Azure AD: Create break-glass account
315
+ az ad user create \
316
+ --display-name "Break Glass 1" \
317
+ --user-principal-name "breakglass1@company.onmicrosoft.com" \
318
+ --password "$(openssl rand -base64 48)" \
319
+ --force-change-password-next-sign-in false
320
+
321
+ # Assign Global Administrator role
322
+ az ad group member add --group "SG-BreakGlass" --member-id "$BREAKGLASS_OID"
323
+
324
+ # Set up alert on break-glass sign-in (Azure Monitor)
325
+ az monitor activity-log alert create \
326
+ --name "BreakGlass-SignIn-Alert" \
327
+ --resource-group "security-rg" \
328
+ --condition category=Administrative and caller=breakglass1@company.onmicrosoft.com \
329
+ --action-group "/subscriptions/SUB_ID/resourceGroups/security-rg/providers/microsoft.insights/actionGroups/SecurityTeam"
330
+ ```
331
+
332
+ ---
333
+
334
+
335
+ ## 9. Audit & Compliance
336
+
337
+ ### Login Audit Logs
338
+
339
+ ```bash
340
+ # Google Workspace: Pull login audit logs
341
+ gam report login user all start "2026-03-01" end "2026-03-24" \
342
+ fields "actorEmail,ipAddress,loginType,isSecondFactor,isSuspicious"
343
+
344
+ # Okta: Query system log for authentication events
345
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
346
+ "${OKTA_ORG_URL}/api/v1/logs?filter=eventType+eq+\"user.session.start\"&since=2026-03-01T00:00:00Z&limit=100" \
347
+ | jq '.[] | {actor: .actor.displayName, time: .published, outcome: .outcome.result, ip: .client.ipAddress}'
348
+
349
+ # Azure AD: Pull sign-in logs via Graph API
350
+ curl -s -H "Authorization: Bearer ${ACCESS_TOKEN}" \
351
+ "https://graph.microsoft.com/v1.0/auditLogs/signIns?\$filter=createdDateTime ge 2026-03-01T00:00:00Z&\$top=50" \
352
+ | jq '.value[] | {user: .userDisplayName, app: .appDisplayName, status: .status.errorCode, ip: .ipAddress, mfa: .mfaDetail}'
353
+ ```
354
+
355
+ ### Access Reviews
356
+
357
+ ```bash
358
+ # List all users and their group memberships for quarterly access review
359
+ # Google Workspace
360
+ gam print group-members fields email,role > /tmp/access-review-groups.csv
361
+
362
+ # Okta: Export all users with their app assignments
363
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
364
+ "${OKTA_ORG_URL}/api/v1/users?limit=200" \
365
+ | jq -r '.[] | [.profile.email, .status, .lastLogin] | @csv' > /tmp/okta-users.csv
366
+
367
+ # For each user, list their app assignments
368
+ while IFS= read -r user_id; do
369
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
370
+ "${OKTA_ORG_URL}/api/v1/users/${user_id}/appLinks" \
371
+ | jq -r '.[] | [.label, .linkUrl] | @csv'
372
+ done < /tmp/okta-user-ids.txt > /tmp/okta-access-review.csv
373
+
374
+ # Azure AD: List role assignments
375
+ az role assignment list --all --query '[].{principal:principalName, role:roleDefinitionName, scope:scope}' -o table
376
+ ```
377
+
378
+ ### Compliance Reporting
379
+
380
+ ```bash
381
+ # Count of users with/without MFA enrolled
382
+ # Google Workspace
383
+ echo "=== MFA Enrollment Report ==="
384
+ echo "Enrolled:"
385
+ gam print users fields isEnrolledIn2Sv | grep -c True
386
+ echo "Not enrolled:"
387
+ gam print users fields isEnrolledIn2Sv | grep -c False
388
+
389
+ # Okta: Users without any MFA factor
390
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
391
+ "${OKTA_ORG_URL}/api/v1/users?filter=status+eq+\"ACTIVE\"&limit=200" \
392
+ | jq '[.[] | select(.credentials.provider.type != "SOCIAL") | .id] | length'
393
+
394
+ # Check for stale accounts (no login in 90 days)
395
+ NINETY_DAYS_AGO=$(date -d "-90 days" +%Y-%m-%dT00:00:00Z 2>/dev/null || date -v-90d +%Y-%m-%dT00:00:00Z)
396
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
397
+ "${OKTA_ORG_URL}/api/v1/users?filter=lastLogin+lt+\"${NINETY_DAYS_AGO}\"&limit=200" \
398
+ | jq '.[] | {email: .profile.email, lastLogin: .lastLogin}'
399
+ ```
400
+
401
+ ---
402
+
403
+
404
+ ## 10. Offboarding
405
+
406
+ ### Account Deactivation Checklist
407
+
408
+ Run this sequence when an employee departs. Order matters -- revoke sessions first, then deactivate.
409
+
410
+ ```bash
411
+ DEPARTING_USER="alice@company.com"
412
+
413
+ # Step 1: Revoke all active sessions immediately
414
+ # Okta
415
+ USER_ID=$(curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
416
+ "${OKTA_ORG_URL}/api/v1/users/${DEPARTING_USER}" | jq -r '.id')
417
+
418
+ curl -s -X DELETE \
419
+ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
420
+ "${OKTA_ORG_URL}/api/v1/users/${USER_ID}/sessions"
421
+
422
+ # Google Workspace: Revoke tokens and sign out
423
+ gam user "${DEPARTING_USER}" signout
424
+ gam user "${DEPARTING_USER}" deprovision
425
+
426
+ # Azure AD: Revoke all refresh tokens
427
+ az ad user update --id "${DEPARTING_USER}" --account-enabled false
428
+ az rest --method POST \
429
+ --url "https://graph.microsoft.com/v1.0/users/${DEPARTING_USER}/revokeSignInSessions"
430
+
431
+ # Step 2: Deactivate the user account
432
+ # Okta
433
+ curl -s -X POST \
434
+ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
435
+ "${OKTA_ORG_URL}/api/v1/users/${USER_ID}/lifecycle/deactivate"
436
+
437
+ # Google Workspace
438
+ gam update user "${DEPARTING_USER}" suspended on
439
+
440
+ # Step 3: Transfer data ownership
441
+ # Google Workspace: Transfer Drive files
442
+ gam user "${DEPARTING_USER}" transfer drive manager@company.com
443
+
444
+ # Google Workspace: Transfer Calendar ownership
445
+ gam user "${DEPARTING_USER}" transfer calendar manager@company.com
446
+
447
+ # Step 4: Remove from all groups (prevents future provisioning)
448
+ # Okta
449
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
450
+ "${OKTA_ORG_URL}/api/v1/users/${USER_ID}/groups" \
451
+ | jq -r '.[].id' | while read gid; do
452
+ curl -s -X DELETE \
453
+ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
454
+ "${OKTA_ORG_URL}/api/v1/groups/${gid}/users/${USER_ID}"
455
+ done
456
+
457
+ # Step 5: Revoke app-specific tokens
458
+ # GitHub: Remove from org
459
+ gh api -X DELETE "orgs/company/members/${DEPARTING_USER}"
460
+
461
+ # Slack: Deactivate via SCIM
462
+ SLACK_USER_ID=$(curl -s -H "Authorization: Bearer ${SLACK_SCIM_TOKEN}" \
463
+ "https://api.slack.com/scim/v2/Users?filter=userName+eq+\"${DEPARTING_USER}\"" \
464
+ | jq -r '.Resources[0].id')
465
+
466
+ curl -s -X PATCH \
467
+ -H "Authorization: Bearer ${SLACK_SCIM_TOKEN}" \
468
+ -H "Content-Type: application/scim+json" \
469
+ "https://api.slack.com/scim/v2/Users/${SLACK_USER_ID}" \
470
+ -d '{"schemas":["urn:ietf:params:scim:api:messages:2.0:PatchOp"],"Operations":[{"op":"replace","value":{"active":false}}]}'
471
+
472
+ # AWS: Remove SSO access
473
+ aws sso-admin delete-account-assignment \
474
+ --instance-arn "$INSTANCE_ARN" \
475
+ --target-id "123456789012" \
476
+ --target-type AWS_ACCOUNT \
477
+ --permission-set-arn "$PERMISSION_SET_ARN" \
478
+ --principal-type USER \
479
+ --principal-id "$AWS_SSO_USER_ID"
480
+
481
+ # Step 6: Document and log
482
+ echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) | OFFBOARD | ${DEPARTING_USER} | all sessions revoked, account suspended, data transferred to manager@company.com" >> /var/log/offboarding-audit.log
483
+ ```
484
+
485
+ ### Post-Offboarding Verification
486
+
487
+ ```bash
488
+ DEPARTING_USER="alice@company.com"
489
+
490
+ # Verify account is suspended/deactivated
491
+ echo "=== Offboarding Verification ==="
492
+
493
+ # Google Workspace
494
+ gam info user "${DEPARTING_USER}" fields suspended | grep -i "suspended: true" && echo "[OK] Google suspended" || echo "[FAIL] Google still active"
495
+
496
+ # Okta
497
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
498
+ "${OKTA_ORG_URL}/api/v1/users/${DEPARTING_USER}" \
499
+ | jq -r '.status' | grep -q "DEPROVISIONED" && echo "[OK] Okta deprovisioned" || echo "[FAIL] Okta still active"
500
+
501
+ # GitHub
502
+ gh api "orgs/company/members/${DEPARTING_USER}" 2>&1 | grep -q "404" && echo "[OK] GitHub removed" || echo "[FAIL] GitHub still member"
503
+
504
+ # Check for any remaining active sessions in audit logs
505
+ echo "=== Checking for post-offboard activity ==="
506
+ curl -s -H "Authorization: SSWS ${OKTA_API_TOKEN}" \
507
+ "${OKTA_ORG_URL}/api/v1/logs?filter=actor.alternateId+eq+\"${DEPARTING_USER}\"&since=$(date -u +%Y-%m-%dT%H:%M:%SZ)&limit=10" \
508
+ | jq '.[] | {time: .published, event: .eventType, outcome: .outcome.result}'
509
+ ```
510
+
511
+ ---
512
+
513
+
514
+ ## Quick Reference
515
+
516
+ | Task | Google Workspace | Okta | Azure AD |
517
+ |---|---|---|---|
518
+ | Create user | `gam create user` | `POST /api/v1/users` | `az ad user create` |
519
+ | Suspend user | `gam update user suspended on` | `POST /lifecycle/deactivate` | `az ad user update --account-enabled false` |
520
+ | Enforce MFA | `gam update org 2sv enforced` | MFA enrollment policy | Conditional access policy |
521
+ | Revoke sessions | `gam user signout` | `DELETE /users/{id}/sessions` | `revokeSignInSessions` |
522
+ | Audit logins | `gam report login` | `GET /api/v1/logs` | `GET /auditLogs/signIns` |
523
+ | SCIM provision | Built-in for supported apps | App integration SCIM tab | Enterprise app provisioning |
524
+