openhands-extensions 0.6.0__tar.gz

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 (473) hide show
  1. openhands_extensions-0.6.0/.agents/skills/custom-codereview-guide.md +25 -0
  2. openhands_extensions-0.6.0/.claude-plugin/marketplace.json +1 -0
  3. openhands_extensions-0.6.0/.github/pull_request_template.md +38 -0
  4. openhands_extensions-0.6.0/.github/release.yml +14 -0
  5. openhands_extensions-0.6.0/.github/workflows/check-extensions.yml +72 -0
  6. openhands_extensions-0.6.0/.github/workflows/npm-publish.yml +89 -0
  7. openhands_extensions-0.6.0/.github/workflows/pr.yml +30 -0
  8. openhands_extensions-0.6.0/.github/workflows/pypi-publish.yml +104 -0
  9. openhands_extensions-0.6.0/.github/workflows/release.yml +24 -0
  10. openhands_extensions-0.6.0/.github/workflows/tests.yml +31 -0
  11. openhands_extensions-0.6.0/.github/workflows/vulnerability-scan.yml +87 -0
  12. openhands_extensions-0.6.0/.gitignore +32 -0
  13. openhands_extensions-0.6.0/.release-please-manifest.json +3 -0
  14. openhands_extensions-0.6.0/AGENTS.md +132 -0
  15. openhands_extensions-0.6.0/LICENSE +21 -0
  16. openhands_extensions-0.6.0/MIGRATION.md +62 -0
  17. openhands_extensions-0.6.0/PKG-INFO +6 -0
  18. openhands_extensions-0.6.0/README.md +199 -0
  19. openhands_extensions-0.6.0/analysis_results.md +162 -0
  20. openhands_extensions-0.6.0/automations/README.md +15 -0
  21. openhands_extensions-0.6.0/automations/catalog/github-pr-reviewer.json +13 -0
  22. openhands_extensions-0.6.0/automations/catalog/github-repo-monitor.json +11 -0
  23. openhands_extensions-0.6.0/automations/catalog/incident-retrospective-drafter.json +15 -0
  24. openhands_extensions-0.6.0/automations/catalog/linear-triage-assistant.json +13 -0
  25. openhands_extensions-0.6.0/automations/catalog/research-brief-writer.json +14 -0
  26. openhands_extensions-0.6.0/automations/catalog/slack-channel-monitor.json +11 -0
  27. openhands_extensions-0.6.0/automations/catalog/slack-standup-digest.json +13 -0
  28. openhands_extensions-0.6.0/automations/index.d.ts +14 -0
  29. openhands_extensions-0.6.0/automations/index.js +18 -0
  30. openhands_extensions-0.6.0/index.d.ts +19 -0
  31. openhands_extensions-0.6.0/index.js +3 -0
  32. openhands_extensions-0.6.0/integrations/README.md +49 -0
  33. openhands_extensions-0.6.0/integrations/catalog/airtable.json +74 -0
  34. openhands_extensions-0.6.0/integrations/catalog/apify.json +41 -0
  35. openhands_extensions-0.6.0/integrations/catalog/asana.json +38 -0
  36. openhands_extensions-0.6.0/integrations/catalog/atlassian.json +28 -0
  37. openhands_extensions-0.6.0/integrations/catalog/bitbucket.json +39 -0
  38. openhands_extensions-0.6.0/integrations/catalog/box.json +39 -0
  39. openhands_extensions-0.6.0/integrations/catalog/brave-search.json +42 -0
  40. openhands_extensions-0.6.0/integrations/catalog/browser-mcp.json +31 -0
  41. openhands_extensions-0.6.0/integrations/catalog/canva.json +35 -0
  42. openhands_extensions-0.6.0/integrations/catalog/clickhouse.json +55 -0
  43. openhands_extensions-0.6.0/integrations/catalog/clickup.json +36 -0
  44. openhands_extensions-0.6.0/integrations/catalog/cloudflare-bindings.json +29 -0
  45. openhands_extensions-0.6.0/integrations/catalog/cloudflare-browser-rendering.json +27 -0
  46. openhands_extensions-0.6.0/integrations/catalog/cloudflare-builds.json +28 -0
  47. openhands_extensions-0.6.0/integrations/catalog/cloudflare-docs.json +27 -0
  48. openhands_extensions-0.6.0/integrations/catalog/cloudflare-observability.json +28 -0
  49. openhands_extensions-0.6.0/integrations/catalog/confluence.json +38 -0
  50. openhands_extensions-0.6.0/integrations/catalog/datadog.json +34 -0
  51. openhands_extensions-0.6.0/integrations/catalog/deepwiki.json +28 -0
  52. openhands_extensions-0.6.0/integrations/catalog/discord.json +39 -0
  53. openhands_extensions-0.6.0/integrations/catalog/dropbox.json +38 -0
  54. openhands_extensions-0.6.0/integrations/catalog/elevenlabs.json +41 -0
  55. openhands_extensions-0.6.0/integrations/catalog/everything.json +30 -0
  56. openhands_extensions-0.6.0/integrations/catalog/exa.json +41 -0
  57. openhands_extensions-0.6.0/integrations/catalog/fetch.json +30 -0
  58. openhands_extensions-0.6.0/integrations/catalog/figma.json +76 -0
  59. openhands_extensions-0.6.0/integrations/catalog/filesystem.json +41 -0
  60. openhands_extensions-0.6.0/integrations/catalog/firecrawl.json +41 -0
  61. openhands_extensions-0.6.0/integrations/catalog/freshdesk.json +38 -0
  62. openhands_extensions-0.6.0/integrations/catalog/git.json +42 -0
  63. openhands_extensions-0.6.0/integrations/catalog/github.json +68 -0
  64. openhands_extensions-0.6.0/integrations/catalog/gitlab.json +38 -0
  65. openhands_extensions-0.6.0/integrations/catalog/gmail.json +38 -0
  66. openhands_extensions-0.6.0/integrations/catalog/google-calendar.json +38 -0
  67. openhands_extensions-0.6.0/integrations/catalog/google-docs.json +38 -0
  68. openhands_extensions-0.6.0/integrations/catalog/google-drive.json +38 -0
  69. openhands_extensions-0.6.0/integrations/catalog/google-sheets.json +38 -0
  70. openhands_extensions-0.6.0/integrations/catalog/hubspot.json +34 -0
  71. openhands_extensions-0.6.0/integrations/catalog/huggingface.json +31 -0
  72. openhands_extensions-0.6.0/integrations/catalog/intercom.json +39 -0
  73. openhands_extensions-0.6.0/integrations/catalog/jira.json +38 -0
  74. openhands_extensions-0.6.0/integrations/catalog/kagi.json +41 -0
  75. openhands_extensions-0.6.0/integrations/catalog/linear.json +63 -0
  76. openhands_extensions-0.6.0/integrations/catalog/mailchimp.json +38 -0
  77. openhands_extensions-0.6.0/integrations/catalog/memory.json +31 -0
  78. openhands_extensions-0.6.0/integrations/catalog/microsoft-outlook.json +38 -0
  79. openhands_extensions-0.6.0/integrations/catalog/microsoft-teams.json +38 -0
  80. openhands_extensions-0.6.0/integrations/catalog/miro.json +38 -0
  81. openhands_extensions-0.6.0/integrations/catalog/monday.json +38 -0
  82. openhands_extensions-0.6.0/integrations/catalog/mongodb.json +42 -0
  83. openhands_extensions-0.6.0/integrations/catalog/neon.json +42 -0
  84. openhands_extensions-0.6.0/integrations/catalog/netlify.json +38 -0
  85. openhands_extensions-0.6.0/integrations/catalog/notion.json +73 -0
  86. openhands_extensions-0.6.0/integrations/catalog/obsidian.json +41 -0
  87. openhands_extensions-0.6.0/integrations/catalog/okta.json +38 -0
  88. openhands_extensions-0.6.0/integrations/catalog/onedrive.json +38 -0
  89. openhands_extensions-0.6.0/integrations/catalog/ordinal.json +33 -0
  90. openhands_extensions-0.6.0/integrations/catalog/paypal.json +26 -0
  91. openhands_extensions-0.6.0/integrations/catalog/pipedrive.json +39 -0
  92. openhands_extensions-0.6.0/integrations/catalog/plaid.json +31 -0
  93. openhands_extensions-0.6.0/integrations/catalog/playwright.json +32 -0
  94. openhands_extensions-0.6.0/integrations/catalog/posthog.json +38 -0
  95. openhands_extensions-0.6.0/integrations/catalog/quickbooks.json +38 -0
  96. openhands_extensions-0.6.0/integrations/catalog/redis.json +44 -0
  97. openhands_extensions-0.6.0/integrations/catalog/resend.json +48 -0
  98. openhands_extensions-0.6.0/integrations/catalog/salesforce.json +38 -0
  99. openhands_extensions-0.6.0/integrations/catalog/sentry.json +68 -0
  100. openhands_extensions-0.6.0/integrations/catalog/sequential-thinking.json +30 -0
  101. openhands_extensions-0.6.0/integrations/catalog/servicenow.json +39 -0
  102. openhands_extensions-0.6.0/integrations/catalog/sharepoint.json +38 -0
  103. openhands_extensions-0.6.0/integrations/catalog/shopify.json +38 -0
  104. openhands_extensions-0.6.0/integrations/catalog/slack.json +91 -0
  105. openhands_extensions-0.6.0/integrations/catalog/stripe.json +60 -0
  106. openhands_extensions-0.6.0/integrations/catalog/supabase.json +70 -0
  107. openhands_extensions-0.6.0/integrations/catalog/tavily.json +44 -0
  108. openhands_extensions-0.6.0/integrations/catalog/time.json +29 -0
  109. openhands_extensions-0.6.0/integrations/catalog/trello.json +31 -0
  110. openhands_extensions-0.6.0/integrations/catalog/vercel.json +38 -0
  111. openhands_extensions-0.6.0/integrations/catalog/webflow.json +34 -0
  112. openhands_extensions-0.6.0/integrations/catalog/xero.json +38 -0
  113. openhands_extensions-0.6.0/integrations/catalog/zendesk.json +38 -0
  114. openhands_extensions-0.6.0/integrations/catalog/zoom.json +38 -0
  115. openhands_extensions-0.6.0/integrations/catalog-index.js +171 -0
  116. openhands_extensions-0.6.0/integrations/index.d.ts +133 -0
  117. openhands_extensions-0.6.0/integrations/index.js +34 -0
  118. openhands_extensions-0.6.0/marketplaces/large-codebase.json +66 -0
  119. openhands_extensions-0.6.0/marketplaces/openhands-extensions.json +708 -0
  120. openhands_extensions-0.6.0/package.json +55 -0
  121. openhands_extensions-0.6.0/plugins/README.md +30 -0
  122. openhands_extensions-0.6.0/plugins/city-weather/.claude-plugin/plugin.json +13 -0
  123. openhands_extensions-0.6.0/plugins/city-weather/README.md +145 -0
  124. openhands_extensions-0.6.0/plugins/city-weather/commands/now.md +56 -0
  125. openhands_extensions-0.6.0/plugins/cobol-modernization/.claude-plugin/plugin.json +19 -0
  126. openhands_extensions-0.6.0/plugins/cobol-modernization/README.md +201 -0
  127. openhands_extensions-0.6.0/plugins/cobol-modernization/references/troubleshooting.md +18 -0
  128. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/build-setup/SKILL.md +78 -0
  129. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +32 -0
  130. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +113 -0
  131. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +78 -0
  132. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/mainframe-removal/SKILL.md +62 -0
  133. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/mainframe-removal/references/cics-transformation-examples.md +45 -0
  134. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +59 -0
  135. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +58 -0
  136. openhands_extensions-0.6.0/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +19 -0
  137. openhands_extensions-0.6.0/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +13 -0
  138. openhands_extensions-0.6.0/plugins/issue-duplicate-checker/README.md +51 -0
  139. openhands_extensions-0.6.0/plugins/issue-duplicate-checker/action.yml +349 -0
  140. openhands_extensions-0.6.0/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +569 -0
  141. openhands_extensions-0.6.0/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +681 -0
  142. openhands_extensions-0.6.0/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.cjs +220 -0
  143. openhands_extensions-0.6.0/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.cjs +27 -0
  144. openhands_extensions-0.6.0/plugins/magic-test/.claude-plugin/plugin.json +13 -0
  145. openhands_extensions-0.6.0/plugins/magic-test/skills/magic-word/SKILL.md +34 -0
  146. openhands_extensions-0.6.0/plugins/migration-scoring/.claude-plugin/plugin.json +19 -0
  147. openhands_extensions-0.6.0/plugins/migration-scoring/README.md +244 -0
  148. openhands_extensions-0.6.0/plugins/migration-scoring/skills/migration-mapping/SKILL.md +72 -0
  149. openhands_extensions-0.6.0/plugins/migration-scoring/skills/migration-report/SKILL.md +118 -0
  150. openhands_extensions-0.6.0/plugins/migration-scoring/skills/migration-scoring/SKILL.md +126 -0
  151. openhands_extensions-0.6.0/plugins/migration-scoring/skills/score-quality/SKILL.md +54 -0
  152. openhands_extensions-0.6.0/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +30 -0
  153. openhands_extensions-0.6.0/plugins/migration-scoring/skills/score-style/SKILL.md +106 -0
  154. openhands_extensions-0.6.0/plugins/onboarding/.claude-plugin/plugin.json +20 -0
  155. openhands_extensions-0.6.0/plugins/onboarding/README.md +30 -0
  156. openhands_extensions-0.6.0/plugins/onboarding/references/criteria.md +144 -0
  157. openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/README.md +23 -0
  158. openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/SKILL.md +122 -0
  159. openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +1 -0
  160. openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +88 -0
  161. openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +114 -0
  162. openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +133 -0
  163. openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +113 -0
  164. openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +127 -0
  165. openhands_extensions-0.6.0/plugins/onboarding/skills/improve-agent-readiness/README.md +19 -0
  166. openhands_extensions-0.6.0/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +167 -0
  167. openhands_extensions-0.6.0/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +1 -0
  168. openhands_extensions-0.6.0/plugins/onboarding/skills/setup-agents-md/README.md +15 -0
  169. openhands_extensions-0.6.0/plugins/onboarding/skills/setup-agents-md/SKILL.md +150 -0
  170. openhands_extensions-0.6.0/plugins/onboarding/skills/setup-openhands/README.md +20 -0
  171. openhands_extensions-0.6.0/plugins/onboarding/skills/setup-openhands/SKILL.md +56 -0
  172. openhands_extensions-0.6.0/plugins/onboarding/skills/setup-pr-review/README.md +23 -0
  173. openhands_extensions-0.6.0/plugins/onboarding/skills/setup-pr-review/SKILL.md +72 -0
  174. openhands_extensions-0.6.0/plugins/openhands/.claude-plugin/plugin.json +13 -0
  175. openhands_extensions-0.6.0/plugins/openhands/README.md +52 -0
  176. openhands_extensions-0.6.0/plugins/openhands/SKILL.md +61 -0
  177. openhands_extensions-0.6.0/plugins/openhands/commands/create.md +55 -0
  178. openhands_extensions-0.6.0/plugins/openhands/commands/openhands-cloud.md +8 -0
  179. openhands_extensions-0.6.0/plugins/openhands/scripts/run.sh +69 -0
  180. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +22 -0
  181. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/README.md +52 -0
  182. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/SKILL.md +468 -0
  183. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/references/README.md +33 -0
  184. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +81 -0
  185. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/references/example_prompt.md +12 -0
  186. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +606 -0
  187. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +252 -0
  188. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +19 -0
  189. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/README.md +89 -0
  190. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/SKILL.md +877 -0
  191. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/commands/automation-create.md +8 -0
  192. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/references/ab-testing.md +185 -0
  193. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/references/custom-automation.md +810 -0
  194. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +20 -0
  195. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-sdk/README.md +22 -0
  196. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-sdk/SKILL.md +239 -0
  197. openhands_extensions-0.6.0/plugins/openhands/skills/openhands-sdk/commands/sdk.md +8 -0
  198. openhands_extensions-0.6.0/plugins/pr-review/.claude-plugin/plugin.json +13 -0
  199. openhands_extensions-0.6.0/plugins/pr-review/README.md +393 -0
  200. openhands_extensions-0.6.0/plugins/pr-review/action.yml +298 -0
  201. openhands_extensions-0.6.0/plugins/pr-review/scripts/agent_script.py +1282 -0
  202. openhands_extensions-0.6.0/plugins/pr-review/scripts/evaluate_review.py +655 -0
  203. openhands_extensions-0.6.0/plugins/pr-review/scripts/prompt.py +260 -0
  204. openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +19 -0
  205. openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/README.md +18 -0
  206. openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/SKILL.md +208 -0
  207. openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +8 -0
  208. openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/commands/codereview.md +8 -0
  209. openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/references/risk-evaluation.md +41 -0
  210. openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/references/supply-chain-security.md +31 -0
  211. openhands_extensions-0.6.0/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +18 -0
  212. openhands_extensions-0.6.0/plugins/pr-review/skills/github-pr-review/README.md +145 -0
  213. openhands_extensions-0.6.0/plugins/pr-review/skills/github-pr-review/SKILL.md +186 -0
  214. openhands_extensions-0.6.0/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +8 -0
  215. openhands_extensions-0.6.0/plugins/pr-review/workflows/pr-review-by-openhands.yml +51 -0
  216. openhands_extensions-0.6.0/plugins/pr-review/workflows/pr-review-evaluation.yml +85 -0
  217. openhands_extensions-0.6.0/plugins/qa-changes/.claude-plugin/plugin.json +11 -0
  218. openhands_extensions-0.6.0/plugins/qa-changes/README.md +185 -0
  219. openhands_extensions-0.6.0/plugins/qa-changes/action.yml +183 -0
  220. openhands_extensions-0.6.0/plugins/qa-changes/scripts/agent_script.py +406 -0
  221. openhands_extensions-0.6.0/plugins/qa-changes/scripts/evaluate_qa_changes.py +385 -0
  222. openhands_extensions-0.6.0/plugins/qa-changes/scripts/prompt.py +174 -0
  223. openhands_extensions-0.6.0/plugins/qa-changes/skills/qa-changes/README.md +18 -0
  224. openhands_extensions-0.6.0/plugins/qa-changes/skills/qa-changes/SKILL.md +229 -0
  225. openhands_extensions-0.6.0/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +8 -0
  226. openhands_extensions-0.6.0/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +50 -0
  227. openhands_extensions-0.6.0/plugins/qa-changes/workflows/qa-changes-evaluation.yml +85 -0
  228. openhands_extensions-0.6.0/plugins/release-notes/.claude-plugin/plugin.json +19 -0
  229. openhands_extensions-0.6.0/plugins/release-notes/README.md +283 -0
  230. openhands_extensions-0.6.0/plugins/release-notes/SKILL.md +83 -0
  231. openhands_extensions-0.6.0/plugins/release-notes/action.yml +118 -0
  232. openhands_extensions-0.6.0/plugins/release-notes/commands/release-notes.md +8 -0
  233. openhands_extensions-0.6.0/plugins/release-notes/scripts/agent_script.py +292 -0
  234. openhands_extensions-0.6.0/plugins/release-notes/scripts/generate_release_notes.py +733 -0
  235. openhands_extensions-0.6.0/plugins/release-notes/scripts/prompt.py +90 -0
  236. openhands_extensions-0.6.0/plugins/release-notes/scripts/validate_release_notes.py +328 -0
  237. openhands_extensions-0.6.0/plugins/release-notes/skills/release-notes/README.md +24 -0
  238. openhands_extensions-0.6.0/plugins/release-notes/skills/release-notes/SKILL.md +19 -0
  239. openhands_extensions-0.6.0/plugins/release-notes/skills/release-notes/commands/release-notes.md +8 -0
  240. openhands_extensions-0.6.0/plugins/release-notes/workflows/release-notes.yml +82 -0
  241. openhands_extensions-0.6.0/plugins/vulnerability-remediation/.claude-plugin/plugin.json +19 -0
  242. openhands_extensions-0.6.0/plugins/vulnerability-remediation/README.md +219 -0
  243. openhands_extensions-0.6.0/plugins/vulnerability-remediation/action.yml +191 -0
  244. openhands_extensions-0.6.0/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +561 -0
  245. openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +19 -0
  246. openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/github/README.md +42 -0
  247. openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/github/SKILL.md +106 -0
  248. openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +18 -0
  249. openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/security/README.md +38 -0
  250. openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/security/SKILL.md +33 -0
  251. openhands_extensions-0.6.0/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +87 -0
  252. openhands_extensions-0.6.0/pyproject.toml +26 -0
  253. openhands_extensions-0.6.0/python/openhands_extensions/__init__.py +24 -0
  254. openhands_extensions-0.6.0/python/openhands_extensions/_version.py +24 -0
  255. openhands_extensions-0.6.0/python/openhands_extensions/integrations.py +92 -0
  256. openhands_extensions-0.6.0/release-please-config.json +17 -0
  257. openhands_extensions-0.6.0/scripts/build-integration-catalog.mjs +45 -0
  258. openhands_extensions-0.6.0/scripts/build-skills-catalog.mjs +100 -0
  259. openhands_extensions-0.6.0/scripts/sync_extensions.py +495 -0
  260. openhands_extensions-0.6.0/scripts/sync_openhands_sdk_skill.py +264 -0
  261. openhands_extensions-0.6.0/skills/README.md +159 -0
  262. openhands_extensions-0.6.0/skills/add-javadoc/.claude-plugin/plugin.json +18 -0
  263. openhands_extensions-0.6.0/skills/add-javadoc/README.md +40 -0
  264. openhands_extensions-0.6.0/skills/add-javadoc/SKILL.md +35 -0
  265. openhands_extensions-0.6.0/skills/add-javadoc/references/example.md +32 -0
  266. openhands_extensions-0.6.0/skills/add-skill/.claude-plugin/plugin.json +18 -0
  267. openhands_extensions-0.6.0/skills/add-skill/README.md +67 -0
  268. openhands_extensions-0.6.0/skills/add-skill/SKILL.md +47 -0
  269. openhands_extensions-0.6.0/skills/add-skill/scripts/fetch_skill.py +259 -0
  270. openhands_extensions-0.6.0/skills/agent-canvas-environment/.claude-plugin/plugin.json +19 -0
  271. openhands_extensions-0.6.0/skills/agent-canvas-environment/README.md +5 -0
  272. openhands_extensions-0.6.0/skills/agent-canvas-environment/SKILL.md +141 -0
  273. openhands_extensions-0.6.0/skills/agent-creator/.claude-plugin/plugin.json +20 -0
  274. openhands_extensions-0.6.0/skills/agent-creator/README.md +104 -0
  275. openhands_extensions-0.6.0/skills/agent-creator/SKILL.md +190 -0
  276. openhands_extensions-0.6.0/skills/agent-creator/commands/agent-creator.md +8 -0
  277. openhands_extensions-0.6.0/skills/agent-creator/references/fallback.md +117 -0
  278. openhands_extensions-0.6.0/skills/agent-memory/.claude-plugin/plugin.json +18 -0
  279. openhands_extensions-0.6.0/skills/agent-memory/README.md +35 -0
  280. openhands_extensions-0.6.0/skills/agent-memory/SKILL.md +30 -0
  281. openhands_extensions-0.6.0/skills/agent-memory/commands/remember.md +8 -0
  282. openhands_extensions-0.6.0/skills/agent-sdk-builder/.claude-plugin/plugin.json +18 -0
  283. openhands_extensions-0.6.0/skills/agent-sdk-builder/README.md +40 -0
  284. openhands_extensions-0.6.0/skills/agent-sdk-builder/SKILL.md +37 -0
  285. openhands_extensions-0.6.0/skills/agent-sdk-builder/commands/agent-builder.md +8 -0
  286. openhands_extensions-0.6.0/skills/azure-devops/.claude-plugin/plugin.json +18 -0
  287. openhands_extensions-0.6.0/skills/azure-devops/README.md +55 -0
  288. openhands_extensions-0.6.0/skills/azure-devops/SKILL.md +50 -0
  289. openhands_extensions-0.6.0/skills/bitbucket/.claude-plugin/plugin.json +17 -0
  290. openhands_extensions-0.6.0/skills/bitbucket/README.md +50 -0
  291. openhands_extensions-0.6.0/skills/bitbucket/SKILL.md +45 -0
  292. openhands_extensions-0.6.0/skills/code-simplifier/.claude-plugin/plugin.json +21 -0
  293. openhands_extensions-0.6.0/skills/code-simplifier/README.md +30 -0
  294. openhands_extensions-0.6.0/skills/code-simplifier/SKILL.md +91 -0
  295. openhands_extensions-0.6.0/skills/code-simplifier/commands/simplify.md +8 -0
  296. openhands_extensions-0.6.0/skills/code-simplifier/references/code-quality-review.md +86 -0
  297. openhands_extensions-0.6.0/skills/code-simplifier/references/code-reuse-review.md +63 -0
  298. openhands_extensions-0.6.0/skills/code-simplifier/references/efficiency-review.md +81 -0
  299. openhands_extensions-0.6.0/skills/datadog/.claude-plugin/plugin.json +19 -0
  300. openhands_extensions-0.6.0/skills/datadog/README.md +100 -0
  301. openhands_extensions-0.6.0/skills/datadog/SKILL.md +95 -0
  302. openhands_extensions-0.6.0/skills/deno/.claude-plugin/plugin.json +18 -0
  303. openhands_extensions-0.6.0/skills/deno/README.md +5 -0
  304. openhands_extensions-0.6.0/skills/deno/SKILL.md +99 -0
  305. openhands_extensions-0.6.0/skills/deno/references/README.md +6 -0
  306. openhands_extensions-0.6.0/skills/discord/.claude-plugin/plugin.json +18 -0
  307. openhands_extensions-0.6.0/skills/discord/README.md +31 -0
  308. openhands_extensions-0.6.0/skills/discord/SKILL.md +109 -0
  309. openhands_extensions-0.6.0/skills/discord/__init__.py +0 -0
  310. openhands_extensions-0.6.0/skills/discord/references/REFERENCE.md +78 -0
  311. openhands_extensions-0.6.0/skills/discord/scripts/__init__.py +0 -0
  312. openhands_extensions-0.6.0/skills/discord/scripts/_http.py +127 -0
  313. openhands_extensions-0.6.0/skills/discord/scripts/post_webhook.py +106 -0
  314. openhands_extensions-0.6.0/skills/discord/scripts/send_message.py +102 -0
  315. openhands_extensions-0.6.0/skills/docker/.claude-plugin/plugin.json +17 -0
  316. openhands_extensions-0.6.0/skills/docker/README.md +34 -0
  317. openhands_extensions-0.6.0/skills/docker/SKILL.md +29 -0
  318. openhands_extensions-0.6.0/skills/evidence-based-citations/.claude-plugin/plugin.json +20 -0
  319. openhands_extensions-0.6.0/skills/evidence-based-citations/README.md +31 -0
  320. openhands_extensions-0.6.0/skills/evidence-based-citations/SKILL.md +59 -0
  321. openhands_extensions-0.6.0/skills/flarglebargle/.claude-plugin/plugin.json +16 -0
  322. openhands_extensions-0.6.0/skills/flarglebargle/README.md +14 -0
  323. openhands_extensions-0.6.0/skills/flarglebargle/SKILL.md +9 -0
  324. openhands_extensions-0.6.0/skills/frontend-design/.claude-plugin/plugin.json +21 -0
  325. openhands_extensions-0.6.0/skills/frontend-design/LICENSE.txt +177 -0
  326. openhands_extensions-0.6.0/skills/frontend-design/README.md +42 -0
  327. openhands_extensions-0.6.0/skills/frontend-design/SKILL.md +42 -0
  328. openhands_extensions-0.6.0/skills/github-actions/.claude-plugin/plugin.json +19 -0
  329. openhands_extensions-0.6.0/skills/github-actions/README.md +190 -0
  330. openhands_extensions-0.6.0/skills/github-actions/SKILL.md +44 -0
  331. openhands_extensions-0.6.0/skills/github-pr-reviewer/.claude-plugin/plugin.json +20 -0
  332. openhands_extensions-0.6.0/skills/github-pr-reviewer/README.md +40 -0
  333. openhands_extensions-0.6.0/skills/github-pr-reviewer/SKILL.md +251 -0
  334. openhands_extensions-0.6.0/skills/github-pr-reviewer/commands/pr-reviewer-setup.md +8 -0
  335. openhands_extensions-0.6.0/skills/github-pr-reviewer/references/state-schema.md +140 -0
  336. openhands_extensions-0.6.0/skills/github-pr-reviewer/scripts/main.py +662 -0
  337. openhands_extensions-0.6.0/skills/github-repo-monitor/.claude-plugin/plugin.json +22 -0
  338. openhands_extensions-0.6.0/skills/github-repo-monitor/README.md +70 -0
  339. openhands_extensions-0.6.0/skills/github-repo-monitor/SKILL.md +316 -0
  340. openhands_extensions-0.6.0/skills/github-repo-monitor/commands/github-monitor-poll.md +8 -0
  341. openhands_extensions-0.6.0/skills/github-repo-monitor/references/github-api.md +241 -0
  342. openhands_extensions-0.6.0/skills/github-repo-monitor/references/state-schema.md +167 -0
  343. openhands_extensions-0.6.0/skills/github-repo-monitor/scripts/main.py +963 -0
  344. openhands_extensions-0.6.0/skills/github-repo-monitor/tests/test_main.py +459 -0
  345. openhands_extensions-0.6.0/skills/gitlab/.claude-plugin/plugin.json +17 -0
  346. openhands_extensions-0.6.0/skills/gitlab/README.md +37 -0
  347. openhands_extensions-0.6.0/skills/gitlab/SKILL.md +32 -0
  348. openhands_extensions-0.6.0/skills/incident-retrospective/.claude-plugin/plugin.json +21 -0
  349. openhands_extensions-0.6.0/skills/incident-retrospective/README.md +34 -0
  350. openhands_extensions-0.6.0/skills/incident-retrospective/SKILL.md +98 -0
  351. openhands_extensions-0.6.0/skills/incident-retrospective/commands/incident-retro-setup.md +8 -0
  352. openhands_extensions-0.6.0/skills/index.d.ts +11 -0
  353. openhands_extensions-0.6.0/skills/index.js +491 -0
  354. openhands_extensions-0.6.0/skills/iterate/.claude-plugin/plugin.json +13 -0
  355. openhands_extensions-0.6.0/skills/iterate/README.md +25 -0
  356. openhands_extensions-0.6.0/skills/iterate/SKILL.md +399 -0
  357. openhands_extensions-0.6.0/skills/iterate/commands/babysit.md +8 -0
  358. openhands_extensions-0.6.0/skills/iterate/commands/iterate.md +8 -0
  359. openhands_extensions-0.6.0/skills/iterate/commands/verify.md +8 -0
  360. openhands_extensions-0.6.0/skills/iterate/references/heuristics.md +58 -0
  361. openhands_extensions-0.6.0/skills/iterate/references/verification.md +96 -0
  362. openhands_extensions-0.6.0/skills/jupyter/.claude-plugin/plugin.json +18 -0
  363. openhands_extensions-0.6.0/skills/jupyter/README.md +55 -0
  364. openhands_extensions-0.6.0/skills/jupyter/SKILL.md +50 -0
  365. openhands_extensions-0.6.0/skills/kubernetes/.claude-plugin/plugin.json +18 -0
  366. openhands_extensions-0.6.0/skills/kubernetes/README.md +53 -0
  367. openhands_extensions-0.6.0/skills/kubernetes/SKILL.md +48 -0
  368. openhands_extensions-0.6.0/skills/learn-from-code-review/.claude-plugin/plugin.json +19 -0
  369. openhands_extensions-0.6.0/skills/learn-from-code-review/README.md +64 -0
  370. openhands_extensions-0.6.0/skills/learn-from-code-review/SKILL.md +186 -0
  371. openhands_extensions-0.6.0/skills/learn-from-code-review/commands/learn-from-reviews.md +8 -0
  372. openhands_extensions-0.6.0/skills/linear/.claude-plugin/plugin.json +19 -0
  373. openhands_extensions-0.6.0/skills/linear/README.md +58 -0
  374. openhands_extensions-0.6.0/skills/linear/SKILL.md +213 -0
  375. openhands_extensions-0.6.0/skills/linear-triage/.claude-plugin/plugin.json +21 -0
  376. openhands_extensions-0.6.0/skills/linear-triage/README.md +34 -0
  377. openhands_extensions-0.6.0/skills/linear-triage/SKILL.md +91 -0
  378. openhands_extensions-0.6.0/skills/linear-triage/commands/linear-triage-setup.md +8 -0
  379. openhands_extensions-0.6.0/skills/notion/.claude-plugin/plugin.json +17 -0
  380. openhands_extensions-0.6.0/skills/notion/README.md +114 -0
  381. openhands_extensions-0.6.0/skills/notion/SKILL.md +109 -0
  382. openhands_extensions-0.6.0/skills/npm/.claude-plugin/plugin.json +17 -0
  383. openhands_extensions-0.6.0/skills/npm/README.md +14 -0
  384. openhands_extensions-0.6.0/skills/npm/SKILL.md +9 -0
  385. openhands_extensions-0.6.0/skills/pdflatex/.claude-plugin/plugin.json +18 -0
  386. openhands_extensions-0.6.0/skills/pdflatex/README.md +39 -0
  387. openhands_extensions-0.6.0/skills/pdflatex/SKILL.md +34 -0
  388. openhands_extensions-0.6.0/skills/prd/.claude-plugin/plugin.json +19 -0
  389. openhands_extensions-0.6.0/skills/prd/README.md +28 -0
  390. openhands_extensions-0.6.0/skills/prd/SKILL.md +237 -0
  391. openhands_extensions-0.6.0/skills/prd/commands/prd.md +8 -0
  392. openhands_extensions-0.6.0/skills/research-brief/.claude-plugin/plugin.json +20 -0
  393. openhands_extensions-0.6.0/skills/research-brief/README.md +34 -0
  394. openhands_extensions-0.6.0/skills/research-brief/SKILL.md +99 -0
  395. openhands_extensions-0.6.0/skills/research-brief/commands/research-brief-setup.md +8 -0
  396. openhands_extensions-0.6.0/skills/skill-creator/.claude-plugin/plugin.json +17 -0
  397. openhands_extensions-0.6.0/skills/skill-creator/LICENSE.txt +202 -0
  398. openhands_extensions-0.6.0/skills/skill-creator/README.md +182 -0
  399. openhands_extensions-0.6.0/skills/skill-creator/SKILL.md +545 -0
  400. openhands_extensions-0.6.0/skills/skill-creator/references/output-patterns.md +82 -0
  401. openhands_extensions-0.6.0/skills/skill-creator/references/workflows.md +28 -0
  402. openhands_extensions-0.6.0/skills/skill-creator/scripts/init_skill.py +303 -0
  403. openhands_extensions-0.6.0/skills/skill-creator/scripts/quick_validate.py +95 -0
  404. openhands_extensions-0.6.0/skills/slack-channel-monitor/.claude-plugin/plugin.json +21 -0
  405. openhands_extensions-0.6.0/skills/slack-channel-monitor/README.md +96 -0
  406. openhands_extensions-0.6.0/skills/slack-channel-monitor/SKILL.md +304 -0
  407. openhands_extensions-0.6.0/skills/slack-channel-monitor/commands/slack-monitor-poll.md +8 -0
  408. openhands_extensions-0.6.0/skills/slack-channel-monitor/references/slack-api.md +209 -0
  409. openhands_extensions-0.6.0/skills/slack-channel-monitor/references/state-schema.md +214 -0
  410. openhands_extensions-0.6.0/skills/slack-channel-monitor/scripts/main.py +1234 -0
  411. openhands_extensions-0.6.0/skills/slack-standup-digest/.claude-plugin/plugin.json +21 -0
  412. openhands_extensions-0.6.0/skills/slack-standup-digest/README.md +34 -0
  413. openhands_extensions-0.6.0/skills/slack-standup-digest/SKILL.md +92 -0
  414. openhands_extensions-0.6.0/skills/slack-standup-digest/commands/standup-digest-setup.md +8 -0
  415. openhands_extensions-0.6.0/skills/spark-version-upgrade/.claude-plugin/plugin.json +20 -0
  416. openhands_extensions-0.6.0/skills/spark-version-upgrade/README.md +54 -0
  417. openhands_extensions-0.6.0/skills/spark-version-upgrade/SKILL.md +233 -0
  418. openhands_extensions-0.6.0/skills/ssh/.claude-plugin/plugin.json +18 -0
  419. openhands_extensions-0.6.0/skills/ssh/README.md +140 -0
  420. openhands_extensions-0.6.0/skills/ssh/SKILL.md +135 -0
  421. openhands_extensions-0.6.0/skills/swift-linux/.claude-plugin/plugin.json +17 -0
  422. openhands_extensions-0.6.0/skills/swift-linux/README.md +86 -0
  423. openhands_extensions-0.6.0/skills/swift-linux/SKILL.md +81 -0
  424. openhands_extensions-0.6.0/skills/theme-factory/.claude-plugin/plugin.json +19 -0
  425. openhands_extensions-0.6.0/skills/theme-factory/LICENSE.txt +202 -0
  426. openhands_extensions-0.6.0/skills/theme-factory/README.md +58 -0
  427. openhands_extensions-0.6.0/skills/theme-factory/SKILL.md +59 -0
  428. openhands_extensions-0.6.0/skills/theme-factory/theme-showcase.pdf +0 -0
  429. openhands_extensions-0.6.0/skills/theme-factory/themes/arctic-frost.md +19 -0
  430. openhands_extensions-0.6.0/skills/theme-factory/themes/botanical-garden.md +19 -0
  431. openhands_extensions-0.6.0/skills/theme-factory/themes/desert-rose.md +19 -0
  432. openhands_extensions-0.6.0/skills/theme-factory/themes/forest-canopy.md +19 -0
  433. openhands_extensions-0.6.0/skills/theme-factory/themes/golden-hour.md +19 -0
  434. openhands_extensions-0.6.0/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  435. openhands_extensions-0.6.0/skills/theme-factory/themes/modern-minimalist.md +19 -0
  436. openhands_extensions-0.6.0/skills/theme-factory/themes/ocean-depths.md +19 -0
  437. openhands_extensions-0.6.0/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  438. openhands_extensions-0.6.0/skills/theme-factory/themes/tech-innovation.md +19 -0
  439. openhands_extensions-0.6.0/skills/uv/.claude-plugin/plugin.json +18 -0
  440. openhands_extensions-0.6.0/skills/uv/README.md +5 -0
  441. openhands_extensions-0.6.0/skills/uv/SKILL.md +95 -0
  442. openhands_extensions-0.6.0/skills/uv/references/README.md +5 -0
  443. openhands_extensions-0.6.0/skills/vercel/.claude-plugin/plugin.json +18 -0
  444. openhands_extensions-0.6.0/skills/vercel/README.md +108 -0
  445. openhands_extensions-0.6.0/skills/vercel/SKILL.md +103 -0
  446. openhands_extensions-0.6.0/tests/test_add_skill_installs_to_agents_dir.py +42 -0
  447. openhands_extensions-0.6.0/tests/test_catalogs.py +127 -0
  448. openhands_extensions-0.6.0/tests/test_code_review_risk_evaluation.py +94 -0
  449. openhands_extensions-0.6.0/tests/test_github_pr_review_skill.py +114 -0
  450. openhands_extensions-0.6.0/tests/test_integration_catalog_in_sync.py +204 -0
  451. openhands_extensions-0.6.0/tests/test_issue_duplicate_checker.py +240 -0
  452. openhands_extensions-0.6.0/tests/test_openhands_api_python.py +152 -0
  453. openhands_extensions-0.6.0/tests/test_plugin_manifest.py +83 -0
  454. openhands_extensions-0.6.0/tests/test_pr_review_diff_payload.py +202 -0
  455. openhands_extensions-0.6.0/tests/test_pr_review_feedback.py +263 -0
  456. openhands_extensions-0.6.0/tests/test_pr_review_prompt.py +152 -0
  457. openhands_extensions-0.6.0/tests/test_pr_review_review_context.py +253 -0
  458. openhands_extensions-0.6.0/tests/test_qa_changes.py +232 -0
  459. openhands_extensions-0.6.0/tests/test_qa_changes_evaluation.py +259 -0
  460. openhands_extensions-0.6.0/tests/test_release_notes_generator.py +990 -0
  461. openhands_extensions-0.6.0/tests/test_sdk_loading.py +150 -0
  462. openhands_extensions-0.6.0/tests/test_skill_plugin_loading.py +149 -0
  463. openhands_extensions-0.6.0/tests/test_skills_catalog.py +336 -0
  464. openhands_extensions-0.6.0/tests/test_skills_have_readme.py +66 -0
  465. openhands_extensions-0.6.0/tests/test_slack_channel_monitor.py +142 -0
  466. openhands_extensions-0.6.0/tests/test_sync_extensions.py +306 -0
  467. openhands_extensions-0.6.0/tests/test_version_alignment.py +64 -0
  468. openhands_extensions-0.6.0/tests/test_workflow_sync.py +46 -0
  469. openhands_extensions-0.6.0/utils/analysis/README.md +7 -0
  470. openhands_extensions-0.6.0/utils/analysis/laminar_signals/README.md +211 -0
  471. openhands_extensions-0.6.0/utils/analysis/laminar_signals/analyze.py +780 -0
  472. openhands_extensions-0.6.0/utils/analysis/laminar_signals/templates/default.j2 +49 -0
  473. openhands_extensions-0.6.0/utils/analysis/laminar_signals/templates/pr_review.j2 +61 -0
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: custom-codereview-guide
3
+ description: Repository-specific code review guidelines for OpenHands/extensions
4
+ triggers:
5
+ - /codereview
6
+ ---
7
+
8
+ # Extensions Repo — Code Review Guidelines
9
+
10
+ ## SDK Documentation Placement
11
+
12
+ If a PR adds or modifies OpenHands SDK-specific documentation (API guides, SDK usage examples, SDK feature descriptions), flag it:
13
+
14
+ - The canonical source of truth for SDK documentation is <https://docs.openhands.dev/sdk> and its `llms.txt` index.
15
+ - The `skills/openhands-sdk/SKILL.md` in this repo is a thin pointer to the docs site. It should NOT contain duplicated SDK content.
16
+ - **Push back**: ask the submitter to contribute SDK documentation changes to [OpenHands/docs](https://github.com/OpenHands/docs) instead.
17
+
18
+ ## Pre-release Integration Catalog Changes
19
+
20
+ The `@openhands/extensions/mcps` catalog was experimental and pre-release. If a
21
+ PR intentionally replaces it with the broader `integrations` catalog and updates
22
+ known downstream consumers in the same coordinated stack, do not require
23
+ backward-compatible `mcps` aliases or a deprecation window. Require migration
24
+ documentation for consumers, but accept a clean breaking change for this
25
+ pre-release surface.
@@ -0,0 +1 @@
1
+ ../marketplaces/openhands-extensions.json
@@ -0,0 +1,38 @@
1
+ <!-- Keep this PR as draft until it is ready for review. -->
2
+
3
+ <!-- AI/LLM agents: be concise and specific. Do not check the box below. -->
4
+
5
+ - [ ] A human has tested these changes.
6
+
7
+ ---
8
+
9
+ ## Why
10
+
11
+ <!-- Describe problem, motivation, etc.-->
12
+
13
+ ## Summary
14
+
15
+ <!-- 1-3 bullets describing what changed. -->
16
+ -
17
+
18
+ ## Issue Number
19
+ <!-- Required if there is a relevant issue to this PR. -->
20
+
21
+ ## How to Test
22
+
23
+ <!--
24
+ Required. Share the steps for the reviewer to be able to test your PR. e.g. You can test by running `npm install` then `npm build dev`.
25
+
26
+ If you could not test this, say why.
27
+ -->
28
+
29
+ ## Video/Screenshots
30
+
31
+ <!--
32
+ Provide a video or screenshots of testing your PR. e.g. you added a new feature to the gui, show us the video of you testing it successfully.
33
+
34
+ -->
35
+
36
+ ## Notes
37
+
38
+ <!-- Optional: migrations, config changes, rollout concerns, follow-ups, or anything reviewers should know. -->
@@ -0,0 +1,14 @@
1
+ changelog:
2
+ categories:
3
+ - title: Features
4
+ labels: ["type: feat"]
5
+ - title: Bug Fixes
6
+ labels: ["type: fix"]
7
+ - title: Performance
8
+ labels: ["type: perf"]
9
+ - title: Documentation
10
+ labels: ["type: docs"]
11
+ - title: Maintenance
12
+ labels: ["type: chore", "type: build", "type: ci", "type: refactor", "type: style", "type: test", "type: revert"]
13
+ - title: Other Changes
14
+ labels: ["*"]
@@ -0,0 +1,72 @@
1
+ name: Check Extensions
2
+
3
+ on:
4
+ pull_request:
5
+ branches: ["*"]
6
+ push:
7
+ branches: ["main", "master"]
8
+
9
+ jobs:
10
+ validate-claude-code:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Checkout repository
14
+ uses: actions/checkout@v4
15
+
16
+ - name: Setup Node.js
17
+ uses: actions/setup-node@v4
18
+ with:
19
+ node-version: "20"
20
+
21
+ - name: Install Claude Code CLI
22
+ run: npm install -g @anthropic-ai/claude-code
23
+
24
+ - name: Validate all plugins with Claude Code
25
+ run: |
26
+ failed=0
27
+ for plugin_dir in plugins/*/; do
28
+ if [ -d "${plugin_dir}.plugin" ]; then
29
+ echo "Validating ${plugin_dir}..."
30
+ if ! claude plugin validate "${plugin_dir}"; then
31
+ echo "❌ Validation failed for ${plugin_dir}"
32
+ failed=1
33
+ else
34
+ echo "✅ ${plugin_dir} is valid"
35
+ fi
36
+ fi
37
+ done
38
+ if [ "$failed" -ne 0 ]; then
39
+ echo "::error::One or more plugins failed Claude Code validation"
40
+ exit 1
41
+ fi
42
+
43
+ sync-extensions:
44
+ runs-on: ubuntu-latest
45
+ steps:
46
+ - name: Checkout repository
47
+ uses: actions/checkout@v4
48
+
49
+ - name: Setup Python
50
+ uses: actions/setup-python@v5
51
+ with:
52
+ python-version: "3.12"
53
+
54
+ - name: Install dependencies
55
+ run: pip install pyyaml
56
+
57
+ - name: Check extensions are in sync
58
+ run: python scripts/sync_extensions.py --check
59
+
60
+ sync-sdk-skill:
61
+ runs-on: ubuntu-latest
62
+ steps:
63
+ - name: Checkout repository
64
+ uses: actions/checkout@v4
65
+
66
+ - name: Setup Python
67
+ uses: actions/setup-python@v5
68
+ with:
69
+ python-version: "3.12"
70
+
71
+ - name: Check SDK skill is up to date
72
+ run: python scripts/sync_openhands_sdk_skill.py --check
@@ -0,0 +1,89 @@
1
+ name: Publish to npm
2
+
3
+ # Publishes @openhands/extensions to npm via OIDC trusted publishing (no token).
4
+ # Fires when release-please pushes a version tag (v*) cut from main; the manual
5
+ # dispatch path re-publishes a specific tag. Trusted publishing must be
6
+ # configured for this package on npmjs.com (this repo + this workflow file).
7
+ on:
8
+ push:
9
+ tags:
10
+ - 'v*'
11
+ workflow_dispatch:
12
+ inputs:
13
+ tag:
14
+ description: 'Release tag to publish (e.g. v0.1.0)'
15
+ required: true
16
+ type: string
17
+
18
+ concurrency:
19
+ group: npm-publish-${{ inputs.tag || github.ref }}
20
+ cancel-in-progress: false
21
+
22
+ permissions:
23
+ contents: read
24
+ id-token: write
25
+
26
+ jobs:
27
+ publish:
28
+ name: Publish to npm
29
+ runs-on: ubuntu-latest
30
+ timeout-minutes: 15
31
+
32
+ steps:
33
+ - name: Check out repository
34
+ uses: actions/checkout@v6
35
+ with:
36
+ ref: ${{ inputs.tag || github.ref }}
37
+
38
+ # Trusted publishing requires Node 22.14.0+ and npm 11.5.1+
39
+ # See: https://docs.npmjs.com/trusted-publishers/
40
+ - name: Set up Node.js for npm trusted publishing
41
+ uses: actions/setup-node@v6
42
+ with:
43
+ node-version: '24'
44
+ registry-url: https://registry.npmjs.org
45
+
46
+ - name: Verify npm version supports trusted publishing
47
+ run: |
48
+ echo "Node version: $(node --version)"
49
+ echo "npm version: $(npm --version)"
50
+ NPM_VERSION=$(npm --version)
51
+ NPM_MAJOR=$(echo $NPM_VERSION | cut -d. -f1)
52
+ NPM_MINOR=$(echo $NPM_VERSION | cut -d. -f2)
53
+ if [ "$NPM_MAJOR" -lt 11 ] || ([ "$NPM_MAJOR" -eq 11 ] && [ "$NPM_MINOR" -lt 5 ]); then
54
+ echo "Error: npm 11.5.1+ required for trusted publishing, got $NPM_VERSION"
55
+ exit 1
56
+ fi
57
+ echo "✓ npm $NPM_VERSION meets trusted publishing requirements"
58
+
59
+ # No install/test/build steps: @openhands/extensions ships source directly
60
+ # (plain ESM + hand-written .d.ts + JSON catalogs) with only peerDependencies,
61
+ # and has no build script, test suite, or lockfile.
62
+
63
+ - name: Verify package contents
64
+ run: npm pack --dry-run
65
+
66
+ - name: Validate package version matches release tag
67
+ env:
68
+ # Pass inputs.tag via env var to prevent script injection from
69
+ # GitHub Actions expression interpolation inside run blocks.
70
+ INPUT_TAG: ${{ inputs.tag }}
71
+ run: |
72
+ PACKAGE_VERSION=$(node -p "require('./package.json').version")
73
+ # Resolve tag: prefer workflow_dispatch input, fall back to push-event GITHUB_REF
74
+ if [ -n "$INPUT_TAG" ]; then
75
+ RAW_TAG="$INPUT_TAG"
76
+ else
77
+ RAW_TAG="${GITHUB_REF#refs/tags/}"
78
+ fi
79
+ TAG_VERSION="${RAW_TAG#v}"
80
+ echo "Package version: $PACKAGE_VERSION"
81
+ echo "Release tag version: $TAG_VERSION"
82
+ if [ "$PACKAGE_VERSION" != "$TAG_VERSION" ]; then
83
+ echo "Error: package.json version ($PACKAGE_VERSION) doesn't match release tag ($TAG_VERSION)"
84
+ exit 1
85
+ fi
86
+ echo "✓ Version $PACKAGE_VERSION matches release tag"
87
+
88
+ - name: Publish to npm with provenance
89
+ run: npm publish --access public --provenance
@@ -0,0 +1,30 @@
1
+ name: pr
2
+
3
+ # Caller workflow for the shared PR-title lint/label in OpenHands/release-actions.
4
+ #
5
+ # Trigger is pull_request_target (NOT pull_request) so the lint/label also runs
6
+ # on PRs from forks — e.g. external contributors who aren't org members. On a
7
+ # fork-originated `pull_request`, GITHUB_TOKEN is read-only, so the label step
8
+ # (which needs pull-requests: write) would fail; pull_request_target runs in the
9
+ # base repo's context with a writable token.
10
+ #
11
+ # pull_request_target is safe here — and only stays safe — because of two
12
+ # invariants enforced by the reusable workflow:
13
+ # 1. It NEVER checks out or executes any code from the PR. It only reads the
14
+ # PR title from the event payload, so fork code never runs with the base
15
+ # repo's token/secrets. Do not add a checkout step.
16
+ # 2. This caller does NOT pass `secrets: inherit`, so the release App's
17
+ # credentials are not in scope for the title workflow — it runs on the
18
+ # default GITHUB_TOKEN alone. Do not add `secrets: inherit`.
19
+ on:
20
+ pull_request_target:
21
+ # synchronize is needed alongside the title events: required status checks
22
+ # attach to a head SHA, and release-please force-pushes new commits to its
23
+ # release PR, so the lint must re-run on each update to stay green.
24
+ types: [opened, edited, reopened, synchronize]
25
+
26
+ jobs:
27
+ pr-title:
28
+ permissions:
29
+ pull-requests: write
30
+ uses: OpenHands/release-actions/.github/workflows/pr-title.yml@main
@@ -0,0 +1,104 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ release:
6
+ types: [published]
7
+
8
+ concurrency:
9
+ group: pypi-publish-${{ github.event.release.tag_name || github.ref }}
10
+ cancel-in-progress: false
11
+
12
+ permissions:
13
+ contents: read
14
+
15
+ jobs:
16
+ build:
17
+ name: Build Python distributions
18
+ runs-on: ubuntu-24.04
19
+ timeout-minutes: 15
20
+
21
+ steps:
22
+ - name: Check out repository
23
+ uses: actions/checkout@v6
24
+
25
+ - name: Extract version
26
+ id: extract_version
27
+ env:
28
+ RELEASE_TAG: ${{ github.event.release.tag_name }}
29
+ run: |
30
+ if [ "${{ github.event_name }}" = "release" ]; then
31
+ VERSION="${RELEASE_TAG#v}"
32
+ else
33
+ VERSION=$(python - <<'PY'
34
+ import tomllib
35
+ from pathlib import Path
36
+
37
+ print(tomllib.loads(Path("pyproject.toml").read_text())["project"]["version"])
38
+ PY
39
+ )
40
+ fi
41
+
42
+ echo "version=$VERSION" >> "$GITHUB_OUTPUT"
43
+ echo "📦 Version: $VERSION"
44
+
45
+ - name: Install uv
46
+ uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
47
+ with:
48
+ version: latest
49
+ python-version: '3.12'
50
+
51
+ - name: Validate package version matches release tag
52
+ if: github.event_name == 'release'
53
+ env:
54
+ VERSION: ${{ steps.extract_version.outputs.version }}
55
+ run: |
56
+ PACKAGE_VERSION=$(python - <<'PY'
57
+ import tomllib
58
+ from pathlib import Path
59
+
60
+ print(tomllib.loads(Path("pyproject.toml").read_text())["project"]["version"])
61
+ PY
62
+ )
63
+
64
+ echo "Package version: $PACKAGE_VERSION"
65
+ echo "Release tag version: $VERSION"
66
+ if [ "$PACKAGE_VERSION" != "$VERSION" ]; then
67
+ echo "Error: pyproject.toml version ($PACKAGE_VERSION) doesn't match release tag ($VERSION)"
68
+ exit 1
69
+ fi
70
+
71
+ - name: Build package
72
+ run: uv build
73
+
74
+ - name: Upload distributions
75
+ uses: actions/upload-artifact@v6
76
+ with:
77
+ name: python-package-distributions
78
+ path: dist/
79
+ if-no-files-found: error
80
+
81
+ publish:
82
+ name: Publish openhands-extensions to PyPI
83
+ if: >
84
+ github.event_name == 'workflow_dispatch' ||
85
+ !github.event.release.prerelease
86
+ needs: build
87
+ runs-on: ubuntu-24.04
88
+ timeout-minutes: 15
89
+ environment:
90
+ name: pypi
91
+ url: https://pypi.org/p/openhands-extensions
92
+ permissions:
93
+ contents: read
94
+ id-token: write
95
+
96
+ steps:
97
+ - name: Download distributions
98
+ uses: actions/download-artifact@v6
99
+ with:
100
+ name: python-package-distributions
101
+ path: dist/
102
+
103
+ - name: Publish to PyPI
104
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,24 @@
1
+ name: release
2
+
3
+ # Caller workflow for the shared release automation in OpenHands/release-actions.
4
+ # This file owns the trigger; the reusable workflow owns the logic.
5
+ on:
6
+ push:
7
+ branches:
8
+ - main
9
+ # Maintenance/freeze branches (e.g. release/0.2). The reusable workflow
10
+ # scopes the release to whichever branch triggered this run.
11
+ - 'release/**'
12
+
13
+ jobs:
14
+ release-please:
15
+ # The caller must grant the permissions the reusable workflow needs; the
16
+ # effective token is the intersection of the two.
17
+ permissions:
18
+ contents: write
19
+ pull-requests: write
20
+ # Passes the org-level RELEASE_APP_ID / RELEASE_APP_PRIVATE_KEY through so the
21
+ # reusable workflow can mint the GitHub App token. These are org secrets —
22
+ # nothing to create per-repo.
23
+ secrets: inherit
24
+ uses: OpenHands/release-actions/.github/workflows/release-please.yml@main
@@ -0,0 +1,31 @@
1
+ name: Tests
2
+
3
+ # NOTE: pull_request (not pull_request_target) so checks run against the PR head.
4
+ on:
5
+ pull_request:
6
+ branches: ["*"]
7
+ push:
8
+ branches: ["main", "master"]
9
+
10
+ jobs:
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Checkout repository
15
+ uses: actions/checkout@v4
16
+
17
+ - name: Install uv
18
+ uses: astral-sh/setup-uv@v7
19
+ with:
20
+ enable-cache: true
21
+ python-version: "3.12"
22
+
23
+ - name: Setup Node.js
24
+ uses: actions/setup-node@v4
25
+ with:
26
+ node-version: "20"
27
+
28
+ - name: Run tests
29
+ run: uv run --group test pytest tests/
30
+ env:
31
+ PYTHONPATH: ${{ github.workspace }}
@@ -0,0 +1,87 @@
1
+ # Vulnerability Scan and Remediation Workflow
2
+ #
3
+ # This is a thin wrapper that uses the OpenHands vulnerability-remediation action.
4
+ # It auto-updates when the action in OpenHands/extensions is updated.
5
+ #
6
+ # INSTALLATION:
7
+ # curl -o .github/workflows/vulnerability-scan.yml \
8
+ # https://raw.githubusercontent.com/OpenHands/extensions/main/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml
9
+ #
10
+ # REQUIRED SECRETS:
11
+ # - LLM_API_KEY: API key for your LLM provider (OpenAI, Anthropic, etc.)
12
+ #
13
+ # OPTIONAL SECRETS:
14
+ # - PAT_TOKEN: GitHub PAT for creating PRs (uses GITHUB_TOKEN if not set)
15
+ #
16
+ # The action will:
17
+ # 1. Run a Trivy security scan
18
+ # 2. Skip agent if no vulnerabilities found (saves costs)
19
+ # 3. Create PRs for fixable vulnerabilities
20
+
21
+ name: Vulnerability Scan and Remediation
22
+
23
+ on:
24
+ # Run weekly on Monday at 9am UTC
25
+ schedule:
26
+ - cron: '0 9 * * 1'
27
+
28
+ # Allow manual trigger
29
+ workflow_dispatch:
30
+ inputs:
31
+ severity_threshold:
32
+ description: 'Minimum severity to remediate'
33
+ required: false
34
+ default: 'HIGH'
35
+ type: choice
36
+ options:
37
+ - CRITICAL
38
+ - HIGH
39
+ - MEDIUM
40
+ - LOW
41
+ max_vulnerabilities:
42
+ description: 'Maximum vulnerabilities to fix (0 = unlimited)'
43
+ required: false
44
+ default: '5'
45
+ type: string
46
+ llm_model:
47
+ description: 'LLM model to use for remediation'
48
+ required: false
49
+ default: 'anthropic/claude-sonnet-4-5-20250929'
50
+ type: string
51
+ llm_base_url:
52
+ description: 'Custom LLM base URL (optional)'
53
+ required: false
54
+ default: ''
55
+ type: string
56
+
57
+ permissions:
58
+ contents: write
59
+ pull-requests: write
60
+ security-events: read
61
+
62
+ jobs:
63
+ scan-and-remediate:
64
+ runs-on: ubuntu-latest
65
+ timeout-minutes: 60
66
+
67
+ steps:
68
+ # Uses @main to auto-update when the action is improved
69
+ - name: Run Vulnerability Remediation
70
+ id: remediate
71
+ uses: OpenHands/extensions/plugins/vulnerability-remediation@main
72
+ with:
73
+ severity-threshold: ${{ inputs.severity_threshold || 'HIGH' }}
74
+ max-vulnerabilities: ${{ inputs.max_vulnerabilities || '5' }}
75
+ llm-model: ${{ inputs.llm_model || 'anthropic/claude-sonnet-4-5-20250929' }}
76
+ llm-base-url: ${{ inputs.llm_base_url || '' }}
77
+ llm-api-key: ${{ secrets.LLM_API_KEY }}
78
+ github-token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC || secrets.GITHUB_TOKEN }}
79
+
80
+ - name: Summary
81
+ run: |
82
+ echo "### Vulnerability Scan Results" >> $GITHUB_STEP_SUMMARY
83
+ if [ "${{ steps.remediate.outputs.scan-only }}" == "true" ]; then
84
+ echo "✅ No vulnerabilities found that need remediation." >> $GITHUB_STEP_SUMMARY
85
+ else
86
+ echo "🔍 Found ${{ steps.remediate.outputs.vulnerabilities-found }} vulnerabilities to remediate." >> $GITHUB_STEP_SUMMARY
87
+ fi
@@ -0,0 +1,32 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # pytest cache
7
+ .pytest_cache/
8
+
9
+ # Virtual environments
10
+ venv/
11
+ .venv/
12
+ env/
13
+
14
+ # IDE
15
+ .idea/
16
+ .vscode/
17
+ *.swp
18
+ *.swo
19
+
20
+ # OS
21
+ .DS_Store
22
+ Thumbs.db
23
+ .agents/*
24
+ !.agents/skills/
25
+ .agents/skills/*
26
+ !.agents/skills/custom-codereview-guide.md
27
+
28
+ # uv lock file (no application code in this repo)
29
+ uv.lock
30
+
31
+ # npm pack artifacts (also keeps stray tarballs out of the published package)
32
+ *.tgz
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.6.0"
3
+ }