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,648 @@
1
+ # Makepad 2.0 Advanced Widget Patterns
2
+
3
+ ---
4
+
5
+ ## PortalList Usage Pattern
6
+
7
+ PortalList is a virtualized list widget that only renders visible items. It requires a Rust-side draw loop to populate items.
8
+
9
+ ### DSL Definition (in script_mod!)
10
+
11
+ ```
12
+ list := PortalList{
13
+ width: Fill
14
+ height: Fill
15
+ flow: Down
16
+ scroll_bar: ScrollBar{}
17
+
18
+ // Templates are defined with := syntax
19
+ // These become entries in the templates HashMap
20
+ Item := View{
21
+ width: Fill
22
+ height: Fit
23
+ padding: 10
24
+
25
+ title := Label{
26
+ text: ""
27
+ draw_text.color: #fff
28
+ }
29
+ }
30
+
31
+ Header := View{
32
+ width: Fill
33
+ height: 40
34
+ show_bg: true
35
+ draw_bg.color: #333
36
+
37
+ label := Label{
38
+ text: "Section Header"
39
+ draw_text.color: #aaa
40
+ }
41
+ }
42
+ }
43
+ ```
44
+
45
+ ### Rust Draw Loop
46
+
47
+ ```rust
48
+ // In your Widget's draw_walk implementation
49
+ while let Some(item) = self.view.draw_walk(cx, scope, walk).step() {
50
+ if let Some(mut list) = item.borrow_mut::<PortalList>() {
51
+ // Tell the list how many total items exist
52
+ list.set_item_range(cx, 0, count);
53
+
54
+ // Iterate over visible items only
55
+ while let Some(item_id) = list.next_visible_item(cx) {
56
+ // Create/reuse a widget from a template by LiveId
57
+ let item = list.item(cx, item_id, id!(Item));
58
+
59
+ // Populate the item's children
60
+ item.label(ids!(title)).set_text(cx, &format!("Item {}", item_id));
61
+
62
+ // Draw the item
63
+ item.draw_all(cx, &mut Scope::empty());
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ ### Templates in PortalList
70
+
71
+ - Named IDs using `:=` define templates stored in the widget's `templates` HashMap
72
+ - Regular properties (like `flow`, `scroll_bar`) go into struct fields
73
+ - Templates are collected during `on_after_apply` via `vm.vec_with()`
74
+ - Multiple template types can be used: select which template to instantiate based on `item_id`
75
+
76
+ ```rust
77
+ // Using different templates for different item types
78
+ while let Some(item_id) = list.next_visible_item(cx) {
79
+ let template = if item_id == 0 { id!(Header) } else { id!(Item) };
80
+ let item = list.item(cx, item_id, template);
81
+ // ... populate and draw
82
+ item.draw_all(cx, &mut Scope::empty());
83
+ }
84
+ ```
85
+
86
+ ### PortalList Scrolling API
87
+
88
+ ```rust
89
+ // Scroll to specific item
90
+ list.scroll_to_item(cx, item_index);
91
+
92
+ // Smooth scroll to item
93
+ list.smooth_scroll_to_item(cx, item_index);
94
+
95
+ // Get scroll position
96
+ let pos = list.scroll_position();
97
+
98
+ // Enable tail mode (auto-scroll to bottom)
99
+ list.set_tail(cx, true);
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Dock System Complete Example
105
+
106
+ The Dock widget provides a tabbed, splittable panel layout system.
107
+
108
+ ### 1. Dock Definition
109
+
110
+ ```
111
+ dock := Dock{
112
+ width: Fill
113
+ height: Fill
114
+
115
+ // Override tab bar template
116
+ tab_bar +: {
117
+ TabTemplate := IconTab{
118
+ // custom tab appearance
119
+ }
120
+ }
121
+
122
+ // Root layout structure
123
+ root := DockSplitter{
124
+ axis: Horizontal
125
+ align: Weighted(0.3)
126
+
127
+ // Left panel: tabs
128
+ a: DockTabs{
129
+ tabs: [
130
+ DockTab{name: "Files" template: FilesView}
131
+ DockTab{name: "Search" template: SearchView}
132
+ ]
133
+ selected: 0
134
+ closable: false
135
+ }
136
+
137
+ // Right panel: further split
138
+ b: DockSplitter{
139
+ axis: Vertical
140
+ align: Weighted(0.7)
141
+
142
+ a: DockTabs{
143
+ tabs: [
144
+ DockTab{name: "Editor" template: EditorView}
145
+ ]
146
+ selected: 0
147
+ }
148
+ b: DockTabs{
149
+ tabs: [
150
+ DockTab{name: "Console" template: ConsoleView}
151
+ ]
152
+ selected: 0
153
+ }
154
+ }
155
+ }
156
+
157
+ // 2. Content templates (matched by DockTab.template)
158
+ FilesView := View{
159
+ width: Fill height: Fill
160
+ flow: Down
161
+ Label{text: "File list here"}
162
+ }
163
+
164
+ EditorView := View{
165
+ width: Fill height: Fill
166
+ Label{text: "Editor content"}
167
+ }
168
+
169
+ SearchView := View{
170
+ width: Fill height: Fill
171
+ Label{text: "Search panel"}
172
+ }
173
+
174
+ ConsoleView := View{
175
+ width: Fill height: Fill
176
+ Label{text: "Console output"}
177
+ }
178
+ }
179
+ ```
180
+
181
+ ### Dock Sub-Types Reference
182
+
183
+ **DockSplitter:**
184
+ - `axis` - `Horizontal` or `Vertical`
185
+ - `align` - `Weighted(ratio)`, `FromA(pixels)`, `FromB(pixels)`
186
+ - `a` - First pane content (DockTabs or DockSplitter)
187
+ - `b` - Second pane content (DockTabs or DockSplitter)
188
+
189
+ **DockTabs:**
190
+ - `tabs` - Array of DockTab definitions
191
+ - `selected` - Index of selected tab
192
+ - `closable` - Whether tabs can be closed (bool)
193
+
194
+ **DockTab:**
195
+ - `name` - Tab display text
196
+ - `template` - LiveId matching a content template defined in the Dock
197
+ - `kind` - Tab kind identifier
198
+
199
+ ---
200
+
201
+ ## Custom Widget Creation
202
+
203
+ ### Basic Custom Widget
204
+
205
+ To create a custom widget in Makepad 2.0, derive the required traits:
206
+
207
+ ```rust
208
+ #[derive(Script, ScriptHook, Widget)]
209
+ pub struct MyWidget {
210
+ #[uid]
211
+ uid: WidgetUid,
212
+ #[source]
213
+ source: ScriptObjectRef, // REQUIRED: links to DSL definition
214
+ #[walk]
215
+ walk: Walk, // Size and position
216
+ #[layout]
217
+ layout: Layout, // Child layout rules
218
+ #[redraw]
219
+ #[live]
220
+ draw_bg: DrawQuad, // Background draw primitive
221
+ #[live]
222
+ draw_text: DrawText, // Text draw primitive
223
+ #[live]
224
+ text: String, // A DSL-settable property
225
+ #[rust]
226
+ my_state: i32, // Rust-only state (not settable from DSL)
227
+ #[rust]
228
+ area: Area, // Widget area for hit testing
229
+ }
230
+ ```
231
+
232
+ **Key derive macros:**
233
+ - `Script` - Enables Splash script integration
234
+ - `ScriptHook` - Enables lifecycle hooks (on_before_apply, on_after_apply)
235
+ - `Widget` - Implements the Widget trait
236
+ - `Animator` - Adds animation support (optional)
237
+ - `WidgetRef` - Generates the WidgetRef wrapper type
238
+ - `WidgetSet` - Generates the WidgetSet type
239
+ - `WidgetRegister` - Enables widget registration
240
+
241
+ **Field attributes:**
242
+ - `#[source]` - ScriptObjectRef linking to DSL (REQUIRED)
243
+ - `#[uid]` - Unique widget identifier
244
+ - `#[walk]` - Walk (width, height, margin)
245
+ - `#[layout]` - Layout (flow, spacing, padding, align)
246
+ - `#[redraw]` - Mark field as triggering redraw when changed
247
+ - `#[live]` - DSL-settable field with default
248
+ - `#[live(default_value)]` - DSL-settable with explicit default
249
+ - `#[rust]` - Rust-only field, not settable from DSL
250
+ - `#[apply_default]` - Apply default values from DSL
251
+ - `#[deref]` - Delegate to inner widget (for wrapper widgets)
252
+ - `#[visible]` - Widget visibility field
253
+
254
+ ### Register Widget in script_mod!
255
+
256
+ ```rust
257
+ script_mod! {
258
+ use mod.prelude.widgets_internal.*
259
+ use mod.widgets.*
260
+
261
+ mod.widgets.MyWidgetBase = #(MyWidget::register_widget(vm))
262
+
263
+ mod.widgets.MyWidget = set_type_default() do mod.widgets.MyWidgetBase{
264
+ width: Fit
265
+ height: Fit
266
+ // default property values
267
+ draw_bg +: {
268
+ color: #333
269
+ }
270
+ }
271
+ }
272
+ ```
273
+
274
+ ### Custom Draw Widget
275
+
276
+ For widgets that need custom drawing logic:
277
+
278
+ ```rust
279
+ impl Widget for CustomDraw {
280
+ fn draw_walk(&mut self, cx: &mut Cx2d, _scope: &mut Scope, walk: Walk) -> DrawStep {
281
+ // Begin layout turtle
282
+ cx.begin_turtle(walk, self.layout);
283
+
284
+ // Get the computed rect
285
+ let rect = cx.turtle().rect();
286
+
287
+ // Draw custom shapes
288
+ self.draw_bg.draw_abs(cx, rect);
289
+
290
+ // Draw text at specific position
291
+ // self.draw_text.draw_walk(cx, walk, align, text);
292
+
293
+ // End turtle and capture area
294
+ cx.end_turtle_with_area(&mut self.area);
295
+ DrawStep::done()
296
+ }
297
+
298
+ fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
299
+ // Handle hit events
300
+ match event.hits(cx, self.area) {
301
+ Hit::FingerDown(_fe) => {
302
+ // Handle touch/click down
303
+ }
304
+ Hit::FingerUp(_fe) => {
305
+ // Handle touch/click up
306
+ }
307
+ Hit::FingerHoverIn(_) => {
308
+ // Handle hover enter
309
+ }
310
+ Hit::FingerHoverOut(_) => {
311
+ // Handle hover leave
312
+ }
313
+ _ => ()
314
+ }
315
+ }
316
+ }
317
+ ```
318
+
319
+ ### Widget with Children (Container)
320
+
321
+ For container widgets that hold child widgets:
322
+
323
+ ```rust
324
+ impl Widget for MyContainer {
325
+ fn draw_walk(&mut self, cx: &mut Cx2d, scope: &mut Scope, walk: Walk) -> DrawStep {
326
+ cx.begin_turtle(walk, self.layout);
327
+
328
+ // Draw background if enabled
329
+ if self.show_bg {
330
+ self.draw_bg.begin(cx, walk, self.layout);
331
+ }
332
+
333
+ // Draw children
334
+ for (_id, child) in &self.children {
335
+ child.draw_all(cx, scope);
336
+ }
337
+
338
+ if self.show_bg {
339
+ self.draw_bg.end(cx);
340
+ }
341
+
342
+ cx.end_turtle_with_area(&mut self.area);
343
+ DrawStep::done()
344
+ }
345
+ }
346
+ ```
347
+
348
+ ---
349
+
350
+ ## MapView Critical Rules
351
+
352
+ MapView renders vector tile-based geographic maps. It has strict requirements:
353
+
354
+ ### MUST use fixed pixel height
355
+
356
+ ```
357
+ // CORRECT: fixed pixel height
358
+ MapView{
359
+ width: Fill
360
+ height: 400
361
+ }
362
+
363
+ // WRONG: will cause rendering issues
364
+ MapView{
365
+ width: Fill
366
+ height: Fill // NEVER use Fill
367
+ }
368
+
369
+ // WRONG: will cause rendering issues
370
+ MapView{
371
+ width: Fill
372
+ height: Fit // NEVER use Fit
373
+ }
374
+ ```
375
+
376
+ ### MUST wrap in container with new_batch
377
+
378
+ ```
379
+ map_container := View{
380
+ new_batch: true // REQUIRED for MapView
381
+ width: Fill
382
+ height: 400
383
+
384
+ map := MapView{
385
+ width: Fill
386
+ height: 400
387
+ center_lon: -73.9857
388
+ center_lat: 40.7484
389
+ zoom: 14.0
390
+ dark_theme: true
391
+ }
392
+ }
393
+ ```
394
+
395
+ ### MapView Data Sources
396
+ - `use_local_mbtiles: true` - Load tiles from local `.mbtiles` file (default, offline)
397
+ - `use_network: true` - Fetch tiles from network (online mode)
398
+ - If both are enabled, offline mode takes priority
399
+ - `style_light` / `style_dark` - Theme style configurations with map rendering rules
400
+
401
+ ---
402
+
403
+ ## Draw Batching (new_batch) - Detailed Rules
404
+
405
+ ### How Batching Works
406
+
407
+ Makepad batches consecutive draw calls using the same shader into a single GPU draw call for performance. The draw order follows the widget tree order.
408
+
409
+ ### The Text Visibility Problem
410
+
411
+ When a View with `show_bg: true` contains text widgets, the background quad and text quads may be batched into the same draw call. Since the background quad covers the entire view area, text drawn in the same batch appears behind the background, making it invisible.
412
+
413
+ ### Setting new_batch
414
+
415
+ ```
416
+ // Pattern: colored container with text
417
+ card := RoundedView{
418
+ new_batch: true // Forces a new GPU draw batch
419
+ show_bg: true
420
+ draw_bg.color: #2a2a3a
421
+
422
+ title := Label{
423
+ text: "Card Title"
424
+ draw_text.color: #fff
425
+ }
426
+ }
427
+ ```
428
+
429
+ ### When new_batch is CRITICAL
430
+
431
+ 1. **Any View with show_bg containing text children:**
432
+ ```
433
+ SolidView{
434
+ new_batch: true
435
+ show_bg: true
436
+ draw_bg.color: #444
437
+ Label{text: "Must be visible"}
438
+ }
439
+ ```
440
+
441
+ 2. **Views with hover/press effects containing text:**
442
+ Without `new_batch`, text vanishes during hover because the draw_bg shader re-renders with different instance values, pushing text behind the background.
443
+
444
+ 3. **MapView containers:**
445
+ ```
446
+ View{
447
+ new_batch: true
448
+ MapView{...}
449
+ }
450
+ ```
451
+
452
+ ### When new_batch is NOT needed
453
+
454
+ - `View{}` without `show_bg` (invisible layout only)
455
+ - Views containing only other Views (no direct text widgets)
456
+ - Text widgets themselves (Label, H1, etc.)
457
+ - Widgets that already force their own batch internally
458
+
459
+ ---
460
+
461
+ ## Splitter Usage Pattern
462
+
463
+ ```
464
+ content := Splitter{
465
+ axis: Horizontal
466
+ align: Weighted(0.3)
467
+
468
+ a := View{
469
+ width: Fill
470
+ height: Fill
471
+ // Left/top panel content
472
+ Label{text: "Panel A"}
473
+ }
474
+
475
+ b := View{
476
+ width: Fill
477
+ height: Fill
478
+ // Right/bottom panel content
479
+ Label{text: "Panel B"}
480
+ }
481
+ }
482
+ ```
483
+
484
+ ### Splitter Axis Values
485
+ - `SplitterAxis.Horizontal` - Left/right split (default)
486
+ - `SplitterAxis.Vertical` - Top/bottom split
487
+
488
+ ### Splitter Align Values
489
+ - `SplitterAlign.Weighted(0.5)` - Proportional split (0.0 to 1.0)
490
+ - `SplitterAlign.FromA(200.0)` - Fixed pixels from left/top
491
+ - `SplitterAlign.FromB(200.0)` - Fixed pixels from right/bottom
492
+
493
+ ---
494
+
495
+ ## FoldHeader Usage Pattern
496
+
497
+ ```
498
+ FoldHeader{
499
+ header := View{
500
+ width: Fill
501
+ height: Fit
502
+ padding: 10
503
+
504
+ FoldButton{}
505
+ Label{text: "Section Title"}
506
+ }
507
+
508
+ body := View{
509
+ width: Fill
510
+ height: Fit
511
+ padding: Inset{left: 20}
512
+
513
+ Label{text: "Collapsible content here"}
514
+ }
515
+ }
516
+ ```
517
+
518
+ The `opened` value animates between 0.0 (closed) and 1.0 (open). The body's height is interpolated based on this value.
519
+
520
+ ---
521
+
522
+ ## Modal Usage Pattern
523
+
524
+ ```
525
+ modal := Modal{
526
+ // Override the content slot
527
+ content +: {
528
+ width: 400
529
+ height: Fit
530
+ padding: 20
531
+ flow: Down
532
+ spacing: 10
533
+
534
+ show_bg: true
535
+ draw_bg.color: #333
536
+
537
+ H3{text: "Dialog Title"}
538
+ P{text: "Dialog message content"}
539
+
540
+ View{
541
+ width: Fill
542
+ height: Fit
543
+ flow: Right
544
+ align: Align{x: 1.0}
545
+ spacing: 10
546
+
547
+ Button{text: "Cancel"}
548
+ Button{text: "OK"}
549
+ }
550
+ }
551
+ }
552
+ ```
553
+
554
+ ### Modal Control (from Rust)
555
+
556
+ ```rust
557
+ // Open modal
558
+ self.modal(id!(modal)).open(cx);
559
+
560
+ // Close modal
561
+ self.modal(id!(modal)).close(cx);
562
+ ```
563
+
564
+ ---
565
+
566
+ ## PageFlip Usage Pattern
567
+
568
+ ```
569
+ page_flip := PageFlip{
570
+ active_page: page_one
571
+
572
+ page_one := View{
573
+ width: Fill height: Fill
574
+ Label{text: "Page One"}
575
+ }
576
+
577
+ page_two := View{
578
+ width: Fill height: Fill
579
+ Label{text: "Page Two"}
580
+ }
581
+ }
582
+ ```
583
+
584
+ ### Switching Pages (from Rust)
585
+
586
+ ```rust
587
+ self.page_flip(id!(page_flip)).set_active_page(cx, id!(page_two));
588
+ ```
589
+
590
+ ---
591
+
592
+ ## Common Widget Access Patterns (Rust)
593
+
594
+ ### Accessing Child Widgets
595
+
596
+ ```rust
597
+ // Access a specific child by id path
598
+ self.view.label(ids!(title)).set_text(cx, "New Title");
599
+ self.view.button(ids!(submit_btn)).set_text(cx, "Submit");
600
+ self.view.text_input(ids!(name_input)).set_text(cx, "default");
601
+
602
+ // Access nested children
603
+ self.view.label(ids!(container.inner.title)).set_text(cx, "Nested");
604
+
605
+ // Read text input value
606
+ let text = self.view.text_input(ids!(name_input)).text();
607
+
608
+ // Get/set slider value
609
+ let val = self.view.slider(ids!(volume)).value();
610
+
611
+ // Get selected dropdown item
612
+ let idx = self.view.drop_down(ids!(selector)).selected_item();
613
+ ```
614
+
615
+ ### Handling Widget Actions
616
+
617
+ ```rust
618
+ fn handle_event(&mut self, cx: &mut Cx, event: &Event, scope: &mut Scope) {
619
+ self.view.handle_event(cx, event, scope);
620
+
621
+ for action in cx.actions() {
622
+ // Button clicked
623
+ if self.view.button(ids!(my_btn)).clicked(action) {
624
+ // handle click
625
+ }
626
+
627
+ // Text input changed
628
+ if let Some(text) = self.view.text_input(ids!(my_input)).changed(action) {
629
+ log!("Text changed: {}", text);
630
+ }
631
+
632
+ // Slider changed
633
+ if let Some(val) = self.view.slider(ids!(my_slider)).changed(action) {
634
+ log!("Slider: {}", val);
635
+ }
636
+
637
+ // CheckBox/Toggle toggled
638
+ if let Some(active) = self.view.check_box(ids!(my_check)).changed(action) {
639
+ log!("Active: {}", active);
640
+ }
641
+
642
+ // DropDown selected
643
+ if let Some(item) = self.view.drop_down(ids!(my_dd)).selected(action) {
644
+ log!("Selected: {}", item);
645
+ }
646
+ }
647
+ }
648
+ ```