openhands-extensions 0.20.0__tar.gz → 0.22.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 (633) hide show
  1. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/check-extensions.yml +4 -0
  2. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/npm-publish.yml +9 -3
  3. openhands_extensions-0.22.0/.github/workflows/pr-artifacts.yml +294 -0
  4. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/pr-description-check.yml +4 -2
  5. openhands_extensions-0.22.0/.release-please-manifest.json +3 -0
  6. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/AGENTS.md +27 -3
  7. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/PKG-INFO +1 -1
  8. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/README.md +6 -2
  9. openhands_extensions-0.22.0/automations/bundle-index.js +37 -0
  10. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/github-agents-md-maintainer/manifest.json +2 -1
  11. openhands_extensions-0.22.0/automations/catalog/github-delivery-watchdog/manifest.json +79 -0
  12. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/github-issue-to-pr/manifest.json +24 -15
  13. openhands_extensions-0.22.0/automations/catalog/github-issue-triage/manifest.json +73 -0
  14. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/github-pr-reviewer/manifest.json +23 -15
  15. openhands_extensions-0.22.0/automations/catalog/gitlab-issue-to-mr/manifest.json +124 -0
  16. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog-index.js +17 -11
  17. openhands_extensions-0.22.0/integrations/catalog/reportportal.json +76 -0
  18. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog-index.js +6 -4
  19. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/marketplaces/openhands-extensions.json +42 -0
  20. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/package.json +1 -1
  21. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/README.md +1 -1
  22. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/SKILL.md +18 -8
  23. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-sdk/SKILL.md +2 -0
  24. openhands_extensions-0.22.0/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +143 -0
  25. openhands_extensions-0.22.0/plugins/vulnerability-remediation/skills/github/scripts/github_client.py +230 -0
  26. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/pyproject.toml +2 -2
  27. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/_version.py +1 -1
  28. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/SKILL.md +7 -1
  29. openhands_extensions-0.22.0/skills/github-agents-md-maintainer/scripts/github_client.py +1 -0
  30. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/scripts/main.py +4 -40
  31. openhands_extensions-0.22.0/skills/github-delivery-watchdog/.claude-plugin/plugin.json +9 -0
  32. openhands_extensions-0.22.0/skills/github-delivery-watchdog/README.md +10 -0
  33. openhands_extensions-0.22.0/skills/github-delivery-watchdog/SKILL.md +35 -0
  34. openhands_extensions-0.22.0/skills/github-delivery-watchdog/commands/github-delivery-watchdog.md +8 -0
  35. openhands_extensions-0.22.0/skills/github-delivery-watchdog/scripts/github_client.py +1 -0
  36. openhands_extensions-0.22.0/skills/github-delivery-watchdog/scripts/worker.py +96 -0
  37. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/SKILL.md +15 -1
  38. openhands_extensions-0.22.0/skills/github-issue-to-pr/scripts/agent_conversation.py +1 -0
  39. openhands_extensions-0.22.0/skills/github-issue-to-pr/scripts/github_client.py +1 -0
  40. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/scripts/main.py +19 -50
  41. openhands_extensions-0.22.0/skills/github-issue-to-pr/scripts/worker.py +172 -0
  42. openhands_extensions-0.22.0/skills/github-issue-triage/.claude-plugin/plugin.json +9 -0
  43. openhands_extensions-0.22.0/skills/github-issue-triage/README.md +9 -0
  44. openhands_extensions-0.22.0/skills/github-issue-triage/SKILL.md +34 -0
  45. openhands_extensions-0.22.0/skills/github-issue-triage/commands/github-issue-triage.md +8 -0
  46. openhands_extensions-0.22.0/skills/github-issue-triage/scripts/agent_conversation.py +1 -0
  47. openhands_extensions-0.22.0/skills/github-issue-triage/scripts/github_client.py +1 -0
  48. openhands_extensions-0.22.0/skills/github-issue-triage/scripts/worker.py +106 -0
  49. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/SKILL.md +15 -1
  50. openhands_extensions-0.22.0/skills/github-pr-reviewer/scripts/agent_conversation.py +1 -0
  51. openhands_extensions-0.22.0/skills/github-pr-reviewer/scripts/github_client.py +1 -0
  52. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/scripts/main.py +23 -49
  53. openhands_extensions-0.22.0/skills/github-pr-reviewer/scripts/worker.py +94 -0
  54. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/SKILL.md +7 -1
  55. openhands_extensions-0.22.0/skills/github-repo-monitor/scripts/github_client.py +1 -0
  56. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/scripts/main.py +4 -46
  57. openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/.claude-plugin/plugin.json +19 -0
  58. openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/README.md +92 -0
  59. openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/SKILL.md +408 -0
  60. openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/commands/issue-to-mr-setup.md +8 -0
  61. openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/references/state-schema.md +140 -0
  62. openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/scripts/main.py +1448 -0
  63. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/index.js +52 -6
  64. openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/.claude-plugin/plugin.json +20 -0
  65. openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/README.md +79 -0
  66. openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/SKILL.md +339 -0
  67. openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/references/diagnostics.md +698 -0
  68. openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/references/support-bundle-analysis.md +570 -0
  69. openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/scripts/bundle_triage.py +532 -0
  70. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/capabilities.json +6 -3
  71. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/github-pr-reviewer.json +64 -43
  72. openhands_extensions-0.22.0/tests/github_automation_helpers.py +31 -0
  73. openhands_extensions-0.22.0/tests/test_agent_conversation_dispatch.py +180 -0
  74. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_automation_setup.py +3 -3
  75. openhands_extensions-0.22.0/tests/test_github_automation_foundation.py +73 -0
  76. openhands_extensions-0.22.0/tests/test_github_developer_delivery.py +150 -0
  77. openhands_extensions-0.22.0/tests/test_github_reviewer_delivery.py +110 -0
  78. openhands_extensions-0.22.0/tests/test_github_skill_installation.py +63 -0
  79. openhands_extensions-0.22.0/tests/test_github_triage_delivery.py +90 -0
  80. openhands_extensions-0.22.0/tests/test_github_watchdog_delivery.py +233 -0
  81. openhands_extensions-0.22.0/tests/test_gitlab_issue_to_mr.py +823 -0
  82. openhands_extensions-0.20.0/.pr/custom-automation-event-trigger.png +0 -0
  83. openhands_extensions-0.20.0/.pr/custom-automation-plugin-fields.png +0 -0
  84. openhands_extensions-0.20.0/.pr/custom-automation-prompt-review.png +0 -0
  85. openhands_extensions-0.20.0/.pr/custom-automation-prompt-scheduled.png +0 -0
  86. openhands_extensions-0.20.0/.pr/custom-automation-upload-fields.png +0 -0
  87. openhands_extensions-0.20.0/.release-please-manifest.json +0 -3
  88. openhands_extensions-0.20.0/automations/bundle-index.js +0 -18
  89. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.agents/skills/custom-codereview-guide.md +0 -0
  90. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.claude-plugin/marketplace.json +0 -0
  91. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/dependabot.yml +0 -0
  92. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/pull_request_template.md +0 -0
  93. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/release.yml +0 -0
  94. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/scripts/check_issue_readiness.py +0 -0
  95. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/scripts/check_pr_description.py +0 -0
  96. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/scripts/post-readiness-comment.mjs +0 -0
  97. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/scripts/refresh_linked_pr_checks.py +0 -0
  98. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/deprecation-check.yml +0 -0
  99. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/issue-readiness-check.yml +0 -0
  100. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/pr.yml +0 -0
  101. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/pypi-publish.yml +0 -0
  102. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/release.yml +0 -0
  103. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/tests.yml +0 -0
  104. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/vulnerability-scan.yml +0 -0
  105. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.gitignore +0 -0
  106. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/LICENSE +0 -0
  107. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/MIGRATION.md +0 -0
  108. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/analysis_results.md +0 -0
  109. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/README.md +0 -0
  110. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/custom-automation/manifest.json +0 -0
  111. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/github-repo-monitor/manifest.json +0 -0
  112. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/incident-retrospective-drafter/manifest.json +0 -0
  113. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/jira-issue-to-bitbucket-pr/manifest.json +0 -0
  114. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/jira-issue-to-gitlab-mr/manifest.json +0 -0
  115. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/jira-issue-to-pr/manifest.json +0 -0
  116. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/linear-issue-to-bitbucket-pr/manifest.json +0 -0
  117. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/linear-issue-to-github-pr/manifest.json +0 -0
  118. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/linear-issue-to-gitlab-mr/manifest.json +0 -0
  119. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/linear-triage-assistant/manifest.json +0 -0
  120. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/news-digest/manifest.json +0 -0
  121. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/qa-changes/manifest.json +0 -0
  122. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/research-brief-writer/manifest.json +0 -0
  123. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/slack-channel-monitor/manifest.json +0 -0
  124. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/slack-github-linear-daily-organization.json +0 -0
  125. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/slack-standup-digest/manifest.json +0 -0
  126. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/upstream-fork-sync/manifest.json +0 -0
  127. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog.schema.json +0 -0
  128. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/index.d.ts +0 -0
  129. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/index.js +0 -0
  130. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/interface.json +0 -0
  131. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/interface.schema.json +0 -0
  132. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/index.d.ts +0 -0
  133. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/index.js +0 -0
  134. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/README.md +0 -0
  135. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/airtable.json +0 -0
  136. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/apify.json +0 -0
  137. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/asana.json +0 -0
  138. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/atlassian-rovo.json +0 -0
  139. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/atlassian.json +0 -0
  140. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/bitbucket.json +0 -0
  141. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/box.json +0 -0
  142. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/brave-search.json +0 -0
  143. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/browser-mcp.json +0 -0
  144. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/canva.json +0 -0
  145. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/clickhouse.json +0 -0
  146. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-bindings.json +0 -0
  147. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-browser-rendering.json +0 -0
  148. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-builds.json +0 -0
  149. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-docs.json +0 -0
  150. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-observability.json +0 -0
  151. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/confluence.json +0 -0
  152. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/datadog.json +0 -0
  153. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/deepwiki.json +0 -0
  154. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/discord.json +0 -0
  155. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/elevenlabs.json +0 -0
  156. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/everything.json +0 -0
  157. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/exa.json +0 -0
  158. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/fetch.json +0 -0
  159. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/figma.json +0 -0
  160. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/filesystem.json +0 -0
  161. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/firecrawl.json +0 -0
  162. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/git.json +0 -0
  163. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/github.json +0 -0
  164. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/gitlab.json +0 -0
  165. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/gmail.json +0 -0
  166. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/google-calendar.json +0 -0
  167. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/google-docs.json +0 -0
  168. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/google-drive.json +0 -0
  169. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/google-sheets.json +0 -0
  170. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/hubspot.json +0 -0
  171. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/huggingface.json +0 -0
  172. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/intercom.json +0 -0
  173. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/jira.json +0 -0
  174. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/kagi.json +0 -0
  175. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/linear.json +0 -0
  176. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/memory.json +0 -0
  177. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/microsoft-outlook.json +0 -0
  178. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/microsoft-teams.json +0 -0
  179. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/miro.json +0 -0
  180. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/monday.json +0 -0
  181. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/mongodb.json +0 -0
  182. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/neon.json +0 -0
  183. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/netlify.json +0 -0
  184. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/notion.json +0 -0
  185. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/obsidian.json +0 -0
  186. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/okta.json +0 -0
  187. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/onedrive.json +0 -0
  188. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/ordinal.json +0 -0
  189. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/paypal.json +0 -0
  190. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/playwright.json +0 -0
  191. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/posthog.json +0 -0
  192. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/quickbooks.json +0 -0
  193. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/redis.json +0 -0
  194. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/resend.json +0 -0
  195. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/salesforce.json +0 -0
  196. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/sentry.json +0 -0
  197. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/sequential-thinking.json +0 -0
  198. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/sharepoint.json +0 -0
  199. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/slack.json +0 -0
  200. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/sonarqube.json +0 -0
  201. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/stripe.json +0 -0
  202. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/supabase.json +0 -0
  203. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/superhuman-mail.json +0 -0
  204. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/tavily.json +0 -0
  205. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/time.json +0 -0
  206. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/trello.json +0 -0
  207. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/vanta.json +0 -0
  208. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/vercel.json +0 -0
  209. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/webflow.json +0 -0
  210. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/xero.json +0 -0
  211. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/zoom.json +0 -0
  212. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog.schema.json +0 -0
  213. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/icons/salesforce.svg +0 -0
  214. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/icons/slack.svg +0 -0
  215. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/index.d.ts +0 -0
  216. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/index.js +0 -0
  217. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/marketplaces/large-codebase.json +0 -0
  218. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/README.md +0 -0
  219. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/city-weather/.claude-plugin/plugin.json +0 -0
  220. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/city-weather/README.md +0 -0
  221. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/city-weather/commands/now.md +0 -0
  222. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/.claude-plugin/plugin.json +0 -0
  223. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/README.md +0 -0
  224. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/references/troubleshooting.md +0 -0
  225. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/build-setup/SKILL.md +0 -0
  226. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +0 -0
  227. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +0 -0
  228. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +0 -0
  229. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/mainframe-removal/SKILL.md +0 -0
  230. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/mainframe-removal/references/cics-transformation-examples.md +0 -0
  231. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +0 -0
  232. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +0 -0
  233. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +0 -0
  234. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +0 -0
  235. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/README.md +0 -0
  236. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/action.yml +0 -0
  237. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +0 -0
  238. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +0 -0
  239. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.cjs +0 -0
  240. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.cjs +0 -0
  241. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/magic-test/.claude-plugin/plugin.json +0 -0
  242. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/magic-test/skills/magic-word/SKILL.md +0 -0
  243. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/.claude-plugin/plugin.json +0 -0
  244. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/README.md +0 -0
  245. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/migration-mapping/SKILL.md +0 -0
  246. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/migration-report/SKILL.md +0 -0
  247. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/migration-scoring/SKILL.md +0 -0
  248. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/score-quality/SKILL.md +0 -0
  249. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +0 -0
  250. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/score-style/SKILL.md +0 -0
  251. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/.claude-plugin/plugin.json +0 -0
  252. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/README.md +0 -0
  253. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/references/criteria.md +0 -0
  254. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/README.md +0 -0
  255. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/SKILL.md +0 -0
  256. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +0 -0
  257. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +0 -0
  258. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +0 -0
  259. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +0 -0
  260. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +0 -0
  261. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +0 -0
  262. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/improve-agent-readiness/README.md +0 -0
  263. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +0 -0
  264. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +0 -0
  265. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-agents-md/README.md +0 -0
  266. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-agents-md/SKILL.md +0 -0
  267. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-openhands/README.md +0 -0
  268. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-openhands/SKILL.md +0 -0
  269. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-pr-review/README.md +0 -0
  270. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-pr-review/SKILL.md +0 -0
  271. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/.claude-plugin/plugin.json +0 -0
  272. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/README.md +0 -0
  273. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/SKILL.md +0 -0
  274. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/commands/create.md +0 -0
  275. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/commands/openhands-cloud.md +0 -0
  276. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/scripts/run.sh +0 -0
  277. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +0 -0
  278. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/README.md +0 -0
  279. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/SKILL.md +0 -0
  280. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/references/README.md +0 -0
  281. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +0 -0
  282. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/references/example_prompt.md +0 -0
  283. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/references/windows.md +0 -0
  284. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +0 -0
  285. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +0 -0
  286. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +0 -0
  287. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/commands/automation-create.md +0 -0
  288. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/references/ab-testing.md +0 -0
  289. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/references/custom-automation.md +0 -0
  290. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/references/security.md +0 -0
  291. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/references/windows.md +0 -0
  292. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +0 -0
  293. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-sdk/README.md +0 -0
  294. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-sdk/commands/sdk.md +0 -0
  295. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/.claude-plugin/plugin.json +0 -0
  296. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/README.md +0 -0
  297. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/action.yml +0 -0
  298. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/scripts/agent_script.py +0 -0
  299. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/scripts/evaluate_review.py +0 -0
  300. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/scripts/prompt.py +0 -0
  301. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +0 -0
  302. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/README.md +0 -0
  303. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/SKILL.md +0 -0
  304. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +0 -0
  305. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/commands/codereview.md +0 -0
  306. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/references/risk-evaluation.md +0 -0
  307. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/references/supply-chain-security.md +0 -0
  308. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +0 -0
  309. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/README.md +0 -0
  310. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/SKILL.md +0 -0
  311. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +0 -0
  312. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/references/windows.md +0 -0
  313. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/workflows/pr-review-by-openhands.yml +0 -0
  314. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/workflows/pr-review-evaluation.yml +0 -0
  315. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/.claude-plugin/plugin.json +0 -0
  316. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/README.md +0 -0
  317. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/action.yml +0 -0
  318. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/scripts/agent_script.py +0 -0
  319. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/scripts/evaluate_qa_changes.py +0 -0
  320. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/scripts/prompt.py +0 -0
  321. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/skills/qa-changes/README.md +0 -0
  322. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/skills/qa-changes/SKILL.md +0 -0
  323. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +0 -0
  324. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +0 -0
  325. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/workflows/qa-changes-evaluation.yml +0 -0
  326. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/.claude-plugin/plugin.json +0 -0
  327. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/README.md +0 -0
  328. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/SKILL.md +0 -0
  329. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/action.yml +0 -0
  330. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/commands/release-notes.md +0 -0
  331. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/scripts/agent_script.py +0 -0
  332. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/scripts/generate_release_notes.py +0 -0
  333. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/scripts/prompt.py +0 -0
  334. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/scripts/validate_release_notes.py +0 -0
  335. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/skills/release-notes/README.md +0 -0
  336. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/skills/release-notes/SKILL.md +0 -0
  337. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/skills/release-notes/commands/release-notes.md +0 -0
  338. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/workflows/release-notes.yml +0 -0
  339. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/.claude-plugin/plugin.json +0 -0
  340. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/README.md +0 -0
  341. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/action.yml +0 -0
  342. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +0 -0
  343. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +0 -0
  344. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/github/README.md +0 -0
  345. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/github/SKILL.md +0 -0
  346. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/github/references/windows.md +0 -0
  347. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +0 -0
  348. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/security/README.md +0 -0
  349. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/security/SKILL.md +0 -0
  350. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +0 -0
  351. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/__init__.py +0 -0
  352. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/deprecation.py +0 -0
  353. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/integration_models.py +0 -0
  354. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/integrations.py +0 -0
  355. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/release-please-config.json +0 -0
  356. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/build-automation-catalog.mjs +0 -0
  357. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/build-integration-catalog.mjs +0 -0
  358. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/build-skills-catalog.mjs +0 -0
  359. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/check_deprecations.py +0 -0
  360. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/sync_extensions.py +0 -0
  361. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/sync_openhands_sdk_skill.py +0 -0
  362. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/README.md +0 -0
  363. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-javadoc/.claude-plugin/plugin.json +0 -0
  364. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-javadoc/README.md +0 -0
  365. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-javadoc/SKILL.md +0 -0
  366. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-javadoc/references/example.md +0 -0
  367. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-skill/.claude-plugin/plugin.json +0 -0
  368. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-skill/README.md +0 -0
  369. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-skill/SKILL.md +0 -0
  370. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-skill/scripts/fetch_skill.py +0 -0
  371. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-canvas-environment/.claude-plugin/plugin.json +0 -0
  372. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-canvas-environment/README.md +0 -0
  373. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-canvas-environment/SKILL.md +0 -0
  374. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/.claude-plugin/plugin.json +0 -0
  375. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/README.md +0 -0
  376. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/SKILL.md +0 -0
  377. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/commands/agent-creator.md +0 -0
  378. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/references/fallback.md +0 -0
  379. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-memory/.claude-plugin/plugin.json +0 -0
  380. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-memory/README.md +0 -0
  381. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-memory/SKILL.md +0 -0
  382. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-memory/commands/remember.md +0 -0
  383. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-sdk-builder/.claude-plugin/plugin.json +0 -0
  384. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-sdk-builder/README.md +0 -0
  385. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-sdk-builder/SKILL.md +0 -0
  386. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-sdk-builder/commands/agent-builder.md +0 -0
  387. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/azure-devops/.claude-plugin/plugin.json +0 -0
  388. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/azure-devops/README.md +0 -0
  389. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/azure-devops/SKILL.md +0 -0
  390. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket/.claude-plugin/plugin.json +0 -0
  391. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket/README.md +0 -0
  392. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket/SKILL.md +0 -0
  393. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-cloud/.claude-plugin/plugin.json +0 -0
  394. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-cloud/README.md +0 -0
  395. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-cloud/SKILL.md +0 -0
  396. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-data-center/.claude-plugin/plugin.json +0 -0
  397. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-data-center/README.md +0 -0
  398. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-data-center/SKILL.md +0 -0
  399. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/.claude-plugin/plugin.json +0 -0
  400. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/README.md +0 -0
  401. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/SKILL.md +0 -0
  402. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/commands/simplify.md +0 -0
  403. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/references/code-quality-review.md +0 -0
  404. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/references/code-reuse-review.md +0 -0
  405. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/references/efficiency-review.md +0 -0
  406. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/datadog/.claude-plugin/plugin.json +0 -0
  407. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/datadog/README.md +0 -0
  408. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/datadog/SKILL.md +0 -0
  409. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/datadog/references/windows.md +0 -0
  410. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/deno/.claude-plugin/plugin.json +0 -0
  411. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/deno/README.md +0 -0
  412. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/deno/SKILL.md +0 -0
  413. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/deno/references/README.md +0 -0
  414. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/.claude-plugin/plugin.json +0 -0
  415. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/README.md +0 -0
  416. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/SKILL.md +0 -0
  417. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/__init__.py +0 -0
  418. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/references/REFERENCE.md +0 -0
  419. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/scripts/__init__.py +0 -0
  420. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/scripts/_http.py +0 -0
  421. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/scripts/post_webhook.py +0 -0
  422. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/scripts/send_message.py +0 -0
  423. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/docker/.claude-plugin/plugin.json +0 -0
  424. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/docker/README.md +0 -0
  425. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/docker/SKILL.md +0 -0
  426. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/evidence-based-citations/.claude-plugin/plugin.json +0 -0
  427. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/evidence-based-citations/README.md +0 -0
  428. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/evidence-based-citations/SKILL.md +0 -0
  429. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/flarglebargle/.claude-plugin/plugin.json +0 -0
  430. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/flarglebargle/README.md +0 -0
  431. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/flarglebargle/SKILL.md +0 -0
  432. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/frontend-design/.claude-plugin/plugin.json +0 -0
  433. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/frontend-design/LICENSE.txt +0 -0
  434. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/frontend-design/README.md +0 -0
  435. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/frontend-design/SKILL.md +0 -0
  436. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-actions/.claude-plugin/plugin.json +0 -0
  437. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-actions/README.md +0 -0
  438. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-actions/SKILL.md +0 -0
  439. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/.claude-plugin/plugin.json +0 -0
  440. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/README.md +0 -0
  441. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/commands/agents-md-setup.md +0 -0
  442. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/references/state-schema.md +0 -0
  443. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/.claude-plugin/plugin.json +0 -0
  444. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/README.md +0 -0
  445. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/commands/issue-to-pr-setup.md +0 -0
  446. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/references/state-schema.md +0 -0
  447. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/.claude-plugin/plugin.json +0 -0
  448. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/README.md +0 -0
  449. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/commands/pr-reviewer-setup.md +0 -0
  450. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/references/state-schema.md +0 -0
  451. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/references/windows.md +0 -0
  452. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/tests/test_main.py +0 -0
  453. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/.claude-plugin/plugin.json +0 -0
  454. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/README.md +0 -0
  455. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/commands/github-monitor-poll.md +0 -0
  456. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/references/github-api.md +0 -0
  457. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/references/state-schema.md +0 -0
  458. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/references/windows.md +0 -0
  459. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/tests/test_main.py +0 -0
  460. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/gitlab/.claude-plugin/plugin.json +0 -0
  461. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/gitlab/README.md +0 -0
  462. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/gitlab/SKILL.md +0 -0
  463. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/incident-retrospective/.claude-plugin/plugin.json +0 -0
  464. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/incident-retrospective/README.md +0 -0
  465. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/incident-retrospective/SKILL.md +0 -0
  466. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/incident-retrospective/commands/incident-retro-setup.md +0 -0
  467. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/index.d.ts +0 -0
  468. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/.claude-plugin/plugin.json +0 -0
  469. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/README.md +0 -0
  470. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/SKILL.md +0 -0
  471. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/commands/babysit.md +0 -0
  472. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/commands/iterate.md +0 -0
  473. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/commands/verify.md +0 -0
  474. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/references/heuristics.md +0 -0
  475. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/references/verification.md +0 -0
  476. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/references/windows.md +0 -0
  477. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/.claude-plugin/plugin.json +0 -0
  478. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/README.md +0 -0
  479. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/SKILL.md +0 -0
  480. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/references/setup.md +0 -0
  481. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/scripts/main.py +0 -0
  482. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jupyter/.claude-plugin/plugin.json +0 -0
  483. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jupyter/README.md +0 -0
  484. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jupyter/SKILL.md +0 -0
  485. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/kubernetes/.claude-plugin/plugin.json +0 -0
  486. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/kubernetes/README.md +0 -0
  487. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/kubernetes/SKILL.md +0 -0
  488. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/kubernetes/references/windows.md +0 -0
  489. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/learn-from-code-review/.claude-plugin/plugin.json +0 -0
  490. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/learn-from-code-review/README.md +0 -0
  491. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/learn-from-code-review/SKILL.md +0 -0
  492. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/learn-from-code-review/commands/learn-from-reviews.md +0 -0
  493. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear/.claude-plugin/plugin.json +0 -0
  494. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear/README.md +0 -0
  495. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear/SKILL.md +0 -0
  496. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear/references/windows.md +0 -0
  497. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear-triage/.claude-plugin/plugin.json +0 -0
  498. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear-triage/README.md +0 -0
  499. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear-triage/SKILL.md +0 -0
  500. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear-triage/commands/linear-triage-setup.md +0 -0
  501. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/.claude-plugin/plugin.json +0 -0
  502. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/README.md +0 -0
  503. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/SKILL.md +0 -0
  504. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/commands/news-digest-setup.md +0 -0
  505. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/references/state-schema.md +0 -0
  506. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/scripts/main.py +0 -0
  507. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/notion/.claude-plugin/plugin.json +0 -0
  508. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/notion/README.md +0 -0
  509. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/notion/SKILL.md +0 -0
  510. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/notion/references/windows.md +0 -0
  511. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/npm/.claude-plugin/plugin.json +0 -0
  512. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/npm/README.md +0 -0
  513. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/npm/SKILL.md +0 -0
  514. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/pdflatex/.claude-plugin/plugin.json +0 -0
  515. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/pdflatex/README.md +0 -0
  516. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/pdflatex/SKILL.md +0 -0
  517. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/plain-english-content/.claude-plugin/plugin.json +0 -0
  518. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/plain-english-content/README.md +0 -0
  519. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/plain-english-content/SKILL.md +0 -0
  520. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/prd/.claude-plugin/plugin.json +0 -0
  521. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/prd/README.md +0 -0
  522. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/prd/SKILL.md +0 -0
  523. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/prd/commands/prd.md +0 -0
  524. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/research-brief/.claude-plugin/plugin.json +0 -0
  525. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/research-brief/README.md +0 -0
  526. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/research-brief/SKILL.md +0 -0
  527. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/research-brief/commands/research-brief-setup.md +0 -0
  528. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/.claude-plugin/plugin.json +0 -0
  529. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/LICENSE.txt +0 -0
  530. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/README.md +0 -0
  531. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/SKILL.md +0 -0
  532. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/references/output-patterns.md +0 -0
  533. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/references/windows.md +0 -0
  534. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/references/workflows.md +0 -0
  535. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/scripts/init_skill.py +0 -0
  536. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/scripts/quick_validate.py +0 -0
  537. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/.claude-plugin/plugin.json +0 -0
  538. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/README.md +0 -0
  539. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/SKILL.md +0 -0
  540. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/commands/slack-monitor-poll.md +0 -0
  541. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/references/slack-api.md +0 -0
  542. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/references/state-schema.md +0 -0
  543. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/references/windows.md +0 -0
  544. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/scripts/main.py +0 -0
  545. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-standup-digest/.claude-plugin/plugin.json +0 -0
  546. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-standup-digest/README.md +0 -0
  547. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-standup-digest/SKILL.md +0 -0
  548. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-standup-digest/commands/standup-digest-setup.md +0 -0
  549. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/spark-version-upgrade/.claude-plugin/plugin.json +0 -0
  550. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/spark-version-upgrade/README.md +0 -0
  551. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/spark-version-upgrade/SKILL.md +0 -0
  552. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ssh/.claude-plugin/plugin.json +0 -0
  553. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ssh/README.md +0 -0
  554. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ssh/SKILL.md +0 -0
  555. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ssh/references/windows.md +0 -0
  556. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/swift-linux/.claude-plugin/plugin.json +0 -0
  557. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/swift-linux/README.md +0 -0
  558. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/swift-linux/SKILL.md +0 -0
  559. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/technical-writing/.claude-plugin/plugin.json +0 -0
  560. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/technical-writing/README.md +0 -0
  561. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/technical-writing/SKILL.md +0 -0
  562. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/.claude-plugin/plugin.json +0 -0
  563. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/LICENSE.txt +0 -0
  564. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/README.md +0 -0
  565. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/SKILL.md +0 -0
  566. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/theme-showcase.pdf +0 -0
  567. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/arctic-frost.md +0 -0
  568. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/botanical-garden.md +0 -0
  569. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/desert-rose.md +0 -0
  570. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/forest-canopy.md +0 -0
  571. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/golden-hour.md +0 -0
  572. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/midnight-galaxy.md +0 -0
  573. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/modern-minimalist.md +0 -0
  574. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/ocean-depths.md +0 -0
  575. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/sunset-boulevard.md +0 -0
  576. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/tech-innovation.md +0 -0
  577. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ticket-to-code-change/.claude-plugin/plugin.json +0 -0
  578. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ticket-to-code-change/README.md +0 -0
  579. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ticket-to-code-change/SKILL.md +0 -0
  580. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ticket-to-code-change/commands/ticket-to-code-change-setup.md +0 -0
  581. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/upstream-fork-sync/.claude-plugin/plugin.json +0 -0
  582. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/upstream-fork-sync/README.md +0 -0
  583. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/upstream-fork-sync/SKILL.md +0 -0
  584. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/upstream-fork-sync/commands/upstream-fork-sync-setup.md +0 -0
  585. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/uv/.claude-plugin/plugin.json +0 -0
  586. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/uv/README.md +0 -0
  587. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/uv/SKILL.md +0 -0
  588. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/uv/references/README.md +0 -0
  589. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/vercel/.claude-plugin/plugin.json +0 -0
  590. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/vercel/README.md +0 -0
  591. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/vercel/SKILL.md +0 -0
  592. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/custom-automation.json +0 -0
  593. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/github-repo-monitor.json +0 -0
  594. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/incident-retrospective-drafter.json +0 -0
  595. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/upstream-fork-sync.json +0 -0
  596. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_add_skill_installs_to_agents_dir.py +0 -0
  597. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_catalog_schema.py +0 -0
  598. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_catalogs.py +0 -0
  599. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_check_issue_readiness.py +0 -0
  600. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_check_pr_description.py +0 -0
  601. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_code_review_risk_evaluation.py +0 -0
  602. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_deprecations.py +0 -0
  603. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_github_agents_md_maintainer.py +0 -0
  604. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_github_issue_to_pr.py +0 -0
  605. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_github_pr_review_skill.py +0 -0
  606. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_integration_catalog_in_sync.py +0 -0
  607. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_interface_manifest.py +0 -0
  608. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_issue_duplicate_checker.py +0 -0
  609. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_live_integration_smoke.py +0 -0
  610. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_news_digest.py +0 -0
  611. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_openhands_api_python.py +0 -0
  612. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_plugin_manifest.py +0 -0
  613. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_pr_review_diff_payload.py +0 -0
  614. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_pr_review_feedback.py +0 -0
  615. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_pr_review_prompt.py +0 -0
  616. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_pr_review_review_context.py +0 -0
  617. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_qa_changes.py +0 -0
  618. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_qa_changes_evaluation.py +0 -0
  619. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_refresh_linked_pr_checks.py +0 -0
  620. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_release_notes_generator.py +0 -0
  621. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_sdk_loading.py +0 -0
  622. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_skill_plugin_loading.py +0 -0
  623. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_skills_catalog.py +0 -0
  624. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_skills_have_readme.py +0 -0
  625. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_slack_channel_monitor.py +0 -0
  626. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_sync_extensions.py +0 -0
  627. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_version_alignment.py +0 -0
  628. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_workflow_sync.py +0 -0
  629. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/README.md +0 -0
  630. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/laminar_signals/README.md +0 -0
  631. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/laminar_signals/analyze.py +0 -0
  632. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/laminar_signals/templates/default.j2 +0 -0
  633. {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/laminar_signals/templates/pr_review.j2 +0 -0
@@ -58,6 +58,8 @@ jobs:
58
58
  run: python scripts/sync_extensions.py --check
59
59
 
60
60
  sync-sdk-skill:
61
+ permissions:
62
+ contents: read
61
63
  runs-on: ubuntu-latest
62
64
  steps:
63
65
  - name: Checkout repository
@@ -69,4 +71,6 @@ jobs:
69
71
  python-version: "3.12"
70
72
 
71
73
  - name: Check SDK skill is up to date
74
+ env:
75
+ GITHUB_TOKEN: ${{ github.token }}
72
76
  run: python scripts/sync_openhands_sdk_skill.py --check
@@ -56,14 +56,19 @@ jobs:
56
56
  fi
57
57
  echo "✓ npm $NPM_VERSION meets trusted publishing requirements"
58
58
 
59
- # No install/test/build steps: @openhands/extensions ships source directly
60
- # (plain ESM + hand-written .d.ts + JSON catalogs) with only peerDependencies,
61
- # and has no build script, test suite, or lockfile.
59
+ # npm omits symlinks. Materialize shared resources in a release-only copy;
60
+ # retain the canonical linked source layout in the checkout.
61
+ - name: Stage package with linked resources
62
+ run: |
63
+ mkdir -p "$RUNNER_TEMP/extensions-package"
64
+ cp -RL . "$RUNNER_TEMP/extensions-package/"
62
65
 
63
66
  - name: Verify package contents
67
+ working-directory: ${{ runner.temp }}/extensions-package
64
68
  run: npm pack --dry-run
65
69
 
66
70
  - name: Validate package version matches release tag
71
+ working-directory: ${{ runner.temp }}/extensions-package
67
72
  env:
68
73
  # Pass inputs.tag via env var to prevent script injection from
69
74
  # GitHub Actions expression interpolation inside run blocks.
@@ -86,4 +91,5 @@ jobs:
86
91
  echo "✓ Version $PACKAGE_VERSION matches release tag"
87
92
 
88
93
  - name: Publish to npm with provenance
94
+ working-directory: ${{ runner.temp }}/extensions-package
89
95
  run: npm publish --access public --provenance
@@ -0,0 +1,294 @@
1
+ ---
2
+ name: PR Artifacts
3
+
4
+ on:
5
+ workflow_dispatch: # Manual trigger for testing
6
+ pull_request_target:
7
+ types: [opened, synchronize, reopened, closed]
8
+ branches: [main]
9
+ pull_request_review:
10
+ types: [submitted]
11
+
12
+ jobs:
13
+ # Auto-remove .pr/ directory from same-repository PRs when approved.
14
+ cleanup-on-approval:
15
+ concurrency:
16
+ group: cleanup-pr-artifacts-${{ github.event.pull_request.number }}
17
+ cancel-in-progress: false
18
+ if: >-
19
+ github.event_name == 'pull_request_review' &&
20
+ github.event.review.state == 'approved' &&
21
+ github.event.pull_request.head.repo.full_name == github.repository
22
+ runs-on: ubuntu-latest
23
+ permissions:
24
+ contents: write
25
+ pull-requests: write
26
+ steps:
27
+ # Use PAT so the push triggers CI workflows that will complete and
28
+ # satisfy branch protection. We can't use [skip ci] because GitHub Apps
29
+ # can create stuck checks that block merging.
30
+ - uses: actions/checkout@v7
31
+ with:
32
+ ref: ${{ github.event.pull_request.head.ref }}
33
+ token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC }}
34
+
35
+ - name: Remove .pr/ directory
36
+ id: remove
37
+ run: |
38
+ if [ -d ".pr" ]; then
39
+ git config user.name "allhands-bot"
40
+ git config user.email "allhands-bot@users.noreply.github.com"
41
+ git rm -rf .pr/
42
+ git commit -m "chore: Remove PR-only artifacts [automated]"
43
+ git push || {
44
+ echo "::error::Failed to push cleanup commit. Check branch protection rules."
45
+ exit 1
46
+ }
47
+ echo "removed=true" >> "$GITHUB_OUTPUT"
48
+ echo "::notice::Removed .pr/ directory"
49
+ else
50
+ echo "removed=false" >> "$GITHUB_OUTPUT"
51
+ echo "::notice::No .pr/ directory to remove"
52
+ fi
53
+
54
+ - name: Update PR comment after cleanup
55
+ if: steps.remove.outputs.removed == 'true'
56
+ uses: actions/github-script@v9
57
+ with:
58
+ script: |
59
+ const marker = '<!-- pr-artifacts-notice -->';
60
+ const body = `${marker}
61
+ ✅ **PR Artifacts Cleaned Up**
62
+
63
+ The \`.pr/\` directory has been automatically removed.
64
+ `;
65
+
66
+ const comments = await github.paginate(
67
+ github.rest.issues.listComments,
68
+ {
69
+ owner: context.repo.owner,
70
+ repo: context.repo.repo,
71
+ issue_number: context.issue.number,
72
+ per_page: 100,
73
+ },
74
+ );
75
+
76
+ const existing = comments.find(c => c.body.includes(marker));
77
+ if (existing) {
78
+ await github.rest.issues.updateComment({
79
+ owner: context.repo.owner,
80
+ repo: context.repo.repo,
81
+ comment_id: existing.id,
82
+ body: body,
83
+ });
84
+ }
85
+
86
+ # Inspect the fork through the API; never check out untrusted code with a write token.
87
+ check-pr-artifacts:
88
+ if: >-
89
+ github.event_name == 'pull_request_target' &&
90
+ github.event.action != 'closed'
91
+ runs-on: ubuntu-latest
92
+ permissions:
93
+ contents: read
94
+ pull-requests: write
95
+ steps:
96
+ - name: Post or update PR comment
97
+ uses: actions/github-script@v9
98
+ with:
99
+ script: |
100
+ const marker = '<!-- pr-artifacts-notice -->';
101
+ const pullRequest = context.payload.pull_request;
102
+ const headRepository = pullRequest.head.repo;
103
+ let exists = true;
104
+
105
+ try {
106
+ await github.rest.repos.getContent({
107
+ owner: headRepository.owner.login,
108
+ repo: headRepository.name,
109
+ path: '.pr',
110
+ ref: pullRequest.head.sha,
111
+ });
112
+ } catch (error) {
113
+ if (error.status === 404) {
114
+ exists = false;
115
+ } else {
116
+ throw error;
117
+ }
118
+ }
119
+
120
+ const comments = await github.paginate(
121
+ github.rest.issues.listComments,
122
+ {
123
+ owner: context.repo.owner,
124
+ repo: context.repo.repo,
125
+ issue_number: context.issue.number,
126
+ per_page: 100,
127
+ },
128
+ );
129
+ const existing = comments.find(c => c.body.includes(marker));
130
+
131
+ if (!exists) {
132
+ if (existing) {
133
+ await github.rest.issues.updateComment({
134
+ owner: context.repo.owner,
135
+ repo: context.repo.repo,
136
+ comment_id: existing.id,
137
+ body: `${marker}
138
+ ✅ **PR Artifacts Cleaned Up**
139
+
140
+ The \`.pr/\` directory is no longer present.
141
+ `,
142
+ });
143
+ }
144
+ return;
145
+ }
146
+
147
+ const isFork = headRepository.full_name !== context.payload.repository.full_name;
148
+ const cleanup = isFork
149
+ ? 'Because this is a fork PR, the workflow will **open or update a cleanup PR against `main` after merge**.'
150
+ : 'The directory will be **automatically removed when the PR is approved**.';
151
+ const body = `${marker}
152
+ 📁 **PR Artifacts Notice**
153
+
154
+ This PR contains a \`.pr/\` directory with temporary PR-specific documents. ${cleanup}
155
+ `;
156
+
157
+ core.warning('.pr/ directory contains temporary PR-only artifacts');
158
+ if (existing) {
159
+ await github.rest.issues.updateComment({
160
+ owner: context.repo.owner,
161
+ repo: context.repo.repo,
162
+ comment_id: existing.id,
163
+ body: body,
164
+ });
165
+ } else {
166
+ await github.rest.issues.createComment({
167
+ owner: context.repo.owner,
168
+ repo: context.repo.repo,
169
+ issue_number: context.issue.number,
170
+ body: body,
171
+ });
172
+ }
173
+
174
+ # Fork branches cannot be modified reliably. If artifacts reach the trusted base,
175
+ # remove them through a pull request so branch protections remain enforced.
176
+ cleanup-after-merge:
177
+ concurrency:
178
+ group: cleanup-pr-artifacts-${{ github.event.pull_request.base.ref }}
179
+ cancel-in-progress: false
180
+ if: >-
181
+ github.event_name == 'pull_request_target' &&
182
+ github.event.action == 'closed' &&
183
+ github.event.pull_request.merged == true
184
+ runs-on: ubuntu-latest
185
+ permissions:
186
+ contents: write
187
+ pull-requests: write
188
+ steps:
189
+ - uses: actions/checkout@v7
190
+ with:
191
+ ref: ${{ github.event.pull_request.base.ref }}
192
+ token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC }}
193
+
194
+ - name: Create or update cleanup PR
195
+ id: cleanup
196
+ env:
197
+ BASE_REF: ${{ github.event.pull_request.base.ref }}
198
+ CLEANUP_BRANCH: automation/remove-pr-artifacts
199
+ GH_TOKEN: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC }}
200
+ run: |
201
+ if [ ! -d ".pr" ]; then
202
+ echo "created=false" >> "$GITHUB_OUTPUT"
203
+ echo "::notice::No .pr/ directory to remove from $BASE_REF"
204
+ exit 0
205
+ fi
206
+
207
+ git config user.name "allhands-bot"
208
+ git config user.email "allhands-bot@users.noreply.github.com"
209
+ git fetch origin \
210
+ "+refs/heads/$CLEANUP_BRANCH:refs/remotes/origin/$CLEANUP_BRANCH" || true
211
+ git checkout -B "$CLEANUP_BRANCH"
212
+ git rm -rf .pr/
213
+ git commit \
214
+ -m "chore: remove merged PR artifacts" \
215
+ -m "Co-authored-by: openhands <openhands@all-hands.dev>"
216
+ git push --force-with-lease origin "HEAD:$CLEANUP_BRANCH"
217
+
218
+ cleanup_pr_url=$(gh pr list \
219
+ --base "$BASE_REF" \
220
+ --head "$CLEANUP_BRANCH" \
221
+ --state open \
222
+ --json url \
223
+ --jq '.[0].url')
224
+
225
+ if [ -z "$cleanup_pr_url" ]; then
226
+ cleanup_pr_url=$(gh pr create \
227
+ --base "$BASE_REF" \
228
+ --head "$CLEANUP_BRANCH" \
229
+ --title "chore: remove merged PR artifacts" \
230
+ --body-file - <<EOF
231
+ ## Why
232
+
233
+ Temporary \`.pr/\` artifacts reached \`$BASE_REF\` through one or more merged PRs.
234
+
235
+ ## Summary
236
+
237
+ - Remove the temporary \`.pr/\` directory from \`$BASE_REF\`.
238
+
239
+ ## How to Test
240
+
241
+ - Confirm this PR only deletes files under \`.pr/\`.
242
+ - Let the required checks validate the cleanup commit.
243
+
244
+ ---
245
+
246
+ _This PR was automatically created by the PR Artifacts workflow._
247
+ EOF
248
+ )
249
+ fi
250
+
251
+ echo "created=true" >> "$GITHUB_OUTPUT"
252
+ echo "pr_url=$cleanup_pr_url" >> "$GITHUB_OUTPUT"
253
+ echo "::notice::Cleanup PR ready: $cleanup_pr_url"
254
+
255
+ - name: Update source PR comment
256
+ if: steps.cleanup.outputs.created == 'true'
257
+ uses: actions/github-script@v9
258
+ env:
259
+ CLEANUP_PR_URL: ${{ steps.cleanup.outputs.pr_url }}
260
+ with:
261
+ script: |
262
+ const marker = '<!-- pr-artifacts-notice -->';
263
+ const body = `${marker}
264
+ 🧹 **PR Artifact Cleanup Queued**
265
+
266
+ The \`.pr/\` directory reached \`${context.payload.pull_request.base.ref}\` after merge. A cleanup PR has been opened or updated: ${process.env.CLEANUP_PR_URL}
267
+ `;
268
+
269
+ const comments = await github.paginate(
270
+ github.rest.issues.listComments,
271
+ {
272
+ owner: context.repo.owner,
273
+ repo: context.repo.repo,
274
+ issue_number: context.issue.number,
275
+ per_page: 100,
276
+ },
277
+ );
278
+ const existing = comments.find(c => c.body.includes(marker));
279
+
280
+ if (existing) {
281
+ await github.rest.issues.updateComment({
282
+ owner: context.repo.owner,
283
+ repo: context.repo.repo,
284
+ comment_id: existing.id,
285
+ body: body,
286
+ });
287
+ } else {
288
+ await github.rest.issues.createComment({
289
+ owner: context.repo.owner,
290
+ repo: context.repo.repo,
291
+ issue_number: context.issue.number,
292
+ body: body,
293
+ });
294
+ }
@@ -17,13 +17,15 @@ jobs:
17
17
  validate-pr-description:
18
18
  name: Validate PR description
19
19
  # Draft PRs may still have incomplete descriptions; validate when review starts.
20
- # Release PRs are generated by the trusted prepare-release workflow without
20
+ # Release and artifact-cleanup PRs are generated by trusted workflows without
21
21
  # the standard human-authored PR template.
22
22
  if: >-
23
23
  github.event.pull_request.draft == false &&
24
24
  github.event.pull_request.user.login != 'dependabot[bot]' &&
25
25
  !(github.event.pull_request.head.repo.full_name == github.repository &&
26
- startsWith(github.event.pull_request.head.ref, 'release-please-'))
26
+ (startsWith(github.event.pull_request.head.ref, 'release-please-') ||
27
+ (github.event.pull_request.base.ref == 'main' &&
28
+ github.event.pull_request.head.ref == 'automation/remove-pr-artifacts')))
27
29
  runs-on: ubuntu-latest
28
30
  steps:
29
31
  - name: Checkout trusted workflow scripts
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.22.0"
3
+ }
@@ -10,12 +10,11 @@ This repository owns the public registry of reusable OpenHands skills, plugins,
10
10
 
11
11
  Related repositories have distinct responsibilities:
12
12
 
13
- - [`OpenHands/software-agent-sdk`](https://github.com/OpenHands/software-agent-sdk) owns the Python SDK, Agent Server, agent/tool behavior, conversations, workspaces, events, and canonical API.
14
- - [`OpenHands/typescript-client`](https://github.com/OpenHands/typescript-client) owns the browser-compatible typed Agent Server client.
13
+ - [`OpenHands/software-agent-sdk`](https://github.com/OpenHands/software-agent-sdk) owns the Python SDK, Agent Server, agent/tool behavior, conversations, workspaces, events, canonical API, and browser-compatible TypeScript Agent Server client under `clients/typescript/`.
15
14
  - [`OpenHands/OpenHands`](https://github.com/OpenHands/OpenHands) owns Agent Canvas UI and local-stack orchestration.
16
15
  - [`OpenHands/automation`](https://github.com/OpenHands/automation) owns scheduling, webhooks, run history, dispatch, and sandbox lifecycle orchestration.
17
16
 
18
- Put reusable skills, plugins, automations, and integrations here; put backend execution behavior in the SDK, typed API access in `typescript-client`, application UI in Agent Canvas, and scheduling/dispatch lifecycle code in `automation`. If a PR is opened in the wrong repository, explicitly recommend closing and moving it to the owning repository. PRs must follow this repository's applicable contribution and code-review guidance.
17
+ Put reusable skills, plugins, automations, and integrations here; put backend execution behavior and typed API access in the SDK, application UI in Agent Canvas, and scheduling/dispatch lifecycle code in `automation`. If a PR is opened in the wrong repository, explicitly recommend closing and moving it to the owning repository. PRs must follow this repository's applicable contribution and code-review guidance.
19
18
 
20
19
  ## What this repo contains
21
20
 
@@ -118,6 +117,31 @@ When editing or adding skills in this repo, follow these rules (and add new skil
118
117
  - `plugins/release-notes` now has a standalone validator at `plugins/release-notes/scripts/validate_release_notes.py`; it rebuilds the deterministic tag-range context, fails if a change bullet omits explicit PR/commit refs or matching author handles, and enforces full PR/author coverage by appending a compact `### 🔎 Small Fixes/Internal Changes` appendix grouped by author when the agent omits lower-signal items. New contributor detection in `generate_release_notes.py` should use merged PR history for human authors (excluding bots) rather than commit-author lookup.
119
118
 
120
119
 
120
+ ## PR-specific documents (`.pr/`)
121
+
122
+ When working on a PR that requires design documents, live-test logs, development-only scripts, or other temporary artifacts that should **not** be merged to `main`, store them in a `.pr/` directory at the repository root.
123
+
124
+ ```bash
125
+ mkdir -p .pr
126
+
127
+ .pr/
128
+ ├── design.md # Design decisions and architecture notes
129
+ ├── analysis.md # Investigation or debugging notes
130
+ └── notes.md # Any other PR-specific content
131
+ ```
132
+
133
+ The `PR Artifacts` workflow (`.github/workflows/pr-artifacts.yml`) owns the lifecycle of this directory:
134
+
135
+ 1. **Notification**: When a PR contains `.pr/`, a single comment is posted to the PR conversation alerting reviewers.
136
+ 2. **Auto-cleanup on approval**: For same-repository PRs, the directory is automatically removed by a follow-up commit when the PR is approved.
137
+ 3. **Post-merge cleanup**: If artifacts reach `main`, including through a fork PR, the workflow opens or updates a cleanup PR against `main`.
138
+
139
+ Important notes:
140
+
141
+ - Do not put anything in `.pr/` that needs to be preserved.
142
+ - The `.pr/` check is informational during development; it posts a notice rather than blocking the PR.
143
+ - Cleanup PRs follow the normal review and required-check protections for `main`.
144
+
121
145
  ## CI / validation gotchas
122
146
 
123
147
  - The test suite expects **every directory under `skills/`** to be listed in a marketplace. If you add a new skill (or rebase onto a main branch that added skills), update the appropriate marketplace file or CI will fail with `Skills missing from marketplace: [...]`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhands-extensions
3
- Version: 0.20.0
3
+ Version: 0.22.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
@@ -96,7 +96,7 @@ The JS and Python versions are kept in lock-step by `release-please` and guarded
96
96
  ## Extensions Catalog
97
97
 
98
98
  <!-- BEGIN AUTO-GENERATED CATALOG -->
99
- This repository contains **2 marketplace(s)** with **68 extensions** (58 skills, 10 plugins).
99
+ This repository contains **2 marketplace(s)** with **72 extensions** (62 skills, 10 plugins).
100
100
 
101
101
  ### large-codebase
102
102
 
@@ -115,7 +115,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases
115
115
 
116
116
  Official skills and plugins for OpenHands — the open-source AI software engineer.
117
117
 
118
- **64 extensions** (56 skills, 8 plugins)
118
+ **68 extensions** (60 skills, 8 plugins)
119
119
 
120
120
  | Name | Type | Description | Commands |
121
121
  |------|------|-------------|----------|
@@ -141,11 +141,14 @@ Official skills and plugins for OpenHands — the open-source AI software engine
141
141
  | github | skill | Interact with GitHub repositories, pull requests, issues, and workflows using the GITHUB_TOKEN environment variable a... | — |
142
142
  | github-actions | skill | Create, debug, and test GitHub Actions workflows and custom actions. Use when building CI/CD pipelines, automating wo... | — |
143
143
  | github-agents-md-maintainer | skill | Create an automation that keeps AGENTS.md current in one or more GitHub repositories. On a schedule an agent reads th... | `/agents-md:setup` |
144
+ | github-delivery-watchdog | skill | Periodically check pull requests and merge only current heads with independent review, tests, and passing CI. | `/github-delivery-watchdog` |
144
145
  | github-issue-to-pr | skill | Create an automation that implements GitHub issues when a configurable trigger label is applied. Clones the default b... | `/issue-to-pr:setup` |
146
+ | github-issue-triage | skill | Prioritize open issues and establish acceptance criteria before marking them ready for development. | `/github-issue-triage` |
145
147
  | github-pr-review | skill | Post structured PR reviews to GitHub with inline comments/suggestions in a single API call. | `/github-pr-review` |
146
148
  | github-pr-reviewer | skill | Create an automation that reviews GitHub pull requests when they are opened or updated. Inspects the diff, changed fi... | `/pr-reviewer:setup` |
147
149
  | 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` |
148
150
  | gitlab | skill | Interact with GitLab repositories, merge requests, and APIs using the GITLAB_TOKEN environment variable. Use when wor... | — |
151
+ | 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` |
149
152
  | incident-retrospective | skill | Create an automation that drafts incident retrospectives by gathering incident-channel messages from Slack, collectin... | `/incident-retro:setup` |
150
153
  | 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` |
151
154
  | jira-issue-to-pr | skill | Deploy a cron-based OpenHands automation that watches a Jira Cloud project for issues labeled with a configurable lab... | — |
@@ -162,6 +165,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
162
165
  | openhands | plugin | Unified OpenHands plugin — bundles Cloud CLI, REST API (openhands-api), and Automations (openhands-automation) into a... | `/openhands-cloud` |
163
166
  | openhands-api | skill | Use the OpenHands Cloud REST API (V1) and agent-server APIs to create and manage Cloud or local backend conversations... | — |
164
167
  | openhands-automation | skill | Create and manage OpenHands automations - scheduled tasks that run in sandboxes. Use the prompt preset to create auto... | `/automation:create` |
168
+ | openhands-enterprise-troubleshooting | skill | Diagnose and resolve common issues on OpenHands Enterprise self-hosted installations. Covers sandbox startup failures... | — |
165
169
  | openhands-sdk | skill | Reference skill for the OpenHands Software Agent SDK - build AI agents with custom tools, LLM configuration, conversa... | `/sdk` |
166
170
  | pdflatex | skill | Install and use pdflatex to compile LaTeX documents into PDFs on Linux. Use when generating academic papers, research... | — |
167
171
  | plain-english-content | skill | Write and edit clear, accessible prose in a plain English content style: active voice, front-loaded content, sentence... | — |