openhands-extensions 0.28.0__tar.gz → 0.30.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 (697) hide show
  1. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.agents/skills/custom-codereview-guide.md +44 -1
  2. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/build-vscode-app.yml +3 -3
  3. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/check-extensions.yml +1 -1
  4. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/tests.yml +1 -1
  5. openhands_extensions-0.30.0/.release-please-manifest.json +3 -0
  6. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/AGENTS.md +7 -2
  7. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/PKG-INFO +1 -1
  8. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/README.md +3 -3
  9. openhands_extensions-0.30.0/apps/vscode/README.md +15 -0
  10. openhands_extensions-0.30.0/apps/vscode/canvas-extension.json +27 -0
  11. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/apps/vscode/extension.js +60 -12
  12. openhands_extensions-0.30.0/apps/vscode/scripts/package.mjs +30 -0
  13. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/bundle-index.js +9 -7
  14. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/github-issue-to-pr/manifest.json +1 -1
  15. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/github-issue-triage/manifest.json +4 -3
  16. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/github-pr-reviewer/manifest.json +5 -4
  17. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/gitlab-issue-to-mr/manifest.json +3 -3
  18. openhands_extensions-0.30.0/automations/catalog/jira-issue-to-bitbucket-pr/manifest.json +23 -0
  19. openhands_extensions-0.30.0/automations/catalog/jira-issue-to-gitlab-mr/manifest.json +23 -0
  20. openhands_extensions-0.30.0/automations/catalog/jira-issue-to-pr/manifest.json +19 -0
  21. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/atlassian-rovo.json +4 -3
  22. openhands_extensions-0.30.0/integrations/catalog/bitbucket.json +49 -0
  23. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/github.json +1 -0
  24. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/gitlab.json +1 -1
  25. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/marketplaces/openhands-extensions.json +7 -5
  26. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/package.json +1 -1
  27. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-automation/references/custom-automation.md +76 -8
  28. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/README.md +1 -0
  29. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/scripts/prompt.py +44 -11
  30. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/runtime-api-configs/SKILL.md +1 -1
  31. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +224 -8
  32. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/pyproject.toml +1 -1
  33. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/python/openhands_extensions/_version.py +1 -1
  34. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/SKILL.md +4 -1
  35. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/references/backend-safety.md +3 -3
  36. openhands_extensions-0.30.0/skills/canvas-extension-api/references/native-design.md +250 -0
  37. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/references/v1-contract.md +7 -4
  38. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/scripts/validate-extension.mjs +17 -1
  39. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/scripts/validate-extension.test.mjs +49 -0
  40. openhands_extensions-0.30.0/skills/github-issue-triage/README.md +75 -0
  41. openhands_extensions-0.30.0/skills/github-issue-triage/SKILL.md +37 -0
  42. openhands_extensions-0.30.0/skills/github-issue-triage/scripts/triage_publication.py +293 -0
  43. openhands_extensions-0.30.0/skills/github-issue-triage/scripts/worker.py +272 -0
  44. openhands_extensions-0.30.0/skills/github-pr-reviewer/README.md +200 -0
  45. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/SKILL.md +35 -8
  46. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/references/state-schema.md +8 -0
  47. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/scripts/main.py +163 -39
  48. openhands_extensions-0.30.0/skills/github-pr-reviewer/scripts/publication.py +193 -0
  49. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/scripts/worker.py +297 -8
  50. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/tests/test_main.py +73 -5
  51. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab-issue-to-mr/README.md +10 -3
  52. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab-issue-to-mr/SKILL.md +43 -9
  53. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab-issue-to-mr/references/state-schema.md +4 -0
  54. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab-issue-to-mr/scripts/main.py +359 -25
  55. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/index.js +10 -10
  56. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jira-issue-to-pr/.claude-plugin/plugin.json +4 -1
  57. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jira-issue-to-pr/README.md +18 -11
  58. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jira-issue-to-pr/SKILL.md +72 -23
  59. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jira-issue-to-pr/references/setup.md +43 -12
  60. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jira-issue-to-pr/scripts/main.py +136 -26
  61. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-channel-monitor/README.md +6 -1
  62. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-channel-monitor/SKILL.md +6 -3
  63. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-channel-monitor/scripts/main.py +36 -4
  64. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/ticket-to-code-change/.claude-plugin/plugin.json +1 -2
  65. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/ticket-to-code-change/SKILL.md +5 -3
  66. openhands_extensions-0.30.0/skills/ticket-to-code-change/commands/ticket-to-code-change-setup.md +8 -0
  67. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/fixtures/automations/github-pr-reviewer.json +9 -9
  68. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_agent_conversation_dispatch.py +173 -6
  69. openhands_extensions-0.30.0/tests/test_automation_llm_provenance.py +1209 -0
  70. openhands_extensions-0.30.0/tests/test_github_review_publication.py +422 -0
  71. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_reviewer_delivery.py +174 -21
  72. openhands_extensions-0.30.0/tests/test_github_triage_delivery.py +457 -0
  73. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_gitlab_issue_to_mr.py +284 -0
  74. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_jira_issue_to_pr.py +200 -6
  75. openhands_extensions-0.30.0/tests/test_pr_review_prompt_injection.py +353 -0
  76. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_slack_channel_monitor.py +32 -1
  77. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_vscode_app.py +8 -2
  78. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/vscode-app.test.mjs +8 -2
  79. openhands_extensions-0.28.0/.release-please-manifest.json +0 -3
  80. openhands_extensions-0.28.0/apps/vscode/README.md +0 -13
  81. openhands_extensions-0.28.0/apps/vscode/canvas-extension.json +0 -19
  82. openhands_extensions-0.28.0/apps/vscode/scripts/package.mjs +0 -84
  83. openhands_extensions-0.28.0/automations/catalog/jira-issue-to-bitbucket-pr/manifest.json +0 -23
  84. openhands_extensions-0.28.0/automations/catalog/jira-issue-to-gitlab-mr/manifest.json +0 -23
  85. openhands_extensions-0.28.0/automations/catalog/jira-issue-to-pr/manifest.json +0 -19
  86. openhands_extensions-0.28.0/integrations/catalog/bitbucket.json +0 -34
  87. openhands_extensions-0.28.0/skills/github-issue-triage/README.md +0 -16
  88. openhands_extensions-0.28.0/skills/github-issue-triage/SKILL.md +0 -57
  89. openhands_extensions-0.28.0/skills/github-issue-triage/scripts/worker.py +0 -222
  90. openhands_extensions-0.28.0/skills/github-pr-reviewer/README.md +0 -98
  91. openhands_extensions-0.28.0/skills/ticket-to-code-change/commands/ticket-to-code-change-setup.md +0 -8
  92. openhands_extensions-0.28.0/tests/test_github_triage_delivery.py +0 -284
  93. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.claude-plugin/marketplace.json +0 -0
  94. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/dependabot.yml +0 -0
  95. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/pull_request_template.md +0 -0
  96. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/release.yml +0 -0
  97. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/scripts/check_pr_description.py +0 -0
  98. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/scripts/markdown_sections.py +0 -0
  99. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/scripts/refresh_linked_pr_checks.py +0 -0
  100. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/deprecation-check.yml +0 -0
  101. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/issue-readiness-check.yml +0 -0
  102. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/npm-publish.yml +0 -0
  103. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/pr-artifacts.yml +0 -0
  104. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/pr-description-check.yml +0 -0
  105. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/pr.yml +0 -0
  106. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/pypi-publish.yml +0 -0
  107. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/release.yml +0 -0
  108. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.github/workflows/vulnerability-scan.yml +0 -0
  109. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/.gitignore +0 -0
  110. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/LICENSE +0 -0
  111. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/MIGRATION.md +0 -0
  112. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/analysis_results.md +0 -0
  113. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/apps/README.md +0 -0
  114. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/apps/catalog.json +0 -0
  115. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/apps/index.d.ts +0 -0
  116. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/apps/index.js +0 -0
  117. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/README.md +0 -0
  118. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/custom-automation/manifest.json +0 -0
  119. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/github-agents-md-maintainer/manifest.json +0 -0
  120. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/github-delivery-watchdog/manifest.json +0 -0
  121. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/github-repo-monitor/manifest.json +0 -0
  122. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/github-stale-ci-pr-closer/manifest.json +0 -0
  123. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/incident-retrospective-drafter/manifest.json +0 -0
  124. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/linear-issue-to-bitbucket-pr/manifest.json +0 -0
  125. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/linear-issue-to-github-pr/manifest.json +0 -0
  126. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/linear-issue-to-gitlab-mr/manifest.json +0 -0
  127. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/linear-triage-assistant/manifest.json +0 -0
  128. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/news-digest/manifest.json +0 -0
  129. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/qa-changes/manifest.json +0 -0
  130. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/research-brief-writer/manifest.json +0 -0
  131. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/slack-channel-monitor/manifest.json +0 -0
  132. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/slack-github-linear-daily-organization.json +0 -0
  133. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/slack-standup-digest/manifest.json +0 -0
  134. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog/upstream-fork-sync/manifest.json +0 -0
  135. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog-index.js +0 -0
  136. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/catalog.schema.json +0 -0
  137. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/index.d.ts +0 -0
  138. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/index.js +0 -0
  139. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/interface.json +0 -0
  140. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/automations/interface.schema.json +0 -0
  141. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/index.d.ts +0 -0
  142. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/index.js +0 -0
  143. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/README.md +0 -0
  144. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/airtable.json +0 -0
  145. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/apify.json +0 -0
  146. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/asana.json +0 -0
  147. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/atlassian.json +0 -0
  148. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/box.json +0 -0
  149. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/brave-search.json +0 -0
  150. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/browser-mcp.json +0 -0
  151. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/canva.json +0 -0
  152. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/clickhouse.json +0 -0
  153. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/cloudflare-bindings.json +0 -0
  154. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/cloudflare-browser-rendering.json +0 -0
  155. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/cloudflare-builds.json +0 -0
  156. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/cloudflare-docs.json +0 -0
  157. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/cloudflare-observability.json +0 -0
  158. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/confluence.json +0 -0
  159. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/datadog.json +0 -0
  160. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/deepwiki.json +0 -0
  161. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/discord.json +0 -0
  162. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/elevenlabs.json +0 -0
  163. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/everything.json +0 -0
  164. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/exa.json +0 -0
  165. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/fetch.json +0 -0
  166. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/figma.json +0 -0
  167. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/filesystem.json +0 -0
  168. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/firecrawl.json +0 -0
  169. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/git.json +0 -0
  170. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/gmail.json +0 -0
  171. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/google-calendar.json +0 -0
  172. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/google-docs.json +0 -0
  173. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/google-drive.json +0 -0
  174. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/google-sheets.json +0 -0
  175. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/granola.json +0 -0
  176. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/hubspot.json +0 -0
  177. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/huggingface.json +0 -0
  178. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/intercom.json +0 -0
  179. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/jira.json +0 -0
  180. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/kagi.json +0 -0
  181. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/linear.json +0 -0
  182. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/memory.json +0 -0
  183. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/microsoft-outlook.json +0 -0
  184. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/microsoft-teams.json +0 -0
  185. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/miro.json +0 -0
  186. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/monday.json +0 -0
  187. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/mongodb.json +0 -0
  188. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/neon.json +0 -0
  189. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/netlify.json +0 -0
  190. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/notion.json +0 -0
  191. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/obsidian.json +0 -0
  192. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/okta.json +0 -0
  193. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/onedrive.json +0 -0
  194. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/ordinal.json +0 -0
  195. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/paypal.json +0 -0
  196. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/playwright.json +0 -0
  197. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/posthog.json +0 -0
  198. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/quickbooks.json +0 -0
  199. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/redis.json +0 -0
  200. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/reportportal.json +0 -0
  201. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/resend.json +0 -0
  202. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/salesforce.json +0 -0
  203. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/sentry.json +0 -0
  204. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/sequential-thinking.json +0 -0
  205. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/sharepoint.json +0 -0
  206. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/slack.json +0 -0
  207. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/sonarqube.json +0 -0
  208. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/stripe.json +0 -0
  209. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/supabase.json +0 -0
  210. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/superhuman-mail.json +0 -0
  211. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/tavily.json +0 -0
  212. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/time.json +0 -0
  213. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/trello.json +0 -0
  214. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/vanta.json +0 -0
  215. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/vercel.json +0 -0
  216. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/webflow.json +0 -0
  217. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/xero.json +0 -0
  218. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog/zoom.json +0 -0
  219. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog-index.js +0 -0
  220. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/catalog.schema.json +0 -0
  221. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/icons/salesforce.svg +0 -0
  222. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/icons/slack.svg +0 -0
  223. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/index.d.ts +0 -0
  224. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/integrations/index.js +0 -0
  225. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/marketplaces/large-codebase.json +0 -0
  226. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/README.md +0 -0
  227. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/city-weather/.claude-plugin/plugin.json +0 -0
  228. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/city-weather/README.md +0 -0
  229. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/city-weather/commands/now.md +0 -0
  230. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/.claude-plugin/plugin.json +0 -0
  231. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/README.md +0 -0
  232. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/references/troubleshooting.md +0 -0
  233. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/build-setup/SKILL.md +0 -0
  234. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +0 -0
  235. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +0 -0
  236. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +0 -0
  237. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/mainframe-removal/SKILL.md +0 -0
  238. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/mainframe-removal/references/cics-transformation-examples.md +0 -0
  239. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +0 -0
  240. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +0 -0
  241. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +0 -0
  242. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +0 -0
  243. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/issue-duplicate-checker/README.md +0 -0
  244. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/issue-duplicate-checker/action.yml +0 -0
  245. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +0 -0
  246. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +0 -0
  247. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.cjs +0 -0
  248. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.cjs +0 -0
  249. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/magic-test/.claude-plugin/plugin.json +0 -0
  250. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/magic-test/skills/magic-word/SKILL.md +0 -0
  251. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/migration-scoring/.claude-plugin/plugin.json +0 -0
  252. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/migration-scoring/README.md +0 -0
  253. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/migration-scoring/skills/migration-mapping/SKILL.md +0 -0
  254. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/migration-scoring/skills/migration-report/SKILL.md +0 -0
  255. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/migration-scoring/skills/migration-scoring/SKILL.md +0 -0
  256. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/migration-scoring/skills/score-quality/SKILL.md +0 -0
  257. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +0 -0
  258. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/migration-scoring/skills/score-style/SKILL.md +0 -0
  259. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/.claude-plugin/plugin.json +0 -0
  260. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/README.md +0 -0
  261. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/references/criteria.md +0 -0
  262. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/agent-readiness-report/README.md +0 -0
  263. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/agent-readiness-report/SKILL.md +0 -0
  264. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +0 -0
  265. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +0 -0
  266. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +0 -0
  267. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +0 -0
  268. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +0 -0
  269. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +0 -0
  270. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/improve-agent-readiness/README.md +0 -0
  271. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +0 -0
  272. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +0 -0
  273. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/setup-agents-md/README.md +0 -0
  274. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/setup-agents-md/SKILL.md +0 -0
  275. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/setup-openhands/README.md +0 -0
  276. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/setup-openhands/SKILL.md +0 -0
  277. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/setup-pr-review/README.md +0 -0
  278. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/onboarding/skills/setup-pr-review/SKILL.md +0 -0
  279. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/.claude-plugin/plugin.json +0 -0
  280. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/README.md +0 -0
  281. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/SKILL.md +0 -0
  282. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/commands/create.md +0 -0
  283. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/commands/openhands-cloud.md +0 -0
  284. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/scripts/run.sh +0 -0
  285. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +0 -0
  286. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/README.md +0 -0
  287. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/SKILL.md +0 -0
  288. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/references/README.md +0 -0
  289. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +0 -0
  290. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/references/example_prompt.md +0 -0
  291. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/references/windows.md +0 -0
  292. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +0 -0
  293. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +0 -0
  294. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +0 -0
  295. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-automation/README.md +0 -0
  296. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-automation/SKILL.md +0 -0
  297. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-automation/commands/automation-create.md +0 -0
  298. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-automation/references/ab-testing.md +0 -0
  299. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-automation/references/security.md +0 -0
  300. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-automation/references/windows.md +0 -0
  301. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +0 -0
  302. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-sdk/README.md +0 -0
  303. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-sdk/SKILL.md +0 -0
  304. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/openhands/skills/openhands-sdk/commands/sdk.md +0 -0
  305. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/.claude-plugin/plugin.json +0 -0
  306. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/action.yml +0 -0
  307. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/scripts/agent_script.py +0 -0
  308. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/scripts/evaluate_review.py +0 -0
  309. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +0 -0
  310. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/code-review/README.md +0 -0
  311. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/code-review/SKILL.md +0 -0
  312. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +0 -0
  313. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/code-review/commands/codereview.md +0 -0
  314. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/code-review/references/risk-evaluation.md +0 -0
  315. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/code-review/references/supply-chain-security.md +0 -0
  316. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +0 -0
  317. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/github-pr-review/README.md +0 -0
  318. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/github-pr-review/SKILL.md +0 -0
  319. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +0 -0
  320. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/skills/github-pr-review/references/windows.md +0 -0
  321. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/workflows/pr-review-by-openhands.yml +0 -0
  322. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/pr-review/workflows/pr-review-evaluation.yml +0 -0
  323. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/.claude-plugin/plugin.json +0 -0
  324. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/README.md +0 -0
  325. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/action.yml +0 -0
  326. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/scripts/agent_script.py +0 -0
  327. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/scripts/evaluate_qa_changes.py +0 -0
  328. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/scripts/prompt.py +0 -0
  329. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/skills/qa-changes/README.md +0 -0
  330. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/skills/qa-changes/SKILL.md +0 -0
  331. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +0 -0
  332. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +0 -0
  333. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/qa-changes/workflows/qa-changes-evaluation.yml +0 -0
  334. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/.claude-plugin/plugin.json +0 -0
  335. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/README.md +0 -0
  336. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/SKILL.md +0 -0
  337. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/action.yml +0 -0
  338. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/commands/release-notes.md +0 -0
  339. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/scripts/agent_script.py +0 -0
  340. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/scripts/generate_release_notes.py +0 -0
  341. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/scripts/prompt.py +0 -0
  342. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/scripts/validate_release_notes.py +0 -0
  343. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/skills/release-notes/README.md +0 -0
  344. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/skills/release-notes/SKILL.md +0 -0
  345. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/skills/release-notes/commands/release-notes.md +0 -0
  346. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/release-notes/workflows/release-notes.yml +0 -0
  347. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/runtime-api-configs/.claude-plugin/plugin.json +0 -0
  348. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/runtime-api-configs/README.md +0 -0
  349. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/runtime-api-configs/scripts/warm_runtime_configs.py +0 -0
  350. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/runtime-api-configs/tests/test_warm_runtime_configs.py +0 -0
  351. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/.claude-plugin/plugin.json +0 -0
  352. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/README.md +0 -0
  353. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/action.yml +0 -0
  354. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +0 -0
  355. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +0 -0
  356. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/github/README.md +0 -0
  357. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/github/SKILL.md +0 -0
  358. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/github/references/windows.md +0 -0
  359. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/github/scripts/github_client.py +0 -0
  360. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +0 -0
  361. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/security/README.md +0 -0
  362. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/skills/security/SKILL.md +0 -0
  363. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +0 -0
  364. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/python/openhands_extensions/__init__.py +0 -0
  365. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/python/openhands_extensions/deprecation.py +0 -0
  366. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/python/openhands_extensions/integration_models.py +0 -0
  367. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/python/openhands_extensions/integrations.py +0 -0
  368. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/release-please-config.json +0 -0
  369. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/scripts/build-automation-catalog.mjs +0 -0
  370. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/scripts/build-integration-catalog.mjs +0 -0
  371. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/scripts/build-skills-catalog.mjs +0 -0
  372. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/scripts/check_deprecations.py +0 -0
  373. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/scripts/check_plugin_resources.py +0 -0
  374. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/scripts/sync_extensions.py +0 -0
  375. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/scripts/sync_openhands_sdk_skill.py +0 -0
  376. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/README.md +0 -0
  377. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/add-javadoc/.claude-plugin/plugin.json +0 -0
  378. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/add-javadoc/README.md +0 -0
  379. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/add-javadoc/SKILL.md +0 -0
  380. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/add-javadoc/references/example.md +0 -0
  381. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/add-skill/.claude-plugin/plugin.json +0 -0
  382. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/add-skill/README.md +0 -0
  383. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/add-skill/SKILL.md +0 -0
  384. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/add-skill/scripts/fetch_skill.py +0 -0
  385. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-canvas-environment/.claude-plugin/plugin.json +0 -0
  386. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-canvas-environment/README.md +0 -0
  387. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-canvas-environment/SKILL.md +0 -0
  388. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-creator/.claude-plugin/plugin.json +0 -0
  389. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-creator/README.md +0 -0
  390. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-creator/SKILL.md +0 -0
  391. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-creator/commands/agent-creator.md +0 -0
  392. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-creator/references/fallback.md +0 -0
  393. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-memory/.claude-plugin/plugin.json +0 -0
  394. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-memory/README.md +0 -0
  395. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-memory/SKILL.md +0 -0
  396. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-memory/commands/remember.md +0 -0
  397. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-sdk-builder/.claude-plugin/plugin.json +0 -0
  398. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-sdk-builder/README.md +0 -0
  399. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-sdk-builder/SKILL.md +0 -0
  400. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/agent-sdk-builder/commands/agent-builder.md +0 -0
  401. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/azure-devops/.claude-plugin/plugin.json +0 -0
  402. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/azure-devops/README.md +0 -0
  403. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/azure-devops/SKILL.md +0 -0
  404. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket/.claude-plugin/plugin.json +0 -0
  405. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket/README.md +0 -0
  406. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket/SKILL.md +0 -0
  407. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket-cloud/.claude-plugin/plugin.json +0 -0
  408. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket-cloud/README.md +0 -0
  409. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket-cloud/SKILL.md +0 -0
  410. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket-data-center/.claude-plugin/plugin.json +0 -0
  411. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket-data-center/README.md +0 -0
  412. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/bitbucket-data-center/SKILL.md +0 -0
  413. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/.claude-plugin/plugin.json +0 -0
  414. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/README.md +0 -0
  415. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/references/acceptance-checklist.md +0 -0
  416. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/references/connections.md +0 -0
  417. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/references/packaging-recipes.md +0 -0
  418. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/references/sidecar-pattern.md +0 -0
  419. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/canvas-extension-api/references/testing-and-installation.md +0 -0
  420. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/code-simplifier/.claude-plugin/plugin.json +0 -0
  421. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/code-simplifier/README.md +0 -0
  422. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/code-simplifier/SKILL.md +0 -0
  423. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/code-simplifier/commands/simplify.md +0 -0
  424. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/code-simplifier/references/code-quality-review.md +0 -0
  425. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/code-simplifier/references/code-reuse-review.md +0 -0
  426. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/code-simplifier/references/efficiency-review.md +0 -0
  427. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/datadog/.claude-plugin/plugin.json +0 -0
  428. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/datadog/README.md +0 -0
  429. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/datadog/SKILL.md +0 -0
  430. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/datadog/references/windows.md +0 -0
  431. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/deno/.claude-plugin/plugin.json +0 -0
  432. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/deno/README.md +0 -0
  433. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/deno/SKILL.md +0 -0
  434. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/deno/references/README.md +0 -0
  435. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/.claude-plugin/plugin.json +0 -0
  436. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/README.md +0 -0
  437. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/SKILL.md +0 -0
  438. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/__init__.py +0 -0
  439. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/references/REFERENCE.md +0 -0
  440. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/scripts/__init__.py +0 -0
  441. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/scripts/_http.py +0 -0
  442. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/scripts/post_webhook.py +0 -0
  443. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/discord/scripts/send_message.py +0 -0
  444. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/docker/.claude-plugin/plugin.json +0 -0
  445. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/docker/README.md +0 -0
  446. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/docker/SKILL.md +0 -0
  447. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/evidence-based-citations/.claude-plugin/plugin.json +0 -0
  448. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/evidence-based-citations/README.md +0 -0
  449. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/evidence-based-citations/SKILL.md +0 -0
  450. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/flarglebargle/.claude-plugin/plugin.json +0 -0
  451. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/flarglebargle/README.md +0 -0
  452. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/flarglebargle/SKILL.md +0 -0
  453. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/frontend-design/.claude-plugin/plugin.json +0 -0
  454. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/frontend-design/LICENSE.txt +0 -0
  455. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/frontend-design/README.md +0 -0
  456. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/frontend-design/SKILL.md +0 -0
  457. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-actions/.claude-plugin/plugin.json +0 -0
  458. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-actions/README.md +0 -0
  459. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-actions/SKILL.md +0 -0
  460. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-agents-md-maintainer/.claude-plugin/plugin.json +0 -0
  461. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-agents-md-maintainer/README.md +0 -0
  462. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-agents-md-maintainer/SKILL.md +0 -0
  463. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-agents-md-maintainer/commands/agents-md-setup.md +0 -0
  464. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-agents-md-maintainer/references/state-schema.md +0 -0
  465. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-agents-md-maintainer/scripts/github_client.py +0 -0
  466. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-agents-md-maintainer/scripts/main.py +0 -0
  467. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-delivery-watchdog/.claude-plugin/plugin.json +0 -0
  468. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-delivery-watchdog/README.md +0 -0
  469. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-delivery-watchdog/SKILL.md +0 -0
  470. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-delivery-watchdog/commands/github-delivery-watchdog.md +0 -0
  471. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-delivery-watchdog/scripts/github_client.py +0 -0
  472. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-delivery-watchdog/scripts/worker.py +0 -0
  473. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/.claude-plugin/plugin.json +0 -0
  474. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/README.md +0 -0
  475. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/SKILL.md +0 -0
  476. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/commands/issue-to-pr-setup.md +0 -0
  477. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/references/state-schema.md +0 -0
  478. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/scripts/agent_conversation.py +0 -0
  479. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/scripts/github_client.py +0 -0
  480. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/scripts/main.py +0 -0
  481. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-to-pr/scripts/worker.py +0 -0
  482. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-triage/.claude-plugin/plugin.json +0 -0
  483. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-triage/commands/github-issue-triage.md +0 -0
  484. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-triage/scripts/agent_conversation.py +0 -0
  485. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-issue-triage/scripts/github_client.py +0 -0
  486. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/.claude-plugin/plugin.json +0 -0
  487. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/commands/pr-reviewer-setup.md +0 -0
  488. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/references/windows.md +0 -0
  489. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/scripts/agent_conversation.py +0 -0
  490. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/scripts/github_client.py +0 -0
  491. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-pr-reviewer/scripts/maintainer_handoff.py +0 -0
  492. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/.claude-plugin/plugin.json +0 -0
  493. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/README.md +0 -0
  494. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/SKILL.md +0 -0
  495. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/commands/github-monitor-poll.md +0 -0
  496. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/references/github-api.md +0 -0
  497. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/references/state-schema.md +0 -0
  498. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/references/windows.md +0 -0
  499. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/scripts/github_client.py +0 -0
  500. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/scripts/main.py +0 -0
  501. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-repo-monitor/tests/test_main.py +0 -0
  502. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-stale-ci-pr-closer/.claude-plugin/plugin.json +0 -0
  503. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-stale-ci-pr-closer/README.md +0 -0
  504. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-stale-ci-pr-closer/SKILL.md +0 -0
  505. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-stale-ci-pr-closer/commands/github-stale-ci-pr-closer.md +0 -0
  506. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-stale-ci-pr-closer/scripts/worker.py +0 -0
  507. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/github-stale-ci-pr-closer/tests/test_worker.py +0 -0
  508. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab/.claude-plugin/plugin.json +0 -0
  509. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab/README.md +0 -0
  510. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab/SKILL.md +0 -0
  511. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab-issue-to-mr/.claude-plugin/plugin.json +0 -0
  512. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/gitlab-issue-to-mr/commands/issue-to-mr-setup.md +0 -0
  513. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/incident-retrospective/.claude-plugin/plugin.json +0 -0
  514. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/incident-retrospective/README.md +0 -0
  515. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/incident-retrospective/SKILL.md +0 -0
  516. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/incident-retrospective/commands/incident-retro-setup.md +0 -0
  517. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/index.d.ts +0 -0
  518. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/.claude-plugin/plugin.json +0 -0
  519. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/.codex-plugin/plugin.json +0 -0
  520. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/.plugin/plugin.json +0 -0
  521. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/README.md +0 -0
  522. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/SKILL.md +0 -0
  523. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/commands/babysit.md +0 -0
  524. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/commands/iterate.md +0 -0
  525. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/commands/verify.md +0 -0
  526. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/references/heuristics.md +0 -0
  527. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/references/verification.md +0 -0
  528. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/iterate/references/windows.md +0 -0
  529. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jira-issue-to-pr/scripts/setup_webhook.py +0 -0
  530. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jupyter/.claude-plugin/plugin.json +0 -0
  531. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jupyter/README.md +0 -0
  532. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/jupyter/SKILL.md +0 -0
  533. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/kubernetes/.claude-plugin/plugin.json +0 -0
  534. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/kubernetes/README.md +0 -0
  535. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/kubernetes/SKILL.md +0 -0
  536. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/kubernetes/references/windows.md +0 -0
  537. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/learn-from-code-review/.claude-plugin/plugin.json +0 -0
  538. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/learn-from-code-review/README.md +0 -0
  539. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/learn-from-code-review/SKILL.md +0 -0
  540. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/learn-from-code-review/commands/learn-from-reviews.md +0 -0
  541. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/linear/.claude-plugin/plugin.json +0 -0
  542. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/linear/README.md +0 -0
  543. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/linear/SKILL.md +0 -0
  544. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/linear/references/windows.md +0 -0
  545. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/linear-triage/.claude-plugin/plugin.json +0 -0
  546. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/linear-triage/README.md +0 -0
  547. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/linear-triage/SKILL.md +0 -0
  548. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/linear-triage/commands/linear-triage-setup.md +0 -0
  549. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/news-digest/.claude-plugin/plugin.json +0 -0
  550. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/news-digest/README.md +0 -0
  551. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/news-digest/SKILL.md +0 -0
  552. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/news-digest/commands/news-digest-setup.md +0 -0
  553. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/news-digest/references/state-schema.md +0 -0
  554. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/news-digest/scripts/main.py +0 -0
  555. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/notion/.claude-plugin/plugin.json +0 -0
  556. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/notion/README.md +0 -0
  557. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/notion/SKILL.md +0 -0
  558. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/notion/references/windows.md +0 -0
  559. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/npm/.claude-plugin/plugin.json +0 -0
  560. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/npm/README.md +0 -0
  561. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/npm/SKILL.md +0 -0
  562. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/openhands-enterprise-troubleshooting/.claude-plugin/plugin.json +0 -0
  563. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/openhands-enterprise-troubleshooting/README.md +0 -0
  564. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/openhands-enterprise-troubleshooting/SKILL.md +0 -0
  565. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/openhands-enterprise-troubleshooting/references/diagnostics.md +0 -0
  566. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/openhands-enterprise-troubleshooting/references/support-bundle-analysis.md +0 -0
  567. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/openhands-enterprise-troubleshooting/scripts/bundle_triage.py +0 -0
  568. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/pdflatex/.claude-plugin/plugin.json +0 -0
  569. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/pdflatex/README.md +0 -0
  570. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/pdflatex/SKILL.md +0 -0
  571. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/plain-english-content/.claude-plugin/plugin.json +0 -0
  572. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/plain-english-content/README.md +0 -0
  573. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/plain-english-content/SKILL.md +0 -0
  574. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/prd/.claude-plugin/plugin.json +0 -0
  575. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/prd/README.md +0 -0
  576. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/prd/SKILL.md +0 -0
  577. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/prd/commands/prd.md +0 -0
  578. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/research-brief/.claude-plugin/plugin.json +0 -0
  579. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/research-brief/README.md +0 -0
  580. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/research-brief/SKILL.md +0 -0
  581. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/research-brief/commands/research-brief-setup.md +0 -0
  582. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/simplified-technical-english/.claude-plugin/plugin.json +0 -0
  583. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/simplified-technical-english/README.md +0 -0
  584. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/simplified-technical-english/SKILL.md +0 -0
  585. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/.claude-plugin/plugin.json +0 -0
  586. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/LICENSE.txt +0 -0
  587. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/README.md +0 -0
  588. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/SKILL.md +0 -0
  589. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/references/output-patterns.md +0 -0
  590. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/references/windows.md +0 -0
  591. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/references/workflows.md +0 -0
  592. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/scripts/init_skill.py +0 -0
  593. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/skill-creator/scripts/quick_validate.py +0 -0
  594. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-channel-monitor/.claude-plugin/plugin.json +0 -0
  595. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-channel-monitor/commands/slack-monitor-poll.md +0 -0
  596. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-channel-monitor/references/slack-api.md +0 -0
  597. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-channel-monitor/references/state-schema.md +0 -0
  598. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-channel-monitor/references/windows.md +0 -0
  599. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-standup-digest/.claude-plugin/plugin.json +0 -0
  600. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-standup-digest/README.md +0 -0
  601. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-standup-digest/SKILL.md +0 -0
  602. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/slack-standup-digest/commands/standup-digest-setup.md +0 -0
  603. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/spark-version-upgrade/.claude-plugin/plugin.json +0 -0
  604. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/spark-version-upgrade/README.md +0 -0
  605. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/spark-version-upgrade/SKILL.md +0 -0
  606. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/ssh/.claude-plugin/plugin.json +0 -0
  607. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/ssh/README.md +0 -0
  608. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/ssh/SKILL.md +0 -0
  609. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/ssh/references/windows.md +0 -0
  610. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/swift-linux/.claude-plugin/plugin.json +0 -0
  611. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/swift-linux/README.md +0 -0
  612. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/swift-linux/SKILL.md +0 -0
  613. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/technical-writing/.claude-plugin/plugin.json +0 -0
  614. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/technical-writing/README.md +0 -0
  615. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/technical-writing/SKILL.md +0 -0
  616. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/.claude-plugin/plugin.json +0 -0
  617. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/LICENSE.txt +0 -0
  618. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/README.md +0 -0
  619. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/SKILL.md +0 -0
  620. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/theme-showcase.pdf +0 -0
  621. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/arctic-frost.md +0 -0
  622. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/botanical-garden.md +0 -0
  623. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/desert-rose.md +0 -0
  624. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/forest-canopy.md +0 -0
  625. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/golden-hour.md +0 -0
  626. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/midnight-galaxy.md +0 -0
  627. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/modern-minimalist.md +0 -0
  628. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/ocean-depths.md +0 -0
  629. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/sunset-boulevard.md +0 -0
  630. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/theme-factory/themes/tech-innovation.md +0 -0
  631. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/ticket-to-code-change/README.md +0 -0
  632. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/upstream-fork-sync/.claude-plugin/plugin.json +0 -0
  633. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/upstream-fork-sync/README.md +0 -0
  634. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/upstream-fork-sync/SKILL.md +0 -0
  635. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/upstream-fork-sync/commands/upstream-fork-sync-setup.md +0 -0
  636. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/use-jev/.claude-plugin/plugin.json +0 -0
  637. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/use-jev/README.md +0 -0
  638. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/use-jev/SKILL.md +0 -0
  639. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/uv/.claude-plugin/plugin.json +0 -0
  640. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/uv/README.md +0 -0
  641. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/uv/SKILL.md +0 -0
  642. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/uv/references/README.md +0 -0
  643. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/vercel/.claude-plugin/plugin.json +0 -0
  644. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/vercel/README.md +0 -0
  645. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/skills/vercel/SKILL.md +0 -0
  646. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/fixtures/automations/capabilities.json +0 -0
  647. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/fixtures/automations/custom-automation.json +0 -0
  648. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/fixtures/automations/github-repo-monitor.json +0 -0
  649. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/fixtures/automations/incident-retrospective-drafter.json +0 -0
  650. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/fixtures/automations/upstream-fork-sync.json +0 -0
  651. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/github_automation_helpers.py +0 -0
  652. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_add_skill_installs_to_agents_dir.py +0 -0
  653. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_apps_catalog.py +0 -0
  654. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_automation_setup.py +0 -0
  655. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_catalog_schema.py +0 -0
  656. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_catalogs.py +0 -0
  657. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_check_pr_description.py +0 -0
  658. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_code_review_risk_evaluation.py +0 -0
  659. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_deprecations.py +0 -0
  660. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_agents_md_maintainer.py +0 -0
  661. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_automation_foundation.py +0 -0
  662. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_developer_delivery.py +0 -0
  663. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_issue_to_pr.py +0 -0
  664. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_pr_review_skill.py +0 -0
  665. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_repo_monitor.py +0 -0
  666. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_skill_installation.py +0 -0
  667. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_stale_ci_pr_closer.py +0 -0
  668. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_github_watchdog_delivery.py +0 -0
  669. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_integration_catalog_in_sync.py +0 -0
  670. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_interface_manifest.py +0 -0
  671. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_issue_duplicate_checker.py +0 -0
  672. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_jira_setup_webhook.py +0 -0
  673. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_live_integration_smoke.py +0 -0
  674. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_maintainer_handoff.py +0 -0
  675. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_news_digest.py +0 -0
  676. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_openhands_api_python.py +0 -0
  677. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_plugin_manifest.py +0 -0
  678. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_pr_review_diff_payload.py +0 -0
  679. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_pr_review_feedback.py +0 -0
  680. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_pr_review_prompt.py +0 -0
  681. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_pr_review_review_context.py +0 -0
  682. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_qa_changes.py +0 -0
  683. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_qa_changes_evaluation.py +0 -0
  684. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_refresh_linked_pr_checks.py +0 -0
  685. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_release_notes_generator.py +0 -0
  686. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_sdk_loading.py +0 -0
  687. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_skill_plugin_loading.py +0 -0
  688. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_skills_catalog.py +0 -0
  689. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_skills_have_readme.py +0 -0
  690. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_sync_extensions.py +0 -0
  691. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_version_alignment.py +0 -0
  692. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/tests/test_workflow_sync.py +0 -0
  693. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/utils/analysis/README.md +0 -0
  694. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/utils/analysis/laminar_signals/README.md +0 -0
  695. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/utils/analysis/laminar_signals/analyze.py +0 -0
  696. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/utils/analysis/laminar_signals/templates/default.j2 +0 -0
  697. {openhands_extensions-0.28.0 → openhands_extensions-0.30.0}/utils/analysis/laminar_signals/templates/pr_review.j2 +0 -0
@@ -27,7 +27,32 @@ Cross-repository work is acceptable when this PR contains only the
27
27
  extensions-owned portion and relies on public interfaces from the owning
28
28
  repository.
29
29
 
30
- ## Blocking checkpoints
30
+ ## Issue triage
31
+
32
+ Issue readiness means the work is clear enough to start—not that the fix is
33
+ complete. Do not require a PR, passing implementation tests, or before-and-after
34
+ fix evidence. Reconsider readiness when new information leaves scope or expected
35
+ behavior unresolved. Read the issue, linked discussion, applicable `AGENTS.md`,
36
+ and adjacent source before asking questions.
37
+
38
+ For API failures, compare the extension request with the provider's reported or
39
+ supported version, not upstream main. Use dependency pins or deployment evidence.
40
+ Instructions, request arguments, response parsing, and scanner policy belong
41
+ here; use the ownership boundaries above for other failures. State required
42
+ cross-repository changes and their order. An independent upstream defect need
43
+ not block this work. Naming an owner does not authorize edits or duplicate tickets.
44
+
45
+ Define the smallest useful outcome and explicit non-goals. Cover only affected
46
+ entrypoints, environments, and permissions. For scanners, state whether discovery,
47
+ commenting, and dispatch are allowed for ineligible candidates or after a cap.
48
+ Discovery alone does not authorize unsolicited comments.
49
+
50
+ Request visual evidence only when needed; otherwise use logs, minimal
51
+ reproductions, or failing tests. Do not repeat answered questions. Match managed
52
+ criteria to current human decisions and authoritative readiness policy. Report
53
+ conflicts instead of repeatedly adding a label that policy removes.
54
+
55
+ ## Implementation review checkpoints
31
56
 
32
57
  ### Executable instructions and runtime parity
33
58
 
@@ -42,6 +67,16 @@ in a clean environment far enough to exercise the changed behavior. Keep local
42
67
  and cloud behavior identical unless the documentation names and explains a real
43
68
  platform capability difference.
44
69
 
70
+ For provider changes, inspect the supported implementation; mocks and local types
71
+ alone do not establish an API contract. Separate static/helper tests, tests with
72
+ simulated services, and real integration evidence. If the version or runtime is
73
+ unavailable, report that limit, not an assumed defect. For packaging changes,
74
+ check source, shipped bundle, and deployed files separately.
75
+
76
+ For scanners, check eligibility, permissions, caps, retries, unchanged runs, and
77
+ recovery for each action listed under triage. A launch cap does not permit
78
+ unlimited gate comments.
79
+
45
80
  ### Untrusted triggers and credentials
46
81
 
47
82
  Treat repository events, issue and PR comments, chat messages, catalog fields,
@@ -130,3 +165,11 @@ Do not comment on punctuation, preferred prose tone, optional DRY cleanup, or
130
165
  hypothetical non-standard configurations without a supported failure mode. Before
131
166
  raising a finding, verify that the referenced file and behavior are present in
132
167
  the current PR head and have not already been addressed in review history.
168
+
169
+ ## Review verdict
170
+
171
+ Do not approve material code defects or unmet blocking merge/evidence checks.
172
+ Distinguish code defects from missing merge requirements and optional follow-up.
173
+ If GitHub forbids self-approval of a clean PR, use COMMENT and explain why.
174
+ Respect accepted scope and non-goals: block on a pre-existing limitation only if
175
+ this change exposes it.
@@ -14,15 +14,15 @@ jobs:
14
14
  - uses: actions/checkout@v7
15
15
  - uses: actions/setup-node@v7
16
16
  with:
17
- node-version: "20"
17
+ node-version: "24"
18
18
  - name: Build installable App package
19
19
  run: node apps/vscode/scripts/package.mjs
20
20
  - name: Validate package files
21
21
  run: |
22
22
  test -f dist/apps/vscode/canvas-extension.json
23
23
  test -f dist/apps/vscode/extension.js
24
- test -f dist/apps/vscode/backend/openvscode-linux-amd64.tar.gz
25
- test -f dist/apps/vscode/backend/openvscode-linux-arm64.tar.gz
24
+ test -f dist/apps/vscode/README.md
25
+ test -z "$(find dist/apps/vscode -type f -name '*.tar.gz' -print -quit)"
26
26
  - uses: actions/upload-artifact@v7
27
27
  with:
28
28
  name: vscode-app-${{ github.sha }}
@@ -16,7 +16,7 @@ jobs:
16
16
  - name: Setup Node.js
17
17
  uses: actions/setup-node@v7
18
18
  with:
19
- node-version: "20"
19
+ node-version: "24"
20
20
 
21
21
  - name: Install Claude Code CLI
22
22
  run: npm install -g @anthropic-ai/claude-code
@@ -23,7 +23,7 @@ jobs:
23
23
  - name: Setup Node.js
24
24
  uses: actions/setup-node@v7
25
25
  with:
26
- node-version: "20"
26
+ node-version: "24"
27
27
 
28
28
  - name: Run tests
29
29
  run: uv run --group test pytest tests/
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.30.0"
3
+ }
@@ -6,7 +6,7 @@ It contains **shareable skills and plugins** that can be loaded by OpenHands (CL
6
6
 
7
7
  ## Cross-Repository Boundaries
8
8
 
9
- This repository owns the public registry of reusable OpenHands skills, plugins, automations, and integrations. These extensions are consumed by OpenHands applications and SDK-based clients.
9
+ This repository owns the public registry of reusable OpenHands skills, plugins, Agent Canvas Apps, automations, and integrations. These extensions are consumed by OpenHands applications and SDK-based clients.
10
10
 
11
11
  Related repositories have distinct responsibilities:
12
12
 
@@ -49,7 +49,12 @@ Before opening a PR:
49
49
  - `plugins/<plugin-name>/hooks/` — lifecycle hooks (optional)
50
50
  - `plugins/<plugin-name>/scripts/` — utility scripts (optional)
51
51
 
52
- There is no application code here; the primary artifacts are Markdown skill definitions and plugin configurations, which can contain `scripts/`, `hooks/` sub-directories.
52
+ - `apps/` — a catalog of Agent Canvas Apps (beta), **one directory per app**.
53
+ - `apps/<app-name>/canvas-extension.json` — the App manifest (Canvas Extensions API v1)
54
+ - `apps/<app-name>/extension.js` — the browser ESM entrypoint exporting `activate(host)`
55
+ - `apps/catalog.json` — the registry catalog, exposed as `APPS_CATALOG` from `@openhands/extensions/apps`
56
+
57
+ Most content is Markdown skill definitions and plugin configurations; the executable parts are plugin `scripts/` and `hooks/` plus the browser ESM App packages under `apps/`, each of which may ship its own `scripts/` and build sub-directories.
53
58
 
54
59
  ## How client code uses this repo
55
60
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhands-extensions
3
- Version: 0.28.0
3
+ Version: 0.30.0
4
4
  Summary: OpenHands extensions, plugins, and skills (Python bindings for the integration catalog)
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -154,10 +154,10 @@ Official skills and plugins for OpenHands — the open-source AI software engine
154
154
  | github-repo-monitor | skill | Create a cron automation that polls a GitHub repository for issue and PR comments containing a configurable trigger p... | `/github-monitor:poll` |
155
155
  | github-stale-ci-pr-closer | skill | Warn and close abandoned pull requests whose required CI remains failing. | `/github-stale-ci-pr-closer` |
156
156
  | gitlab | skill | Interact with GitLab repositories, merge requests, and APIs using the GITLAB_TOKEN environment variable. Use when wor... | — |
157
- | gitlab-issue-to-mr | skill | Create an automation that implements GitLab issues when a configurable trigger label is applied. Clones the default b... | `/issue-to-mr:setup` |
157
+ | gitlab-issue-to-mr | skill | Create an automation that implements GitLab issues when a configurable trigger label is applied. Polls the projects d... | `/issue-to-mr:setup` |
158
158
  | incident-retrospective | skill | Create an automation that drafts incident retrospectives by gathering incident-channel messages from Slack, collectin... | `/incident-retro:setup` |
159
159
  | iterate | skill | Iterate on a GitHub pull request — drive it through CI, code review, and QA until merge-ready. Monitors state, fixes ... | `/iterate`, `/verify`, `/babysit` |
160
- | jira-issue-to-pr | skill | Deploy a cron-based OpenHands automation that watches a Jira Cloud project for issues labeled with a configurable lab... | — |
160
+ | jira-issue-to-pr | skill | Deploy a cron-based OpenHands automation that opens a GitHub pull request, a GitLab merge request or a Bitbucket pull... | — |
161
161
  | jupyter | skill | Read, modify, execute, and convert Jupyter notebooks programmatically. Use when working with .ipynb files for data sc... | — |
162
162
  | kubernetes | skill | Set up and manage local Kubernetes clusters using KIND (Kubernetes IN Docker). Use when testing Kubernetes applicatio... | — |
163
163
  | learn-from-code-review | skill | Distill code review feedback from GitHub PRs into reusable skills and guidelines. Use when users ask to learn from co... | `/learn-from-reviews` |
@@ -190,7 +190,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
190
190
  | swift-linux | skill | Install and configure Swift programming language on Debian Linux for server-side development. Use when building Swift... | — |
191
191
  | technical-writing | skill | Write and revise technical explanations in flowing, direct, conversational prose that stays concise without becoming ... | — |
192
192
  | theme-factory | skill | Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc.... | — |
193
- | ticket-to-code-change | skill | Set up Jira or Linear ticket-to-code-change automations for GitHub, GitLab, and Bitbucket. | `/ticket-to-code-change:setup` |
193
+ | ticket-to-code-change | skill | Set up Linear ticket-to-code-change automations for GitHub, GitLab, and Bitbucket. | `/ticket-to-code-change:setup` |
194
194
  | upstream-fork-sync | skill | Keep a long-lived fork in sync with its upstream. Creates a cron automation that fetches upstream changes, rebases lo... | `/upstream-fork-sync:setup` |
195
195
  | use-jev | skill | Use Jev, a general classifier, for typed choices, scores, and yes/no probabilities in software. | — |
196
196
  | uv | skill | Common project, dependency, and environment operations using uv. | — |
@@ -0,0 +1,15 @@
1
+ # VS Code App
2
+
3
+ Install this App in Agent Canvas by opening **Apps → Add App** and entering:
4
+
5
+ ```text
6
+ https://github.com/OpenHands/extensions/tree/main/apps/vscode
7
+ ```
8
+
9
+ The App provides a full-height OpenVSCode editor. Before the backend is ready, it shows backend status, an optional workspace-folder input, and revision-bound prepare/start/stop/refresh actions. Once ready, the page contains only the editor iframe.
10
+
11
+ ## Artifact delivery
12
+
13
+ The repository contains no OpenVSCode binaries. During the explicit **Prepare and start** step, Agent Server downloads only the current platform's pinned OpenVSCode Server `v1.109.5` archive from its public GitHub Release, verifies the manifest-pinned SHA-256 digest, safely extracts it into an App-owned content-addressed cache, and starts it with App-owned home, user-data, and extensions directories. It does not send Agent Server or repository credentials to the artifact host.
14
+
15
+ The optional folder is persisted in browser storage and forwarded as the editor folder. It is a user convenience, not OS sandboxing.
@@ -0,0 +1,27 @@
1
+ {
2
+ "schema_version": 1,
3
+ "name": "vscode",
4
+ "display_name": "VS Code",
5
+ "version": "0.1.0",
6
+ "description": "A managed OpenVSCode editor for the selected Agent Canvas workspace.",
7
+ "entrypoint": "extension.js",
8
+ "contributes": {"pages": [{"id": "editor", "title": "VS Code", "path": "/editor"}]},
9
+ "backend": {
10
+ "schema_version": 1,
11
+ "artifacts": {
12
+ "linux-amd64": {
13
+ "url": "https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v1.109.5/openvscode-server-v1.109.5-linux-x64.tar.gz",
14
+ "sha256": "b433bf4f0227321a7014d8460d10a8f958adc0f45aa79bd889e84e65e8f88363",
15
+ "strip_components": 1
16
+ },
17
+ "linux-arm64": {
18
+ "url": "https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v1.109.5/openvscode-server-v1.109.5-linux-arm64.tar.gz",
19
+ "sha256": "36d9c14036489b63de84ebace837fcacf7e60e669a0dc715802c5443684ea4dc",
20
+ "strip_components": 1
21
+ }
22
+ },
23
+ "argv": ["{artifact_dir}/bin/openvscode-server", "--host", "127.0.0.1", "--port", "{port}", "--without-connection-token", "--accept-server-license-terms", "--telemetry-level", "off", "--user-data-dir", "{data_dir}/user", "--extensions-dir", "{data_dir}/extensions", "--server-base-path", "/app-backends/vscode", "{data_dir}"],
24
+ "health": {"path": "/", "timeout_seconds": 90, "interval_seconds": 0.5},
25
+ "inherit_environment": ["PATH", "LANG", "LC_ALL", "TMPDIR"]
26
+ }
27
+ }
@@ -5,14 +5,32 @@ function folderKey(host) {
5
5
  return `${FOLDER_KEY_PREFIX}:${host.backend.id}:${host.backend.orgId || "local"}:${host.extension.name}`;
6
6
  }
7
7
 
8
- function button(label, onClick) {
8
+ function button(label, onClick, variant = "secondary") {
9
9
  const element = document.createElement("button");
10
10
  element.type = "button";
11
11
  element.textContent = label;
12
+ element.style.cssText = [
13
+ "min-height:40px",
14
+ "padding:0 18px",
15
+ "border-radius:8px",
16
+ "border:1px solid transparent",
17
+ "font:inherit",
18
+ "font-size:14px",
19
+ "font-weight:600",
20
+ "cursor:pointer",
21
+ "transition:opacity 120ms ease,background-color 120ms ease",
22
+ variant === "primary"
23
+ ? "background:#f3ce49;color:#171717"
24
+ : "background:#262626;color:#fafafa;border-color:#525252",
25
+ ].join(";");
12
26
  element.addEventListener("click", onClick);
13
27
  return element;
14
28
  }
15
29
 
30
+ function statusLabel(state) {
31
+ return state.charAt(0).toUpperCase() + state.slice(1);
32
+ }
33
+
16
34
  export function activate(host) {
17
35
  return host.registerPage("editor", async ({ container }) => {
18
36
  container.style.minHeight = "100vh";
@@ -54,26 +72,55 @@ export function activate(host) {
54
72
  return;
55
73
  }
56
74
 
75
+ shell.style.justifyContent = "center";
76
+ shell.style.alignItems = "center";
77
+ shell.style.padding = "32px";
78
+ shell.style.boxSizing = "border-box";
79
+
57
80
  const panel = document.createElement("section");
58
81
  panel.setAttribute("aria-live", "polite");
82
+ panel.style.cssText = "width:min(100%,520px);padding:32px;border:1px solid #262626;border-radius:12px;background:#0a0a0a;color:#fafafa;box-sizing:border-box;text-align:center";
59
83
  const heading = document.createElement("h2");
60
- heading.textContent = "VS Code setup";
61
- const detail = document.createElement("p");
62
- detail.textContent = status.detail || `Backend status: ${status.state}.`;
63
- panel.append(heading, detail);
84
+ heading.textContent = "Set up VS Code";
85
+ heading.style.cssText = "margin:0;font-size:24px;line-height:32px;font-weight:600";
86
+ const description = document.createElement("p");
87
+ description.textContent = "Start the secure VS Code backend for this Agent Canvas session. The first launch downloads and verifies the pinned editor package.";
88
+ description.style.cssText = "margin:12px auto 0;max-width:440px;color:#a3a3a3;font-size:14px;line-height:21px";
89
+ const statusRow = document.createElement("div");
90
+ statusRow.style.cssText = "display:flex;align-items:center;justify-content:center;gap:8px;margin:20px 0 24px;font-size:13px;color:#a3a3a3";
91
+ const statusDot = document.createElement("span");
92
+ statusDot.setAttribute("aria-hidden", "true");
93
+ statusDot.style.cssText = `width:8px;height:8px;border-radius:999px;background:${status.state === "unhealthy" ? "#fda4af" : "#737373"}`;
94
+ const detail = document.createElement("span");
95
+ detail.textContent = status.detail || `Backend status: ${statusLabel(status.state)}`;
96
+ statusRow.append(statusDot, detail);
97
+ panel.append(heading, description, statusRow);
98
+
99
+ const field = document.createElement("label");
100
+ field.style.cssText = "display:flex;flex-direction:column;gap:8px;text-align:left";
101
+ const fieldLabel = document.createElement("span");
102
+ fieldLabel.textContent = "Workspace folder";
103
+ fieldLabel.style.cssText = "font-size:13px;font-weight:500;color:#fafafa";
64
104
  const folder = document.createElement("input");
65
105
  folder.type = "text";
66
- folder.placeholder = "Workspace folder path (optional)";
106
+ folder.placeholder = "Optional path to open in VS Code";
67
107
  folder.value = localStorage.getItem(storageKey) || "";
68
108
  folder.setAttribute("aria-label", "Workspace folder path");
69
- panel.append(folder);
70
- const actions = document.createElement("p");
109
+ folder.style.cssText = "width:100%;height:42px;padding:0 12px;border:1px solid #525252;border-radius:8px;background:#1a1a1a;color:#fafafa;font:inherit;font-size:14px;box-sizing:border-box;outline:none";
110
+ const hint = document.createElement("span");
111
+ hint.textContent = "Leave blank to open the default App workspace.";
112
+ hint.style.cssText = "font-size:12px;color:#8c8c8c";
113
+ field.append(fieldLabel, folder, hint);
114
+ panel.append(field);
115
+
116
+ const actions = document.createElement("div");
117
+ actions.style.cssText = "display:flex;justify-content:center;gap:10px;margin-top:24px;flex-wrap:wrap";
71
118
  if (status.state === "missing" || status.state === "stopped" || status.state === "unhealthy") {
72
119
  actions.append(button("Prepare and start", async () => {
73
120
  const selectedFolder = folder.value.trim();
74
121
  if (selectedFolder) localStorage.setItem(storageKey, selectedFolder);
75
122
  else localStorage.removeItem(storageKey);
76
- actions.replaceChildren(document.createTextNode("Preparing..."));
123
+ actions.replaceChildren(document.createTextNode("Preparing and verifying VS Code..."));
77
124
  try {
78
125
  let approval = status;
79
126
  if (!approval.revision) approval = await request("GET");
@@ -90,14 +137,15 @@ export function activate(host) {
90
137
  render(await request("GET"));
91
138
  } catch (error) {
92
139
  detail.textContent = `Setup failed: ${error.message}`;
93
- actions.replaceChildren(button("Prepare and start", () => render(status)));
140
+ statusDot.style.background = "#fda4af";
141
+ actions.replaceChildren(button("Try again", () => render(status), "primary"));
94
142
  }
95
- }));
143
+ }, "primary"));
96
144
  }
97
145
  if (status.state === "ready" || status.state === "starting") {
98
146
  actions.append(button("Stop", async () => render(await request("POST", `${BACKEND}/stop`))));
99
147
  }
100
- actions.append(button("Refresh", async () => render(await request("GET"))));
148
+ actions.append(button("Refresh status", async () => render(await request("GET"))));
101
149
  panel.append(actions);
102
150
  shell.append(panel);
103
151
  };
@@ -0,0 +1,30 @@
1
+ import { cp, mkdir, readFile, rm } from "node:fs/promises";
2
+ import path from "node:path";
3
+
4
+ const appRoot = path.resolve(new URL("..", import.meta.url).pathname);
5
+ const root = path.resolve(appRoot, "../..");
6
+ const output = path.resolve(process.env.OUTPUT_DIR ?? path.join(root, "dist"));
7
+ const packageRoot = path.join(output, "apps", "vscode");
8
+ const manifest = JSON.parse(
9
+ await readFile(path.join(appRoot, "canvas-extension.json"), "utf8"),
10
+ );
11
+
12
+ for (const [platform, artifact] of Object.entries(manifest.backend.artifacts)) {
13
+ const url = new URL(artifact.url);
14
+ if (url.protocol !== "https:" || !url.pathname.endsWith(".tar.gz")) {
15
+ throw new Error(`${platform}: invalid HTTPS artifact URL`);
16
+ }
17
+ if (!/^[0-9a-f]{64}$/.test(artifact.sha256)) {
18
+ throw new Error(`${platform}: invalid SHA-256`);
19
+ }
20
+ if (!Number.isInteger(artifact.strip_components) || artifact.strip_components < 0) {
21
+ throw new Error(`${platform}: invalid strip_components`);
22
+ }
23
+ }
24
+
25
+ await rm(packageRoot, { recursive: true, force: true });
26
+ await mkdir(packageRoot, { recursive: true });
27
+ for (const filename of ["canvas-extension.json", "extension.js", "README.md"]) {
28
+ await cp(path.join(appRoot, filename), path.join(packageRoot, filename));
29
+ }
30
+ console.log(`Wrote source-installable App package to ${packageRoot}`);