opencode-skills-collection 4.0.52 → 4.0.54

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 (1176) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +6 -2
  2. package/bundled-skills/00-andruia-consultant/SKILL.md +6 -0
  3. package/bundled-skills/007/SKILL.md +2 -610
  4. package/bundled-skills/007/references/detailed-guide.md +647 -0
  5. package/bundled-skills/10-andruia-skill-smith/SKILL.md +6 -0
  6. package/bundled-skills/20-andruia-niche-intelligence/SKILL.md +6 -0
  7. package/bundled-skills/2slides-ppt-generator/SKILL.md +2 -741
  8. package/bundled-skills/2slides-ppt-generator/references/detailed-guide.md +761 -0
  9. package/bundled-skills/ab-test-setup/SKILL.md +59 -27
  10. package/bundled-skills/ab-testing/SKILL.md +1 -1
  11. package/bundled-skills/acceptance-orchestrator/SKILL.md +6 -0
  12. package/bundled-skills/accint-commitments/SKILL.md +6 -0
  13. package/bundled-skills/accint-frames/SKILL.md +6 -0
  14. package/bundled-skills/accint-solve/SKILL.md +6 -0
  15. package/bundled-skills/advogado-criminal/SKILL.md +2 -912
  16. package/bundled-skills/advogado-criminal/references/detailed-guide.md +946 -0
  17. package/bundled-skills/advogado-especialista/SKILL.md +2 -1071
  18. package/bundled-skills/advogado-especialista/references/detailed-guide.md +1114 -0
  19. package/bundled-skills/agent-evaluation/SKILL.md +53 -1102
  20. package/bundled-skills/agent-evaluation/references/architecture-sketches.md +1112 -0
  21. package/bundled-skills/agent-memory/SKILL.md +6 -0
  22. package/bundled-skills/agent-memory-systems/SKILL.md +8 -1042
  23. package/bundled-skills/agent-memory-systems/references/detailed-guide.md +1088 -0
  24. package/bundled-skills/agent-squad/SKILL.md +1 -0
  25. package/bundled-skills/agent-tool-builder/SKILL.md +2 -624
  26. package/bundled-skills/agent-tool-builder/references/detailed-guide.md +650 -0
  27. package/bundled-skills/agentic-actions-auditor/SKILL.md +6 -0
  28. package/bundled-skills/agentmail/SKILL.md +1 -0
  29. package/bundled-skills/agentphone/SKILL.md +5 -1323
  30. package/bundled-skills/agentphone/references/detailed-guide.md +1333 -0
  31. package/bundled-skills/agents-v2-py/SKILL.md +23 -5
  32. package/bundled-skills/ai-agents-architect/SKILL.md +25 -25
  33. package/bundled-skills/ai-analyzer/SKILL.md +1 -0
  34. package/bundled-skills/ai-md/SKILL.md +25 -0
  35. package/bundled-skills/ai-md/references/detailed-guide.md +512 -0
  36. package/bundled-skills/ai-product/SKILL.md +2 -726
  37. package/bundled-skills/ai-product/references/detailed-guide.md +746 -0
  38. package/bundled-skills/ai-wrapper-product/SKILL.md +2 -641
  39. package/bundled-skills/ai-wrapper-product/references/detailed-guide.md +659 -0
  40. package/bundled-skills/airtable-automation/SKILL.md +6 -0
  41. package/bundled-skills/algolia-search/SKILL.md +2 -893
  42. package/bundled-skills/algolia-search/references/detailed-guide.md +901 -0
  43. package/bundled-skills/alpha-vantage/SKILL.md +1 -0
  44. package/bundled-skills/alternatives-pages/SKILL.md +7 -1
  45. package/bundled-skills/amazon-alexa/SKILL.md +2 -627
  46. package/bundled-skills/amazon-alexa/references/detailed-guide.md +644 -0
  47. package/bundled-skills/analytics/SKILL.md +1 -1
  48. package/bundled-skills/analytics-product/SKILL.md +57 -44
  49. package/bundled-skills/analytics-tracking/SKILL.md +21 -12
  50. package/bundled-skills/analyze-project/SKILL.md +1 -0
  51. package/bundled-skills/android-dev/SKILL.md +2 -490
  52. package/bundled-skills/android-dev/references/detailed-guide.md +506 -0
  53. package/bundled-skills/angular/SKILL.md +4 -783
  54. package/bundled-skills/angular/references/detailed-guide.md +801 -0
  55. package/bundled-skills/angular-best-practices/SKILL.md +4 -535
  56. package/bundled-skills/angular-best-practices/references/detailed-guide.md +549 -0
  57. package/bundled-skills/angular-state-management/SKILL.md +4 -608
  58. package/bundled-skills/angular-state-management/references/detailed-guide.md +618 -0
  59. package/bundled-skills/angular-ui-patterns/SKILL.md +2 -498
  60. package/bundled-skills/angular-ui-patterns/references/detailed-guide.md +513 -0
  61. package/bundled-skills/animejs-animation/SKILL.md +6 -0
  62. package/bundled-skills/anti-deception/SKILL.md +7 -1
  63. package/bundled-skills/antigravity-design-expert/SKILL.md +6 -0
  64. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +7 -0
  65. package/bundled-skills/antigravity-workflows/SKILL.md +20 -3
  66. package/bundled-skills/antigravity-workflows/references/workflow-cards.md +78 -0
  67. package/bundled-skills/api-analyzer/SKILL.md +1 -1
  68. package/bundled-skills/api-designer/SKILL.md +1 -1
  69. package/bundled-skills/api-integration/SKILL.md +1 -1
  70. package/bundled-skills/api-onboarding/SKILL.md +1 -1
  71. package/bundled-skills/api-patterns/SKILL.md +19 -8
  72. package/bundled-skills/api-patterns/api-style.md +2 -2
  73. package/bundled-skills/api-patterns/auth.md +3 -2
  74. package/bundled-skills/api-patterns/graphql.md +1 -1
  75. package/bundled-skills/api-patterns/scripts/api_validator.py +9 -7
  76. package/bundled-skills/api-patterns/trpc.md +2 -2
  77. package/bundled-skills/api-patterns/versioning.md +1 -1
  78. package/bundled-skills/api-sdk-generator/SKILL.md +1 -1
  79. package/bundled-skills/api-security-best-practices/SKILL.md +179 -879
  80. package/bundled-skills/apify-actor-development/SKILL.md +1 -0
  81. package/bundled-skills/apify-actorization/SKILL.md +1 -0
  82. package/bundled-skills/apify-audience-analysis/SKILL.md +1 -0
  83. package/bundled-skills/apify-brand-reputation-monitoring/SKILL.md +1 -0
  84. package/bundled-skills/apify-competitor-intelligence/SKILL.md +1 -0
  85. package/bundled-skills/apify-content-analytics/SKILL.md +1 -0
  86. package/bundled-skills/apify-ecommerce/SKILL.md +1 -0
  87. package/bundled-skills/apify-influencer-discovery/SKILL.md +1 -0
  88. package/bundled-skills/apify-lead-generation/SKILL.md +1 -0
  89. package/bundled-skills/apify-market-research/SKILL.md +1 -0
  90. package/bundled-skills/apify-trend-analysis/SKILL.md +1 -0
  91. package/bundled-skills/apify-ultimate-scraper/SKILL.md +1 -0
  92. package/bundled-skills/appium-skill/SKILL.md +1 -1
  93. package/bundled-skills/apple-notes-search/SKILL.md +6 -0
  94. package/bundled-skills/application-performance-performance-optimization/SKILL.md +6 -0
  95. package/bundled-skills/applicationinsights-web-ts/SKILL.md +1 -1
  96. package/bundled-skills/ask-matt/SKILL.md +5 -0
  97. package/bundled-skills/ask-questions-if-underspecified/SKILL.md +1 -0
  98. package/bundled-skills/astropy/SKILL.md +1 -0
  99. package/bundled-skills/atlas-contract/SKILL.md +117 -0
  100. package/bundled-skills/atlas-contract/references/detailed-guide.md +572 -0
  101. package/bundled-skills/audio-transcriber/SKILL.md +2 -425
  102. package/bundled-skills/audio-transcriber/references/detailed-guide.md +430 -0
  103. package/bundled-skills/audit-context-building/SKILL.md +1 -0
  104. package/bundled-skills/auri-core/SKILL.md +5 -562
  105. package/bundled-skills/auri-core/references/detailed-guide.md +623 -0
  106. package/bundled-skills/auth-implementation-patterns/SKILL.md +14 -4
  107. package/bundled-skills/auth-implementation-patterns/resources/implementation-playbook.md +72 -180
  108. package/bundled-skills/automated-triage/SKILL.md +6 -0
  109. package/bundled-skills/autonomous-agent-patterns/SKILL.md +4 -741
  110. package/bundled-skills/autonomous-agent-patterns/references/detailed-guide.md +751 -0
  111. package/bundled-skills/autonomous-agents/SKILL.md +8 -1010
  112. package/bundled-skills/autonomous-agents/references/detailed-guide.md +1065 -0
  113. package/bundled-skills/awareness-stage-mapper/SKILL.md +6 -0
  114. package/bundled-skills/aws-agentic-ai/SKILL.md +7 -1
  115. package/bundled-skills/aws-cdk-development/SKILL.md +1 -1
  116. package/bundled-skills/aws-cost-operations/SKILL.md +1 -1
  117. package/bundled-skills/aws-mcp-setup/SKILL.md +1 -1
  118. package/bundled-skills/aws-serverless/SKILL.md +2 -1305
  119. package/bundled-skills/aws-serverless/references/detailed-guide.md +1340 -0
  120. package/bundled-skills/aws-serverless-eda/SKILL.md +1 -1
  121. package/bundled-skills/aws-skills/SKILL.md +6 -0
  122. package/bundled-skills/aws-sst-development/SKILL.md +7 -1
  123. package/bundled-skills/awt-e2e-testing/SKILL.md +7 -0
  124. package/bundled-skills/azure-functions/SKILL.md +2 -1321
  125. package/bundled-skills/azure-functions/references/detailed-guide.md +1356 -0
  126. package/bundled-skills/azure-maps-search-dotnet/SKILL.md +2 -482
  127. package/bundled-skills/azure-maps-search-dotnet/references/detailed-guide.md +496 -0
  128. package/bundled-skills/azure-search-documents-py/SKILL.md +2 -515
  129. package/bundled-skills/azure-search-documents-py/references/detailed-guide.md +548 -0
  130. package/bundled-skills/azure-storage-file-share-ts/SKILL.md +2 -481
  131. package/bundled-skills/azure-storage-file-share-ts/references/detailed-guide.md +500 -0
  132. package/bundled-skills/azure-storage-queue-ts/SKILL.md +2 -512
  133. package/bundled-skills/azure-storage-queue-ts/references/detailed-guide.md +530 -0
  134. package/bundled-skills/backend-development-feature-development/SKILL.md +6 -0
  135. package/bundled-skills/basecamp-automation/SKILL.md +6 -0
  136. package/bundled-skills/baseline-ui/SKILL.md +6 -0
  137. package/bundled-skills/bash-pro/SKILL.md +6 -0
  138. package/bundled-skills/bdi-mental-states/SKILL.md +1 -0
  139. package/bundled-skills/beautiful-prose/SKILL.md +1 -0
  140. package/bundled-skills/bill-gates/SKILL.md +2 -778
  141. package/bundled-skills/bill-gates/references/detailed-guide.md +784 -0
  142. package/bundled-skills/biopython/SKILL.md +1 -0
  143. package/bundled-skills/bitbucket-automation/SKILL.md +6 -0
  144. package/bundled-skills/blog-writing-guide/SKILL.md +6 -0
  145. package/bundled-skills/box-automation/SKILL.md +6 -0
  146. package/bundled-skills/brain-to-docs/SKILL.md +6 -0
  147. package/bundled-skills/brainstorming/SKILL.md +6 -0
  148. package/bundled-skills/brand-guidelines/SKILL.md +1 -0
  149. package/bundled-skills/brand-guidelines-anthropic/SKILL.md +23 -8
  150. package/bundled-skills/brand-guidelines-community/SKILL.md +23 -8
  151. package/bundled-skills/brand-perception-psychologist/SKILL.md +6 -0
  152. package/bundled-skills/brooks-audit/SKILL.md +1 -1
  153. package/bundled-skills/brooks-debt/SKILL.md +1 -1
  154. package/bundled-skills/brooks-harness/SKILL.md +1 -1
  155. package/bundled-skills/brooks-review/SKILL.md +7 -1
  156. package/bundled-skills/brooks-sweep/SKILL.md +1 -1
  157. package/bundled-skills/brooks-test/SKILL.md +1 -1
  158. package/bundled-skills/browser-automation/SKILL.md +18 -1044
  159. package/bundled-skills/browser-automation/references/detailed-guide.md +852 -0
  160. package/bundled-skills/bug-hunt-swarm/SKILL.md +7 -1
  161. package/bundled-skills/build/SKILL.md +5 -627
  162. package/bundled-skills/build/references/detailed-guide.md +637 -0
  163. package/bundled-skills/bun-development/SKILL.md +4 -678
  164. package/bundled-skills/bun-development/references/detailed-guide.md +691 -0
  165. package/bundled-skills/burpsuite-project-parser/SKILL.md +1 -0
  166. package/bundled-skills/c-pro/SKILL.md +6 -0
  167. package/bundled-skills/calendly-automation/SKILL.md +6 -0
  168. package/bundled-skills/cc-skill-backend-patterns/SKILL.md +2 -572
  169. package/bundled-skills/cc-skill-backend-patterns/references/detailed-guide.md +584 -0
  170. package/bundled-skills/cc-skill-coding-standards/SKILL.md +2 -510
  171. package/bundled-skills/cc-skill-coding-standards/references/detailed-guide.md +523 -0
  172. package/bundled-skills/cc-skill-continuous-learning/SKILL.md +49 -7
  173. package/bundled-skills/cc-skill-continuous-learning/config.json +1 -16
  174. package/bundled-skills/cc-skill-continuous-learning/evaluate-session.sh +56 -59
  175. package/bundled-skills/cc-skill-frontend-patterns/SKILL.md +2 -621
  176. package/bundled-skills/cc-skill-frontend-patterns/references/detailed-guide.md +633 -0
  177. package/bundled-skills/cc-skill-security-review/SKILL.md +4 -36
  178. package/bundled-skills/cc-skill-security-review/references/detailed-guide.md +40 -0
  179. package/bundled-skills/cc-skill-strategic-compact/SKILL.md +53 -7
  180. package/bundled-skills/cc-skill-strategic-compact/suggest-compact.sh +20 -51
  181. package/bundled-skills/changelog-updates/SKILL.md +6 -528
  182. package/bundled-skills/changelog-updates/references/detailed-guide.md +540 -0
  183. package/bundled-skills/chat-widget/SKILL.md +5 -879
  184. package/bundled-skills/chat-widget/references/detailed-guide.md +890 -0
  185. package/bundled-skills/cirq/SKILL.md +1 -0
  186. package/bundled-skills/citation-management/SKILL.md +3 -960
  187. package/bundled-skills/citation-management/references/detailed-guide.md +975 -0
  188. package/bundled-skills/ckw-design/SKILL.md +6 -0
  189. package/bundled-skills/claimable-postgres/SKILL.md +1 -1
  190. package/bundled-skills/clarity-gate/SKILL.md +3 -635
  191. package/bundled-skills/clarity-gate/references/detailed-guide.md +653 -0
  192. package/bundled-skills/claude-ally-health/SKILL.md +6 -0
  193. package/bundled-skills/claude-code-expert/SKILL.md +2 -527
  194. package/bundled-skills/claude-code-expert/references/detailed-guide.md +548 -0
  195. package/bundled-skills/claude-d3js-skill/SKILL.md +2 -798
  196. package/bundled-skills/claude-d3js-skill/references/detailed-guide.md +811 -0
  197. package/bundled-skills/claude-in-chrome-troubleshooting/SKILL.md +1 -0
  198. package/bundled-skills/claude-scientific-skills/SKILL.md +6 -0
  199. package/bundled-skills/claude-settings-audit/SKILL.md +1 -0
  200. package/bundled-skills/claude-speed-reader/SKILL.md +6 -0
  201. package/bundled-skills/claude-win11-speckit-update-skill/SKILL.md +6 -0
  202. package/bundled-skills/clean-code/SKILL.md +6 -0
  203. package/bundled-skills/clerk-auth/SKILL.md +2 -812
  204. package/bundled-skills/clerk-auth/references/detailed-guide.md +820 -0
  205. package/bundled-skills/clickup-automation/SKILL.md +6 -0
  206. package/bundled-skills/closed-loop-delivery/SKILL.md +6 -0
  207. package/bundled-skills/co-marketing/SKILL.md +1 -1
  208. package/bundled-skills/code-documentation-doc-generate/SKILL.md +16 -1
  209. package/bundled-skills/code-documentation-doc-generate/resources/implementation-playbook.md +33 -55
  210. package/bundled-skills/code-refactoring-context-restore/SKILL.md +40 -177
  211. package/bundled-skills/code-refactoring-tech-debt/SKILL.md +20 -9
  212. package/bundled-skills/code-simplifier/SKILL.md +1 -0
  213. package/bundled-skills/codebase-cleanup-tech-debt/SKILL.md +20 -9
  214. package/bundled-skills/cold-email/SKILL.md +6 -0
  215. package/bundled-skills/commit/SKILL.md +1 -0
  216. package/bundled-skills/community-building/SKILL.md +1 -1
  217. package/bundled-skills/competitor-alternatives/SKILL.md +2 -740
  218. package/bundled-skills/competitor-alternatives/references/detailed-guide.md +756 -0
  219. package/bundled-skills/competitor-profiling/SKILL.md +1 -1
  220. package/bundled-skills/competitor-tracking/SKILL.md +1 -1
  221. package/bundled-skills/comprehensive-review-full-review/SKILL.md +6 -0
  222. package/bundled-skills/comprehensive-review-pr-enhance/SKILL.md +1 -0
  223. package/bundled-skills/computer-use-agents/SKILL.md +2 -2131
  224. package/bundled-skills/computer-use-agents/references/detailed-guide.md +2158 -0
  225. package/bundled-skills/computer-vision-expert/SKILL.md +6 -0
  226. package/bundled-skills/conductor-setup/SKILL.md +1 -0
  227. package/bundled-skills/confluence-automation/SKILL.md +6 -0
  228. package/bundled-skills/constant-time-analysis/SKILL.md +1 -0
  229. package/bundled-skills/container-security-hardening/SKILL.md +4 -915
  230. package/bundled-skills/container-security-hardening/references/detailed-guide.md +927 -0
  231. package/bundled-skills/content-creator/SKILL.md +53 -23
  232. package/bundled-skills/content-creator/assets/content_calendar_template.md +5 -2
  233. package/bundled-skills/content-creator/references/brand_guidelines.md +7 -3
  234. package/bundled-skills/content-creator/references/content_frameworks.md +12 -7
  235. package/bundled-skills/content-creator/references/social_media_optimization.md +61 -317
  236. package/bundled-skills/content-creator/scripts/brand_voice_analyzer.py +14 -9
  237. package/bundled-skills/content-creator/scripts/seo_optimizer.py +31 -94
  238. package/bundled-skills/context-compression/SKILL.md +1 -0
  239. package/bundled-skills/context-degradation/SKILL.md +1 -0
  240. package/bundled-skills/context-fundamentals/SKILL.md +1 -0
  241. package/bundled-skills/context-management-context-restore/SKILL.md +40 -177
  242. package/bundled-skills/context-optimization/SKILL.md +1 -0
  243. package/bundled-skills/convex/SKILL.md +4 -766
  244. package/bundled-skills/convex/references/detailed-guide.md +772 -0
  245. package/bundled-skills/copilot-sdk/SKILL.md +4 -496
  246. package/bundled-skills/copilot-sdk/references/detailed-guide.md +516 -0
  247. package/bundled-skills/copy-editing/SKILL.md +6 -0
  248. package/bundled-skills/copywriting/SKILL.md +6 -0
  249. package/bundled-skills/copywriting-psychologist/SKILL.md +6 -0
  250. package/bundled-skills/create-branch/SKILL.md +1 -0
  251. package/bundled-skills/create-pr/SKILL.md +7 -0
  252. package/bundled-skills/cred-omega/SKILL.md +2 -847
  253. package/bundled-skills/cred-omega/references/detailed-guide.md +872 -0
  254. package/bundled-skills/cro/SKILL.md +1 -1
  255. package/bundled-skills/csharp-pro/SKILL.md +6 -0
  256. package/bundled-skills/cucumber-skill/SKILL.md +1 -1
  257. package/bundled-skills/customer-psychographic-profiler/SKILL.md +6 -0
  258. package/bundled-skills/customer-research/SKILL.md +1 -1
  259. package/bundled-skills/cv-generator/SKILL.md +4 -828
  260. package/bundled-skills/cv-generator/references/detailed-guide.md +845 -0
  261. package/bundled-skills/cypress-skill/SKILL.md +1 -1
  262. package/bundled-skills/daily-gift/SKILL.md +6 -0
  263. package/bundled-skills/debug-buttercup/SKILL.md +1 -0
  264. package/bundled-skills/debugger/SKILL.md +6 -0
  265. package/bundled-skills/debugging-code/SKILL.md +1 -1
  266. package/bundled-skills/deepapi/SKILL.md +4 -619
  267. package/bundled-skills/deepapi/references/detailed-guide.md +627 -0
  268. package/bundled-skills/delegating-to-agents/SKILL.md +6 -0
  269. package/bundled-skills/deployment-validation-config-validate/SKILL.md +4 -478
  270. package/bundled-skills/deployment-validation-config-validate/references/detailed-guide.md +484 -0
  271. package/bundled-skills/design-it/SKILL.md +6 -0
  272. package/bundled-skills/design-orchestration/SKILL.md +6 -0
  273. package/bundled-skills/design-spells/SKILL.md +6 -0
  274. package/bundled-skills/design-system/SKILL.md +7 -1
  275. package/bundled-skills/design-taste-frontend/SKILL.md +6 -0
  276. package/bundled-skills/design-thinking/SKILL.md +6 -0
  277. package/bundled-skills/design-ux/SKILL.md +7 -1
  278. package/bundled-skills/deterministic-design/SKILL.md +6 -0
  279. package/bundled-skills/developer-advocacy/SKILL.md +1 -1
  280. package/bundled-skills/developer-audience-context/SKILL.md +1 -1
  281. package/bundled-skills/developer-churn/SKILL.md +5 -625
  282. package/bundled-skills/developer-churn/references/detailed-guide.md +639 -0
  283. package/bundled-skills/developer-listening/SKILL.md +7 -1
  284. package/bundled-skills/developer-onboarding/SKILL.md +6 -474
  285. package/bundled-skills/developer-onboarding/references/detailed-guide.md +486 -0
  286. package/bundled-skills/developer-sandbox/SKILL.md +6 -414
  287. package/bundled-skills/developer-sandbox/references/detailed-guide.md +425 -0
  288. package/bundled-skills/developer-seo/SKILL.md +1 -1
  289. package/bundled-skills/developer-signup-flow/SKILL.md +1 -1
  290. package/bundled-skills/devrel-content/SKILL.md +1 -1
  291. package/bundled-skills/diagnosing-bugs/SKILL.md +5 -0
  292. package/bundled-skills/diary/SKILL.md +1 -0
  293. package/bundled-skills/differential-review/SKILL.md +1 -0
  294. package/bundled-skills/discord-automation/SKILL.md +6 -0
  295. package/bundled-skills/discord-bot-architect/SKILL.md +2 -1434
  296. package/bundled-skills/discord-bot-architect/references/detailed-guide.md +1465 -0
  297. package/bundled-skills/django-access-review/SKILL.md +1 -0
  298. package/bundled-skills/django-perf-review/SKILL.md +1 -0
  299. package/bundled-skills/doc-coauthoring/SKILL.md +6 -0
  300. package/bundled-skills/docs-architect/SKILL.md +6 -0
  301. package/bundled-skills/docs-as-marketing/SKILL.md +1 -1
  302. package/bundled-skills/documentation-generation-doc-generate/SKILL.md +16 -1
  303. package/bundled-skills/documentation-generation-doc-generate/resources/implementation-playbook.md +33 -55
  304. package/bundled-skills/doubt-driven-development/SKILL.md +1 -1
  305. package/bundled-skills/dropbox-automation/SKILL.md +6 -0
  306. package/bundled-skills/dwarf-expert/SKILL.md +1 -0
  307. package/bundled-skills/dx-optimizer/SKILL.md +6 -0
  308. package/bundled-skills/e2e-testing-patterns/SKILL.md +14 -4
  309. package/bundled-skills/e2e-testing-patterns/resources/implementation-playbook.md +22 -41
  310. package/bundled-skills/eas-update-insights/SKILL.md +1 -1
  311. package/bundled-skills/ecl-harness-engineer/SKILL.md +4 -681
  312. package/bundled-skills/ecl-harness-engineer/references/detailed-guide.md +691 -0
  313. package/bundled-skills/efficient-web-research/SKILL.md +1 -0
  314. package/bundled-skills/electron-development/SKILL.md +4 -820
  315. package/bundled-skills/electron-development/references/detailed-guide.md +828 -0
  316. package/bundled-skills/elixir-pro/SKILL.md +6 -0
  317. package/bundled-skills/elon-musk/SKILL.md +5 -1278
  318. package/bundled-skills/elon-musk/references/detailed-guide.md +1293 -0
  319. package/bundled-skills/email-sequence/SKILL.md +2 -915
  320. package/bundled-skills/email-sequence/references/detailed-guide.md +932 -0
  321. package/bundled-skills/email-systems/SKILL.md +2 -654
  322. package/bundled-skills/email-systems/references/detailed-guide.md +669 -0
  323. package/bundled-skills/emergency-card/SKILL.md +1 -0
  324. package/bundled-skills/emil-design-eng/SKILL.md +4 -673
  325. package/bundled-skills/emil-design-eng/references/detailed-guide.md +690 -0
  326. package/bundled-skills/emotional-arc-designer/SKILL.md +6 -0
  327. package/bundled-skills/enhance-prompt/SKILL.md +1 -0
  328. package/bundled-skills/entropy-box/SKILL.md +400 -0
  329. package/bundled-skills/entropy-box/references/api.md +196 -0
  330. package/bundled-skills/entropy-box/references/knowledge-compiler.md +61 -0
  331. package/bundled-skills/entropy-box/references/panorama.md +72 -0
  332. package/bundled-skills/error-debugging-error-analysis/SKILL.md +15 -0
  333. package/bundled-skills/error-debugging-error-analysis/resources/implementation-playbook.md +122 -1125
  334. package/bundled-skills/error-debugging-multi-agent-review/SKILL.md +42 -214
  335. package/bundled-skills/error-detective/SKILL.md +6 -0
  336. package/bundled-skills/error-diagnostics-error-analysis/SKILL.md +15 -0
  337. package/bundled-skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +122 -1125
  338. package/bundled-skills/event-sourcing-architect/SKILL.md +6 -0
  339. package/bundled-skills/event-staffing-compliance/SKILL.md +6 -0
  340. package/bundled-skills/event-staffing-ordering/SKILL.md +6 -0
  341. package/bundled-skills/evolution/SKILL.md +1 -0
  342. package/bundled-skills/executing-plans/SKILL.md +6 -0
  343. package/bundled-skills/explain-like-socrates/SKILL.md +6 -0
  344. package/bundled-skills/expo-deployment/SKILL.md +1 -1
  345. package/bundled-skills/expo-examples/SKILL.md +1 -1
  346. package/bundled-skills/expo-module/SKILL.md +1 -1
  347. package/bundled-skills/expo-observe/SKILL.md +1 -1
  348. package/bundled-skills/expo-ui/SKILL.md +1 -1
  349. package/bundled-skills/expo-ui-jetpack-compose/SKILL.md +1 -0
  350. package/bundled-skills/expo-ui-swift-ui/SKILL.md +1 -0
  351. package/bundled-skills/fable-safe-prompt/SKILL.md +6 -0
  352. package/bundled-skills/fal-audio/SKILL.md +6 -0
  353. package/bundled-skills/fal-generate/SKILL.md +6 -0
  354. package/bundled-skills/fal-image-edit/SKILL.md +6 -0
  355. package/bundled-skills/fal-platform/SKILL.md +6 -0
  356. package/bundled-skills/fal-upscale/SKILL.md +6 -0
  357. package/bundled-skills/fal-workflow/SKILL.md +6 -0
  358. package/bundled-skills/family-health-analyzer/SKILL.md +1 -0
  359. package/bundled-skills/favicon/SKILL.md +1 -0
  360. package/bundled-skills/fda-food-safety-auditor/SKILL.md +1 -0
  361. package/bundled-skills/fda-medtech-compliance-auditor/SKILL.md +1 -0
  362. package/bundled-skills/ffuf-claude-skill/SKILL.md +6 -0
  363. package/bundled-skills/ffuf-web-fuzzing/SKILL.md +5 -492
  364. package/bundled-skills/ffuf-web-fuzzing/references/detailed-guide.md +510 -0
  365. package/bundled-skills/file-organizer/SKILL.md +6 -0
  366. package/bundled-skills/file-uploads/SKILL.md +6 -0
  367. package/bundled-skills/filesystem-context/SKILL.md +1 -0
  368. package/bundled-skills/find-bugs/SKILL.md +7 -0
  369. package/bundled-skills/firebase/SKILL.md +8 -651
  370. package/bundled-skills/firebase/references/detailed-guide.md +662 -0
  371. package/bundled-skills/fitness-analyzer/SKILL.md +1 -0
  372. package/bundled-skills/fix-review/SKILL.md +6 -0
  373. package/bundled-skills/fixing-metadata/SKILL.md +7 -1
  374. package/bundled-skills/food-database-query/SKILL.md +5 -772
  375. package/bundled-skills/food-database-query/references/detailed-guide.md +785 -0
  376. package/bundled-skills/form-cro/SKILL.md +6 -0
  377. package/bundled-skills/fp-async/SKILL.md +5 -716
  378. package/bundled-skills/fp-async/references/detailed-guide.md +726 -0
  379. package/bundled-skills/fp-backend/SKILL.md +5 -1313
  380. package/bundled-skills/fp-backend/references/detailed-guide.md +1323 -0
  381. package/bundled-skills/fp-data-transforms/SKILL.md +5 -1181
  382. package/bundled-skills/fp-data-transforms/references/detailed-guide.md +1190 -0
  383. package/bundled-skills/fp-either-ref/SKILL.md +1 -0
  384. package/bundled-skills/fp-errors/SKILL.md +5 -835
  385. package/bundled-skills/fp-errors/references/detailed-guide.md +846 -0
  386. package/bundled-skills/fp-option-ref/SKILL.md +1 -0
  387. package/bundled-skills/fp-pipe-ref/SKILL.md +1 -0
  388. package/bundled-skills/fp-pragmatic/SKILL.md +5 -500
  389. package/bundled-skills/fp-pragmatic/references/detailed-guide.md +510 -0
  390. package/bundled-skills/fp-react/SKILL.md +3 -761
  391. package/bundled-skills/fp-react/references/detailed-guide.md +775 -0
  392. package/bundled-skills/fp-refactor/SKILL.md +5 -1761
  393. package/bundled-skills/fp-refactor/references/detailed-guide.md +1775 -0
  394. package/bundled-skills/fp-taskeither-ref/SKILL.md +1 -0
  395. package/bundled-skills/fp-ts-errors/SKILL.md +4 -835
  396. package/bundled-skills/fp-ts-errors/references/detailed-guide.md +846 -0
  397. package/bundled-skills/fp-ts-pragmatic/SKILL.md +4 -500
  398. package/bundled-skills/fp-ts-pragmatic/references/detailed-guide.md +510 -0
  399. package/bundled-skills/fp-ts-react/SKILL.md +4 -763
  400. package/bundled-skills/fp-ts-react/references/detailed-guide.md +775 -0
  401. package/bundled-skills/fp-types-ref/SKILL.md +1 -0
  402. package/bundled-skills/framework-migration-legacy-modernize/SKILL.md +6 -0
  403. package/bundled-skills/free-tool-strategy/SKILL.md +2 -532
  404. package/bundled-skills/free-tool-strategy/references/detailed-guide.md +550 -0
  405. package/bundled-skills/freshdesk-automation/SKILL.md +6 -0
  406. package/bundled-skills/frontend-architecture/SKILL.md +1 -1
  407. package/bundled-skills/frontend-data-contracts/SKILL.md +1 -1
  408. package/bundled-skills/frontend-design/SKILL.md +33 -34
  409. package/bundled-skills/frontend-observability/SKILL.md +1 -1
  410. package/bundled-skills/frontend-optimistic-mutations/SKILL.md +1 -1
  411. package/bundled-skills/frontend-seo/SKILL.md +6 -675
  412. package/bundled-skills/frontend-seo/references/detailed-guide.md +688 -0
  413. package/bundled-skills/frontend-slides-frontend-slides/SKILL.md +7 -1
  414. package/bundled-skills/frontend-ui-dark-ts/SKILL.md +2 -561
  415. package/bundled-skills/frontend-ui-dark-ts/references/detailed-guide.md +573 -0
  416. package/bundled-skills/full-stack-orchestration-full-stack-feature/SKILL.md +6 -0
  417. package/bundled-skills/game-development/2d-games/SKILL.md +6 -0
  418. package/bundled-skills/game-development/mobile-games/SKILL.md +6 -0
  419. package/bundled-skills/game-development/vr-ar/SKILL.md +6 -0
  420. package/bundled-skills/gcp-cloud-run/SKILL.md +2 -1303
  421. package/bundled-skills/gcp-cloud-run/references/detailed-guide.md +1350 -0
  422. package/bundled-skills/gemini-api-dev/SKILL.md +1 -1
  423. package/bundled-skills/gemini-live-api-dev/SKILL.md +1 -1
  424. package/bundled-skills/gemini-omni-flash-api/SKILL.md +1 -1
  425. package/bundled-skills/geo-fundamentals/SKILL.md +6 -0
  426. package/bundled-skills/geoffrey-hinton/SKILL.md +5 -1235
  427. package/bundled-skills/geoffrey-hinton/references/detailed-guide.md +1324 -0
  428. package/bundled-skills/gh-review-requests/SKILL.md +1 -0
  429. package/bundled-skills/github-actions-advanced/SKILL.md +4 -971
  430. package/bundled-skills/github-actions-advanced/references/detailed-guide.md +991 -0
  431. package/bundled-skills/github-automation/SKILL.md +6 -0
  432. package/bundled-skills/github-workflow-automation/SKILL.md +4 -826
  433. package/bundled-skills/github-workflow-automation/references/detailed-guide.md +832 -0
  434. package/bundled-skills/gitlab-automation/SKILL.md +6 -0
  435. package/bundled-skills/gmail-automation/SKILL.md +1 -0
  436. package/bundled-skills/go-rod-master/SKILL.md +2 -496
  437. package/bundled-skills/go-rod-master/references/detailed-guide.md +508 -0
  438. package/bundled-skills/goal-analyzer/SKILL.md +5 -596
  439. package/bundled-skills/goal-analyzer/references/detailed-guide.md +602 -0
  440. package/bundled-skills/google-calendar-automation/SKILL.md +1 -0
  441. package/bundled-skills/google-docs-automation/SKILL.md +1 -0
  442. package/bundled-skills/google-drive-automation/SKILL.md +1 -0
  443. package/bundled-skills/google-sheets-automation/SKILL.md +1 -0
  444. package/bundled-skills/google-slides-automation/SKILL.md +1 -0
  445. package/bundled-skills/googlesheets-automation/SKILL.md +6 -0
  446. package/bundled-skills/gpt-taste/SKILL.md +6 -0
  447. package/bundled-skills/graphql/SKILL.md +8 -1031
  448. package/bundled-skills/graphql/references/detailed-guide.md +1044 -0
  449. package/bundled-skills/grill-me/SKILL.md +5 -0
  450. package/bundled-skills/grill-with-docs/SKILL.md +5 -0
  451. package/bundled-skills/grilling/SKILL.md +5 -0
  452. package/bundled-skills/growth-engine/SKILL.md +6 -0
  453. package/bundled-skills/handoff/SKILL.md +5 -0
  454. package/bundled-skills/haskell-pro/SKILL.md +6 -0
  455. package/bundled-skills/headline-psychologist/SKILL.md +6 -0
  456. package/bundled-skills/health-trend-analyzer/SKILL.md +1 -0
  457. package/bundled-skills/hig-components-content/SKILL.md +6 -0
  458. package/bundled-skills/hig-components-controls/SKILL.md +6 -0
  459. package/bundled-skills/hig-components-dialogs/SKILL.md +6 -0
  460. package/bundled-skills/hig-components-layout/SKILL.md +6 -0
  461. package/bundled-skills/hig-components-menus/SKILL.md +6 -0
  462. package/bundled-skills/hig-components-search/SKILL.md +6 -0
  463. package/bundled-skills/hig-components-status/SKILL.md +6 -0
  464. package/bundled-skills/hig-components-system/SKILL.md +6 -0
  465. package/bundled-skills/hig-foundations/SKILL.md +6 -0
  466. package/bundled-skills/hig-inputs/SKILL.md +6 -0
  467. package/bundled-skills/hig-patterns/SKILL.md +6 -0
  468. package/bundled-skills/hig-platforms/SKILL.md +6 -0
  469. package/bundled-skills/hig-technologies/SKILL.md +6 -0
  470. package/bundled-skills/high-end-visual-design/SKILL.md +6 -0
  471. package/bundled-skills/hosted-agents/SKILL.md +7 -0
  472. package/bundled-skills/hosted-agents-v2-py/SKILL.md +23 -5
  473. package/bundled-skills/html-injection-testing/SKILL.md +2 -453
  474. package/bundled-skills/html-injection-testing/references/detailed-guide.md +462 -0
  475. package/bundled-skills/hubspot-automation/SKILL.md +6 -0
  476. package/bundled-skills/hubspot-integration/SKILL.md +8 -807
  477. package/bundled-skills/hubspot-integration/references/detailed-guide.md +815 -0
  478. package/bundled-skills/hugging-face-cli/SKILL.md +7 -1
  479. package/bundled-skills/hugging-face-community-evals/SKILL.md +1 -1
  480. package/bundled-skills/hugging-face-datasets/SKILL.md +5 -430
  481. package/bundled-skills/hugging-face-datasets/references/detailed-guide.md +442 -0
  482. package/bundled-skills/hugging-face-evaluation/SKILL.md +5 -640
  483. package/bundled-skills/hugging-face-evaluation/references/detailed-guide.md +652 -0
  484. package/bundled-skills/hugging-face-jobs/SKILL.md +3 -801
  485. package/bundled-skills/hugging-face-jobs/references/detailed-guide.md +821 -0
  486. package/bundled-skills/hugging-face-model-trainer/SKILL.md +3 -681
  487. package/bundled-skills/hugging-face-model-trainer/references/detailed-guide.md +702 -0
  488. package/bundled-skills/hugging-face-paper-publisher/SKILL.md +5 -617
  489. package/bundled-skills/hugging-face-paper-publisher/references/detailed-guide.md +624 -0
  490. package/bundled-skills/hugging-face-papers/SKILL.md +1 -1
  491. package/bundled-skills/hugging-face-tool-builder/SKILL.md +1 -0
  492. package/bundled-skills/hugging-face-trackio/SKILL.md +1 -1
  493. package/bundled-skills/hugging-face-vision-trainer/SKILL.md +5 -534
  494. package/bundled-skills/hugging-face-vision-trainer/references/detailed-guide.md +549 -0
  495. package/bundled-skills/huggingface-best/SKILL.md +1 -1
  496. package/bundled-skills/huggingface-lora-space-builder/SKILL.md +1 -1
  497. package/bundled-skills/huggingface-spaces/SKILL.md +1 -1
  498. package/bundled-skills/huggingface-tool-builder/SKILL.md +1 -1
  499. package/bundled-skills/huggingface-zerogpu/SKILL.md +1 -1
  500. package/bundled-skills/hugo-to-markdown/SKILL.md +1 -1
  501. package/bundled-skills/hyperexecute-skill/SKILL.md +7 -1
  502. package/bundled-skills/iconsax-library/SKILL.md +6 -0
  503. package/bundled-skills/idea-refine/SKILL.md +1 -1
  504. package/bundled-skills/identity-mirror/SKILL.md +6 -0
  505. package/bundled-skills/ilya-sutskever/SKILL.md +2 -1126
  506. package/bundled-skills/ilya-sutskever/references/detailed-guide.md +1167 -0
  507. package/bundled-skills/image-generator/SKILL.md +4 -320
  508. package/bundled-skills/image-generator/references/detailed-guide.md +332 -0
  509. package/bundled-skills/implement/SKILL.md +6 -0
  510. package/bundled-skills/incident-responder/SKILL.md +6 -0
  511. package/bundled-skills/incident-response-incident-response/SKILL.md +6 -0
  512. package/bundled-skills/industrial-brutalist-ui/SKILL.md +6 -0
  513. package/bundled-skills/interactive-portfolio/SKILL.md +2 -482
  514. package/bundled-skills/interactive-portfolio/references/detailed-guide.md +500 -0
  515. package/bundled-skills/internal-comms/SKILL.md +20 -1
  516. package/bundled-skills/internal-comms/examples/3p-updates.md +5 -4
  517. package/bundled-skills/internal-comms/examples/company-newsletter.md +3 -2
  518. package/bundled-skills/internal-comms/examples/faq-answers.md +1 -0
  519. package/bundled-skills/internal-comms/examples/general-comms.md +1 -0
  520. package/bundled-skills/internal-comms-anthropic/SKILL.md +21 -2
  521. package/bundled-skills/internal-comms-anthropic/examples/3p-updates.md +5 -4
  522. package/bundled-skills/internal-comms-anthropic/examples/company-newsletter.md +3 -2
  523. package/bundled-skills/internal-comms-anthropic/examples/faq-answers.md +1 -0
  524. package/bundled-skills/internal-comms-anthropic/examples/general-comms.md +1 -0
  525. package/bundled-skills/internal-comms-community/SKILL.md +21 -2
  526. package/bundled-skills/internal-comms-community/examples/3p-updates.md +48 -0
  527. package/bundled-skills/internal-comms-community/examples/company-newsletter.md +66 -0
  528. package/bundled-skills/internal-comms-community/examples/faq-answers.md +31 -0
  529. package/bundled-skills/internal-comms-community/examples/general-comms.md +17 -0
  530. package/bundled-skills/ios-debugger-agent/SKILL.md +6 -0
  531. package/bundled-skills/issues/SKILL.md +1 -0
  532. package/bundled-skills/iterate-pr/SKILL.md +1 -0
  533. package/bundled-skills/javascript-mastery/SKILL.md +4 -625
  534. package/bundled-skills/javascript-mastery/references/detailed-guide.md +636 -0
  535. package/bundled-skills/javascript-pro/SKILL.md +6 -0
  536. package/bundled-skills/jest-skill/SKILL.md +1 -1
  537. package/bundled-skills/jira-automation/SKILL.md +6 -0
  538. package/bundled-skills/jobs-to-be-done-analyst/SKILL.md +6 -0
  539. package/bundled-skills/junit-5-skill/SKILL.md +1 -1
  540. package/bundled-skills/k6-load-testing/SKILL.md +2 -544
  541. package/bundled-skills/k6-load-testing/references/detailed-guide.md +563 -0
  542. package/bundled-skills/kaizen/SKILL.md +2 -711
  543. package/bundled-skills/kaizen/references/detailed-guide.md +720 -0
  544. package/bundled-skills/langfuse/SKILL.md +41 -468
  545. package/bundled-skills/langgraph/SKILL.md +2 -445
  546. package/bundled-skills/langgraph/references/detailed-guide.md +455 -0
  547. package/bundled-skills/laravel-development-workflow/SKILL.md +106 -0
  548. package/bundled-skills/laravel-expert/SKILL.md +6 -0
  549. package/bundled-skills/launch-strategy/SKILL.md +6 -0
  550. package/bundled-skills/lead-magnets/SKILL.md +6 -0
  551. package/bundled-skills/learn/SKILL.md +5 -0
  552. package/bundled-skills/legacy-modernizer/SKILL.md +6 -0
  553. package/bundled-skills/legal-advisor/SKILL.md +6 -0
  554. package/bundled-skills/leiloeiro-avaliacao/SKILL.md +2 -469
  555. package/bundled-skills/leiloeiro-avaliacao/references/detailed-guide.md +503 -0
  556. package/bundled-skills/leiloeiro-edital/SKILL.md +2 -468
  557. package/bundled-skills/leiloeiro-edital/references/detailed-guide.md +491 -0
  558. package/bundled-skills/leiloeiro-mercado/SKILL.md +2 -458
  559. package/bundled-skills/leiloeiro-mercado/references/detailed-guide.md +488 -0
  560. package/bundled-skills/leiloeiro-risco/SKILL.md +2 -457
  561. package/bundled-skills/leiloeiro-risco/references/detailed-guide.md +482 -0
  562. package/bundled-skills/lesson-generator/SKILL.md +5 -0
  563. package/bundled-skills/lightning-architecture-review/SKILL.md +6 -0
  564. package/bundled-skills/lightning-channel-factories/SKILL.md +6 -0
  565. package/bundled-skills/lightning-factory-explainer/SKILL.md +6 -0
  566. package/bundled-skills/linear-claude-skill/SKILL.md +4 -502
  567. package/bundled-skills/linear-claude-skill/references/detailed-guide.md +517 -0
  568. package/bundled-skills/linkedin-cli/SKILL.md +4 -513
  569. package/bundled-skills/linkedin-cli/references/detailed-guide.md +520 -0
  570. package/bundled-skills/lint-and-validate/SKILL.md +6 -0
  571. package/bundled-skills/linux-privilege-escalation/SKILL.md +2 -426
  572. package/bundled-skills/linux-privilege-escalation/references/detailed-guide.md +436 -0
  573. package/bundled-skills/linux-shell-scripting/SKILL.md +2 -473
  574. package/bundled-skills/linux-shell-scripting/references/detailed-guide.md +481 -0
  575. package/bundled-skills/llm-app-patterns/SKILL.md +16 -741
  576. package/bundled-skills/llm-app-patterns/references/detailed-guide.md +760 -0
  577. package/bundled-skills/llm-council/SKILL.md +4 -550
  578. package/bundled-skills/llm-council/references/detailed-guide.md +556 -0
  579. package/bundled-skills/llm-ops/SKILL.md +6 -0
  580. package/bundled-skills/local-legal-seo-audit/SKILL.md +6 -0
  581. package/bundled-skills/logic-diff/SKILL.md +1 -1
  582. package/bundled-skills/logic-explain/SKILL.md +7 -1
  583. package/bundled-skills/logic-fix-all/SKILL.md +1 -1
  584. package/bundled-skills/logic-locate/SKILL.md +1 -1
  585. package/bundled-skills/logic-review/SKILL.md +1 -1
  586. package/bundled-skills/loki-mode/SKILL.md +4 -696
  587. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +13 -12
  588. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
  589. package/bundled-skills/loki-mode/references/detailed-guide.md +717 -0
  590. package/bundled-skills/longbridge-content/SKILL.md +1 -1
  591. package/bundled-skills/longbridge-fundamentals/SKILL.md +1 -1
  592. package/bundled-skills/longbridge-market-data/SKILL.md +1 -1
  593. package/bundled-skills/lookdev-auto/SKILL.md +6 -0
  594. package/bundled-skills/loopy/SKILL.md +1 -1
  595. package/bundled-skills/loss-aversion-designer/SKILL.md +6 -0
  596. package/bundled-skills/machine-learning-ops-ml-pipeline/SKILL.md +6 -0
  597. package/bundled-skills/magic-animator/SKILL.md +6 -0
  598. package/bundled-skills/magic-ui-generator/SKILL.md +6 -0
  599. package/bundled-skills/mailtrap-setting-up-sending-domain/SKILL.md +6 -0
  600. package/bundled-skills/makepad-animation/SKILL.md +1 -0
  601. package/bundled-skills/makepad-basics/SKILL.md +1 -0
  602. package/bundled-skills/makepad-deployment/SKILL.md +1 -0
  603. package/bundled-skills/makepad-dsl/SKILL.md +1 -0
  604. package/bundled-skills/makepad-event-action/SKILL.md +1 -0
  605. package/bundled-skills/makepad-font/SKILL.md +1 -0
  606. package/bundled-skills/makepad-layout/SKILL.md +1 -0
  607. package/bundled-skills/makepad-platform/SKILL.md +1 -0
  608. package/bundled-skills/makepad-reference/SKILL.md +1 -0
  609. package/bundled-skills/makepad-shaders/SKILL.md +1 -0
  610. package/bundled-skills/makepad-skills/SKILL.md +6 -0
  611. package/bundled-skills/makepad-splash/SKILL.md +1 -0
  612. package/bundled-skills/makepad-widgets/SKILL.md +1 -0
  613. package/bundled-skills/manage-skills/SKILL.md +1 -0
  614. package/bundled-skills/marketing-plan/SKILL.md +1 -1
  615. package/bundled-skills/matematico-tao/SKILL.md +2 -632
  616. package/bundled-skills/matematico-tao/references/detailed-guide.md +651 -0
  617. package/bundled-skills/matplotlib/SKILL.md +1 -0
  618. package/bundled-skills/maxia/SKILL.md +1 -0
  619. package/bundled-skills/mcp-builder/SKILL.md +46 -14
  620. package/bundled-skills/mcp-builder/reference/evaluation.md +69 -226
  621. package/bundled-skills/mcp-builder/reference/mcp_best_practices.md +8 -5
  622. package/bundled-skills/mcp-builder/reference/node_mcp_server.md +46 -144
  623. package/bundled-skills/mcp-builder/reference/python_mcp_server.md +42 -80
  624. package/bundled-skills/mcp-builder/scripts/connections.py +18 -11
  625. package/bundled-skills/mcp-builder/scripts/evaluation.py +88 -95
  626. package/bundled-skills/mcp-builder/scripts/example_evaluation.xml +1 -1
  627. package/bundled-skills/mcp-builder/scripts/requirements.txt +4 -2
  628. package/bundled-skills/mental-health-analyzer/SKILL.md +5 -974
  629. package/bundled-skills/mental-health-analyzer/references/detailed-guide.md +1014 -0
  630. package/bundled-skills/micro-saas-launcher/SKILL.md +2 -473
  631. package/bundled-skills/micro-saas-launcher/references/detailed-guide.md +491 -0
  632. package/bundled-skills/minecraft-bukkit-pro/SKILL.md +6 -0
  633. package/bundled-skills/minimalist-ui/SKILL.md +6 -0
  634. package/bundled-skills/moatmri/SKILL.md +6 -0
  635. package/bundled-skills/molykit/SKILL.md +1 -0
  636. package/bundled-skills/monday-automation/SKILL.md +6 -0
  637. package/bundled-skills/monopoly/SKILL.md +1 -0
  638. package/bundled-skills/monopoly/patterns/SKILL.md +1 -0
  639. package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +1 -0
  640. package/bundled-skills/monopoly/security-checklist/SKILL.md +6 -0
  641. package/bundled-skills/monopoly/tech-matrix/SKILL.md +1 -0
  642. package/bundled-skills/monorepo-architect/SKILL.md +6 -0
  643. package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +1 -1
  644. package/bundled-skills/monte-carlo-performance-diagnosis/SKILL.md +7 -1
  645. package/bundled-skills/monte-carlo-validation-notebook/SKILL.md +4 -601
  646. package/bundled-skills/monte-carlo-validation-notebook/references/detailed-guide.md +613 -0
  647. package/bundled-skills/moodle-external-api-development/SKILL.md +4 -517
  648. package/bundled-skills/moodle-external-api-development/references/detailed-guide.md +529 -0
  649. package/bundled-skills/multi-agent-architect/SKILL.md +1 -0
  650. package/bundled-skills/multi-agent-brainstorming/SKILL.md +6 -0
  651. package/bundled-skills/multi-agent-patterns/SKILL.md +1 -0
  652. package/bundled-skills/multi-platform-apps-multi-platform/SKILL.md +6 -0
  653. package/bundled-skills/n8n-code-javascript/SKILL.md +3 -667
  654. package/bundled-skills/n8n-code-javascript/references/detailed-guide.md +683 -0
  655. package/bundled-skills/n8n-code-python/SKILL.md +3 -664
  656. package/bundled-skills/n8n-code-python/references/detailed-guide.md +682 -0
  657. package/bundled-skills/n8n-expression-syntax/SKILL.md +5 -401
  658. package/bundled-skills/n8n-expression-syntax/references/detailed-guide.md +416 -0
  659. package/bundled-skills/n8n-mcp-tools-expert/SKILL.md +5 -485
  660. package/bundled-skills/n8n-mcp-tools-expert/references/detailed-guide.md +499 -0
  661. package/bundled-skills/n8n-node-configuration/SKILL.md +5 -775
  662. package/bundled-skills/n8n-node-configuration/references/detailed-guide.md +789 -0
  663. package/bundled-skills/n8n-validation-expert/SKILL.md +5 -679
  664. package/bundled-skills/n8n-validation-expert/references/detailed-guide.md +694 -0
  665. package/bundled-skills/n8n-workflow-patterns/SKILL.md +1 -0
  666. package/bundled-skills/nanobanana-ppt-skills/SKILL.md +6 -0
  667. package/bundled-skills/native-data-fetching/SKILL.md +2 -456
  668. package/bundled-skills/native-data-fetching/references/detailed-guide.md +465 -0
  669. package/bundled-skills/neon-ai-gateway/SKILL.md +1 -1
  670. package/bundled-skills/neon-functions/SKILL.md +1 -1
  671. package/bundled-skills/neon-object-storage/SKILL.md +1 -1
  672. package/bundled-skills/neon-postgres/SKILL.md +1 -1
  673. package/bundled-skills/neon-postgres-branches/SKILL.md +1 -1
  674. package/bundled-skills/neon-postgres-egress-optimizer/SKILL.md +1 -1
  675. package/bundled-skills/nerdzao-elite/SKILL.md +6 -0
  676. package/bundled-skills/nerdzao-elite-gemini-high/SKILL.md +6 -0
  677. package/bundled-skills/nestjs-expert/SKILL.md +2 -524
  678. package/bundled-skills/nestjs-expert/references/detailed-guide.md +539 -0
  679. package/bundled-skills/networkx/SKILL.md +1 -0
  680. package/bundled-skills/new-rails-project/SKILL.md +7 -0
  681. package/bundled-skills/newman-cicd-integration/SKILL.md +1 -1
  682. package/bundled-skills/nika/SKILL.md +1 -0
  683. package/bundled-skills/nosql-expert/SKILL.md +6 -0
  684. package/bundled-skills/not-a-vibe-coder/SKILL.md +7 -0
  685. package/bundled-skills/notion-template-business/SKILL.md +2 -505
  686. package/bundled-skills/notion-template-business/references/detailed-guide.md +523 -0
  687. package/bundled-skills/nutrition-analyzer/SKILL.md +5 -766
  688. package/bundled-skills/nutrition-analyzer/references/detailed-guide.md +775 -0
  689. package/bundled-skills/objection-preemptor/SKILL.md +6 -0
  690. package/bundled-skills/observability-and-instrumentation/SKILL.md +1 -1
  691. package/bundled-skills/observability-engineer/SKILL.md +16 -8
  692. package/bundled-skills/obsidian-bases/SKILL.md +4 -366
  693. package/bundled-skills/obsidian-bases/references/detailed-guide.md +380 -0
  694. package/bundled-skills/occupational-health-analyzer/SKILL.md +1 -0
  695. package/bundled-skills/odoo-accounting-setup/SKILL.md +1 -0
  696. package/bundled-skills/odoo-automated-tests/SKILL.md +1 -0
  697. package/bundled-skills/odoo-backup-strategy/SKILL.md +1 -0
  698. package/bundled-skills/odoo-docker-deployment/SKILL.md +1 -0
  699. package/bundled-skills/odoo-ecommerce-configurator/SKILL.md +1 -0
  700. package/bundled-skills/odoo-edi-connector/SKILL.md +1 -0
  701. package/bundled-skills/odoo-hr-payroll-setup/SKILL.md +1 -0
  702. package/bundled-skills/odoo-inventory-optimizer/SKILL.md +1 -0
  703. package/bundled-skills/odoo-l10n-compliance/SKILL.md +1 -0
  704. package/bundled-skills/odoo-manufacturing-advisor/SKILL.md +1 -0
  705. package/bundled-skills/odoo-migration-helper/SKILL.md +1 -0
  706. package/bundled-skills/odoo-module-developer/SKILL.md +1 -0
  707. package/bundled-skills/odoo-orm-expert/SKILL.md +1 -0
  708. package/bundled-skills/odoo-performance-tuner/SKILL.md +1 -0
  709. package/bundled-skills/odoo-project-timesheet/SKILL.md +1 -0
  710. package/bundled-skills/odoo-purchase-workflow/SKILL.md +1 -0
  711. package/bundled-skills/odoo-qweb-templates/SKILL.md +1 -0
  712. package/bundled-skills/odoo-rpc-api/SKILL.md +1 -0
  713. package/bundled-skills/odoo-sales-crm-expert/SKILL.md +1 -0
  714. package/bundled-skills/odoo-security-rules/SKILL.md +1 -0
  715. package/bundled-skills/odoo-shopify-integration/SKILL.md +1 -0
  716. package/bundled-skills/odoo-upgrade-advisor/SKILL.md +1 -0
  717. package/bundled-skills/odoo-woocommerce-bridge/SKILL.md +1 -0
  718. package/bundled-skills/odoo-xml-views-builder/SKILL.md +1 -0
  719. package/bundled-skills/odw/SKILL.md +6 -0
  720. package/bundled-skills/offers/SKILL.md +1 -1
  721. package/bundled-skills/onboarding/SKILL.md +1 -1
  722. package/bundled-skills/onboarding-psychologist/SKILL.md +6 -0
  723. package/bundled-skills/one-drive-automation/SKILL.md +6 -0
  724. package/bundled-skills/openapi-spec-generator/SKILL.md +1 -1
  725. package/bundled-skills/oral-health-analyzer/SKILL.md +8 -515
  726. package/bundled-skills/oral-health-analyzer/references/detailed-guide.md +529 -0
  727. package/bundled-skills/orca-replay/SKILL.md +284 -0
  728. package/bundled-skills/outlook-automation/SKILL.md +6 -0
  729. package/bundled-skills/pagespeed-enhancer/SKILL.md +4 -520
  730. package/bundled-skills/pagespeed-enhancer/references/detailed-guide.md +533 -0
  731. package/bundled-skills/paid-ads/SKILL.md +2 -541
  732. package/bundled-skills/paid-ads/references/detailed-guide.md +558 -0
  733. package/bundled-skills/parallel-search-mcp/SKILL.md +134 -0
  734. package/bundled-skills/payment-integration/SKILL.md +6 -0
  735. package/bundled-skills/paywall-upgrade-cro/SKILL.md +2 -560
  736. package/bundled-skills/paywall-upgrade-cro/references/detailed-guide.md +579 -0
  737. package/bundled-skills/performance-testing-review-multi-agent-review/SKILL.md +42 -214
  738. package/bundled-skills/personal-tool-builder/SKILL.md +2 -688
  739. package/bundled-skills/personal-tool-builder/references/detailed-guide.md +705 -0
  740. package/bundled-skills/phase-gated-debugging/SKILL.md +6 -0
  741. package/bundled-skills/photopea-embedded-editor/SKILL.md +3 -1218
  742. package/bundled-skills/photopea-embedded-editor/references/detailed-guide.md +1252 -0
  743. package/bundled-skills/php-pro/SKILL.md +6 -0
  744. package/bundled-skills/pi-custom-model/SKILL.md +6 -0
  745. package/bundled-skills/pipedrive-automation/SKILL.md +6 -0
  746. package/bundled-skills/pitch-psychologist/SKILL.md +6 -0
  747. package/bundled-skills/plaid-fintech/SKILL.md +8 -829
  748. package/bundled-skills/plaid-fintech/references/detailed-guide.md +837 -0
  749. package/bundled-skills/plotly/SKILL.md +1 -0
  750. package/bundled-skills/polars/SKILL.md +1 -0
  751. package/bundled-skills/popup-cro/SKILL.md +6 -0
  752. package/bundled-skills/posix-shell-pro/SKILL.md +6 -0
  753. package/bundled-skills/postgresql-cli/SKILL.md +1 -1
  754. package/bundled-skills/postman-collection-generator/SKILL.md +1 -1
  755. package/bundled-skills/postman-newman-automation/SKILL.md +1 -1
  756. package/bundled-skills/postman-openapi-converter/SKILL.md +1 -1
  757. package/bundled-skills/power-user-cultivation/SKILL.md +6 -572
  758. package/bundled-skills/power-user-cultivation/references/detailed-guide.md +585 -0
  759. package/bundled-skills/pr-writer/SKILL.md +1 -0
  760. package/bundled-skills/price-psychology-strategist/SKILL.md +6 -0
  761. package/bundled-skills/pricing/SKILL.md +1 -1
  762. package/bundled-skills/privacy-mask/SKILL.md +1 -1
  763. package/bundled-skills/product-decision-agent/SKILL.md +6 -0
  764. package/bundled-skills/product-inventor/SKILL.md +2 -627
  765. package/bundled-skills/product-inventor/references/detailed-guide.md +646 -0
  766. package/bundled-skills/product-manager/SKILL.md +6 -0
  767. package/bundled-skills/product-marketing/SKILL.md +1 -1
  768. package/bundled-skills/production-code-audit/SKILL.md +2 -264
  769. package/bundled-skills/production-code-audit/references/detailed-guide.md +277 -0
  770. package/bundled-skills/professional-proofreader/SKILL.md +6 -0
  771. package/bundled-skills/programmatic-seo/SKILL.md +6 -0
  772. package/bundled-skills/project-development/SKILL.md +1 -0
  773. package/bundled-skills/project-skill-audit/SKILL.md +6 -0
  774. package/bundled-skills/public-relations/SKILL.md +1 -1
  775. package/bundled-skills/pubmed-database/SKILL.md +1 -0
  776. package/bundled-skills/push-skill-to-github/SKILL.md +6 -0
  777. package/bundled-skills/pypict-skill/SKILL.md +6 -0
  778. package/bundled-skills/pytest-skill/SKILL.md +1 -1
  779. package/bundled-skills/qiskit/SKILL.md +1 -0
  780. package/bundled-skills/quant-analyst/SKILL.md +6 -0
  781. package/bundled-skills/radix-ui-design-system/SKILL.md +2 -693
  782. package/bundled-skills/radix-ui-design-system/references/detailed-guide.md +711 -0
  783. package/bundled-skills/rag-engineer/SKILL.md +6 -0
  784. package/bundled-skills/rclone-cli/SKILL.md +1 -1
  785. package/bundled-skills/react-flow-architect/SKILL.md +2 -507
  786. package/bundled-skills/react-flow-architect/references/detailed-guide.md +517 -0
  787. package/bundled-skills/react-patterns/SKILL.md +6 -0
  788. package/bundled-skills/read-all-adrs/SKILL.md +6 -0
  789. package/bundled-skills/readme/SKILL.md +4 -822
  790. package/bundled-skills/readme/references/detailed-guide.md +829 -0
  791. package/bundled-skills/redesign-existing-projects/SKILL.md +6 -0
  792. package/bundled-skills/redis-cli/SKILL.md +1 -1
  793. package/bundled-skills/referral-program/SKILL.md +2 -508
  794. package/bundled-skills/referral-program/references/detailed-guide.md +524 -0
  795. package/bundled-skills/rehabilitation-analyzer/SKILL.md +5 -629
  796. package/bundled-skills/rehabilitation-analyzer/references/detailed-guide.md +641 -0
  797. package/bundled-skills/remotion/SKILL.md +1 -0
  798. package/bundled-skills/research-prompt/SKILL.md +6 -0
  799. package/bundled-skills/resolving-merge-conflicts/SKILL.md +6 -0
  800. package/bundled-skills/review-and-simplify-changes/SKILL.md +7 -1
  801. package/bundled-skills/review-swarm/SKILL.md +7 -1
  802. package/bundled-skills/risk-manager/SKILL.md +6 -0
  803. package/bundled-skills/robius-app-architecture/SKILL.md +1 -0
  804. package/bundled-skills/robius-event-action/SKILL.md +1 -0
  805. package/bundled-skills/robius-matrix-integration/SKILL.md +1 -0
  806. package/bundled-skills/robius-state-management/SKILL.md +1 -0
  807. package/bundled-skills/robius-widget-patterns/SKILL.md +1 -0
  808. package/bundled-skills/robot-framework-skill/SKILL.md +1 -1
  809. package/bundled-skills/ruby-pro/SKILL.md +6 -0
  810. package/bundled-skills/saga-orchestration/SKILL.md +4 -482
  811. package/bundled-skills/saga-orchestration/references/detailed-guide.md +491 -0
  812. package/bundled-skills/sales-automator/SKILL.md +6 -0
  813. package/bundled-skills/salesforce-development/SKILL.md +2 -985
  814. package/bundled-skills/salesforce-development/references/detailed-guide.md +994 -0
  815. package/bundled-skills/sam-altman/SKILL.md +5 -1040
  816. package/bundled-skills/sam-altman/references/detailed-guide.md +1102 -0
  817. package/bundled-skills/scala-pro/SKILL.md +6 -0
  818. package/bundled-skills/scanning-tools/SKILL.md +2 -546
  819. package/bundled-skills/scanning-tools/references/detailed-guide.md +555 -0
  820. package/bundled-skills/scanpy/SKILL.md +1 -0
  821. package/bundled-skills/scarcity-urgency-psychologist/SKILL.md +6 -0
  822. package/bundled-skills/scientific-writing/SKILL.md +3 -691
  823. package/bundled-skills/scientific-writing/references/detailed-guide.md +702 -0
  824. package/bundled-skills/scikit-learn/SKILL.md +3 -462
  825. package/bundled-skills/scikit-learn/references/detailed-guide.md +475 -0
  826. package/bundled-skills/scroll-experience/SKILL.md +2 -560
  827. package/bundled-skills/scroll-experience/references/detailed-guide.md +578 -0
  828. package/bundled-skills/sdk-dx/SKILL.md +6 -517
  829. package/bundled-skills/sdk-dx/references/detailed-guide.md +530 -0
  830. package/bundled-skills/seaborn/SKILL.md +5 -661
  831. package/bundled-skills/seaborn/references/detailed-guide.md +677 -0
  832. package/bundled-skills/search-specialist/SKILL.md +6 -0
  833. package/bundled-skills/security/aws-compliance-checker/SKILL.md +4 -492
  834. package/bundled-skills/security/aws-compliance-checker/references/detailed-guide.md +502 -0
  835. package/bundled-skills/security-bluebook-builder/SKILL.md +7 -0
  836. package/bundled-skills/security-scanning-security-hardening/SKILL.md +6 -0
  837. package/bundled-skills/security-scanning-security-sast/SKILL.md +2 -463
  838. package/bundled-skills/security-scanning-security-sast/references/detailed-guide.md +476 -0
  839. package/bundled-skills/segment-cdp/SKILL.md +8 -822
  840. package/bundled-skills/segment-cdp/references/detailed-guide.md +830 -0
  841. package/bundled-skills/selenium-skill/SKILL.md +1 -1
  842. package/bundled-skills/semgrep-rule-creator/SKILL.md +1 -0
  843. package/bundled-skills/semgrep-rule-variant-creator/SKILL.md +1 -0
  844. package/bundled-skills/sendgrid-automation/SKILL.md +6 -0
  845. package/bundled-skills/seo-audit/SKILL.md +33 -44
  846. package/bundled-skills/seo-content/SKILL.md +6 -0
  847. package/bundled-skills/seo-content-auditor/SKILL.md +6 -0
  848. package/bundled-skills/seo-content-writer/SKILL.md +6 -0
  849. package/bundled-skills/seo-forensic-incident-response/SKILL.md +6 -0
  850. package/bundled-skills/seo-fundamentals/SKILL.md +6 -0
  851. package/bundled-skills/seo-programmatic/SKILL.md +6 -0
  852. package/bundled-skills/sequence-psychologist/SKILL.md +6 -0
  853. package/bundled-skills/server-management/SKILL.md +6 -0
  854. package/bundled-skills/service-mesh-expert/SKILL.md +6 -0
  855. package/bundled-skills/setup-help/SKILL.md +6 -0
  856. package/bundled-skills/sexual-health-analyzer/SKILL.md +8 -1109
  857. package/bundled-skills/sexual-health-analyzer/references/detailed-guide.md +1123 -0
  858. package/bundled-skills/sharp-coder/SKILL.md +1 -0
  859. package/bundled-skills/sharp-edges/SKILL.md +1 -0
  860. package/bundled-skills/shodan-reconnaissance/SKILL.md +2 -356
  861. package/bundled-skills/shodan-reconnaissance/references/detailed-guide.md +366 -0
  862. package/bundled-skills/shopify-apps/SKILL.md +2 -1477
  863. package/bundled-skills/shopify-apps/references/detailed-guide.md +1512 -0
  864. package/bundled-skills/short/SKILL.md +6 -0
  865. package/bundled-skills/signup-flow-cro/SKILL.md +6 -0
  866. package/bundled-skills/simplify-code/SKILL.md +6 -0
  867. package/bundled-skills/skill-creator/SKILL.md +2 -568
  868. package/bundled-skills/skill-creator/references/detailed-guide.md +581 -0
  869. package/bundled-skills/skill-creator-ms/SKILL.md +2 -601
  870. package/bundled-skills/skill-creator-ms/references/detailed-guide.md +614 -0
  871. package/bundled-skills/skill-improver/SKILL.md +1 -0
  872. package/bundled-skills/skill-router/SKILL.md +1 -0
  873. package/bundled-skills/skill-scanner/SKILL.md +1 -0
  874. package/bundled-skills/skill-security-audit/SKILL.md +87 -0
  875. package/bundled-skills/skill-seekers/SKILL.md +6 -0
  876. package/bundled-skills/skill-writer/SKILL.md +1 -0
  877. package/bundled-skills/skin-health-analyzer/SKILL.md +8 -696
  878. package/bundled-skills/skin-health-analyzer/references/detailed-guide.md +710 -0
  879. package/bundled-skills/slack-automation/SKILL.md +6 -0
  880. package/bundled-skills/slack-bot-builder/SKILL.md +2 -1372
  881. package/bundled-skills/slack-bot-builder/references/detailed-guide.md +1395 -0
  882. package/bundled-skills/sleep-analyzer/SKILL.md +5 -764
  883. package/bundled-skills/sleep-analyzer/references/detailed-guide.md +773 -0
  884. package/bundled-skills/smartui-skill/SKILL.md +1 -1
  885. package/bundled-skills/smtp-penetration-testing/SKILL.md +2 -346
  886. package/bundled-skills/smtp-penetration-testing/references/detailed-guide.md +355 -0
  887. package/bundled-skills/social-content/SKILL.md +2 -797
  888. package/bundled-skills/social-content/references/detailed-guide.md +816 -0
  889. package/bundled-skills/social-proof-architect/SKILL.md +6 -0
  890. package/bundled-skills/software-architecture/SKILL.md +6 -0
  891. package/bundled-skills/spec-to-code-compliance/SKILL.md +7 -0
  892. package/bundled-skills/speckit-updater/SKILL.md +1 -0
  893. package/bundled-skills/speed/SKILL.md +7 -0
  894. package/bundled-skills/sred-project-organizer/SKILL.md +1 -0
  895. package/bundled-skills/sred-work-summary/SKILL.md +1 -0
  896. package/bundled-skills/statsmodels/SKILL.md +3 -586
  897. package/bundled-skills/statsmodels/references/detailed-guide.md +600 -0
  898. package/bundled-skills/steve-jobs/SKILL.md +2 -564
  899. package/bundled-skills/steve-jobs/references/detailed-guide.md +574 -0
  900. package/bundled-skills/stitch-loop/SKILL.md +1 -0
  901. package/bundled-skills/stripe-automation/SKILL.md +6 -0
  902. package/bundled-skills/stripe-integration/SKILL.md +60 -79
  903. package/bundled-skills/styleseed-design-review/SKILL.md +1 -1
  904. package/bundled-skills/subagent-orchestrator/SKILL.md +1 -0
  905. package/bundled-skills/subject-line-psychologist/SKILL.md +6 -0
  906. package/bundled-skills/supabase/SKILL.md +1 -1
  907. package/bundled-skills/supabase-automation/SKILL.md +6 -0
  908. package/bundled-skills/superpowers-lab/SKILL.md +6 -0
  909. package/bundled-skills/supply-chain-risk-auditor/SKILL.md +7 -0
  910. package/bundled-skills/swiftui-expert-skill/SKILL.md +1 -1
  911. package/bundled-skills/sympy/SKILL.md +3 -426
  912. package/bundled-skills/sympy/references/detailed-guide.md +439 -0
  913. package/bundled-skills/systematic-debugging/CREATION-LOG.md +3 -0
  914. package/bundled-skills/systematic-debugging/SKILL.md +30 -34
  915. package/bundled-skills/systematic-debugging/condition-based-waiting.md +9 -6
  916. package/bundled-skills/systematic-debugging/defense-in-depth.md +13 -7
  917. package/bundled-skills/systematic-debugging/find-polluter.sh +77 -57
  918. package/bundled-skills/systematic-debugging/root-cause-tracing.md +7 -5
  919. package/bundled-skills/systematic-debugging/test-academic.md +3 -0
  920. package/bundled-skills/systematic-debugging/test-pressure-1.md +3 -0
  921. package/bundled-skills/systematic-debugging/test-pressure-2.md +3 -0
  922. package/bundled-skills/systematic-debugging/test-pressure-3.md +3 -0
  923. package/bundled-skills/tcm-constitution-analyzer/SKILL.md +5 -655
  924. package/bundled-skills/tcm-constitution-analyzer/references/detailed-guide.md +660 -0
  925. package/bundled-skills/tdd-workflows-tdd-cycle/SKILL.md +6 -0
  926. package/bundled-skills/technical-tutorials/SKILL.md +5 -483
  927. package/bundled-skills/technical-tutorials/references/detailed-guide.md +496 -0
  928. package/bundled-skills/telegram/SKILL.md +2 -541
  929. package/bundled-skills/telegram/references/detailed-guide.md +569 -0
  930. package/bundled-skills/telegram-mini-app/SKILL.md +2 -643
  931. package/bundled-skills/telegram-mini-app/references/detailed-guide.md +661 -0
  932. package/bundled-skills/temporal-python-pro/SKILL.md +6 -0
  933. package/bundled-skills/terraform-skill/SKILL.md +4 -417
  934. package/bundled-skills/terraform-skill/references/detailed-guide.md +430 -0
  935. package/bundled-skills/test-driven-development/SKILL.md +21 -124
  936. package/bundled-skills/test-driven-development/testing-anti-patterns.md +6 -6
  937. package/bundled-skills/test-framework-migration-skill/SKILL.md +7 -1
  938. package/bundled-skills/threat-modeling-expert/SKILL.md +6 -0
  939. package/bundled-skills/threejs-animation/SKILL.md +5 -551
  940. package/bundled-skills/threejs-animation/references/detailed-guide.md +566 -0
  941. package/bundled-skills/threejs-fundamentals/SKILL.md +5 -525
  942. package/bundled-skills/threejs-fundamentals/references/detailed-guide.md +535 -0
  943. package/bundled-skills/threejs-geometry/SKILL.md +5 -572
  944. package/bundled-skills/threejs-geometry/references/detailed-guide.md +587 -0
  945. package/bundled-skills/threejs-interaction/SKILL.md +5 -666
  946. package/bundled-skills/threejs-interaction/references/detailed-guide.md +679 -0
  947. package/bundled-skills/threejs-lighting/SKILL.md +1 -0
  948. package/bundled-skills/threejs-loaders/SKILL.md +5 -637
  949. package/bundled-skills/threejs-loaders/references/detailed-guide.md +651 -0
  950. package/bundled-skills/threejs-materials/SKILL.md +3 -535
  951. package/bundled-skills/threejs-materials/references/detailed-guide.md +560 -0
  952. package/bundled-skills/threejs-postprocessing/SKILL.md +5 -617
  953. package/bundled-skills/threejs-postprocessing/references/detailed-guide.md +630 -0
  954. package/bundled-skills/threejs-shaders/SKILL.md +5 -679
  955. package/bundled-skills/threejs-shaders/references/detailed-guide.md +695 -0
  956. package/bundled-skills/threejs-skills/SKILL.md +4 -683
  957. package/bundled-skills/threejs-skills/references/detailed-guide.md +693 -0
  958. package/bundled-skills/threejs-textures/SKILL.md +5 -630
  959. package/bundled-skills/threejs-textures/references/detailed-guide.md +649 -0
  960. package/bundled-skills/to-issues/SKILL.md +5 -0
  961. package/bundled-skills/to-prd/SKILL.md +5 -0
  962. package/bundled-skills/todoist-automation/SKILL.md +6 -0
  963. package/bundled-skills/tools-page-seo-optimizer/SKILL.md +2 -580
  964. package/bundled-skills/tools-page-seo-optimizer/references/detailed-guide.md +602 -0
  965. package/bundled-skills/top-web-vulnerabilities/SKILL.md +2 -513
  966. package/bundled-skills/top-web-vulnerabilities/references/detailed-guide.md +523 -0
  967. package/bundled-skills/train-sentence-transformers/SKILL.md +1 -1
  968. package/bundled-skills/transformers-js/SKILL.md +5 -669
  969. package/bundled-skills/transformers-js/references/detailed-guide.md +683 -0
  970. package/bundled-skills/travel-health-analyzer/SKILL.md +1 -0
  971. package/bundled-skills/trello-automation/SKILL.md +6 -0
  972. package/bundled-skills/trigger-dev/SKILL.md +2 -937
  973. package/bundled-skills/trigger-dev/references/detailed-guide.md +950 -0
  974. package/bundled-skills/trust-calibrator/SKILL.md +6 -0
  975. package/bundled-skills/tutorial-engineer/SKILL.md +6 -0
  976. package/bundled-skills/twilio-communications/SKILL.md +2 -1549
  977. package/bundled-skills/twilio-communications/references/detailed-guide.md +1574 -0
  978. package/bundled-skills/typescript-pro/SKILL.md +6 -0
  979. package/bundled-skills/ui-a11y/SKILL.md +6 -0
  980. package/bundled-skills/ui-component/SKILL.md +6 -0
  981. package/bundled-skills/ui-motion/SKILL.md +7 -1
  982. package/bundled-skills/ui-pattern/SKILL.md +6 -0
  983. package/bundled-skills/ui-review/SKILL.md +6 -0
  984. package/bundled-skills/ui-skills/SKILL.md +6 -0
  985. package/bundled-skills/ui-tokens/SKILL.md +6 -0
  986. package/bundled-skills/uniprot-database/SKILL.md +1 -0
  987. package/bundled-skills/unslop-commit/SKILL.md +1 -1
  988. package/bundled-skills/unslop-file/SKILL.md +1 -1
  989. package/bundled-skills/unslop-review/SKILL.md +1 -1
  990. package/bundled-skills/unsplash-integration/SKILL.md +6 -0
  991. package/bundled-skills/update-swiftui-apis/SKILL.md +1 -1
  992. package/bundled-skills/upstash-qstash/SKILL.md +2 -919
  993. package/bundled-skills/upstash-qstash/references/detailed-guide.md +932 -0
  994. package/bundled-skills/usage-based-pricing/SKILL.md +5 -395
  995. package/bundled-skills/usage-based-pricing/references/detailed-guide.md +407 -0
  996. package/bundled-skills/ux-audit/SKILL.md +6 -0
  997. package/bundled-skills/ux-flow/SKILL.md +6 -0
  998. package/bundled-skills/ux-persuasion-engineer/SKILL.md +6 -0
  999. package/bundled-skills/variant-analysis/SKILL.md +1 -0
  1000. package/bundled-skills/varlock/SKILL.md +1 -0
  1001. package/bundled-skills/varlock-claude-skill/SKILL.md +6 -0
  1002. package/bundled-skills/vector-database-engineer/SKILL.md +6 -0
  1003. package/bundled-skills/vercel-deployment/SKILL.md +2 -650
  1004. package/bundled-skills/vercel-deployment/references/detailed-guide.md +660 -0
  1005. package/bundled-skills/vexor/SKILL.md +6 -0
  1006. package/bundled-skills/vexor-cli/SKILL.md +1 -0
  1007. package/bundled-skills/visual-emotion-engineer/SKILL.md +6 -0
  1008. package/bundled-skills/vizcom/SKILL.md +6 -0
  1009. package/bundled-skills/voice-agents/SKILL.md +2 -867
  1010. package/bundled-skills/voice-agents/references/detailed-guide.md +890 -0
  1011. package/bundled-skills/voice-ai-development/SKILL.md +2 -583
  1012. package/bundled-skills/voice-ai-development/references/detailed-guide.md +594 -0
  1013. package/bundled-skills/voice-ai-engine-development/SKILL.md +2 -702
  1014. package/bundled-skills/voice-ai-engine-development/references/detailed-guide.md +720 -0
  1015. package/bundled-skills/warren-buffett/SKILL.md +2 -577
  1016. package/bundled-skills/warren-buffett/references/detailed-guide.md +583 -0
  1017. package/bundled-skills/web-performance-optimization/SKILL.md +2 -214
  1018. package/bundled-skills/web-performance-optimization/references/detailed-guide.md +226 -0
  1019. package/bundled-skills/web-scraper/SKILL.md +2 -728
  1020. package/bundled-skills/web-scraper/references/detailed-guide.md +792 -0
  1021. package/bundled-skills/webflow-automation/SKILL.md +6 -0
  1022. package/bundled-skills/weightloss-analyzer/SKILL.md +1 -0
  1023. package/bundled-skills/wellally-tech/SKILL.md +5 -367
  1024. package/bundled-skills/wellally-tech/references/detailed-guide.md +379 -0
  1025. package/bundled-skills/wiki-architect/SKILL.md +6 -0
  1026. package/bundled-skills/wiki-changelog/SKILL.md +6 -0
  1027. package/bundled-skills/wiki-onboarding/SKILL.md +6 -0
  1028. package/bundled-skills/wiki-qa/SKILL.md +6 -0
  1029. package/bundled-skills/wiki-researcher/SKILL.md +6 -0
  1030. package/bundled-skills/windows-privilege-escalation/SKILL.md +131 -0
  1031. package/bundled-skills/windows-privilege-escalation/references/detailed-guide.md +397 -0
  1032. package/bundled-skills/wireshark-analysis/SKILL.md +2 -419
  1033. package/bundled-skills/wireshark-analysis/references/detailed-guide.md +429 -0
  1034. package/bundled-skills/wjttc-builder/SKILL.md +1 -1
  1035. package/bundled-skills/wjttc-tester/SKILL.md +1 -1
  1036. package/bundled-skills/wordpress/SKILL.md +2 -572
  1037. package/bundled-skills/wordpress/references/detailed-guide.md +582 -0
  1038. package/bundled-skills/wordpress-penetration-testing/SKILL.md +68 -0
  1039. package/bundled-skills/wordpress-penetration-testing/references/detailed-guide.md +555 -0
  1040. package/bundled-skills/wordpress-plugin-development/SKILL.md +2 -474
  1041. package/bundled-skills/wordpress-plugin-development/references/detailed-guide.md +485 -0
  1042. package/bundled-skills/wordpress-theme-development/SKILL.md +2 -479
  1043. package/bundled-skills/wordpress-theme-development/references/detailed-guide.md +490 -0
  1044. package/bundled-skills/wordpress-woocommerce-development/SKILL.md +2 -605
  1045. package/bundled-skills/wordpress-woocommerce-development/references/detailed-guide.md +615 -0
  1046. package/bundled-skills/workflow-automation/SKILL.md +2 -875
  1047. package/bundled-skills/workflow-automation/references/detailed-guide.md +902 -0
  1048. package/bundled-skills/writing-great-skills/SKILL.md +5 -0
  1049. package/bundled-skills/x-article-publisher-skill/SKILL.md +6 -0
  1050. package/bundled-skills/x402-express-wrapper/SKILL.md +1 -0
  1051. package/bundled-skills/xss-html-injection/SKILL.md +2 -389
  1052. package/bundled-skills/xss-html-injection/references/detailed-guide.md +399 -0
  1053. package/bundled-skills/yann-lecun/SKILL.md +2 -1431
  1054. package/bundled-skills/yann-lecun/references/detailed-guide.md +1484 -0
  1055. package/bundled-skills/yann-lecun-filosofia/SKILL.md +6 -0
  1056. package/bundled-skills/yann-lecun-tecnico/SKILL.md +2 -485
  1057. package/bundled-skills/yann-lecun-tecnico/references/detailed-guide.md +502 -0
  1058. package/bundled-skills/youtube-seo-optimizer/SKILL.md +4 -884
  1059. package/bundled-skills/youtube-seo-optimizer/references/detailed-guide.md +907 -0
  1060. package/bundled-skills/zapier-make-patterns/SKILL.md +2 -728
  1061. package/bundled-skills/zapier-make-patterns/references/detailed-guide.md +752 -0
  1062. package/bundled-skills/zipai-optimizer/SKILL.md +7 -0
  1063. package/bundled-skills/zoom-automation/SKILL.md +6 -0
  1064. package/package.json +1 -1
  1065. package/skills_index.json +608 -383
  1066. package/bundled-skills/docs/AUDIT.md +0 -3
  1067. package/bundled-skills/docs/BUNDLES.md +0 -3
  1068. package/bundled-skills/docs/CATEGORIZATION_IMPLEMENTATION.md +0 -3
  1069. package/bundled-skills/docs/CI_DRIFT_FIX.md +0 -3
  1070. package/bundled-skills/docs/COMMUNITY_GUIDELINES.md +0 -3
  1071. package/bundled-skills/docs/DATE_TRACKING_IMPLEMENTATION.md +0 -3
  1072. package/bundled-skills/docs/EXAMPLES.md +0 -3
  1073. package/bundled-skills/docs/FAQ.md +0 -3
  1074. package/bundled-skills/docs/GETTING_STARTED.md +0 -3
  1075. package/bundled-skills/docs/KIRO_INTEGRATION.md +0 -3
  1076. package/bundled-skills/docs/QUALITY_BAR.md +0 -3
  1077. package/bundled-skills/docs/README.md +0 -51
  1078. package/bundled-skills/docs/SECURITY_GUARDRAILS.md +0 -3
  1079. package/bundled-skills/docs/SEC_SKILLS.md +0 -3
  1080. package/bundled-skills/docs/SKILLS_DATE_TRACKING.md +0 -3
  1081. package/bundled-skills/docs/SKILL_ANATOMY.md +0 -3
  1082. package/bundled-skills/docs/SKILL_TEMPLATE.md +0 -3
  1083. package/bundled-skills/docs/SMART_AUTO_CATEGORIZATION.md +0 -3
  1084. package/bundled-skills/docs/SOURCES.md +0 -3
  1085. package/bundled-skills/docs/USAGE.md +0 -3
  1086. package/bundled-skills/docs/VISUAL_GUIDE.md +0 -3
  1087. package/bundled-skills/docs/WORKFLOWS.md +0 -3
  1088. package/bundled-skills/docs/contributors/community-guidelines.md +0 -4
  1089. package/bundled-skills/docs/contributors/examples.md +0 -760
  1090. package/bundled-skills/docs/contributors/quality-bar.md +0 -104
  1091. package/bundled-skills/docs/contributors/security-guardrails.md +0 -70
  1092. package/bundled-skills/docs/contributors/skill-anatomy.md +0 -637
  1093. package/bundled-skills/docs/contributors/skill-template.md +0 -93
  1094. package/bundled-skills/docs/integrations/jetski-cortex.md +0 -282
  1095. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +0 -103
  1096. package/bundled-skills/docs/integrations/jetski-gemini-loader/loader.mjs +0 -154
  1097. package/bundled-skills/docs/integrations/jetski-gemini-loader/package.json +0 -1
  1098. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-preview-profile.md +0 -63
  1099. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-design.md +0 -304
  1100. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-goal.md +0 -171
  1101. package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-worklog.md +0 -104
  1102. package/bundled-skills/docs/maintainers/audit.md +0 -89
  1103. package/bundled-skills/docs/maintainers/backups/README-2026-06-02.md +0 -687
  1104. package/bundled-skills/docs/maintainers/categorization-implementation.md +0 -160
  1105. package/bundled-skills/docs/maintainers/ci-drift-fix.md +0 -64
  1106. package/bundled-skills/docs/maintainers/date-tracking-implementation.md +0 -66
  1107. package/bundled-skills/docs/maintainers/full-repo-audit-2026-05-23.md +0 -289
  1108. package/bundled-skills/docs/maintainers/legacy-redirect-bridge.md +0 -46
  1109. package/bundled-skills/docs/maintainers/merge-batch.md +0 -81
  1110. package/bundled-skills/docs/maintainers/merging-prs.md +0 -79
  1111. package/bundled-skills/docs/maintainers/pr-autonomy.md +0 -102
  1112. package/bundled-skills/docs/maintainers/provenance-identity-exceptions.json +0 -14
  1113. package/bundled-skills/docs/maintainers/release-notes-7.2.0.md +0 -32
  1114. package/bundled-skills/docs/maintainers/release-process.md +0 -124
  1115. package/bundled-skills/docs/maintainers/repo-growth-seo.md +0 -133
  1116. package/bundled-skills/docs/maintainers/rollback-procedure.md +0 -43
  1117. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-15.csv +0 -34
  1118. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-15.md +0 -60
  1119. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-18-addendum.md +0 -22
  1120. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-addendum.md +0 -48
  1121. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-refresh.csv +0 -34
  1122. package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-refresh.md +0 -86
  1123. package/bundled-skills/docs/maintainers/skills-date-tracking.md +0 -228
  1124. package/bundled-skills/docs/maintainers/skills-import-2026-03-21.md +0 -81
  1125. package/bundled-skills/docs/maintainers/skills-update-guide.md +0 -92
  1126. package/bundled-skills/docs/maintainers/smart-auto-categorization.md +0 -218
  1127. package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/README.md +0 -19
  1128. package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/evaluation-cases.json +0 -74
  1129. package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/evaluation-results.json +0 -86
  1130. package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/submission.json +0 -41
  1131. package/bundled-skills/docs/sources/LICENSE-MICROSOFT +0 -21
  1132. package/bundled-skills/docs/sources/microsoft-skills-attribution.json +0 -709
  1133. package/bundled-skills/docs/sources/sources.md +0 -179
  1134. package/bundled-skills/docs/users/aas-core.md +0 -225
  1135. package/bundled-skills/docs/users/agent-overload-recovery.md +0 -54
  1136. package/bundled-skills/docs/users/agentic-awesome-skills-vs-awesome-claude-skills.md +0 -44
  1137. package/bundled-skills/docs/users/ai-agent-skills.md +0 -48
  1138. package/bundled-skills/docs/users/best-claude-code-skills-github.md +0 -62
  1139. package/bundled-skills/docs/users/best-cursor-skills-github.md +0 -62
  1140. package/bundled-skills/docs/users/bundles.md +0 -1067
  1141. package/bundled-skills/docs/users/claude-code-skills.md +0 -89
  1142. package/bundled-skills/docs/users/codex-cli-skills.md +0 -88
  1143. package/bundled-skills/docs/users/cursor-skills.md +0 -56
  1144. package/bundled-skills/docs/users/discovery-manifest.md +0 -65
  1145. package/bundled-skills/docs/users/faq.md +0 -521
  1146. package/bundled-skills/docs/users/gemini-cli-skills.md +0 -56
  1147. package/bundled-skills/docs/users/getting-started.md +0 -233
  1148. package/bundled-skills/docs/users/kiro-integration.md +0 -304
  1149. package/bundled-skills/docs/users/local-config.md +0 -152
  1150. package/bundled-skills/docs/users/plugins.md +0 -201
  1151. package/bundled-skills/docs/users/security-and-antivirus.md +0 -63
  1152. package/bundled-skills/docs/users/security-skills.md +0 -1722
  1153. package/bundled-skills/docs/users/skills-library-overview.md +0 -87
  1154. package/bundled-skills/docs/users/skills-vs-mcp-tools.md +0 -108
  1155. package/bundled-skills/docs/users/specialized-plugin-roadmap.md +0 -101
  1156. package/bundled-skills/docs/users/usage.md +0 -465
  1157. package/bundled-skills/docs/users/visual-guide.md +0 -515
  1158. package/bundled-skills/docs/users/walkthrough.md +0 -46
  1159. package/bundled-skills/docs/users/windows-truncation-recovery.md +0 -135
  1160. package/bundled-skills/docs/users/workflows.md +0 -215
  1161. package/bundled-skills/docs/vietnamese/AAS_CORE.vi.md +0 -28
  1162. package/bundled-skills/docs/vietnamese/BUNDLES.vi.md +0 -124
  1163. package/bundled-skills/docs/vietnamese/CONTRIBUTING.vi.md +0 -242
  1164. package/bundled-skills/docs/vietnamese/EXAMPLES.vi.md +0 -56
  1165. package/bundled-skills/docs/vietnamese/FAQ.vi.md +0 -195
  1166. package/bundled-skills/docs/vietnamese/GETTING_STARTED.vi.md +0 -123
  1167. package/bundled-skills/docs/vietnamese/QUALITY_BAR.vi.md +0 -69
  1168. package/bundled-skills/docs/vietnamese/README.vi.md +0 -191
  1169. package/bundled-skills/docs/vietnamese/SECURITY.vi.md +0 -19
  1170. package/bundled-skills/docs/vietnamese/SECURITY_GUARDRAILS.vi.md +0 -51
  1171. package/bundled-skills/docs/vietnamese/SKILLS_README.vi.md +0 -106
  1172. package/bundled-skills/docs/vietnamese/SKILL_ANATOMY.vi.md +0 -633
  1173. package/bundled-skills/docs/vietnamese/SOURCES.vi.md +0 -21
  1174. package/bundled-skills/docs/vietnamese/TRANSLATION_PLAN.vi.md +0 -65
  1175. package/bundled-skills/docs/vietnamese/VISUAL_GUIDE.vi.md +0 -511
  1176. package/bundled-skills/docs/walkthrough.md +0 -3
@@ -15,2138 +15,9 @@ moving cursors, clicking buttons, and typing text. Covers Anthropic's Computer
15
15
  Use, OpenAI's Operator/CUA, and open-source alternatives. Critical focus on
16
16
  sandboxing, security, and handling the unique challenges of vision-based control.
17
17
 
18
- ## Patterns
18
+ ## Detailed Guide
19
19
 
20
- ### Perception-Reasoning-Action Loop
21
-
22
- The fundamental architecture of computer use agents: observe screen,
23
- reason about next action, execute action, repeat. This loop integrates
24
- vision models with action execution through an iterative pipeline.
25
-
26
- Key components:
27
- 1. PERCEPTION: Screenshot captures current screen state
28
- 2. REASONING: Vision-language model analyzes and plans
29
- 3. ACTION: Execute mouse/keyboard operations
30
- 4. FEEDBACK: Observe result, continue or correct
31
-
32
- Critical insight: Vision agents are completely still during "thinking"
33
- phase (1-5 seconds), creating a detectable pause pattern.
34
-
35
- **When to use**: Building any computer use agent from scratch,Integrating vision models with desktop control,Understanding agent behavior patterns
36
-
37
- from anthropic import Anthropic
38
- from PIL import Image
39
- import base64
40
- import pyautogui
41
- import time
42
-
43
- class ComputerUseAgent:
44
- """
45
- Perception-Reasoning-Action loop implementation.
46
- Based on Anthropic Computer Use patterns.
47
- """
48
-
49
- def __init__(self, client: Anthropic, model: str = "claude-sonnet-4-20250514"):
50
- self.client = client
51
- self.model = model
52
- self.max_steps = 50 # Prevent runaway loops
53
- self.action_delay = 0.5 # Seconds between actions
54
-
55
- def capture_screenshot(self) -> str:
56
- """Capture screen and return base64 encoded image."""
57
- screenshot = pyautogui.screenshot()
58
- # Resize for token efficiency (1280x800 is good balance)
59
- screenshot = screenshot.resize((1280, 800), Image.LANCZOS)
60
-
61
- import io
62
- buffer = io.BytesIO()
63
- screenshot.save(buffer, format="PNG")
64
- return base64.b64encode(buffer.getvalue()).decode()
65
-
66
- def execute_action(self, action: dict) -> dict:
67
- """Execute mouse/keyboard action on the computer."""
68
- action_type = action.get("type")
69
-
70
- if action_type == "click":
71
- x, y = action["x"], action["y"]
72
- button = action.get("button", "left")
73
- pyautogui.click(x, y, button=button)
74
- return {"success": True, "action": f"clicked at ({x}, {y})"}
75
-
76
- elif action_type == "type":
77
- text = action["text"]
78
- pyautogui.typewrite(text, interval=0.02)
79
- return {"success": True, "action": f"typed {len(text)} chars"}
80
-
81
- elif action_type == "key":
82
- key = action["key"]
83
- pyautogui.press(key)
84
- return {"success": True, "action": f"pressed {key}"}
85
-
86
- elif action_type == "scroll":
87
- direction = action.get("direction", "down")
88
- amount = action.get("amount", 3)
89
- scroll = -amount if direction == "down" else amount
90
- pyautogui.scroll(scroll)
91
- return {"success": True, "action": f"scrolled {direction}"}
92
-
93
- elif action_type == "move":
94
- x, y = action["x"], action["y"]
95
- pyautogui.moveTo(x, y)
96
- return {"success": True, "action": f"moved to ({x}, {y})"}
97
-
98
- else:
99
- return {"success": False, "error": f"Unknown action: {action_type}"}
100
-
101
- def run(self, task: str) -> dict:
102
- """
103
- Run perception-reasoning-action loop until task complete.
104
-
105
- The loop:
106
- 1. Screenshot current state
107
- 2. Send to vision model with task context
108
- 3. Parse action from response
109
- 4. Execute action
110
- 5. Repeat until done or max steps
111
- """
112
- messages = []
113
- step_count = 0
114
-
115
- system_prompt = """You are a computer use agent. You can see the screen
116
- and control mouse/keyboard.
117
-
118
- Available actions (respond with JSON):
119
- - {"type": "click", "x": 100, "y": 200, "button": "left"}
120
- - {"type": "type", "text": "hello world"}
121
- - {"type": "key", "key": "enter"}
122
- - {"type": "scroll", "direction": "down", "amount": 3}
123
- - {"type": "done", "result": "task completed successfully"}
124
-
125
- Always respond with ONLY a JSON action object.
126
- Be precise with coordinates - click exactly where needed.
127
- If you see an error, try to recover.
128
- """
129
-
130
- while step_count < self.max_steps:
131
- step_count += 1
132
-
133
- # 1. PERCEPTION: Capture current screen
134
- screenshot_b64 = self.capture_screenshot()
135
-
136
- # 2. REASONING: Send to vision model
137
- user_content = [
138
- {"type": "text", "text": f"Task: {task}\n\nStep {step_count}. What action should I take?"},
139
- {"type": "image", "source": {
140
- "type": "base64",
141
- "media_type": "image/png",
142
- "data": screenshot_b64
143
- }}
144
- ]
145
-
146
- messages.append({"role": "user", "content": user_content})
147
-
148
- response = self.client.messages.create(
149
- model=self.model,
150
- max_tokens=1024,
151
- system=system_prompt,
152
- messages=messages
153
- )
154
-
155
- assistant_message = response.content[0].text
156
- messages.append({"role": "assistant", "content": assistant_message})
157
-
158
- # 3. Parse action from response
159
- import json
160
- try:
161
- action = json.loads(assistant_message)
162
- except json.JSONDecodeError:
163
- # Try to extract JSON from response
164
- import re
165
- match = re.search(r'\{[^}]+\}', assistant_message)
166
- if match:
167
- action = json.loads(match.group())
168
- else:
169
- continue
170
-
171
- # Check if done
172
- if action.get("type") == "done":
173
- return {
174
- "success": True,
175
- "result": action.get("result"),
176
- "steps": step_count
177
- }
178
-
179
- # 4. ACTION: Execute
180
- result = self.execute_action(action)
181
-
182
- # Small delay for UI to update
183
- time.sleep(self.action_delay)
184
-
185
- return {
186
- "success": False,
187
- "error": "Max steps reached",
188
- "steps": step_count
189
- }
190
-
191
- # Usage
192
- agent = ComputerUseAgent(Anthropic())
193
- result = agent.run("Open Chrome and search for 'weather today'")
194
-
195
- ### Anti_patterns
196
-
197
- - Running without step limits (infinite loops)
198
- - No delay between actions (UI can't keep up)
199
- - Screenshots at full resolution (token explosion)
200
- - Ignoring action failures (no recovery)
201
-
202
- ### Sandboxed Environment Pattern
203
-
204
- Computer use agents MUST run in isolated, sandboxed environments.
205
- Never give agents direct access to your main system - the security
206
- risks are too high. Use Docker containers with virtual desktops.
207
-
208
- Key isolation requirements:
209
- 1. NETWORK: Restrict to necessary endpoints only
210
- 2. FILESYSTEM: Read-only or scoped to temp directories
211
- 3. CREDENTIALS: No access to host credentials
212
- 4. SYSCALLS: Filter dangerous system calls
213
- 5. RESOURCES: Limit CPU, memory, time
214
-
215
- The goal is "blast radius minimization" - if the agent goes wrong,
216
- damage is contained to the sandbox.
217
-
218
- **When to use**: Deploying any computer use agent,Testing agent behavior safely,Running untrusted automation tasks
219
-
220
- # Dockerfile for sandboxed computer use environment
221
- # Based on Anthropic's reference implementation pattern
222
-
223
- FROM ubuntu:22.04
224
-
225
- # Install desktop environment
226
- RUN apt-get update && apt-get install -y \
227
- xvfb \
228
- x11vnc \
229
- fluxbox \
230
- xterm \
231
- firefox \
232
- python3 \
233
- python3-pip \
234
- supervisor
235
-
236
- # Security: Create non-root user
237
- RUN useradd -m -s /bin/bash agent && \
238
- mkdir -p /home/agent/.vnc
239
-
240
- # Install Python dependencies
241
- COPY requirements.txt /tmp/
242
- RUN pip3 install -r /tmp/requirements.txt
243
-
244
- # Security: Drop capabilities
245
- RUN apt-get install -y --no-install-recommends libcap2-bin && \
246
- setcap -r /usr/bin/python3 || true
247
-
248
- # Copy agent code
249
- COPY --chown=agent:agent . /app
250
- WORKDIR /app
251
-
252
- # Supervisor config for virtual display + VNC
253
- COPY supervisord.conf /etc/supervisor/conf.d/
254
-
255
- # Expose VNC port only (not desktop directly)
256
- EXPOSE 5900
257
-
258
- # Run as non-root
259
- USER agent
260
-
261
- CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
262
-
263
- ---
264
-
265
- # docker-compose.yml with security constraints
266
- version: '3.8'
267
-
268
- services:
269
- computer-use-agent:
270
- build: .
271
- ports:
272
- - "5900:5900" # VNC for observation
273
- - "8080:8080" # API for control
274
-
275
- # Security constraints
276
- security_opt:
277
- - no-new-privileges:true
278
- - seccomp:seccomp-profile.json
279
-
280
- # Resource limits
281
- deploy:
282
- resources:
283
- limits:
284
- cpus: '2'
285
- memory: 4G
286
- reservations:
287
- cpus: '0.5'
288
- memory: 1G
289
-
290
- # Network isolation
291
- networks:
292
- - agent-network
293
-
294
- # No access to host filesystem
295
- volumes:
296
- - agent-tmp:/tmp
297
-
298
- # Read-only root filesystem
299
- read_only: true
300
- tmpfs:
301
- - /run
302
- - /var/run
303
-
304
- # Environment
305
- environment:
306
- - DISPLAY=:99
307
- - NO_PROXY=localhost
308
-
309
- networks:
310
- agent-network:
311
- driver: bridge
312
- internal: true # No internet by default
313
-
314
- volumes:
315
- agent-tmp:
316
-
317
- ---
318
-
319
- # Python wrapper with additional runtime sandboxing
320
- import subprocess
321
- import os
322
- from dataclasses import dataclass
323
- from typing import Optional
324
-
325
- @dataclass
326
- class SandboxConfig:
327
- """Configuration for agent sandbox."""
328
- network_allowed: list[str] = None # Allowed domains
329
- max_runtime_seconds: int = 300
330
- max_memory_mb: int = 2048
331
- allow_downloads: bool = False
332
- allow_clipboard: bool = False
333
-
334
- class SandboxedAgent:
335
- """
336
- Run computer use agent in Docker sandbox.
337
- """
338
-
339
- def __init__(self, config: SandboxConfig):
340
- self.config = config
341
- self.container_id: Optional[str] = None
342
-
343
- def start(self):
344
- """Start sandboxed environment."""
345
- # Build network rules
346
- network_rules = ""
347
- if self.config.network_allowed:
348
- for domain in self.config.network_allowed:
349
- network_rules += f"--add-host={domain}:$(dig +short {domain}) "
350
- else:
351
- network_rules = "--network=none"
352
-
353
- cmd = f"""
354
- docker run -d \
355
- --name computer-use-sandbox-$$ \
356
- --security-opt no-new-privileges \
357
- --cap-drop ALL \
358
- --memory {self.config.max_memory_mb}m \
359
- --cpus 2 \
360
- --read-only \
361
- --tmpfs /tmp \
362
- {network_rules} \
363
- computer-use-agent:latest
364
- """
365
-
366
- result = subprocess.run(cmd, shell=True, capture_output=True)
367
- self.container_id = result.stdout.decode().strip()
368
-
369
- # Set up kill timer
370
- subprocess.Popen([
371
- "sh", "-c",
372
- f"sleep {self.config.max_runtime_seconds} && docker kill {self.container_id}"
373
- ])
374
-
375
- return self.container_id
376
-
377
- def execute_task(self, task: str) -> dict:
378
- """Execute task in sandbox."""
379
- if not self.container_id:
380
- self.start()
381
-
382
- # Send task to agent via API
383
- import requests
384
- response = requests.post(
385
- f"http://localhost:8080/task",
386
- json={"task": task},
387
- timeout=self.config.max_runtime_seconds
388
- )
389
-
390
- return response.json()
391
-
392
- def stop(self):
393
- """Stop and remove sandbox."""
394
- if self.container_id:
395
- subprocess.run(f"docker rm -f {self.container_id}", shell=True)
396
- self.container_id = None
397
-
398
- ### Anti_patterns
399
-
400
- - Running agents on host system directly
401
- - Giving sandbox full network access
402
- - Running as root in container
403
- - No resource limits (denial of service)
404
- - Persistent storage (data can leak between runs)
405
-
406
- ### Anthropic Computer Use Implementation
407
-
408
- Official implementation pattern using Claude's computer use capability.
409
- Claude 3.5 Sonnet was the first frontier model to offer computer use.
410
- Claude Opus 4.5 is now the "best model in the world for computer use."
411
-
412
- Key capabilities:
413
- - screenshot: Capture current screen state
414
- - mouse: Click, move, drag operations
415
- - keyboard: Type text, press keys
416
- - bash: Run shell commands
417
- - text_editor: View and edit files
418
-
419
- Tool versions:
420
- - computer_20251124 (Opus 4.5): Adds zoom action for detailed inspection
421
- - computer_20250124 (All other models): Standard capabilities
422
-
423
- Critical limitation: "Some UI elements (like dropdowns and scrollbars)
424
- might be tricky for Claude to manipulate" - Anthropic docs
425
-
426
- **When to use**: Building production computer use agents,Need highest quality vision understanding,Full desktop control (not just browser)
427
-
428
- from anthropic import Anthropic
429
- from anthropic.types.beta import (
430
- BetaToolComputerUse20241022,
431
- BetaToolBash20241022,
432
- BetaToolTextEditor20241022,
433
- )
434
- import subprocess
435
- import base64
436
- from PIL import Image
437
- import io
438
-
439
- class AnthropicComputerUse:
440
- """
441
- Official Anthropic Computer Use implementation.
442
-
443
- Requires:
444
- - Docker container with virtual display
445
- - VNC for viewing agent actions
446
- - Proper tool implementations
447
- """
448
-
449
- def __init__(self):
450
- self.client = Anthropic()
451
- self.model = "claude-sonnet-4-20250514" # Best for computer use
452
- self.screen_size = (1280, 800)
453
-
454
- def get_tools(self) -> list:
455
- """Define computer use tools."""
456
- return [
457
- BetaToolComputerUse20241022(
458
- type="computer_20241022",
459
- name="computer",
460
- display_width_px=self.screen_size[0],
461
- display_height_px=self.screen_size[1],
462
- ),
463
- BetaToolBash20241022(
464
- type="bash_20241022",
465
- name="bash",
466
- ),
467
- BetaToolTextEditor20241022(
468
- type="text_editor_20241022",
469
- name="str_replace_editor",
470
- ),
471
- ]
472
-
473
- def execute_tool(self, name: str, input: dict) -> dict:
474
- """Execute a tool and return result."""
475
-
476
- if name == "computer":
477
- return self._handle_computer_action(input)
478
- elif name == "bash":
479
- return self._handle_bash(input)
480
- elif name == "str_replace_editor":
481
- return self._handle_editor(input)
482
- else:
483
- return {"error": f"Unknown tool: {name}"}
484
-
485
- def _handle_computer_action(self, input: dict) -> dict:
486
- """Handle computer control actions."""
487
- action = input.get("action")
488
-
489
- if action == "screenshot":
490
- # Capture via xdotool/scrot
491
- subprocess.run(["scrot", "/tmp/screenshot.png"])
492
-
493
- with open("/tmp/screenshot.png", "rb") as f:
494
- img_data = f.read()
495
-
496
- # Resize for efficiency
497
- img = Image.open(io.BytesIO(img_data))
498
- img = img.resize(self.screen_size, Image.LANCZOS)
499
-
500
- buffer = io.BytesIO()
501
- img.save(buffer, format="PNG")
502
-
503
- return {
504
- "type": "image",
505
- "source": {
506
- "type": "base64",
507
- "media_type": "image/png",
508
- "data": base64.b64encode(buffer.getvalue()).decode()
509
- }
510
- }
511
-
512
- elif action == "mouse_move":
513
- x, y = input.get("coordinate", [0, 0])
514
- subprocess.run(["xdotool", "mousemove", str(x), str(y)])
515
- return {"success": True}
516
-
517
- elif action == "left_click":
518
- subprocess.run(["xdotool", "click", "1"])
519
- return {"success": True}
520
-
521
- elif action == "right_click":
522
- subprocess.run(["xdotool", "click", "3"])
523
- return {"success": True}
524
-
525
- elif action == "double_click":
526
- subprocess.run(["xdotool", "click", "--repeat", "2", "1"])
527
- return {"success": True}
528
-
529
- elif action == "type":
530
- text = input.get("text", "")
531
- # Use xdotool type with delay for reliability
532
- subprocess.run(["xdotool", "type", "--delay", "50", text])
533
- return {"success": True}
534
-
535
- elif action == "key":
536
- key = input.get("key", "")
537
- # Map common key names
538
- key_map = {
539
- "return": "Return",
540
- "enter": "Return",
541
- "tab": "Tab",
542
- "escape": "Escape",
543
- "backspace": "BackSpace",
544
- }
545
- xdotool_key = key_map.get(key.lower(), key)
546
- subprocess.run(["xdotool", "key", xdotool_key])
547
- return {"success": True}
548
-
549
- elif action == "scroll":
550
- direction = input.get("direction", "down")
551
- amount = input.get("amount", 3)
552
- button = "5" if direction == "down" else "4"
553
- for _ in range(amount):
554
- subprocess.run(["xdotool", "click", button])
555
- return {"success": True}
556
-
557
- return {"error": f"Unknown action: {action}"}
558
-
559
- def _handle_bash(self, input: dict) -> dict:
560
- """Execute bash command."""
561
- command = input.get("command", "")
562
-
563
- # Security: Sanitize and limit commands
564
- dangerous_patterns = ["rm -rf", "mkfs", "dd if=", "> /dev/"]
565
- for pattern in dangerous_patterns:
566
- if pattern in command:
567
- return {"error": "Dangerous command blocked"}
568
-
569
- try:
570
- result = subprocess.run(
571
- command,
572
- shell=True,
573
- capture_output=True,
574
- text=True,
575
- timeout=30
576
- )
577
- return {
578
- "stdout": result.stdout[:10000], # Limit output
579
- "stderr": result.stderr[:1000],
580
- "returncode": result.returncode
581
- }
582
- except subprocess.TimeoutExpired:
583
- return {"error": "Command timed out"}
584
-
585
- def _handle_editor(self, input: dict) -> dict:
586
- """Handle text editor operations."""
587
- command = input.get("command")
588
- path = input.get("path")
589
-
590
- if command == "view":
591
- try:
592
- with open(path, "r") as f:
593
- content = f.read()
594
- return {"content": content[:50000]} # Limit size
595
- except Exception as e:
596
- return {"error": str(e)}
597
-
598
- elif command == "str_replace":
599
- old_str = input.get("old_str")
600
- new_str = input.get("new_str")
601
- try:
602
- with open(path, "r") as f:
603
- content = f.read()
604
- if old_str not in content:
605
- return {"error": "old_str not found in file"}
606
- content = content.replace(old_str, new_str, 1)
607
- with open(path, "w") as f:
608
- f.write(content)
609
- return {"success": True}
610
- except Exception as e:
611
- return {"error": str(e)}
612
-
613
- return {"error": f"Unknown editor command: {command}"}
614
-
615
- def run_task(self, task: str, max_steps: int = 50) -> dict:
616
- """Run computer use task with agentic loop."""
617
- messages = [{"role": "user", "content": task}]
618
- tools = self.get_tools()
619
-
620
- for step in range(max_steps):
621
- response = self.client.beta.messages.create(
622
- model=self.model,
623
- max_tokens=4096,
624
- tools=tools,
625
- messages=messages,
626
- betas=["computer-use-2024-10-22"]
627
- )
628
-
629
- # Check for completion
630
- if response.stop_reason == "end_turn":
631
- return {
632
- "success": True,
633
- "result": response.content[0].text if response.content else "",
634
- "steps": step + 1
635
- }
636
-
637
- # Handle tool use
638
- if response.stop_reason == "tool_use":
639
- messages.append({"role": "assistant", "content": response.content})
640
-
641
- tool_results = []
642
- for block in response.content:
643
- if block.type == "tool_use":
644
- result = self.execute_tool(block.name, block.input)
645
- tool_results.append({
646
- "type": "tool_result",
647
- "tool_use_id": block.id,
648
- "content": result
649
- })
650
-
651
- messages.append({"role": "user", "content": tool_results})
652
-
653
- return {"success": False, "error": "Max steps reached"}
654
-
655
- ### Anti_patterns
656
-
657
- - Not using betas=['computer-use-2024-10-22'] flag
658
- - Full resolution screenshots (wasteful)
659
- - No command sanitization for bash tool
660
- - Unbounded execution time
661
-
662
- ### Browser-Use Pattern (Playwright-based)
663
-
664
- For browser-only automation, using structured DOM access is more efficient
665
- than pixel-based computer use. Playwright MCP allows LLMs to control
666
- browsers using accessibility snapshots rather than screenshots.
667
-
668
- Advantages over vision-based:
669
- - Faster: No image processing required
670
- - Cheaper: Text tokens vs image tokens
671
- - More precise: Direct element targeting
672
- - More reliable: No coordinate drift
673
-
674
- When to use vision vs structured:
675
- - Vision: Desktop apps, complex UIs, visual verification
676
- - Structured: Web automation, form filling, data extraction
677
-
678
- **When to use**: Browser-only automation tasks,Form filling and web interactions,When speed and cost matter more than visual understanding
679
-
680
- from playwright.async_api import async_playwright
681
- from dataclasses import dataclass
682
- from typing import Optional
683
- import asyncio
684
-
685
- @dataclass
686
- class BrowserAction:
687
- """Structured browser action."""
688
- action: str # click, type, navigate, scroll, extract
689
- selector: Optional[str] = None
690
- text: Optional[str] = None
691
- url: Optional[str] = None
692
-
693
- class BrowserUseAgent:
694
- """
695
- Browser automation using Playwright with structured commands.
696
- More efficient than pixel-based for web tasks.
697
- """
698
-
699
- def __init__(self):
700
- self.browser = None
701
- self.page = None
702
-
703
- async def start(self, headless: bool = True):
704
- """Start browser session."""
705
- self.playwright = await async_playwright().start()
706
- self.browser = await self.playwright.chromium.launch(headless=headless)
707
- self.page = await self.browser.new_page()
708
-
709
- async def get_page_snapshot(self) -> dict:
710
- """
711
- Get structured snapshot of page for LLM.
712
- Uses accessibility tree for efficiency.
713
- """
714
- # Get accessibility tree
715
- snapshot = await self.page.accessibility.snapshot()
716
-
717
- # Get simplified DOM info
718
- elements = await self.page.evaluate('''() => {
719
- const interactable = [];
720
- const selector = 'a, button, input, select, textarea, [role="button"]';
721
- document.querySelectorAll(selector).forEach((el, i) => {
722
- const rect = el.getBoundingClientRect();
723
- if (rect.width > 0 && rect.height > 0) {
724
- interactable.push({
725
- index: i,
726
- tag: el.tagName.toLowerCase(),
727
- text: el.textContent?.trim().slice(0, 100),
728
- type: el.type,
729
- placeholder: el.placeholder,
730
- name: el.name,
731
- id: el.id,
732
- class: el.className
733
- });
734
- }
735
- });
736
- return interactable;
737
- }''')
738
-
739
- return {
740
- "url": self.page.url,
741
- "title": await self.page.title(),
742
- "accessibility_tree": snapshot,
743
- "interactable_elements": elements[:50] # Limit for token efficiency
744
- }
745
-
746
- async def execute_action(self, action: BrowserAction) -> dict:
747
- """Execute structured browser action."""
748
-
749
- try:
750
- if action.action == "navigate":
751
- await self.page.goto(action.url, wait_until="domcontentloaded")
752
- return {"success": True, "url": self.page.url}
753
-
754
- elif action.action == "click":
755
- await self.page.click(action.selector, timeout=5000)
756
- await self.page.wait_for_load_state("networkidle", timeout=5000)
757
- return {"success": True}
758
-
759
- elif action.action == "type":
760
- await self.page.fill(action.selector, action.text)
761
- return {"success": True}
762
-
763
- elif action.action == "scroll":
764
- direction = action.text or "down"
765
- distance = 500 if direction == "down" else -500
766
- await self.page.evaluate(f"window.scrollBy(0, {distance})")
767
- return {"success": True}
768
-
769
- elif action.action == "extract":
770
- # Extract text content
771
- if action.selector:
772
- text = await self.page.text_content(action.selector)
773
- else:
774
- text = await self.page.text_content("body")
775
- return {"success": True, "text": text[:5000]}
776
-
777
- elif action.action == "screenshot":
778
- # Fall back to vision when needed
779
- screenshot = await self.page.screenshot(type="png")
780
- import base64
781
- return {
782
- "success": True,
783
- "image": base64.b64encode(screenshot).decode()
784
- }
785
-
786
- except Exception as e:
787
- return {"success": False, "error": str(e)}
788
-
789
- return {"success": False, "error": f"Unknown action: {action.action}"}
790
-
791
- async def run_with_llm(self, task: str, llm_client, max_steps: int = 20):
792
- """
793
- Run browser task with LLM decision making.
794
- Uses structured DOM instead of screenshots.
795
- """
796
-
797
- system_prompt = """You are a browser automation agent. You receive
798
- page snapshots with interactable elements and decide actions.
799
-
800
- Respond with JSON action:
801
- - {"action": "navigate", "url": "https://..."}
802
- - {"action": "click", "selector": "button.submit"}
803
- - {"action": "type", "selector": "input[name='email']", "text": "..."}
804
- - {"action": "scroll", "text": "down"}
805
- - {"action": "extract", "selector": ".results"}
806
- - {"action": "done", "result": "task completed"}
807
-
808
- Use CSS selectors based on the element info provided.
809
- Prefer id > name > class > text content for selectors.
810
- """
811
-
812
- messages = []
813
-
814
- for step in range(max_steps):
815
- # Get current page state
816
- snapshot = await self.get_page_snapshot()
817
-
818
- user_message = f"""Task: {task}
819
-
820
- Current page:
821
- URL: {snapshot['url']}
822
- Title: {snapshot['title']}
823
-
824
- Interactable elements:
825
- {snapshot['interactable_elements']}
826
-
827
- What action should I take?"""
828
-
829
- messages.append({"role": "user", "content": user_message})
830
-
831
- # Get LLM decision
832
- response = llm_client.messages.create(
833
- model="claude-sonnet-4-20250514",
834
- max_tokens=1024,
835
- system=system_prompt,
836
- messages=messages
837
- )
838
-
839
- assistant_text = response.content[0].text
840
- messages.append({"role": "assistant", "content": assistant_text})
841
-
842
- # Parse and execute
843
- import json
844
- action_dict = json.loads(assistant_text)
845
-
846
- if action_dict.get("action") == "done":
847
- return {"success": True, "result": action_dict.get("result")}
848
-
849
- action = BrowserAction(**action_dict)
850
- result = await self.execute_action(action)
851
-
852
- if not result.get("success"):
853
- messages.append({
854
- "role": "user",
855
- "content": f"Action failed: {result.get('error')}"
856
- })
857
-
858
- await asyncio.sleep(0.5) # Rate limit
859
-
860
- return {"success": False, "error": "Max steps reached"}
861
-
862
- async def close(self):
863
- """Clean up browser."""
864
- if self.browser:
865
- await self.browser.close()
866
- if hasattr(self, 'playwright'):
867
- await self.playwright.stop()
868
-
869
- # Usage
870
- async def main():
871
- agent = BrowserUseAgent()
872
- await agent.start(headless=False)
873
-
874
- from anthropic import Anthropic
875
- result = await agent.run_with_llm(
876
- "Go to weather.com and find the weather for New York",
877
- Anthropic()
878
- )
879
-
880
- print(result)
881
- await agent.close()
882
-
883
- asyncio.run(main())
884
-
885
- ### Anti_patterns
886
-
887
- - Using screenshots when DOM access works
888
- - Not waiting for page loads
889
- - Hardcoded selectors that break
890
- - No error recovery for stale elements
891
-
892
- ### User Confirmation Pattern
893
-
894
- For sensitive actions, agents should pause and ask for human confirmation.
895
- "ChatGPT agent also pauses and asks for confirmation prior to taking
896
- sensitive steps such as completing a purchase."
897
-
898
- Sensitivity levels:
899
- 1. LOW: Navigation, reading (auto-approve)
900
- 2. MEDIUM: Form filling, clicking (log, maybe confirm)
901
- 3. HIGH: Purchases, authentication, file operations (always confirm)
902
- 4. CRITICAL: Credential entry, financial transactions (confirm + review)
903
-
904
- **When to use**: Actions with real-world consequences,Financial transactions,Authentication flows,File modifications
905
-
906
- from enum import Enum
907
- from dataclasses import dataclass
908
- from typing import Callable, Optional
909
- import asyncio
910
-
911
- class ActionSeverity(Enum):
912
- LOW = "low" # Auto-approve
913
- MEDIUM = "medium" # Log, optional confirm
914
- HIGH = "high" # Always confirm
915
- CRITICAL = "critical" # Confirm + review details
916
-
917
- @dataclass
918
- class SensitiveAction:
919
- """Action that may need user confirmation."""
920
- action_type: str
921
- description: str
922
- severity: ActionSeverity
923
- details: dict
924
-
925
- class ConfirmationGate:
926
- """
927
- Gate sensitive actions through user confirmation.
928
- """
929
-
930
- # Action type -> severity mapping
931
- ACTION_SEVERITY = {
932
- # LOW - auto-approve
933
- "navigate": ActionSeverity.LOW,
934
- "scroll": ActionSeverity.LOW,
935
- "read": ActionSeverity.LOW,
936
- "screenshot": ActionSeverity.LOW,
937
-
938
- # MEDIUM - log and maybe confirm
939
- "click": ActionSeverity.MEDIUM,
940
- "type": ActionSeverity.MEDIUM,
941
- "search": ActionSeverity.MEDIUM,
942
-
943
- # HIGH - always confirm
944
- "download": ActionSeverity.HIGH,
945
- "submit_form": ActionSeverity.HIGH,
946
- "login": ActionSeverity.HIGH,
947
- "file_write": ActionSeverity.HIGH,
948
-
949
- # CRITICAL - confirm with full review
950
- "purchase": ActionSeverity.CRITICAL,
951
- "enter_password": ActionSeverity.CRITICAL,
952
- "enter_credit_card": ActionSeverity.CRITICAL,
953
- "send_money": ActionSeverity.CRITICAL,
954
- "delete": ActionSeverity.CRITICAL,
955
- }
956
-
957
- def __init__(
958
- self,
959
- confirm_callback: Callable[[SensitiveAction], bool] = None,
960
- auto_confirm_low: bool = True,
961
- auto_confirm_medium: bool = False
962
- ):
963
- self.confirm_callback = confirm_callback or self._default_confirm
964
- self.auto_confirm_low = auto_confirm_low
965
- self.auto_confirm_medium = auto_confirm_medium
966
- self.action_log = []
967
-
968
- def _default_confirm(self, action: SensitiveAction) -> bool:
969
- """Default confirmation via CLI prompt."""
970
- print(f"\n{'='*60}")
971
- print(f"ACTION CONFIRMATION REQUIRED")
972
- print(f"{'='*60}")
973
- print(f"Type: {action.action_type}")
974
- print(f"Severity: {action.severity.value.upper()}")
975
- print(f"Description: {action.description}")
976
- print(f"Details: {action.details}")
977
- print(f"{'='*60}")
978
-
979
- while True:
980
- response = input("Allow this action? [y/n]: ").lower().strip()
981
- if response in ['y', 'yes']:
982
- return True
983
- elif response in ['n', 'no']:
984
- return False
985
-
986
- def classify_action(self, action_type: str, context: dict) -> ActionSeverity:
987
- """Classify action severity, considering context."""
988
- base_severity = self.ACTION_SEVERITY.get(action_type, ActionSeverity.MEDIUM)
989
-
990
- # Escalate based on context
991
- if context.get("involves_credentials"):
992
- return ActionSeverity.CRITICAL
993
- if context.get("involves_money"):
994
- return ActionSeverity.CRITICAL
995
- if context.get("irreversible"):
996
- return max(base_severity, ActionSeverity.HIGH, key=lambda x: x.value)
997
-
998
- return base_severity
999
-
1000
- def check_action(
1001
- self,
1002
- action_type: str,
1003
- description: str,
1004
- details: dict = None
1005
- ) -> tuple[bool, str]:
1006
- """
1007
- Check if action should proceed.
1008
- Returns (approved, reason).
1009
- """
1010
- details = details or {}
1011
- severity = self.classify_action(action_type, details)
1012
-
1013
- action = SensitiveAction(
1014
- action_type=action_type,
1015
- description=description,
1016
- severity=severity,
1017
- details=details
1018
- )
1019
-
1020
- # Log all actions
1021
- self.action_log.append({
1022
- "action": action,
1023
- "timestamp": __import__('datetime').datetime.now().isoformat()
1024
- })
1025
-
1026
- # Auto-approve low severity
1027
- if severity == ActionSeverity.LOW and self.auto_confirm_low:
1028
- return True, "auto-approved (low severity)"
1029
-
1030
- # Maybe auto-approve medium
1031
- if severity == ActionSeverity.MEDIUM and self.auto_confirm_medium:
1032
- return True, "auto-approved (medium severity)"
1033
-
1034
- # Request confirmation
1035
- approved = self.confirm_callback(action)
1036
-
1037
- if approved:
1038
- return True, "user approved"
1039
- else:
1040
- return False, "user rejected"
1041
-
1042
- class ConfirmedComputerUseAgent:
1043
- """
1044
- Computer use agent with confirmation gates.
1045
- """
1046
-
1047
- def __init__(self, base_agent, confirmation_gate: ConfirmationGate):
1048
- self.agent = base_agent
1049
- self.gate = confirmation_gate
1050
-
1051
- def execute_action(self, action: dict) -> dict:
1052
- """Execute action with confirmation check."""
1053
- action_type = action.get("type", "unknown")
1054
-
1055
- # Build description
1056
- if action_type == "click":
1057
- desc = f"Click at ({action.get('x')}, {action.get('y')})"
1058
- elif action_type == "type":
1059
- text = action.get('text', '')
1060
- # Mask if looks like password
1061
- if self._looks_sensitive(text):
1062
- desc = f"Type sensitive text ({len(text)} chars)"
1063
- else:
1064
- desc = f"Type: {text[:50]}..."
1065
- else:
1066
- desc = f"Execute: {action_type}"
1067
-
1068
- # Context for severity classification
1069
- context = {
1070
- "involves_credentials": self._looks_sensitive(action.get("text", "")),
1071
- "involves_money": self._mentions_money(action),
1072
- }
1073
-
1074
- # Check with gate
1075
- approved, reason = self.gate.check_action(
1076
- action_type, desc, context
1077
- )
1078
-
1079
- if not approved:
1080
- return {
1081
- "success": False,
1082
- "error": f"Action blocked: {reason}",
1083
- "action": action_type
1084
- }
1085
-
1086
- # Execute if approved
1087
- return self.agent.execute_action(action)
1088
-
1089
- def _looks_sensitive(self, text: str) -> bool:
1090
- """Check if text looks like sensitive data."""
1091
- if not text:
1092
- return False
1093
- # Common patterns
1094
- patterns = [
1095
- r'\b\d{16}\b', # Credit card
1096
- r'\b\d{3,4}\b.*\b\d{3,4}\b', # CVV-like
1097
- r'password',
1098
- r'secret',
1099
- r'api.?key',
1100
- r'token'
1101
- ]
1102
- import re
1103
- return any(re.search(p, text.lower()) for p in patterns)
1104
-
1105
- def _mentions_money(self, action: dict) -> bool:
1106
- """Check if action involves money."""
1107
- text = str(action)
1108
- money_patterns = [
1109
- r'\$\d+', r'pay', r'purchase', r'buy', r'checkout',
1110
- r'credit', r'debit', r'invoice', r'payment'
1111
- ]
1112
- import re
1113
- return any(re.search(p, text.lower()) for p in money_patterns)
1114
-
1115
- # Usage
1116
- gate = ConfirmationGate(
1117
- auto_confirm_low=True,
1118
- auto_confirm_medium=False # Confirm clicks, typing
1119
- )
1120
-
1121
- agent = ConfirmedComputerUseAgent(base_agent, gate)
1122
- result = agent.execute_action({"type": "click", "x": 500, "y": 300})
1123
-
1124
- ### Anti_patterns
1125
-
1126
- - Auto-approving all actions
1127
- - Not logging rejected actions
1128
- - Showing full passwords in confirmation
1129
- - No timeout on confirmation (hangs forever)
1130
-
1131
- ### Action Logging Pattern
1132
-
1133
- All computer use agent actions should be logged for:
1134
- 1. Debugging failed automations
1135
- 2. Security auditing
1136
- 3. Reproducibility
1137
- 4. Compliance requirements
1138
-
1139
- Log format should capture:
1140
- - Timestamp
1141
- - Action type and parameters
1142
- - Screenshot before/after
1143
- - Success/failure status
1144
- - Model reasoning (if available)
1145
-
1146
- **When to use**: Production computer use deployments,Debugging automation failures,Security-sensitive environments
1147
-
1148
- from dataclasses import dataclass, field
1149
- from datetime import datetime
1150
- from typing import Optional, Any
1151
- import json
1152
- import os
1153
-
1154
- @dataclass
1155
- class ActionLogEntry:
1156
- """Single action log entry."""
1157
- timestamp: datetime
1158
- action_type: str
1159
- parameters: dict
1160
- success: bool
1161
- error: Optional[str] = None
1162
- screenshot_before: Optional[str] = None # Path to screenshot
1163
- screenshot_after: Optional[str] = None
1164
- model_reasoning: Optional[str] = None
1165
- duration_ms: Optional[int] = None
1166
-
1167
- def to_dict(self) -> dict:
1168
- return {
1169
- "timestamp": self.timestamp.isoformat(),
1170
- "action_type": self.action_type,
1171
- "parameters": self._sanitize_params(self.parameters),
1172
- "success": self.success,
1173
- "error": self.error,
1174
- "screenshot_before": self.screenshot_before,
1175
- "screenshot_after": self.screenshot_after,
1176
- "model_reasoning": self.model_reasoning,
1177
- "duration_ms": self.duration_ms
1178
- }
1179
-
1180
- def _sanitize_params(self, params: dict) -> dict:
1181
- """Remove sensitive data from params."""
1182
- sanitized = {}
1183
- sensitive_keys = ['password', 'secret', 'token', 'key', 'credit_card']
1184
-
1185
- for k, v in params.items():
1186
- if any(s in k.lower() for s in sensitive_keys):
1187
- sanitized[k] = "[REDACTED]"
1188
- elif isinstance(v, str) and len(v) > 100:
1189
- sanitized[k] = v[:100] + "...[truncated]"
1190
- else:
1191
- sanitized[k] = v
1192
-
1193
- return sanitized
1194
-
1195
- @dataclass
1196
- class TaskSession:
1197
- """A complete task execution session."""
1198
- session_id: str
1199
- task: str
1200
- start_time: datetime
1201
- end_time: Optional[datetime] = None
1202
- actions: list[ActionLogEntry] = field(default_factory=list)
1203
- success: bool = False
1204
- final_result: Optional[str] = None
1205
-
1206
- class ActionLogger:
1207
- """
1208
- Comprehensive action logging for computer use agents.
1209
- """
1210
-
1211
- def __init__(self, log_dir: str = "./agent_logs"):
1212
- self.log_dir = log_dir
1213
- self.screenshot_dir = os.path.join(log_dir, "screenshots")
1214
- os.makedirs(self.screenshot_dir, exist_ok=True)
1215
-
1216
- self.current_session: Optional[TaskSession] = None
1217
-
1218
- def start_session(self, task: str) -> str:
1219
- """Start a new task session."""
1220
- import uuid
1221
- session_id = str(uuid.uuid4())[:8]
1222
-
1223
- self.current_session = TaskSession(
1224
- session_id=session_id,
1225
- task=task,
1226
- start_time=datetime.now()
1227
- )
1228
-
1229
- return session_id
1230
-
1231
- def log_action(
1232
- self,
1233
- action_type: str,
1234
- parameters: dict,
1235
- success: bool,
1236
- error: Optional[str] = None,
1237
- screenshot_before: bytes = None,
1238
- screenshot_after: bytes = None,
1239
- model_reasoning: str = None,
1240
- duration_ms: int = None
1241
- ):
1242
- """Log a single action."""
1243
- if not self.current_session:
1244
- raise RuntimeError("No active session")
1245
-
1246
- # Save screenshots if provided
1247
- screenshot_paths = {}
1248
- timestamp_str = datetime.now().strftime("%Y%m%d_%H%M%S_%f")
1249
-
1250
- if screenshot_before:
1251
- path = os.path.join(
1252
- self.screenshot_dir,
1253
- f"{self.current_session.session_id}_{timestamp_str}_before.png"
1254
- )
1255
- with open(path, "wb") as f:
1256
- f.write(screenshot_before)
1257
- screenshot_paths["before"] = path
1258
-
1259
- if screenshot_after:
1260
- path = os.path.join(
1261
- self.screenshot_dir,
1262
- f"{self.current_session.session_id}_{timestamp_str}_after.png"
1263
- )
1264
- with open(path, "wb") as f:
1265
- f.write(screenshot_after)
1266
- screenshot_paths["after"] = path
1267
-
1268
- # Create log entry
1269
- entry = ActionLogEntry(
1270
- timestamp=datetime.now(),
1271
- action_type=action_type,
1272
- parameters=parameters,
1273
- success=success,
1274
- error=error,
1275
- screenshot_before=screenshot_paths.get("before"),
1276
- screenshot_after=screenshot_paths.get("after"),
1277
- model_reasoning=model_reasoning,
1278
- duration_ms=duration_ms
1279
- )
1280
-
1281
- self.current_session.actions.append(entry)
1282
-
1283
- # Also append to running log file
1284
- self._append_to_log(entry)
1285
-
1286
- def _append_to_log(self, entry: ActionLogEntry):
1287
- """Append entry to JSONL log file."""
1288
- log_file = os.path.join(
1289
- self.log_dir,
1290
- f"session_{self.current_session.session_id}.jsonl"
1291
- )
1292
-
1293
- with open(log_file, "a") as f:
1294
- f.write(json.dumps(entry.to_dict()) + "\n")
1295
-
1296
- def end_session(self, success: bool, result: str = None):
1297
- """End current session."""
1298
- if not self.current_session:
1299
- return
1300
-
1301
- self.current_session.end_time = datetime.now()
1302
- self.current_session.success = success
1303
- self.current_session.final_result = result
1304
-
1305
- # Write session summary
1306
- summary_file = os.path.join(
1307
- self.log_dir,
1308
- f"session_{self.current_session.session_id}_summary.json"
1309
- )
1310
-
1311
- summary = {
1312
- "session_id": self.current_session.session_id,
1313
- "task": self.current_session.task,
1314
- "start_time": self.current_session.start_time.isoformat(),
1315
- "end_time": self.current_session.end_time.isoformat(),
1316
- "duration_seconds": (
1317
- self.current_session.end_time -
1318
- self.current_session.start_time
1319
- ).total_seconds(),
1320
- "total_actions": len(self.current_session.actions),
1321
- "successful_actions": sum(
1322
- 1 for a in self.current_session.actions if a.success
1323
- ),
1324
- "failed_actions": sum(
1325
- 1 for a in self.current_session.actions if not a.success
1326
- ),
1327
- "success": success,
1328
- "final_result": result
1329
- }
1330
-
1331
- with open(summary_file, "w") as f:
1332
- json.dump(summary, f, indent=2)
1333
-
1334
- self.current_session = None
1335
-
1336
- def get_session_replay(self, session_id: str) -> list[dict]:
1337
- """Get all actions from a session for replay/debugging."""
1338
- log_file = os.path.join(self.log_dir, f"session_{session_id}.jsonl")
1339
-
1340
- actions = []
1341
- with open(log_file, "r") as f:
1342
- for line in f:
1343
- actions.append(json.loads(line))
1344
-
1345
- return actions
1346
-
1347
- # Integration with agent
1348
- class LoggedComputerUseAgent:
1349
- """Computer use agent with comprehensive logging."""
1350
-
1351
- def __init__(self, base_agent, logger: ActionLogger):
1352
- self.agent = base_agent
1353
- self.logger = logger
1354
-
1355
- def run_task(self, task: str) -> dict:
1356
- """Run task with full logging."""
1357
- session_id = self.logger.start_session(task)
1358
-
1359
- try:
1360
- result = self._run_with_logging(task)
1361
- self.logger.end_session(
1362
- success=result.get("success", False),
1363
- result=result.get("result")
1364
- )
1365
- return result
1366
- except Exception as e:
1367
- self.logger.end_session(success=False, result=str(e))
1368
- raise
1369
-
1370
- def _run_with_logging(self, task: str) -> dict:
1371
- """Internal run with action logging."""
1372
- # This would wrap the base agent's run method
1373
- # and log each action
1374
- pass
1375
-
1376
- ### Anti_patterns
1377
-
1378
- - Not sanitizing sensitive data in logs
1379
- - Storing screenshots indefinitely (storage costs)
1380
- - Not rotating log files
1381
- - Logging synchronously (blocks agent)
1382
-
1383
- ## Sharp Edges
1384
-
1385
- ### Web Content Can Hijack Your Agent
1386
-
1387
- Severity: CRITICAL
1388
-
1389
- Situation: Computer use agent browsing the web
1390
-
1391
- Symptoms:
1392
- Agent suddenly performs unexpected actions. Clicks malicious links.
1393
- Enters credentials on phishing sites. Downloads files it shouldn't.
1394
- Ignores your instructions and follows embedded commands instead.
1395
-
1396
- Why this breaks:
1397
- "While all agents that process untrusted content are subject to prompt
1398
- injection risks, browser use amplifies this risk in two ways. First,
1399
- the attack surface is vast: every webpage, embedded document, advertisement,
1400
- and dynamically loaded script represents a potential vector for malicious
1401
- instructions. Second, browser agents can take many different actions—
1402
- navigating to URLs, filling forms, clicking buttons, downloading files—
1403
- that attackers can exploit."
1404
-
1405
- Real attacks have already happened:
1406
- - "Microsoft Copilot agents were hijacked with emails containing malicious
1407
- instructions, which allowed attackers to extract entire CRM databases."
1408
- - "Google's Workspace services were manipulated—hidden prompts inside
1409
- calendar invites and emails tricked Gemini agents into deleting events
1410
- and exposing sensitive messages."
1411
-
1412
- Even a 1% attack success rate represents meaningful risk at scale.
1413
-
1414
- Recommended fix:
1415
-
1416
- ## Defense in depth - no single solution works
1417
-
1418
- 1. Sandboxing (most effective):
1419
- ```python
1420
- # Docker with strict isolation
1421
- docker run \
1422
- --security-opt no-new-privileges \
1423
- --cap-drop ALL \
1424
- --network none \ # No internet!
1425
- --read-only \
1426
- computer-use-agent
1427
- ```
1428
-
1429
- 2. Classifier-based detection:
1430
- ```python
1431
- def scan_for_injection(content: str) -> bool:
1432
- """Detect prompt injection attempts."""
1433
- patterns = [
1434
- r"ignore.*instructions",
1435
- r"disregard.*previous",
1436
- r"new.*instructions",
1437
- r"you are now",
1438
- r"act as if",
1439
- r"pretend to be",
1440
- ]
1441
- return any(re.search(p, content.lower()) for p in patterns)
1442
-
1443
- # Check page content before processing
1444
- page_text = await page.text_content("body")
1445
- if scan_for_injection(page_text):
1446
- return {"error": "Potential injection detected"}
1447
- ```
1448
-
1449
- 3. User confirmation for sensitive actions:
1450
- ```python
1451
- SENSITIVE_ACTIONS = {"download", "submit", "login", "purchase"}
1452
-
1453
- if action_type in SENSITIVE_ACTIONS:
1454
- if not await get_user_confirmation(action):
1455
- return {"error": "User rejected action"}
1456
- ```
1457
-
1458
- 4. Scoped credentials:
1459
- - Never give agent access to all credentials
1460
- - Use temporary, limited tokens
1461
- - Revoke after task completion
1462
-
1463
- ### Vision Agents Click Exact Centers
1464
-
1465
- Severity: MEDIUM
1466
-
1467
- Situation: Agent clicking on UI elements
1468
-
1469
- Symptoms:
1470
- Agent's clicks are detectable as non-human. Websites may block or
1471
- CAPTCHA the agent. Anti-bot systems flag the interaction.
1472
-
1473
- Why this breaks:
1474
- "When a vision model identifies a button, it calculates the center.
1475
- Click coordinates land at mathematically precise positions—often exact
1476
- element centers or grid-aligned pixel values. Humans don't click centers;
1477
- their click distributions follow a Gaussian pattern around targets."
1478
-
1479
- The screenshot loop also creates detectable patterns:
1480
- "Predictable pauses. Vision agents are completely still during their
1481
- 'thinking' phase. The pattern looks like: Action → Complete stillness
1482
- (1-5 seconds) → Action → Complete stillness → Action."
1483
-
1484
- Sophisticated anti-bot systems detect:
1485
- - Perfect center clicks
1486
- - No mouse movement during "thinking"
1487
- - Consistent timing between actions
1488
- - Lack of micro-movements and hesitation
1489
-
1490
- Recommended fix:
1491
-
1492
- ## Add human-like variance to actions
1493
-
1494
- ```python
1495
- import random
1496
- import time
1497
-
1498
- def humanized_click(x: int, y: int) -> tuple[int, int]:
1499
- """Add human-like variance to click coordinates."""
1500
- # Gaussian distribution around target
1501
- # Humans typically land within ~10px of target
1502
- x_offset = int(random.gauss(0, 5))
1503
- y_offset = int(random.gauss(0, 5))
1504
-
1505
- return (x + x_offset, y + y_offset)
1506
-
1507
- def humanized_delay():
1508
- """Add human-like delay between actions."""
1509
- # Humans have variable reaction times
1510
- base_delay = random.uniform(0.3, 0.8)
1511
- # Occasionally longer pauses (reading, thinking)
1512
- if random.random() < 0.2:
1513
- base_delay += random.uniform(0.5, 2.0)
1514
- time.sleep(base_delay)
1515
-
1516
- def humanized_movement(from_pos: tuple, to_pos: tuple):
1517
- """Move mouse in curved path like human."""
1518
- # Bezier curve or similar
1519
- # Humans don't move in straight lines
1520
- steps = random.randint(10, 20)
1521
- for i in range(steps):
1522
- t = i / steps
1523
- # Simple curve approximation
1524
- x = from_pos[0] + (to_pos[0] - from_pos[0]) * t
1525
- y = from_pos[1] + (to_pos[1] - from_pos[1]) * t
1526
- # Add wobble
1527
- x += random.gauss(0, 2)
1528
- y += random.gauss(0, 2)
1529
- pyautogui.moveTo(int(x), int(y))
1530
- time.sleep(0.01)
1531
- ```
1532
-
1533
- ## Rotate user agents and fingerprints
1534
-
1535
- ```python
1536
- USER_AGENTS = [
1537
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120...",
1538
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Safari/...",
1539
- # ... more realistic agents
1540
- ]
1541
-
1542
- await page.set_extra_http_headers({
1543
- "User-Agent": random.choice(USER_AGENTS)
1544
- })
1545
- ```
1546
-
1547
- ### Dropdowns, Scrollbars, and Drags Are Unreliable
1548
-
1549
- Severity: HIGH
1550
-
1551
- Situation: Agent interacting with complex UI elements
1552
-
1553
- Symptoms:
1554
- Agent fails to select dropdown options. Scroll doesn't work as expected.
1555
- Drag and drop completely fails. Hover menus disappear before clicking.
1556
-
1557
- Why this breaks:
1558
- "Computer Use currently struggles with certain interface interactions,
1559
- particularly scrolling, dragging, and zooming operations. Some UI elements
1560
- (like dropdowns and scrollbars) might be tricky for Claude to manipulate."
1561
- - Anthropic documentation
1562
-
1563
- Why these are hard:
1564
- 1. Dropdowns: Options appear after click, need second click to select
1565
- 2. Scrollbars: Small targets, need precise positioning
1566
- 3. Drag: Requires coordinated mouse down, move, mouse up
1567
- 4. Hover menus: Disappear when mouse moves away
1568
- 5. Canvas elements: No semantic information visible
1569
-
1570
- Vision models see pixels, not DOM structure. They don't "know" that
1571
- a dropdown is a dropdown - they have to infer from visual cues.
1572
-
1573
- Recommended fix:
1574
-
1575
- ## Use keyboard alternatives when possible
1576
-
1577
- ```python
1578
- # Instead of clicking dropdown, use keyboard
1579
- async def select_dropdown_option(page, dropdown_selector, option_text):
1580
- # Focus the dropdown
1581
- await page.click(dropdown_selector)
1582
- await asyncio.sleep(0.3)
1583
-
1584
- # Use keyboard to find option
1585
- await page.keyboard.type(option_text[:3]) # Type first letters
1586
- await asyncio.sleep(0.2)
1587
- await page.keyboard.press("Enter")
1588
- ```
1589
-
1590
- ## Break complex actions into steps
1591
-
1592
- ```python
1593
- # Instead of drag-and-drop
1594
- async def reliable_drag(page, source, target):
1595
- # Step 1: Click and hold
1596
- await page.mouse.move(source["x"], source["y"])
1597
- await page.mouse.down()
1598
- await asyncio.sleep(0.2)
1599
-
1600
- # Step 2: Move in steps
1601
- steps = 10
1602
- for i in range(steps):
1603
- x = source["x"] + (target["x"] - source["x"]) * i / steps
1604
- y = source["y"] + (target["y"] - source["y"]) * i / steps
1605
- await page.mouse.move(x, y)
1606
- await asyncio.sleep(0.05)
1607
-
1608
- # Step 3: Release
1609
- await page.mouse.move(target["x"], target["y"])
1610
- await asyncio.sleep(0.1)
1611
- await page.mouse.up()
1612
- ```
1613
-
1614
- ## Fall back to DOM access for web
1615
-
1616
- ```python
1617
- # If vision fails, try direct DOM manipulation
1618
- async def robust_select(page, select_selector, value):
1619
- try:
1620
- # Try vision approach first
1621
- await vision_agent.select(select_selector, value)
1622
- except Exception:
1623
- # Fall back to direct DOM
1624
- await page.select_option(select_selector, value=value)
1625
- ```
1626
-
1627
- ## Add verification after action
1628
-
1629
- ```python
1630
- async def verified_scroll(page, direction):
1631
- # Get current scroll position
1632
- before = await page.evaluate("window.scrollY")
1633
-
1634
- # Attempt scroll
1635
- await page.mouse.wheel(0, 500 if direction == "down" else -500)
1636
- await asyncio.sleep(0.3)
1637
-
1638
- # Verify it worked
1639
- after = await page.evaluate("window.scrollY")
1640
- if before == after:
1641
- # Try alternative method
1642
- await page.keyboard.press("PageDown" if direction == "down" else "PageUp")
1643
- ```
1644
-
1645
- ### Agents Are 2-5x Slower Than Humans
1646
-
1647
- Severity: MEDIUM
1648
-
1649
- Situation: Automating any computer task
1650
-
1651
- Symptoms:
1652
- Task that takes human 1 minute takes agent 3-5 minutes.
1653
- Users complain about speed. Timeouts occur.
1654
-
1655
- Why this breaks:
1656
- "The technology can be slow compared to human operators, often requiring
1657
- multiple screenshots and analysis cycles."
1658
-
1659
- Why so slow:
1660
- 1. Screenshot capture: 100-500ms
1661
- 2. Vision model inference: 1-5 seconds per screenshot
1662
- 3. Action execution: 200-500ms
1663
- 4. Wait for UI update: 500-1000ms
1664
- 5. Total per action: 2-7 seconds
1665
-
1666
- A task requiring 20 actions takes 40-140 seconds minimum.
1667
- Humans do the same actions in 20-30 seconds.
1668
-
1669
- Recommended fix:
1670
-
1671
- ## Accept the tradeoff
1672
-
1673
- Computer use is for:
1674
- - Tasks humans don't want to do (repetitive)
1675
- - Tasks that can run in background
1676
- - Tasks where accuracy > speed
1677
-
1678
- ## Optimize where possible
1679
-
1680
- ```python
1681
- # 1. Reduce screenshot resolution
1682
- SCREEN_SIZE = (1280, 800) # Not 4K
1683
-
1684
- # 2. Batch similar actions
1685
- # Instead of: type "hello", wait, type " world"
1686
- await page.type("hello world")
1687
-
1688
- # 3. Parallelize independent tasks
1689
- # Run multiple sandboxed agents concurrently
1690
-
1691
- # 4. Cache repeated computations
1692
- # If same screenshot, reuse analysis
1693
-
1694
- # 5. Use smaller models for simple decisions
1695
- simple_model = "claude-haiku-..." # For "is task done?"
1696
- complex_model = "claude-sonnet-..." # For complex reasoning
1697
- ```
1698
-
1699
- ## Set realistic expectations
1700
-
1701
- ```python
1702
- # Estimate task duration
1703
- def estimate_duration(task_complexity: str) -> int:
1704
- """Estimate task duration in seconds."""
1705
- estimates = {
1706
- "simple": 30, # Single page, few actions
1707
- "medium": 120, # Multi-page, moderate actions
1708
- "complex": 300, # Many pages, complex interactions
1709
- }
1710
- return estimates.get(task_complexity, 120)
1711
-
1712
- # Inform users
1713
- estimated = estimate_duration("medium")
1714
- print(f"Estimated completion: {estimated // 60}m {estimated % 60}s")
1715
- ```
1716
-
1717
- ### Screenshots Fill Up Context Window Fast
1718
-
1719
- Severity: HIGH
1720
-
1721
- Situation: Long-running computer use tasks
1722
-
1723
- Symptoms:
1724
- Agent forgets earlier steps. Starts repeating actions.
1725
- Errors increase as task progresses. Costs explode.
1726
-
1727
- Why this breaks:
1728
- Each screenshot is ~1500-3000 tokens. A task with 30 screenshots
1729
- uses 45,000-90,000 tokens just for images - before any text.
1730
-
1731
- Claude's context window is finite. When full:
1732
- - Older context gets dropped
1733
- - Agent loses memory of earlier steps
1734
- - Task coherence decreases
1735
-
1736
- "Getting agents to make consistent progress across multiple context
1737
- windows remains an open problem. The core challenge is that they must
1738
- work in discrete sessions, and each new session begins with no memory
1739
- of what came before." - Anthropic engineering blog
1740
-
1741
- Recommended fix:
1742
-
1743
- ## Implement context management
1744
-
1745
- ```python
1746
- class ContextManager:
1747
- """Manage context window usage for computer use."""
1748
-
1749
- MAX_SCREENSHOTS = 10 # Keep only recent screenshots
1750
- MAX_TOKENS = 100000
1751
-
1752
- def __init__(self):
1753
- self.messages = []
1754
- self.screenshot_count = 0
1755
-
1756
- def add_screenshot(self, screenshot_b64: str, description: str):
1757
- """Add screenshot with automatic pruning."""
1758
- self.screenshot_count += 1
1759
-
1760
- # Keep only recent screenshots
1761
- if self.screenshot_count > self.MAX_SCREENSHOTS:
1762
- self._prune_old_screenshots()
1763
-
1764
- # Store with description for context
1765
- self.messages.append({
1766
- "role": "user",
1767
- "content": [
1768
- {"type": "text", "text": description},
1769
- {"type": "image", "source": {...}}
1770
- ]
1771
- })
1772
-
1773
- def _prune_old_screenshots(self):
1774
- """Remove old screenshots, keep text summaries."""
1775
- new_messages = []
1776
- screenshots_kept = 0
1777
-
1778
- for msg in reversed(self.messages):
1779
- if self._has_image(msg):
1780
- if screenshots_kept < self.MAX_SCREENSHOTS:
1781
- new_messages.insert(0, msg)
1782
- screenshots_kept += 1
1783
- else:
1784
- # Convert to text summary
1785
- summary = self._summarize_screenshot(msg)
1786
- new_messages.insert(0, {
1787
- "role": msg["role"],
1788
- "content": summary
1789
- })
1790
- else:
1791
- new_messages.insert(0, msg)
1792
-
1793
- self.messages = new_messages
1794
-
1795
- def _summarize_screenshot(self, msg) -> str:
1796
- """Summarize screenshot to text."""
1797
- # Extract any text description
1798
- for content in msg.get("content", []):
1799
- if content.get("type") == "text":
1800
- return f"[Previous screenshot: {content['text']}]"
1801
- return "[Previous screenshot - details pruned]"
1802
-
1803
- def add_checkpoint(self):
1804
- """Create a checkpoint summary."""
1805
- summary = self._create_progress_summary()
1806
- self.messages.append({
1807
- "role": "user",
1808
- "content": f"CHECKPOINT: {summary}"
1809
- })
1810
- ```
1811
-
1812
- ## Use checkpointing for long tasks
1813
-
1814
- ```python
1815
- async def run_with_checkpoints(task: str, checkpoint_every: int = 10):
1816
- """Run task with periodic checkpoints."""
1817
- context = ContextManager()
1818
- step = 0
1819
-
1820
- while not task_complete:
1821
- step += 1
1822
-
1823
- # Take action...
1824
-
1825
- if step % checkpoint_every == 0:
1826
- # Create checkpoint
1827
- context.add_checkpoint()
1828
-
1829
- # Optional: persist to disk
1830
- save_checkpoint(context, step)
1831
- ```
1832
-
1833
- ## Break into subtasks
1834
-
1835
- ```python
1836
- # Instead of one 50-step task:
1837
- subtasks = [
1838
- "Navigate to the website and login",
1839
- "Find the settings page",
1840
- "Update the email address to ...",
1841
- "Save and verify the change"
1842
- ]
1843
-
1844
- for subtask in subtasks:
1845
- result = await agent.run(subtask)
1846
- if not result["success"]:
1847
- handle_error(subtask, result)
1848
- break
1849
- ```
1850
-
1851
- ### Costs Can Explode Quickly
1852
-
1853
- Severity: HIGH
1854
-
1855
- Situation: Running computer use at scale
1856
-
1857
- Symptoms:
1858
- API bill is 10x higher than expected. Single task costs $5+ instead of $0.50.
1859
- Monthly costs reach thousands of dollars quickly.
1860
-
1861
- Why this breaks:
1862
- Vision tokens are expensive. Each screenshot:
1863
- - ~2000-3000 tokens per image
1864
- - At $10/million tokens, that's $0.02-0.03 per screenshot
1865
- - Task with 30 screenshots = $0.60-0.90 just for images
1866
-
1867
- But it compounds:
1868
- - Screenshots accumulate in context
1869
- - Model sees ALL previous screenshots each turn
1870
- - Turn 10 processes 10 screenshots = $0.20-0.30
1871
- - Turn 20 processes 20 screenshots = $0.40-0.60
1872
- - Quadratic growth!
1873
-
1874
- Complex task: 50 turns × average 25 images in context = 1250 image tokens
1875
- Plus text = could easily hit $5-10 per task.
1876
-
1877
- Recommended fix:
1878
-
1879
- ## Monitor and limit costs
1880
-
1881
- ```python
1882
- class CostTracker:
1883
- """Track and limit computer use costs."""
1884
-
1885
- # Anthropic pricing (approximate)
1886
- INPUT_COST_PER_1K = 0.003 # Text
1887
- OUTPUT_COST_PER_1K = 0.015
1888
- IMAGE_COST_PER_1K = 0.01 # Roughly
1889
-
1890
- def __init__(self, max_cost_per_task: float = 1.0):
1891
- self.max_cost = max_cost_per_task
1892
- self.current_cost = 0.0
1893
- self.total_tokens = 0
1894
-
1895
- def add_turn(
1896
- self,
1897
- input_tokens: int,
1898
- output_tokens: int,
1899
- image_tokens: int
1900
- ):
1901
- """Track cost of a single turn."""
1902
- cost = (
1903
- input_tokens / 1000 * self.INPUT_COST_PER_1K +
1904
- output_tokens / 1000 * self.OUTPUT_COST_PER_1K +
1905
- image_tokens / 1000 * self.IMAGE_COST_PER_1K
1906
- )
1907
- self.current_cost += cost
1908
- self.total_tokens += input_tokens + output_tokens + image_tokens
1909
-
1910
- if self.current_cost > self.max_cost:
1911
- raise CostLimitExceeded(
1912
- f"Cost limit exceeded: ${self.current_cost:.2f} > ${self.max_cost:.2f}"
1913
- )
1914
-
1915
- return cost
1916
-
1917
- class CostLimitExceeded(Exception):
1918
- pass
1919
-
1920
- # Usage
1921
- tracker = CostTracker(max_cost_per_task=2.0)
1922
-
1923
- try:
1924
- for turn in turns:
1925
- tracker.add_turn(turn.input, turn.output, turn.images)
1926
- except CostLimitExceeded:
1927
- print("Task aborted due to cost limit")
1928
- ```
1929
-
1930
- ## Reduce image costs
1931
-
1932
- ```python
1933
- # 1. Lower resolution
1934
- SCREEN_SIZE = (1024, 768) # Smaller = fewer tokens
1935
-
1936
- # 2. JPEG instead of PNG (when quality ok)
1937
- screenshot.save(buffer, format="JPEG", quality=70)
1938
-
1939
- # 3. Crop to relevant region
1940
- def crop_relevant(screenshot: Image, focus_area: tuple):
1941
- """Crop to area of interest."""
1942
- return screenshot.crop(focus_area)
1943
-
1944
- # 4. Don't include screenshot every turn
1945
- if not needs_visual_update:
1946
- # Text-only turn
1947
- messages.append({"role": "user", "content": "Continue..."})
1948
- ```
1949
-
1950
- ## Use cheaper models strategically
1951
-
1952
- ```python
1953
- async def tiered_model_selection(task_complexity: str):
1954
- """Use appropriate model for task."""
1955
- if task_complexity == "simple":
1956
- return "claude-haiku-..." # Cheapest
1957
- elif task_complexity == "medium":
1958
- return "claude-sonnet-4-20250514" # Balanced
1959
- else:
1960
- return "claude-opus-4-5-..." # Best but expensive
1961
- ```
1962
-
1963
- ### Running Agent on Your Actual Computer
1964
-
1965
- Severity: CRITICAL
1966
-
1967
- Situation: Testing or deploying computer use
1968
-
1969
- Symptoms:
1970
- Agent deletes important files. Sends emails from your account.
1971
- Posts on social media. Accesses sensitive documents.
1972
-
1973
- Why this breaks:
1974
- Computer use agents make mistakes. They can:
1975
- - Misinterpret instructions
1976
- - Click wrong buttons
1977
- - Type in wrong fields
1978
- - Follow prompt injection attacks
1979
-
1980
- Without sandboxing, these mistakes happen on your real system.
1981
- There's no undo for "agent sent email to all contacts" or
1982
- "agent deleted project folder."
1983
-
1984
- "Autonomous agents that can access external systems and APIs
1985
- introduce new security risks. They may be vulnerable to prompt
1986
- injection attacks, unauthorized access to sensitive data, or
1987
- manipulation by malicious actors."
1988
-
1989
- Recommended fix:
1990
-
1991
- ## ALWAYS use sandboxing
1992
-
1993
- ```python
1994
- # Minimum viable sandbox: Docker with restrictions
1995
-
1996
- docker run -it --rm \
1997
- --security-opt no-new-privileges \
1998
- --cap-drop ALL \
1999
- --network none \
2000
- --read-only \
2001
- --tmpfs /tmp \
2002
- --memory 2g \
2003
- --cpus 1 \
2004
- computer-use-sandbox
2005
- ```
2006
-
2007
- ## Layer your defenses
2008
-
2009
- ```python
2010
- # Defense 1: Docker isolation
2011
- # Defense 2: Non-root user
2012
- # Defense 3: Network restrictions
2013
- # Defense 4: Filesystem restrictions
2014
- # Defense 5: Resource limits
2015
- # Defense 6: Action confirmation
2016
- # Defense 7: Action logging
2017
-
2018
- @dataclass
2019
- class SandboxConfig:
2020
- docker_image: str = "computer-use-sandbox:latest"
2021
- network: str = "none" # or specific allowlist
2022
- readonly_root: bool = True
2023
- max_memory_mb: int = 2048
2024
- max_cpu: float = 1.0
2025
- max_runtime_seconds: int = 300
2026
- require_confirmation: list = field(default_factory=lambda: [
2027
- "download", "submit", "login", "delete"
2028
- ])
2029
- log_all_actions: bool = True
2030
- ```
2031
-
2032
- ## Test in isolated environment first
2033
-
2034
- ```python
2035
- class SandboxedTestRunner:
2036
- """Run tests in throwaway containers."""
2037
-
2038
- async def run_test(self, test_task: str) -> dict:
2039
- # Spin up fresh container
2040
- container_id = await self.create_container()
2041
-
2042
- try:
2043
- # Run task
2044
- result = await self.execute_in_container(container_id, test_task)
2045
-
2046
- # Capture state for verification
2047
- state = await self.capture_container_state(container_id)
2048
-
2049
- return {
2050
- "result": result,
2051
- "final_state": state,
2052
- "logs": await self.get_logs(container_id)
2053
- }
2054
- finally:
2055
- # Always destroy container
2056
- await self.destroy_container(container_id)
2057
- ```
2058
-
2059
- ## Validation Checks
2060
-
2061
- ### Computer Use Without Sandbox
2062
-
2063
- Severity: ERROR
2064
-
2065
- Computer use agents MUST run in sandboxed environments
2066
-
2067
- Message: Computer use without sandboxing detected. Use Docker containers with restrictions.
2068
-
2069
- ### Sandbox With Full Network Access
2070
-
2071
- Severity: ERROR
2072
-
2073
- Sandboxed agents should have restricted network access
2074
-
2075
- Message: Sandbox has full network access. Use --network=none or specific allowlist.
2076
-
2077
- ### Running as Root in Container
2078
-
2079
- Severity: ERROR
2080
-
2081
- Container agents should run as non-root user
2082
-
2083
- Message: Container running as root. Add --user flag or USER directive in Dockerfile.
2084
-
2085
- ### Container Without Capability Drops
2086
-
2087
- Severity: WARNING
2088
-
2089
- Containers should drop unnecessary capabilities
2090
-
2091
- Message: Container has full capabilities. Add --cap-drop ALL.
2092
-
2093
- ### Container Without Seccomp Profile
2094
-
2095
- Severity: WARNING
2096
-
2097
- Containers should use seccomp profiles for syscall filtering
2098
-
2099
- Message: No security options set. Consider --security-opt seccomp:profile.json
2100
-
2101
- ### No Maximum Step Limit
2102
-
2103
- Severity: WARNING
2104
-
2105
- Computer use loops should have maximum step limits
2106
-
2107
- Message: Infinite loop risk. Add max_steps limit (recommended: 50).
2108
-
2109
- ### No Execution Timeout
2110
-
2111
- Severity: WARNING
2112
-
2113
- Computer use should have timeout limits
2114
-
2115
- Message: No timeout on execution. Add timeout (recommended: 5-10 minutes).
2116
-
2117
- ### Container Without Memory Limit
2118
-
2119
- Severity: WARNING
2120
-
2121
- Containers should have memory limits to prevent DoS
2122
-
2123
- Message: No memory limit on container. Add --memory 2g or similar.
2124
-
2125
- ### No Cost Tracking
2126
-
2127
- Severity: WARNING
2128
-
2129
- Computer use should track API costs
2130
-
2131
- Message: No cost tracking. Monitor token usage to prevent bill surprises.
2132
-
2133
- ### No Maximum Cost Limit
2134
-
2135
- Severity: INFO
2136
-
2137
- Consider adding cost limits per task
2138
-
2139
- Message: Consider adding max_cost_per_task to prevent expensive runaway tasks.
2140
-
2141
- ## Collaboration
2142
-
2143
- ### Delegation Triggers
2144
-
2145
- - user needs web-only automation -> browser-automation (Playwright/Selenium more efficient for web)
2146
- - user needs security review -> security-specialist (Review sandboxing, prompt injection defenses)
2147
- - user needs container orchestration -> devops (Kubernetes, Docker Swarm for scaling)
2148
- - user needs vision model optimization -> llm-architect (Model selection, prompt engineering)
2149
- - user needs multi-agent coordination -> multi-agent-orchestration (Multiple computer use agents working together)
20
+ Read [the detailed guide](references/detailed-guide.md) before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.
2150
21
 
2151
22
  ## When to Use
2152
23
  - User mentions or implies: computer use