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,497 @@
1
+ ---
2
+ name: makepad-2-0-events
3
+ description: Makepad 2.0 guidance for events; use when building or debugging Makepad UI code.
4
+ source_repo: zhanghandong/makepad-skills
5
+ source_type: community
6
+ source: community
7
+ date_added: '2026-09-21'
8
+ risk: unknown
9
+ ---
10
+
11
+ ## Limitations
12
+
13
+ - Verify against current Makepad 2.0 docs; upstream APIs change frequently.
14
+ - Do not run bundled scripts without explicit user approval.
15
+
16
+ ## When to Use
17
+ - Use when this upstream workflow matches the user's stated goal.
18
+ - Use when the task requires the procedures documented in this skill.
19
+
20
+ # Makepad 2.0 Event & Action System
21
+
22
+ ## Overview
23
+
24
+ Makepad 2.0 uses a **two-layer event system**:
25
+
26
+ 1. **Splash Layer** -- Inline event handlers written directly in `script_mod!` Splash code
27
+ (`on_click`, `on_render`, `on_return`, `on_startup`). These handle UI interactions
28
+ declaratively inside the script, close to the widget definitions.
29
+
30
+ 2. **Rust Layer** -- The `MatchEvent` trait with `handle_actions`, `handle_timer`,
31
+ `handle_http_response`, etc. These handle business logic, external I/O, and
32
+ anything that needs full Rust power.
33
+
34
+ Both layers communicate through two bridge macros:
35
+ - `script_eval!(cx, { ... })` -- Execute Splash code from Rust (update state, trigger renders)
36
+ - `script_apply_eval!(cx, widget_ref, { ... })` -- Patch widget properties from Rust at runtime
37
+
38
+ ---
39
+
40
+ ## 1. Splash Inline Event Handlers
41
+
42
+ Event handlers are attached directly to widgets inside `script_mod!` blocks. They use
43
+ closure syntax with `||` for no arguments or `|arg|` for callbacks that receive a value.
44
+
45
+ ### on_click -- Button/widget click
46
+
47
+ Fires when the user clicks a button or clickable widget. No arguments for plain buttons,
48
+ or `|checked|` for CheckBox which passes the new boolean state.
49
+
50
+ ```splash
51
+ // Plain button click
52
+ add_button := Button{
53
+ text: "Add"
54
+ on_click: ||{
55
+ let text = ui.todo_input.text()
56
+ if text != "" {
57
+ add_todo(text, "")
58
+ ui.todo_input.set_text("")
59
+ }
60
+ }
61
+ }
62
+
63
+ // CheckBox click with checked state argument
64
+ check.on_click: |checked| toggle_todo(i, checked)
65
+
66
+ // Inline delete with closure capturing loop variable
67
+ delete.on_click: || delete_todo(i)
68
+
69
+ // Calling another widget's click programmatically
70
+ clear_done := ButtonFlatter{
71
+ text: "Clear completed"
72
+ on_click: ||{
73
+ todos.retain(|todo| !todo.done)
74
+ ui.todo_list.render()
75
+ }
76
+ }
77
+ ```
78
+
79
+ ### on_render -- Dynamic rendering
80
+
81
+ Fires when `.render()` is called on the target view. This is the primary mechanism for
82
+ dynamic content. The body replaces the previous draw content of the view.
83
+
84
+ ```splash
85
+ main_view := View{
86
+ width: Fill
87
+ height: Fill
88
+ on_render: ||{
89
+ counter_label := Label{
90
+ text: "Count: " + state.counter
91
+ draw_text.text_style.font_size: 24
92
+ }
93
+ }
94
+ }
95
+
96
+ // List rendering with for loop and per-item event handlers
97
+ todo_list := ScrollYView{
98
+ width: Fill height: Fill
99
+ new_batch: true
100
+ on_render: ||{
101
+ if todos.len() == 0
102
+ EmptyState{}
103
+ else for i, todo in todos {
104
+ TodoItem{
105
+ label.text: todo.text
106
+ check.active: todo.done
107
+ check.on_click: |checked| toggle_todo(i, checked)
108
+ delete.on_click: || delete_todo(i)
109
+ }
110
+ }
111
+ }
112
+ EmptyState{}
113
+ }
114
+ ```
115
+
116
+ **Key point**: `on_render` is NOT called automatically. You must call `ui.widget_name.render()`
117
+ to trigger it. The `new_batch: true` property on a view tells the system to clear previous
118
+ draw content before re-rendering.
119
+
120
+ ### on_return -- TextInput enter key
121
+
122
+ Fires when the user presses Enter/Return inside a TextInput. Commonly used to submit forms.
123
+
124
+ ```splash
125
+ todo_input := TextInput{
126
+ width: Fill height: 9. * theme.space_1
127
+ empty_text: "What needs to be done?"
128
+ on_return: || ui.add_button.on_click()
129
+ }
130
+ ```
131
+
132
+ ### on_startup -- App startup
133
+
134
+ Fires once when the application starts. Defined at the `Root` level. Commonly used
135
+ to trigger initial renders.
136
+
137
+ ```splash
138
+ ui: Root{
139
+ on_startup: ||{
140
+ ui.main_view.render()
141
+ }
142
+ main_window := Window{
143
+ // ...
144
+ }
145
+ }
146
+ ```
147
+
148
+ ### Event handler capabilities
149
+
150
+ Inside event handlers you can:
151
+ - Call Splash functions: `add_todo(text, "dev")`
152
+ - Read widget values: `let text = ui.todo_input.text()`
153
+ - Set widget values: `ui.todo_input.set_text("")`
154
+ - Trigger re-renders: `ui.todo_list.render()`
155
+ - Trigger other widget clicks: `ui.add_button.on_click()`
156
+ - Modify state variables: `state.counter += 1`
157
+ - Use array methods: `todos.push({text: "new", done: false})`
158
+ - Use control flow: `if text != "" { ... }`
159
+
160
+ ---
161
+
162
+ ## 2. Rust Event Handling -- MatchEvent Trait
163
+
164
+ The `MatchEvent` trait is the Rust-side event dispatcher. It receives platform events
165
+ and widget actions through a set of handler methods.
166
+
167
+ ### Core trait definition (from `draw/src/match_event.rs`)
168
+
169
+ ```rust
170
+ pub trait MatchEvent {
171
+ // Lifecycle
172
+ fn handle_startup(&mut self, _cx: &mut Cx) {}
173
+ fn handle_shutdown(&mut self, _cx: &mut Cx) {}
174
+ fn handle_foreground(&mut self, _cx: &mut Cx) {}
175
+ fn handle_background(&mut self, _cx: &mut Cx) {}
176
+ fn handle_pause(&mut self, _cx: &mut Cx) {}
177
+ fn handle_resume(&mut self, _cx: &mut Cx) {}
178
+
179
+ // Window focus
180
+ fn handle_window_got_focus(&mut self, _cx: &mut Cx, _window_id: &WindowId) {}
181
+ fn handle_window_lost_focus(&mut self, _cx: &mut Cx, _window_id: &WindowId) {}
182
+
183
+ // Frame
184
+ fn handle_next_frame(&mut self, _cx: &mut Cx, _e: &NextFrameEvent) {}
185
+
186
+ // Widget actions (most commonly used)
187
+ fn handle_action(&mut self, _cx: &mut Cx, _e: &Action) {}
188
+ fn handle_actions(&mut self, cx: &mut Cx, actions: &Actions) {
189
+ for action in actions {
190
+ self.handle_action(cx, action);
191
+ }
192
+ }
193
+
194
+ // Input
195
+ fn handle_key_down(&mut self, _cx: &mut Cx, _e: &KeyEvent) {}
196
+ fn handle_key_up(&mut self, _cx: &mut Cx, _e: &KeyEvent) {}
197
+ fn handle_back_pressed(&mut self, _cx: &mut Cx) -> bool { false }
198
+
199
+ // Timer
200
+ fn handle_timer(&mut self, _cx: &mut Cx, _e: &TimerEvent) {}
201
+
202
+ // Drawing
203
+ fn handle_draw(&mut self, _cx: &mut Cx, _e: &DrawEvent) {}
204
+ fn handle_draw_2d(&mut self, _cx: &mut Cx2d) {}
205
+
206
+ // Network
207
+ fn handle_http_response(&mut self, _cx: &mut Cx, _request_id: LiveId, _response: &HttpResponse) {}
208
+ fn handle_http_request_error(&mut self, _cx: &mut Cx, _request_id: LiveId, _err: &HttpError) {}
209
+ fn handle_http_progress(&mut self, _cx: &mut Cx, _request_id: LiveId, _progress: &HttpProgress) {}
210
+ fn handle_http_stream(&mut self, _cx: &mut Cx, _request_id: LiveId, _data: &HttpResponse) {}
211
+ fn handle_http_stream_complete(&mut self, _cx: &mut Cx, _request_id: LiveId, _data: &HttpResponse) {}
212
+
213
+ // Signals
214
+ fn handle_signal(&mut self, _cx: &mut Cx) {}
215
+
216
+ // Media devices
217
+ fn handle_audio_devices(&mut self, _cx: &mut Cx, _e: &AudioDevicesEvent) {}
218
+ fn handle_midi_ports(&mut self, _cx: &mut Cx, _e: &MidiPortsEvent) {}
219
+ fn handle_video_inputs(&mut self, _cx: &mut Cx, _e: &VideoInputsEvent) {}
220
+ }
221
+ ```
222
+
223
+ ### Standard App boilerplate (required)
224
+
225
+ Every Makepad 2.0 app needs this Rust structure:
226
+
227
+ ```rust
228
+ use makepad_widgets::*;
229
+
230
+ app_main!(App);
231
+
232
+ script_mod! {
233
+ // ... Splash UI code ...
234
+ }
235
+
236
+ impl App {
237
+ fn run(vm: &mut ScriptVm) -> Self {
238
+ crate::makepad_widgets::script_mod(vm);
239
+ App::from_script_mod(vm, self::script_mod)
240
+ }
241
+ }
242
+
243
+ #[derive(Script, ScriptHook)]
244
+ pub struct App {
245
+ #[live]
246
+ ui: WidgetRef,
247
+ }
248
+
249
+ impl MatchEvent for App {
250
+ fn handle_actions(&mut self, cx: &mut Cx, actions: &Actions) {
251
+ // Handle widget actions here
252
+ }
253
+ }
254
+
255
+ impl AppMain for App {
256
+ fn handle_event(&mut self, cx: &mut Cx, event: &Event) {
257
+ self.match_event(cx, event);
258
+ self.ui.handle_event(cx, event, &mut Scope::empty());
259
+ }
260
+ }
261
+ ```
262
+
263
+ **CRITICAL**: `handle_event` must call BOTH `self.match_event(cx, event)` (to dispatch
264
+ to the MatchEvent handlers) AND `self.ui.handle_event(cx, event, &mut Scope::empty())`
265
+ (to propagate events to widgets).
266
+
267
+ ---
268
+
269
+ ## 3. Widget Action API
270
+
271
+ Access widgets from Rust using `self.ui.widget_type(cx, ids!(name))`, then query their
272
+ action state by passing the `&Actions` reference.
273
+
274
+ ### Button
275
+
276
+ ```rust
277
+ // Access: self.ui.button(cx, ids!(my_button))
278
+ // Returns ButtonRef
279
+
280
+ .clicked(actions) -> bool // Was clicked (finger down + up inside)
281
+ .pressed(actions) -> bool // Was pressed down
282
+ .long_pressed(actions) -> bool // Was long-pressed (not yet released)
283
+ .released(actions) -> bool // Was released (NOT a click)
284
+ .clicked_modifiers(actions) -> Option<KeyModifiers> // Clicked with modifier keys
285
+ .pressed_modifiers(actions) -> Option<KeyModifiers>
286
+ .released_modifiers(actions) -> Option<KeyModifiers>
287
+ ```
288
+
289
+ ### TextInput
290
+
291
+ ```rust
292
+ // Access: self.ui.text_input(cx, ids!(my_input))
293
+ // Returns TextInputRef
294
+
295
+ .changed(actions) -> Option<String> // Text changed, returns new text
296
+ .returned(actions) -> Option<(String, KeyModifiers)> // Enter pressed, returns text + mods
297
+ .escaped(actions) -> bool // Escape pressed
298
+ .key_down_unhandled(actions) -> Option<KeyEvent> // Unhandled key event
299
+ .selected_text() -> String // Current selection (no actions needed)
300
+ ```
301
+
302
+ ### CheckBox
303
+
304
+ ```rust
305
+ // Access: self.ui.check_box(cx, ids!(my_check))
306
+ // Returns CheckBoxRef
307
+
308
+ .changed(actions) -> Option<bool> // Toggled, returns new checked state
309
+ ```
310
+
311
+ ### DropDown
312
+
313
+ ```rust
314
+ // Access: self.ui.drop_down(cx, ids!(my_dropdown))
315
+ // Returns DropDownRef
316
+
317
+ .selected(actions) -> Option<usize> // Item selected, returns index
318
+ .changed(actions) -> Option<usize> // Same as selected
319
+ .changed_label(actions) -> Option<String> // Item selected, returns label string
320
+ .selected_item() -> usize // Current selection (no actions needed)
321
+ .selected_label() -> String // Current label (no actions needed)
322
+ ```
323
+
324
+ ### Slider
325
+
326
+ ```rust
327
+ // Access: self.ui.slider(cx, ids!(my_slider))
328
+ // Returns SliderRef
329
+
330
+ .slided(actions) -> Option<f64> // Value changed during slide or text edit
331
+ .end_slide(actions) -> Option<f64> // Slide ended or text committed
332
+ .value() -> Option<f64> // Current value (no actions needed)
333
+ ```
334
+
335
+ ### RadioButton / RadioButtonGroup
336
+
337
+ ```rust
338
+ // Access: self.ui.radio_button(cx, ids!(my_radio))
339
+ // Returns RadioButtonRef
340
+
341
+ .clicked(actions) -> bool // Was clicked
342
+ // For groups:
343
+ .selected(cx, actions) -> Option<usize> // Selected index in group
344
+ ```
345
+
346
+ ### LinkLabel
347
+
348
+ ```rust
349
+ // Access: self.ui.link_label(cx, ids!(my_link))
350
+ // Returns LinkLabelRef
351
+
352
+ .clicked(actions) -> bool
353
+ .clicked_modifiers(actions) -> Option<KeyModifiers>
354
+ ```
355
+
356
+ ### Complete example
357
+
358
+ ```rust
359
+ impl MatchEvent for App {
360
+ fn handle_actions(&mut self, cx: &mut Cx, actions: &Actions) {
361
+ if self.ui.button(cx, ids!(increment_button)).clicked(actions) {
362
+ script_eval!(cx, {
363
+ mod.state.counter += 1
364
+ ui.main_view.render()
365
+ });
366
+ }
367
+
368
+ if let Some(text) = self.ui.text_input(cx, ids!(search_input)).changed(actions) {
369
+ self.perform_search(cx, &text);
370
+ }
371
+
372
+ if let Some(checked) = self.ui.check_box(cx, ids!(dark_mode)).changed(actions) {
373
+ self.set_theme(cx, checked);
374
+ }
375
+
376
+ if let Some(index) = self.ui.drop_down(cx, ids!(language)).selected(actions) {
377
+ self.change_language(cx, index);
378
+ }
379
+ }
380
+ }
381
+ ```
382
+
383
+ ---
384
+
385
+ ## 4. script_eval! Macro -- Rust to Splash Communication
386
+
387
+ `script_eval!` executes Splash code from within Rust handlers. It is the primary
388
+ bridge for updating Splash state and triggering UI re-renders from Rust.
389
+
390
+ **Signature**: `script_eval!(cx_or_vm, { splash_code })`
391
+
392
+ The first argument can be `&mut Cx` (inside event handlers) or `&mut ScriptVm`
393
+ (during initialization).
394
+
395
+ ```rust
396
+ // Update Splash state and re-render
397
+ if self.ui.button(cx, ids!(increment_button)).clicked(actions) {
398
+ script_eval!(cx, {
399
+ mod.state.counter += 1
400
+ ui.main_view.render()
401
+ });
402
+ }
403
+
404
+ // Pass Rust values into Splash using #(expr) interpolation
405
+ let rust_string = "Hello from Rust";
406
+ script_eval!(cx, {
407
+ mod.value = #(rust_string)
408
+ });
409
+
410
+ // During init (inside App::run), use vm instead of cx
411
+ impl App {
412
+ fn run(vm: &mut ScriptVm) -> Self {
413
+ crate::makepad_widgets::theme_mod(vm);
414
+ script_eval!(vm, {
415
+ mod.theme = mod.themes.light
416
+ });
417
+ crate::makepad_widgets::widgets_mod(vm);
418
+ App::from_script_mod(vm, self::script_mod)
419
+ }
420
+ }
421
+ ```
422
+
423
+ ### Value interpolation with `#(expr)`
424
+
425
+ Inside `script_eval!`, use `#(rust_expression)` to inject Rust values into Splash:
426
+
427
+ ```rust
428
+ let count = 42_u64;
429
+ let message = "items found".to_string();
430
+ script_eval!(cx, {
431
+ mod.state.count = #(count)
432
+ mod.state.message = #(message)
433
+ ui.results_view.render()
434
+ });
435
+ ```
436
+
437
+ ---
438
+
439
+ ## 5. script_apply_eval! Macro -- Runtime Property Patching
440
+
441
+ `script_apply_eval!` patches widget properties at runtime from Rust. Unlike
442
+ `script_eval!` which runs general Splash code, this targets a specific widget
443
+ reference and applies property changes directly.
444
+
445
+ **Signature**: `script_apply_eval!(cx, widget_ref, { property_patches })`
446
+
447
+ ```rust
448
+ // Patch a single property
449
+ let height = 500.0_f64;
450
+ script_apply_eval!(cx, item, {
451
+ page_view: { height: #(height) }
452
+ });
453
+
454
+ // Patch margin
455
+ let margin = Inset { top: 10.0, bottom: 10.0, left: 5.0, right: 5.0 };
456
+ script_apply_eval!(cx, content_view, {
457
+ margin: #(margin)
458
+ });
459
+
460
+ // Patch width with a Makepad type
461
+ script_apply_eval!(cx, content_view, {
462
+ width: #(Size::fit())
463
+ });
464
+
465
+ // Patch nested draw shader properties
466
+ let bg_color = vec4(0.2, 0.3, 0.4, 1.0);
467
+ let triangle_height = 8.0_f64;
468
+ script_apply_eval!(cx, content, {
469
+ draw_bg +: {
470
+ triangle_height: #(triangle_height)
471
+ background_color: #(bg_color)
472
+ }
473
+ });
474
+ ```
475
+
476
+ ---
477
+
478
+ ## 6. Widget Reference Access from Rust
479
+
480
+ ### Accessing widgets by ID
481
+
482
+ Use `self.ui.widget_type(cx, ids!(name))` to get a typed reference:
483
+
484
+ ```rust
485
+ self.ui.button(cx, ids!(increment_button)) // -> ButtonRef
486
+ self.ui.label(cx, ids!(status_label)) // -> LabelRef
487
+ self.ui.text_input(cx, ids!(search_input)) // -> TextInputRef
488
+ self.ui.check_box(cx, ids!(dark_mode)) // -> CheckBoxRef
489
+ self.ui.drop_down(cx, ids!(language)) // -> DropDownRef
490
+ self.ui.slider(cx, ids!(volume)) // -> SliderRef
491
+ self.ui.view(cx, ids!(content)) // -> ViewRef
492
+ self.ui.radio_button(cx, ids!(option_a)) // -> RadioButtonRef
493
+ ```
494
+
495
+ ### Nested widget access with ids!
496
+
497
+ See [references/extended-guide.md](references/extended-guide.md) for nested access patterns.