openhands-extensions 0.32.1__tar.gz → 0.34.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 (692) hide show
  1. openhands_extensions-0.34.0/.release-please-manifest.json +3 -0
  2. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/PKG-INFO +1 -1
  3. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/sentry.json +48 -0
  4. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/package.json +1 -1
  5. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +3 -3
  6. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/pyproject.toml +1 -1
  7. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/python/openhands_extensions/_version.py +1 -1
  8. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/azure-devops/README.md +15 -5
  9. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/azure-devops/SKILL.md +17 -7
  10. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/index.js +3 -3
  11. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/software-factory/README.md +6 -6
  12. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/software-factory/SKILL.md +28 -24
  13. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/software-factory/commands/software-factory.md +1 -1
  14. openhands_extensions-0.34.0/tests/test_azure_devops_skill.py +40 -0
  15. openhands_extensions-0.32.1/.release-please-manifest.json +0 -3
  16. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.agents/skills/custom-codereview-guide.md +0 -0
  17. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.claude-plugin/marketplace.json +0 -0
  18. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/dependabot.yml +0 -0
  19. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/pull_request_template.md +0 -0
  20. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/release.yml +0 -0
  21. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/scripts/check_pr_description.py +0 -0
  22. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/scripts/markdown_sections.py +0 -0
  23. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/scripts/refresh_linked_pr_checks.py +0 -0
  24. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/build-vscode-app.yml +0 -0
  25. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/check-extensions.yml +0 -0
  26. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/deprecation-check.yml +0 -0
  27. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/issue-readiness-check.yml +0 -0
  28. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/npm-publish.yml +0 -0
  29. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/pr-artifacts.yml +0 -0
  30. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/pr-description-check.yml +0 -0
  31. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/pr.yml +0 -0
  32. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/pypi-publish.yml +0 -0
  33. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/release.yml +0 -0
  34. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/tests.yml +0 -0
  35. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.github/workflows/vulnerability-scan.yml +0 -0
  36. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.gitignore +0 -0
  37. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/.npmignore +0 -0
  38. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/AGENTS.md +0 -0
  39. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/LICENSE +0 -0
  40. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/MIGRATION.md +0 -0
  41. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/README.md +0 -0
  42. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/analysis_results.md +0 -0
  43. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/apps/README.md +0 -0
  44. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/apps/catalog.json +0 -0
  45. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/apps/index.d.ts +0 -0
  46. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/apps/index.js +0 -0
  47. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/apps/vscode/README.md +0 -0
  48. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/apps/vscode/canvas-extension.json +0 -0
  49. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/apps/vscode/extension.js +0 -0
  50. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/apps/vscode/scripts/package.mjs +0 -0
  51. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/README.md +0 -0
  52. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/bundle-index.js +0 -0
  53. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/custom-automation/manifest.json +0 -0
  54. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/github-agents-md-maintainer/manifest.json +0 -0
  55. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/github-delivery-watchdog/manifest.json +0 -0
  56. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/github-issue-to-pr/manifest.json +0 -0
  57. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/github-issue-triage/manifest.json +0 -0
  58. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/github-pr-reviewer/manifest.json +0 -0
  59. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/github-repo-monitor/manifest.json +0 -0
  60. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/github-stale-ci-pr-closer/manifest.json +0 -0
  61. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/gitlab-issue-to-mr/manifest.json +0 -0
  62. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/incident-retrospective-drafter/manifest.json +0 -0
  63. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/jira-issue-to-bitbucket-pr/manifest.json +0 -0
  64. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/jira-issue-to-gitlab-mr/manifest.json +0 -0
  65. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/jira-issue-to-pr/manifest.json +0 -0
  66. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/linear-issue-to-bitbucket-pr/manifest.json +0 -0
  67. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/linear-issue-to-github-pr/manifest.json +0 -0
  68. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/linear-issue-to-gitlab-mr/manifest.json +0 -0
  69. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/linear-triage-assistant/manifest.json +0 -0
  70. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/news-digest/manifest.json +0 -0
  71. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/qa-changes/manifest.json +0 -0
  72. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/research-brief-writer/manifest.json +0 -0
  73. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/slack-channel-monitor/manifest.json +0 -0
  74. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/slack-github-linear-daily-organization.json +0 -0
  75. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/slack-standup-digest/manifest.json +0 -0
  76. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog/upstream-fork-sync/manifest.json +0 -0
  77. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog-index.js +0 -0
  78. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/catalog.schema.json +0 -0
  79. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/index.d.ts +0 -0
  80. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/index.js +0 -0
  81. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/interface.json +0 -0
  82. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/automations/interface.schema.json +0 -0
  83. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/index.d.ts +0 -0
  84. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/index.js +0 -0
  85. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/README.md +0 -0
  86. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/airtable.json +0 -0
  87. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/apify.json +0 -0
  88. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/asana.json +0 -0
  89. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/atlassian-rovo.json +0 -0
  90. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/atlassian.json +0 -0
  91. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/bitbucket.json +0 -0
  92. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/box.json +0 -0
  93. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/brave-search.json +0 -0
  94. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/browser-mcp.json +0 -0
  95. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/canva.json +0 -0
  96. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/clickhouse.json +0 -0
  97. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/cloudflare-bindings.json +0 -0
  98. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/cloudflare-browser-rendering.json +0 -0
  99. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/cloudflare-builds.json +0 -0
  100. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/cloudflare-docs.json +0 -0
  101. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/cloudflare-observability.json +0 -0
  102. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/confluence.json +0 -0
  103. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/datadog.json +0 -0
  104. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/deepwiki.json +0 -0
  105. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/discord.json +0 -0
  106. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/elevenlabs.json +0 -0
  107. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/everything.json +0 -0
  108. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/exa.json +0 -0
  109. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/fetch.json +0 -0
  110. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/figma.json +0 -0
  111. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/filesystem.json +0 -0
  112. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/firecrawl.json +0 -0
  113. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/git.json +0 -0
  114. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/github.json +0 -0
  115. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/gitlab.json +0 -0
  116. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/gmail.json +0 -0
  117. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/google-calendar.json +0 -0
  118. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/google-docs.json +0 -0
  119. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/google-drive.json +0 -0
  120. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/google-sheets.json +0 -0
  121. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/granola.json +0 -0
  122. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/hubspot.json +0 -0
  123. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/huggingface.json +0 -0
  124. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/intercom.json +0 -0
  125. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/jira.json +0 -0
  126. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/kagi.json +0 -0
  127. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/linear.json +0 -0
  128. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/memory.json +0 -0
  129. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/microsoft-outlook.json +0 -0
  130. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/microsoft-teams.json +0 -0
  131. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/miro.json +0 -0
  132. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/monday.json +0 -0
  133. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/mongodb.json +0 -0
  134. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/neon.json +0 -0
  135. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/netlify.json +0 -0
  136. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/notion.json +0 -0
  137. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/obsidian.json +0 -0
  138. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/okta.json +0 -0
  139. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/onedrive.json +0 -0
  140. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/ordinal.json +0 -0
  141. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/paypal.json +0 -0
  142. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/playwright.json +0 -0
  143. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/posthog.json +0 -0
  144. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/quickbooks.json +0 -0
  145. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/redis.json +0 -0
  146. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/reportportal.json +0 -0
  147. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/resend.json +0 -0
  148. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/salesforce.json +0 -0
  149. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/sequential-thinking.json +0 -0
  150. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/sharepoint.json +0 -0
  151. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/slack.json +0 -0
  152. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/sonarqube.json +0 -0
  153. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/stripe.json +0 -0
  154. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/supabase.json +0 -0
  155. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/superhuman-mail.json +0 -0
  156. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/tavily.json +0 -0
  157. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/time.json +0 -0
  158. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/trello.json +0 -0
  159. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/vanta.json +0 -0
  160. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/vercel.json +0 -0
  161. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/webflow.json +0 -0
  162. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/xero.json +0 -0
  163. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog/zoom.json +0 -0
  164. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog-index.js +0 -0
  165. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/catalog.schema.json +0 -0
  166. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/icons/salesforce.svg +0 -0
  167. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/icons/slack.svg +0 -0
  168. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/index.d.ts +0 -0
  169. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/integrations/index.js +0 -0
  170. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/marketplaces/large-codebase.json +0 -0
  171. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/marketplaces/openhands-extensions.json +0 -0
  172. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/README.md +0 -0
  173. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/city-weather/.claude-plugin/plugin.json +0 -0
  174. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/city-weather/README.md +0 -0
  175. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/city-weather/commands/now.md +0 -0
  176. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/.claude-plugin/plugin.json +0 -0
  177. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/README.md +0 -0
  178. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/references/troubleshooting.md +0 -0
  179. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/build-setup/SKILL.md +0 -0
  180. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +0 -0
  181. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +0 -0
  182. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +0 -0
  183. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/mainframe-removal/SKILL.md +0 -0
  184. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/mainframe-removal/references/cics-transformation-examples.md +0 -0
  185. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +0 -0
  186. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +0 -0
  187. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +0 -0
  188. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +0 -0
  189. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/issue-duplicate-checker/README.md +0 -0
  190. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/issue-duplicate-checker/action.yml +0 -0
  191. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +0 -0
  192. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +0 -0
  193. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.cjs +0 -0
  194. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.cjs +0 -0
  195. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/magic-test/.claude-plugin/plugin.json +0 -0
  196. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/magic-test/skills/magic-word/SKILL.md +0 -0
  197. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/migration-scoring/.claude-plugin/plugin.json +0 -0
  198. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/migration-scoring/README.md +0 -0
  199. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/migration-scoring/skills/migration-mapping/SKILL.md +0 -0
  200. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/migration-scoring/skills/migration-report/SKILL.md +0 -0
  201. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/migration-scoring/skills/migration-scoring/SKILL.md +0 -0
  202. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/migration-scoring/skills/score-quality/SKILL.md +0 -0
  203. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +0 -0
  204. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/migration-scoring/skills/score-style/SKILL.md +0 -0
  205. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/.claude-plugin/plugin.json +0 -0
  206. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/README.md +0 -0
  207. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/references/criteria.md +0 -0
  208. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/agent-readiness-report/README.md +0 -0
  209. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/agent-readiness-report/SKILL.md +0 -0
  210. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +0 -0
  211. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +0 -0
  212. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +0 -0
  213. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +0 -0
  214. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +0 -0
  215. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +0 -0
  216. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/improve-agent-readiness/README.md +0 -0
  217. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +0 -0
  218. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +0 -0
  219. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/setup-agents-md/README.md +0 -0
  220. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/setup-agents-md/SKILL.md +0 -0
  221. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/setup-openhands/README.md +0 -0
  222. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/setup-openhands/SKILL.md +0 -0
  223. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/setup-pr-review/README.md +0 -0
  224. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/onboarding/skills/setup-pr-review/SKILL.md +0 -0
  225. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/.claude-plugin/plugin.json +0 -0
  226. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/README.md +0 -0
  227. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/SKILL.md +0 -0
  228. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/commands/create.md +0 -0
  229. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/commands/openhands-cloud.md +0 -0
  230. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/scripts/run.sh +0 -0
  231. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +0 -0
  232. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/README.md +0 -0
  233. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/SKILL.md +0 -0
  234. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/references/README.md +0 -0
  235. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +0 -0
  236. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/references/example_prompt.md +0 -0
  237. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/references/windows.md +0 -0
  238. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +0 -0
  239. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +0 -0
  240. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +0 -0
  241. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-automation/README.md +0 -0
  242. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-automation/SKILL.md +0 -0
  243. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-automation/commands/automation-create.md +0 -0
  244. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-automation/references/ab-testing.md +0 -0
  245. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-automation/references/custom-automation.md +0 -0
  246. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-automation/references/security.md +0 -0
  247. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-automation/references/windows.md +0 -0
  248. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +0 -0
  249. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-sdk/README.md +0 -0
  250. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-sdk/SKILL.md +0 -0
  251. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/openhands/skills/openhands-sdk/commands/sdk.md +0 -0
  252. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/.claude-plugin/plugin.json +0 -0
  253. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/README.md +0 -0
  254. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/action.yml +0 -0
  255. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/scripts/agent_script.py +0 -0
  256. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/scripts/evaluate_review.py +0 -0
  257. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/scripts/prompt.py +0 -0
  258. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +0 -0
  259. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/code-review/README.md +0 -0
  260. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/code-review/SKILL.md +0 -0
  261. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +0 -0
  262. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/code-review/commands/codereview.md +0 -0
  263. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/code-review/references/risk-evaluation.md +0 -0
  264. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/code-review/references/supply-chain-security.md +0 -0
  265. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +0 -0
  266. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/github-pr-review/README.md +0 -0
  267. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/github-pr-review/SKILL.md +0 -0
  268. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +0 -0
  269. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/skills/github-pr-review/references/windows.md +0 -0
  270. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/workflows/pr-review-by-openhands.yml +0 -0
  271. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/pr-review/workflows/pr-review-evaluation.yml +0 -0
  272. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/.claude-plugin/plugin.json +0 -0
  273. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/README.md +0 -0
  274. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/action.yml +0 -0
  275. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/scripts/agent_script.py +0 -0
  276. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/scripts/evaluate_qa_changes.py +0 -0
  277. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/scripts/prompt.py +0 -0
  278. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/skills/qa-changes/README.md +0 -0
  279. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/skills/qa-changes/SKILL.md +0 -0
  280. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +0 -0
  281. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +0 -0
  282. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/qa-changes/workflows/qa-changes-evaluation.yml +0 -0
  283. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/.claude-plugin/plugin.json +0 -0
  284. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/README.md +0 -0
  285. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/SKILL.md +0 -0
  286. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/action.yml +0 -0
  287. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/commands/release-notes.md +0 -0
  288. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/scripts/agent_script.py +0 -0
  289. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/scripts/generate_release_notes.py +0 -0
  290. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/scripts/prompt.py +0 -0
  291. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/scripts/validate_release_notes.py +0 -0
  292. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/skills/release-notes/README.md +0 -0
  293. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/skills/release-notes/SKILL.md +0 -0
  294. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/skills/release-notes/commands/release-notes.md +0 -0
  295. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/release-notes/workflows/release-notes.yml +0 -0
  296. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/runtime-api-configs/.claude-plugin/plugin.json +0 -0
  297. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/runtime-api-configs/README.md +0 -0
  298. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/runtime-api-configs/SKILL.md +0 -0
  299. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/runtime-api-configs/scripts/warm_runtime_configs.py +0 -0
  300. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/runtime-api-configs/tests/test_warm_runtime_configs.py +0 -0
  301. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/.claude-plugin/plugin.json +0 -0
  302. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/README.md +0 -0
  303. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/action.yml +0 -0
  304. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +0 -0
  305. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/github/README.md +0 -0
  306. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/github/SKILL.md +0 -0
  307. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/github/references/windows.md +0 -0
  308. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +0 -0
  309. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/github/scripts/github_client.py +0 -0
  310. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +0 -0
  311. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/security/README.md +0 -0
  312. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/skills/security/SKILL.md +0 -0
  313. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +0 -0
  314. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/python/openhands_extensions/__init__.py +0 -0
  315. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/python/openhands_extensions/deprecation.py +0 -0
  316. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/python/openhands_extensions/integration_models.py +0 -0
  317. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/python/openhands_extensions/integrations.py +0 -0
  318. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/release-please-config.json +0 -0
  319. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/scripts/build-automation-catalog.mjs +0 -0
  320. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/scripts/build-integration-catalog.mjs +0 -0
  321. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/scripts/build-skills-catalog.mjs +0 -0
  322. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/scripts/check_deprecations.py +0 -0
  323. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/scripts/check_plugin_resources.py +0 -0
  324. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/scripts/sync_extensions.py +0 -0
  325. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/scripts/sync_openhands_sdk_skill.py +0 -0
  326. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/README.md +0 -0
  327. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/add-javadoc/.claude-plugin/plugin.json +0 -0
  328. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/add-javadoc/README.md +0 -0
  329. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/add-javadoc/SKILL.md +0 -0
  330. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/add-javadoc/references/example.md +0 -0
  331. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/add-skill/.claude-plugin/plugin.json +0 -0
  332. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/add-skill/README.md +0 -0
  333. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/add-skill/SKILL.md +0 -0
  334. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/add-skill/scripts/fetch_skill.py +0 -0
  335. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-canvas-environment/.claude-plugin/plugin.json +0 -0
  336. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-canvas-environment/README.md +0 -0
  337. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-canvas-environment/SKILL.md +0 -0
  338. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-creator/.claude-plugin/plugin.json +0 -0
  339. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-creator/README.md +0 -0
  340. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-creator/SKILL.md +0 -0
  341. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-creator/commands/agent-creator.md +0 -0
  342. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-creator/references/fallback.md +0 -0
  343. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-memory/.claude-plugin/plugin.json +0 -0
  344. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-memory/README.md +0 -0
  345. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-memory/SKILL.md +0 -0
  346. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-memory/commands/remember.md +0 -0
  347. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-sdk-builder/.claude-plugin/plugin.json +0 -0
  348. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-sdk-builder/README.md +0 -0
  349. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-sdk-builder/SKILL.md +0 -0
  350. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/agent-sdk-builder/commands/agent-builder.md +0 -0
  351. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/azure-devops/.claude-plugin/plugin.json +0 -0
  352. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket/.claude-plugin/plugin.json +0 -0
  353. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket/README.md +0 -0
  354. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket/SKILL.md +0 -0
  355. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket-cloud/.claude-plugin/plugin.json +0 -0
  356. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket-cloud/README.md +0 -0
  357. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket-cloud/SKILL.md +0 -0
  358. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket-data-center/.claude-plugin/plugin.json +0 -0
  359. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket-data-center/README.md +0 -0
  360. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/bitbucket-data-center/SKILL.md +0 -0
  361. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/.claude-plugin/plugin.json +0 -0
  362. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/README.md +0 -0
  363. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/SKILL.md +0 -0
  364. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/references/acceptance-checklist.md +0 -0
  365. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/references/backend-safety.md +0 -0
  366. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/references/connections.md +0 -0
  367. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/references/native-design.md +0 -0
  368. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/references/packaging-recipes.md +0 -0
  369. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/references/sidecar-pattern.md +0 -0
  370. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/references/testing-and-installation.md +0 -0
  371. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/references/v1-contract.md +0 -0
  372. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/scripts/validate-extension.mjs +0 -0
  373. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/canvas-extension-api/scripts/validate-extension.test.mjs +0 -0
  374. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/code-simplifier/.claude-plugin/plugin.json +0 -0
  375. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/code-simplifier/README.md +0 -0
  376. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/code-simplifier/SKILL.md +0 -0
  377. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/code-simplifier/commands/simplify.md +0 -0
  378. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/code-simplifier/references/code-quality-review.md +0 -0
  379. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/code-simplifier/references/code-reuse-review.md +0 -0
  380. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/code-simplifier/references/efficiency-review.md +0 -0
  381. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/datadog/.claude-plugin/plugin.json +0 -0
  382. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/datadog/README.md +0 -0
  383. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/datadog/SKILL.md +0 -0
  384. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/datadog/references/windows.md +0 -0
  385. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/deno/.claude-plugin/plugin.json +0 -0
  386. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/deno/README.md +0 -0
  387. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/deno/SKILL.md +0 -0
  388. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/deno/references/README.md +0 -0
  389. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/.claude-plugin/plugin.json +0 -0
  390. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/README.md +0 -0
  391. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/SKILL.md +0 -0
  392. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/__init__.py +0 -0
  393. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/references/REFERENCE.md +0 -0
  394. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/scripts/__init__.py +0 -0
  395. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/scripts/_http.py +0 -0
  396. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/scripts/post_webhook.py +0 -0
  397. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/discord/scripts/send_message.py +0 -0
  398. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/docker/.claude-plugin/plugin.json +0 -0
  399. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/docker/README.md +0 -0
  400. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/docker/SKILL.md +0 -0
  401. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/evidence-based-citations/.claude-plugin/plugin.json +0 -0
  402. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/evidence-based-citations/README.md +0 -0
  403. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/evidence-based-citations/SKILL.md +0 -0
  404. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/flarglebargle/.claude-plugin/plugin.json +0 -0
  405. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/flarglebargle/README.md +0 -0
  406. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/flarglebargle/SKILL.md +0 -0
  407. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/frontend-design/.claude-plugin/plugin.json +0 -0
  408. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/frontend-design/LICENSE.txt +0 -0
  409. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/frontend-design/README.md +0 -0
  410. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/frontend-design/SKILL.md +0 -0
  411. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-actions/.claude-plugin/plugin.json +0 -0
  412. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-actions/README.md +0 -0
  413. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-actions/SKILL.md +0 -0
  414. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-agents-md-maintainer/.claude-plugin/plugin.json +0 -0
  415. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-agents-md-maintainer/README.md +0 -0
  416. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-agents-md-maintainer/SKILL.md +0 -0
  417. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-agents-md-maintainer/commands/agents-md-setup.md +0 -0
  418. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-agents-md-maintainer/references/state-schema.md +0 -0
  419. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-agents-md-maintainer/scripts/github_client.py +0 -0
  420. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-agents-md-maintainer/scripts/main.py +0 -0
  421. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-delivery-watchdog/.claude-plugin/plugin.json +0 -0
  422. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-delivery-watchdog/README.md +0 -0
  423. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-delivery-watchdog/SKILL.md +0 -0
  424. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-delivery-watchdog/commands/github-delivery-watchdog.md +0 -0
  425. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-delivery-watchdog/scripts/github_client.py +0 -0
  426. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-delivery-watchdog/scripts/worker.py +0 -0
  427. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/.claude-plugin/plugin.json +0 -0
  428. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/README.md +0 -0
  429. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/SKILL.md +0 -0
  430. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/commands/issue-to-pr-setup.md +0 -0
  431. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/references/state-schema.md +0 -0
  432. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/scripts/agent_conversation.py +0 -0
  433. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/scripts/github_client.py +0 -0
  434. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/scripts/main.py +0 -0
  435. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-to-pr/scripts/worker.py +0 -0
  436. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-triage/.claude-plugin/plugin.json +0 -0
  437. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-triage/README.md +0 -0
  438. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-triage/SKILL.md +0 -0
  439. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-triage/commands/github-issue-triage.md +0 -0
  440. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-triage/scripts/agent_conversation.py +0 -0
  441. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-triage/scripts/github_client.py +0 -0
  442. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-triage/scripts/triage_publication.py +0 -0
  443. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-issue-triage/scripts/worker.py +0 -0
  444. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/.claude-plugin/plugin.json +0 -0
  445. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/README.md +0 -0
  446. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/SKILL.md +0 -0
  447. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/commands/pr-reviewer-setup.md +0 -0
  448. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/references/state-schema.md +0 -0
  449. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/references/windows.md +0 -0
  450. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/scripts/agent_conversation.py +0 -0
  451. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/scripts/github_client.py +0 -0
  452. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/scripts/main.py +0 -0
  453. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/scripts/maintainer_handoff.py +0 -0
  454. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/scripts/publication.py +0 -0
  455. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/scripts/worker.py +0 -0
  456. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-pr-reviewer/tests/test_main.py +0 -0
  457. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/.claude-plugin/plugin.json +0 -0
  458. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/README.md +0 -0
  459. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/SKILL.md +0 -0
  460. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/commands/github-monitor-poll.md +0 -0
  461. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/references/github-api.md +0 -0
  462. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/references/state-schema.md +0 -0
  463. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/references/windows.md +0 -0
  464. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/scripts/github_client.py +0 -0
  465. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/scripts/main.py +0 -0
  466. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-repo-monitor/tests/test_main.py +0 -0
  467. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-stale-ci-pr-closer/.claude-plugin/plugin.json +0 -0
  468. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-stale-ci-pr-closer/README.md +0 -0
  469. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-stale-ci-pr-closer/SKILL.md +0 -0
  470. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-stale-ci-pr-closer/commands/github-stale-ci-pr-closer.md +0 -0
  471. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-stale-ci-pr-closer/scripts/worker.py +0 -0
  472. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/github-stale-ci-pr-closer/tests/test_worker.py +0 -0
  473. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab/.claude-plugin/plugin.json +0 -0
  474. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab/README.md +0 -0
  475. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab/SKILL.md +0 -0
  476. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab-issue-to-mr/.claude-plugin/plugin.json +0 -0
  477. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab-issue-to-mr/README.md +0 -0
  478. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab-issue-to-mr/SKILL.md +0 -0
  479. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab-issue-to-mr/commands/issue-to-mr-setup.md +0 -0
  480. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab-issue-to-mr/references/state-schema.md +0 -0
  481. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/gitlab-issue-to-mr/scripts/main.py +0 -0
  482. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/incident-retrospective/.claude-plugin/plugin.json +0 -0
  483. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/incident-retrospective/README.md +0 -0
  484. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/incident-retrospective/SKILL.md +0 -0
  485. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/incident-retrospective/commands/incident-retro-setup.md +0 -0
  486. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/index.d.ts +0 -0
  487. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/.claude-plugin/plugin.json +0 -0
  488. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/.codex-plugin/plugin.json +0 -0
  489. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/.plugin/plugin.json +0 -0
  490. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/README.md +0 -0
  491. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/SKILL.md +0 -0
  492. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/commands/babysit.md +0 -0
  493. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/commands/iterate.md +0 -0
  494. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/commands/verify.md +0 -0
  495. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/references/heuristics.md +0 -0
  496. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/references/verification.md +0 -0
  497. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/iterate/references/windows.md +0 -0
  498. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jira-issue-to-pr/.claude-plugin/plugin.json +0 -0
  499. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jira-issue-to-pr/README.md +0 -0
  500. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jira-issue-to-pr/SKILL.md +0 -0
  501. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jira-issue-to-pr/references/setup.md +0 -0
  502. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jira-issue-to-pr/scripts/main.py +0 -0
  503. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jira-issue-to-pr/scripts/setup_webhook.py +0 -0
  504. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jupyter/.claude-plugin/plugin.json +0 -0
  505. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jupyter/README.md +0 -0
  506. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/jupyter/SKILL.md +0 -0
  507. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/kubernetes/.claude-plugin/plugin.json +0 -0
  508. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/kubernetes/README.md +0 -0
  509. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/kubernetes/SKILL.md +0 -0
  510. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/kubernetes/references/windows.md +0 -0
  511. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/learn-from-code-review/.claude-plugin/plugin.json +0 -0
  512. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/learn-from-code-review/README.md +0 -0
  513. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/learn-from-code-review/SKILL.md +0 -0
  514. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/learn-from-code-review/commands/learn-from-reviews.md +0 -0
  515. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/linear/.claude-plugin/plugin.json +0 -0
  516. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/linear/README.md +0 -0
  517. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/linear/SKILL.md +0 -0
  518. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/linear/references/windows.md +0 -0
  519. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/linear-triage/.claude-plugin/plugin.json +0 -0
  520. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/linear-triage/README.md +0 -0
  521. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/linear-triage/SKILL.md +0 -0
  522. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/linear-triage/commands/linear-triage-setup.md +0 -0
  523. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/news-digest/.claude-plugin/plugin.json +0 -0
  524. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/news-digest/README.md +0 -0
  525. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/news-digest/SKILL.md +0 -0
  526. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/news-digest/commands/news-digest-setup.md +0 -0
  527. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/news-digest/references/state-schema.md +0 -0
  528. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/news-digest/scripts/main.py +0 -0
  529. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/notion/.claude-plugin/plugin.json +0 -0
  530. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/notion/README.md +0 -0
  531. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/notion/SKILL.md +0 -0
  532. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/notion/references/windows.md +0 -0
  533. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/npm/.claude-plugin/plugin.json +0 -0
  534. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/npm/README.md +0 -0
  535. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/npm/SKILL.md +0 -0
  536. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/openhands-enterprise-troubleshooting/.claude-plugin/plugin.json +0 -0
  537. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/openhands-enterprise-troubleshooting/README.md +0 -0
  538. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/openhands-enterprise-troubleshooting/SKILL.md +0 -0
  539. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/openhands-enterprise-troubleshooting/references/diagnostics.md +0 -0
  540. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/openhands-enterprise-troubleshooting/references/support-bundle-analysis.md +0 -0
  541. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/openhands-enterprise-troubleshooting/scripts/bundle_triage.py +0 -0
  542. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/pdflatex/.claude-plugin/plugin.json +0 -0
  543. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/pdflatex/README.md +0 -0
  544. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/pdflatex/SKILL.md +0 -0
  545. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/plain-english-content/.claude-plugin/plugin.json +0 -0
  546. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/plain-english-content/README.md +0 -0
  547. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/plain-english-content/SKILL.md +0 -0
  548. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/prd/.claude-plugin/plugin.json +0 -0
  549. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/prd/README.md +0 -0
  550. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/prd/SKILL.md +0 -0
  551. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/prd/commands/prd.md +0 -0
  552. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/research-brief/.claude-plugin/plugin.json +0 -0
  553. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/research-brief/README.md +0 -0
  554. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/research-brief/SKILL.md +0 -0
  555. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/research-brief/commands/research-brief-setup.md +0 -0
  556. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/simplified-technical-english/.claude-plugin/plugin.json +0 -0
  557. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/simplified-technical-english/README.md +0 -0
  558. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/simplified-technical-english/SKILL.md +0 -0
  559. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/.claude-plugin/plugin.json +0 -0
  560. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/LICENSE.txt +0 -0
  561. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/README.md +0 -0
  562. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/SKILL.md +0 -0
  563. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/references/output-patterns.md +0 -0
  564. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/references/windows.md +0 -0
  565. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/references/workflows.md +0 -0
  566. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/scripts/init_skill.py +0 -0
  567. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/skill-creator/scripts/quick_validate.py +0 -0
  568. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-channel-monitor/.claude-plugin/plugin.json +0 -0
  569. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-channel-monitor/README.md +0 -0
  570. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-channel-monitor/SKILL.md +0 -0
  571. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-channel-monitor/commands/slack-monitor-poll.md +0 -0
  572. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-channel-monitor/references/slack-api.md +0 -0
  573. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-channel-monitor/references/state-schema.md +0 -0
  574. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-channel-monitor/references/windows.md +0 -0
  575. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-channel-monitor/scripts/main.py +0 -0
  576. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-standup-digest/.claude-plugin/plugin.json +0 -0
  577. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-standup-digest/README.md +0 -0
  578. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-standup-digest/SKILL.md +0 -0
  579. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/slack-standup-digest/commands/standup-digest-setup.md +0 -0
  580. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/software-factory/.claude-plugin/plugin.json +0 -0
  581. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/software-factory/scripts/factory.py +0 -0
  582. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/spark-version-upgrade/.claude-plugin/plugin.json +0 -0
  583. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/spark-version-upgrade/README.md +0 -0
  584. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/spark-version-upgrade/SKILL.md +0 -0
  585. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/ssh/.claude-plugin/plugin.json +0 -0
  586. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/ssh/README.md +0 -0
  587. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/ssh/SKILL.md +0 -0
  588. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/ssh/references/windows.md +0 -0
  589. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/swift-linux/.claude-plugin/plugin.json +0 -0
  590. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/swift-linux/README.md +0 -0
  591. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/swift-linux/SKILL.md +0 -0
  592. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/technical-writing/.claude-plugin/plugin.json +0 -0
  593. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/technical-writing/README.md +0 -0
  594. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/technical-writing/SKILL.md +0 -0
  595. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/.claude-plugin/plugin.json +0 -0
  596. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/LICENSE.txt +0 -0
  597. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/README.md +0 -0
  598. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/SKILL.md +0 -0
  599. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/theme-showcase.pdf +0 -0
  600. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/arctic-frost.md +0 -0
  601. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/botanical-garden.md +0 -0
  602. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/desert-rose.md +0 -0
  603. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/forest-canopy.md +0 -0
  604. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/golden-hour.md +0 -0
  605. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/midnight-galaxy.md +0 -0
  606. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/modern-minimalist.md +0 -0
  607. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/ocean-depths.md +0 -0
  608. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/sunset-boulevard.md +0 -0
  609. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/theme-factory/themes/tech-innovation.md +0 -0
  610. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/ticket-to-code-change/.claude-plugin/plugin.json +0 -0
  611. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/ticket-to-code-change/README.md +0 -0
  612. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/ticket-to-code-change/SKILL.md +0 -0
  613. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/ticket-to-code-change/commands/ticket-to-code-change-setup.md +0 -0
  614. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/upstream-fork-sync/.claude-plugin/plugin.json +0 -0
  615. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/upstream-fork-sync/README.md +0 -0
  616. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/upstream-fork-sync/SKILL.md +0 -0
  617. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/upstream-fork-sync/commands/upstream-fork-sync-setup.md +0 -0
  618. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/use-jev/.claude-plugin/plugin.json +0 -0
  619. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/use-jev/README.md +0 -0
  620. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/use-jev/SKILL.md +0 -0
  621. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/uv/.claude-plugin/plugin.json +0 -0
  622. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/uv/README.md +0 -0
  623. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/uv/SKILL.md +0 -0
  624. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/uv/references/README.md +0 -0
  625. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/vercel/.claude-plugin/plugin.json +0 -0
  626. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/vercel/README.md +0 -0
  627. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/skills/vercel/SKILL.md +0 -0
  628. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/fixtures/automations/capabilities.json +0 -0
  629. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/fixtures/automations/custom-automation.json +0 -0
  630. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/fixtures/automations/github-pr-reviewer.json +0 -0
  631. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/fixtures/automations/github-repo-monitor.json +0 -0
  632. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/fixtures/automations/incident-retrospective-drafter.json +0 -0
  633. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/fixtures/automations/upstream-fork-sync.json +0 -0
  634. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/github_automation_helpers.py +0 -0
  635. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_add_skill_installs_to_agents_dir.py +0 -0
  636. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_agent_conversation_dispatch.py +0 -0
  637. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_apps_catalog.py +0 -0
  638. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_automation_llm_provenance.py +0 -0
  639. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_automation_setup.py +0 -0
  640. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_catalog_schema.py +0 -0
  641. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_catalogs.py +0 -0
  642. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_check_pr_description.py +0 -0
  643. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_code_review_risk_evaluation.py +0 -0
  644. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_deprecations.py +0 -0
  645. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_agents_md_maintainer.py +0 -0
  646. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_automation_foundation.py +0 -0
  647. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_developer_delivery.py +0 -0
  648. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_issue_to_pr.py +0 -0
  649. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_pr_review_skill.py +0 -0
  650. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_repo_monitor.py +0 -0
  651. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_review_publication.py +0 -0
  652. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_reviewer_delivery.py +0 -0
  653. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_skill_installation.py +0 -0
  654. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_stale_ci_pr_closer.py +0 -0
  655. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_triage_delivery.py +0 -0
  656. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_github_watchdog_delivery.py +0 -0
  657. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_gitlab_issue_to_mr.py +0 -0
  658. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_integration_catalog_in_sync.py +0 -0
  659. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_interface_manifest.py +0 -0
  660. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_issue_duplicate_checker.py +0 -0
  661. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_jira_issue_to_pr.py +0 -0
  662. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_jira_setup_webhook.py +0 -0
  663. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_live_integration_smoke.py +0 -0
  664. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_maintainer_handoff.py +0 -0
  665. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_news_digest.py +0 -0
  666. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_openhands_api_python.py +0 -0
  667. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_plugin_manifest.py +0 -0
  668. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_pr_review_diff_payload.py +0 -0
  669. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_pr_review_feedback.py +0 -0
  670. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_pr_review_prompt.py +0 -0
  671. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_pr_review_prompt_injection.py +0 -0
  672. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_pr_review_review_context.py +0 -0
  673. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_qa_changes.py +0 -0
  674. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_qa_changes_evaluation.py +0 -0
  675. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_refresh_linked_pr_checks.py +0 -0
  676. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_release_notes_generator.py +0 -0
  677. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_sdk_loading.py +0 -0
  678. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_skill_plugin_loading.py +0 -0
  679. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_skills_catalog.py +0 -0
  680. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_skills_have_readme.py +0 -0
  681. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_slack_channel_monitor.py +0 -0
  682. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_software_factory_script.py +0 -0
  683. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_sync_extensions.py +0 -0
  684. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_version_alignment.py +0 -0
  685. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_vscode_app.py +0 -0
  686. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/test_workflow_sync.py +0 -0
  687. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/tests/vscode-app.test.mjs +0 -0
  688. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/utils/analysis/README.md +0 -0
  689. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/utils/analysis/laminar_signals/README.md +0 -0
  690. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/utils/analysis/laminar_signals/analyze.py +0 -0
  691. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/utils/analysis/laminar_signals/templates/default.j2 +0 -0
  692. {openhands_extensions-0.32.1 → openhands_extensions-0.34.0}/utils/analysis/laminar_signals/templates/pr_review.j2 +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.34.0"
3
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhands-extensions
3
- Version: 0.32.1
3
+ Version: 0.34.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
@@ -50,6 +50,54 @@
50
50
  "apiBaseUrl": "https://sentry.io/api/0",
51
51
  "openApiUrl": "https://raw.githubusercontent.com/getsentry/sentry/master/api-docs/openapi.json"
52
52
  }
53
+ },
54
+ {
55
+ "id": "mcp",
56
+ "provider": "mcp",
57
+ "transport": {
58
+ "kind": "shttp",
59
+ "url": "https://mcp.sentry.dev/mcp"
60
+ },
61
+ "auth": {
62
+ "strategy": "oauth2",
63
+ "oauth": {
64
+ "clientAuthentication": "none"
65
+ }
66
+ }
67
+ },
68
+ {
69
+ "id": "api",
70
+ "provider": "mcp",
71
+ "transport": {
72
+ "kind": "stdio",
73
+ "serverName": "sentry",
74
+ "command": "npx",
75
+ "args": [
76
+ "-y",
77
+ "@sentry/mcp-server"
78
+ ],
79
+ "envFields": [
80
+ {
81
+ "key": "SENTRY_ACCESS_TOKEN",
82
+ "label": "Personal auth token",
83
+ "type": "password",
84
+ "placeholder": "sntryu_...",
85
+ "required": true,
86
+ "helperText": "Create a [personal auth token](https://docs.sentry.io/account/auth-tokens/) with org:read, project:read, project:write, team:read, team:write, event:read and event:write. With read scopes only, tools that change issues or projects fail. On a self-hosted server, create it there."
87
+ },
88
+ {
89
+ "key": "SENTRY_HOST",
90
+ "label": "Self-hosted Sentry host",
91
+ "type": "text",
92
+ "placeholder": "sentry.example.com",
93
+ "required": false,
94
+ "helperText": "Leave empty for sentry.io. For a self-hosted server, enter its hostname without https://."
95
+ }
96
+ ]
97
+ },
98
+ "auth": {
99
+ "strategy": "api_key"
100
+ }
53
101
  }
54
102
  ],
55
103
  "iconBg": "#362D59",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openhands/extensions",
3
- "version": "0.32.1",
3
+ "version": "0.34.0",
4
4
  "description": "Public OpenHands extension catalogs for skills, plugins, integrations, and automation templates.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -182,9 +182,9 @@ def create_remediation_prompt(vuln: Vulnerability, repo_name: str) -> str:
182
182
 
183
183
  ```bash
184
184
  # Find ALL dependency files containing the package (excludes dependency/build directories)
185
- find . \( -name node_modules -o -name .venv -o -name venv -o -name vendor -o -name .git -o -name __pycache__ -o -name dist -o -name build \) -prune -o -name "pyproject.toml" -exec grep -l "{vuln.package_name}" {} + 2>/dev/null
186
- find . \( -name node_modules -o -name .venv -o -name venv -o -name vendor -o -name .git \) -prune -o -name "requirements*.txt" -exec grep -l "{vuln.package_name}" {} + 2>/dev/null
187
- find . \( -name node_modules -o -name .venv -o -name venv -o -name vendor -o -name .git \) -prune -o -name "package.json" -exec grep -l "{vuln.package_name}" {} + 2>/dev/null
185
+ find . \( -name node_modules -o -name .venv -o -name venv -o -name vendor -o -name .git -o -name __pycache__ -o -name dist -o -name build \) -prune -o -name "pyproject.toml" -exec grep -l "{vuln.package_name}" {{}} + 2>/dev/null
186
+ find . \( -name node_modules -o -name .venv -o -name venv -o -name vendor -o -name .git \) -prune -o -name "requirements*.txt" -exec grep -l "{vuln.package_name}" {{}} + 2>/dev/null
187
+ find . \( -name node_modules -o -name .venv -o -name venv -o -name vendor -o -name .git \) -prune -o -name "package.json" -exec grep -l "{vuln.package_name}" {{}} + 2>/dev/null
188
188
  ```
189
189
 
190
190
  Update {vuln.package_name} from {vuln.installed_version} to {vuln.fixed_version} in **EVERY** file found.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "openhands-extensions"
3
- version = "0.32.1"
3
+ version = "0.34.0"
4
4
  description = "OpenHands extensions, plugins, and skills (Python bindings for the integration catalog)"
5
5
  requires-python = ">=3.12"
6
6
  dependencies = [
@@ -18,7 +18,7 @@ from importlib.metadata import PackageNotFoundError, version
18
18
  #: Kept in lock-step with pyproject.toml/package.json by the version test.
19
19
  #: release-please only rewrites a semver found on the annotated line itself, so
20
20
  #: the annotation must stay on the assignment; on its own line it is a no-op.
21
- _FALLBACK_VERSION = "0.32.1" # x-release-please-version
21
+ _FALLBACK_VERSION = "0.34.0" # x-release-please-version
22
22
 
23
23
  try:
24
24
  __version__: str = version("openhands-extensions")
@@ -21,7 +21,17 @@ You can use `curl` with the `AZURE_DEVOPS_TOKEN` to interact with Azure DevOps's
21
21
  ALWAYS use the Azure DevOps API for operations instead of a web browser.
22
22
  </IMPORTANT>
23
23
 
24
- If you encounter authentication issues when pushing to Azure DevOps (such as password prompts or permission errors), the old token may have expired. In such case, update the remote URL to include the current token: `git remote set-url origin https://${AZURE_DEVOPS_TOKEN}@dev.azure.com/organization/project/_git/repository`
24
+ ### Git
25
+
26
+ Use plain `git clone`, `git fetch`, `git pull` and `git push`. OpenHands sets up git credentials for each Azure DevOps organization the user belongs to, so these commands work for any repository in those organizations, not only the one that was opened. Run them with `GIT_TERMINAL_PROMPT=0` so git fails at once instead of waiting at a username or password prompt.
27
+
28
+ A repository written as `ORG/PROJECT/REPO` is cloned from `https://dev.azure.com/ORG/PROJECT/_git/REPO`:
29
+
30
+ ```bash
31
+ GIT_TERMINAL_PROMPT=0 git clone https://dev.azure.com/ORG/PROJECT/_git/REPO
32
+ ```
33
+
34
+ Do not put `AZURE_DEVOPS_TOKEN` in a remote URL or pass it to git as an option: a token saved in `.git/config` stays on disk and stops working when it expires. If git fails because it needs a username or password, credentials are not set up for that organization; tell the user instead of embedding the token.
25
35
 
26
36
  Here are some instructions for pushing, but ONLY do this if the user asks you to:
27
37
  * NEVER push directly to the `main` or `master` branch
@@ -34,17 +44,17 @@ Here are some instructions for pushing, but ONLY do this if the user asks you to
34
44
  * Do all of the above in as few steps as possible. E.g. you could push changes with one step by running the following bash commands:
35
45
  ```bash
36
46
  git remote -v && git branch # to find the current org, repo and branch
37
- git checkout -b create-widget && git add . && git commit -m "Create widget" && git push -u origin create-widget
47
+ git checkout -b create-widget && git add . && git commit -m "Create widget" && GIT_TERMINAL_PROMPT=0 git push -u origin create-widget
38
48
  ```
39
49
 
40
50
  ## Azure DevOps API Usage
41
51
 
42
- When working with Azure DevOps API, you need to use Basic authentication with your Personal Access Token (PAT). The username is ignored (empty string), and the password is the PAT.
52
+ `AZURE_DEVOPS_TOKEN` is either a Personal Access Token (PAT) or, for users who sign in with Microsoft Entra ID, an Entra access token. Basic authentication works with both: leave the username empty and use the token as the password. An Entra access token can also be sent as `Authorization: Bearer $AZURE_DEVOPS_TOKEN`.
43
53
 
44
54
  Here's how to authenticate with curl:
45
55
  ```bash
46
- # Convert PAT to base64
47
- AUTH=$(echo -n ":$AZURE_DEVOPS_TOKEN" | base64)
56
+ # Base64-encode ":<token>" on one line (Entra tokens are long enough to wrap)
57
+ AUTH=$(echo -n ":$AZURE_DEVOPS_TOKEN" | base64 | tr -d '\n')
48
58
 
49
59
  # Make API call
50
60
  curl -H "Authorization: Basic $AUTH" -H "Content-Type: application/json" https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1
@@ -18,7 +18,17 @@ You can use `curl` with the `AZURE_DEVOPS_TOKEN` to interact with Azure DevOps's
18
18
  ALWAYS use the Azure DevOps API for operations instead of a web browser.
19
19
  </IMPORTANT>
20
20
 
21
- If you encounter authentication issues when pushing to Azure DevOps (such as password prompts or permission errors), the old token may have expired. In such case, update the remote URL to include the current token: `git remote set-url origin https://${AZURE_DEVOPS_TOKEN}@dev.azure.com/organization/project/_git/repository`
21
+ ## Git
22
+
23
+ Use plain `git clone`, `git fetch`, `git pull` and `git push`. OpenHands sets up git credentials for each Azure DevOps organization the user belongs to, so these commands work for any repository in those organizations, not only the one that was opened. Run them with `GIT_TERMINAL_PROMPT=0` so git fails at once instead of waiting at a username or password prompt.
24
+
25
+ A repository written as `ORG/PROJECT/REPO` is cloned from `https://dev.azure.com/ORG/PROJECT/_git/REPO`:
26
+
27
+ ```bash
28
+ GIT_TERMINAL_PROMPT=0 git clone https://dev.azure.com/ORG/PROJECT/_git/REPO
29
+ ```
30
+
31
+ Do not put `AZURE_DEVOPS_TOKEN` in a remote URL or pass it to git as an option: a token saved in `.git/config` stays on disk and stops working when it expires. If git fails because it needs a username or password, credentials are not set up for that organization; tell the user instead of embedding the token.
22
32
 
23
33
  Here are some instructions for pushing, but ONLY do this if the user asks you to:
24
34
  * NEVER push directly to the `main` or `master` branch
@@ -31,25 +41,25 @@ Here are some instructions for pushing, but ONLY do this if the user asks you to
31
41
  * Do all of the above in as few steps as possible. E.g. you could push changes with one step by running the following bash commands:
32
42
  ```bash
33
43
  git remote -v && git branch # to find the current org, repo and branch
34
- git checkout -b create-widget && git add . && git commit -m "Create widget" && git push -u origin create-widget
44
+ git checkout -b create-widget && git add . && git commit -m "Create widget" && GIT_TERMINAL_PROMPT=0 git push -u origin create-widget
35
45
  ```
36
46
 
37
- On Windows PowerShell, run those `git` commands as separate commands if `&&` is not supported by the installed shell.
47
+ On Windows PowerShell, set `$env:GIT_TERMINAL_PROMPT = "0"` and run those `git` commands as separate commands if `&&` is not supported by the installed shell.
38
48
 
39
49
  ## Azure DevOps API Usage
40
50
 
41
- When working with Azure DevOps API, you need to use Basic authentication with your Personal Access Token (PAT). The username is ignored (empty string), and the password is the PAT.
51
+ `AZURE_DEVOPS_TOKEN` is either a Personal Access Token (PAT) or, for users who sign in with Microsoft Entra ID, an Entra access token. Basic authentication works with both: leave the username empty and use the token as the password. An Entra access token can also be sent as `Authorization: Bearer $AZURE_DEVOPS_TOKEN`.
42
52
 
43
53
  Here's how to authenticate with curl:
44
54
  ```bash
45
- # Convert PAT to base64
46
- AUTH=$(echo -n ":$AZURE_DEVOPS_TOKEN" | base64)
55
+ # Base64-encode ":<token>" on one line (Entra tokens are long enough to wrap)
56
+ AUTH=$(echo -n ":$AZURE_DEVOPS_TOKEN" | base64 | tr -d '\n')
47
57
 
48
58
  # Make API call
49
59
  curl -H "Authorization: Basic $AUTH" -H "Content-Type: application/json" https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1
50
60
  ```
51
61
 
52
- PowerShell equivalent for the PAT header:
62
+ PowerShell equivalent for the Basic header:
53
63
 
54
64
  ```powershell
55
65
  $auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$env:AZURE_DEVOPS_TOKEN"))
@@ -75,7 +75,7 @@ export const SKILLS_CATALOG = [
75
75
  "azure_devops",
76
76
  "azure"
77
77
  ],
78
- "content": "## Connection selection\n\nUse authenticated Azure DevOps MCP tools first when they are available in the agent's environment. Detect this by tool availability, without depending on a particular MCP server name. Use the token and direct API instructions below only when Azure DevOps MCP tools are unavailable or when raw API or `curl` access is explicitly needed.\n\nYou have access to an environment variable, `AZURE_DEVOPS_TOKEN`, which allows you to interact with\nthe Azure DevOps API.\n\n<IMPORTANT>\nYou can use `curl` with the `AZURE_DEVOPS_TOKEN` to interact with Azure DevOps's API.\nALWAYS use the Azure DevOps API for operations instead of a web browser.\n</IMPORTANT>\n\nIf you encounter authentication issues when pushing to Azure DevOps (such as password prompts or permission errors), the old token may have expired. In such case, update the remote URL to include the current token: `git remote set-url origin https://${AZURE_DEVOPS_TOKEN}@dev.azure.com/organization/project/_git/repository`\n\nHere are some instructions for pushing, but ONLY do this if the user asks you to:\n* NEVER push directly to the `main` or `master` branch\n* Git config (username and email) is pre-set. Do not modify.\n* You may already be on a branch starting with `openhands-workspace`. Create a new branch with a better name before pushing.\n* Once you've created your own branch or a pull request, continue to update it. Do NOT create a new one unless you are explicitly asked to. Update the PR title and description as necessary, but don't change the branch name.\n* Use the main branch as the base branch, unless the user requests otherwise\n* After opening or updating a pull request, send the user a short message with a link to the pull request.\n* Do NOT mark a pull request as ready to review unless the user explicitly says so\n* Do all of the above in as few steps as possible. E.g. you could push changes with one step by running the following bash commands:\n```bash\ngit remote -v && git branch # to find the current org, repo and branch\ngit checkout -b create-widget && git add . && git commit -m \"Create widget\" && git push -u origin create-widget\n```\n\nOn Windows PowerShell, run those `git` commands as separate commands if `&&` is not supported by the installed shell.\n\n## Azure DevOps API Usage\n\nWhen working with Azure DevOps API, you need to use Basic authentication with your Personal Access Token (PAT). The username is ignored (empty string), and the password is the PAT.\n\nHere's how to authenticate with curl:\n```bash\n# Convert PAT to base64\nAUTH=$(echo -n \":$AZURE_DEVOPS_TOKEN\" | base64)\n\n# Make API call\ncurl -H \"Authorization: Basic $AUTH\" -H \"Content-Type: application/json\" https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1\n```\n\nPowerShell equivalent for the PAT header:\n\n```powershell\n$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$env:AZURE_DEVOPS_TOKEN\"))\nInvoke-RestMethod `\n -Headers @{ Authorization = \"Basic $auth\"; \"Content-Type\" = \"application/json\" } `\n -Uri \"https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1\"\n```\n\nCommon API endpoints:\n- List repositories: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1`\n- Get repository details: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=7.1`\n- List pull requests: `https://dev.azure.com/{organization}/{project}/_apis/git/pullrequests?api-version=7.1`\n- Create pull request: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1` (POST)",
78
+ "content": "## Connection selection\n\nUse authenticated Azure DevOps MCP tools first when they are available in the agent's environment. Detect this by tool availability, without depending on a particular MCP server name. Use the token and direct API instructions below only when Azure DevOps MCP tools are unavailable or when raw API or `curl` access is explicitly needed.\n\nYou have access to an environment variable, `AZURE_DEVOPS_TOKEN`, which allows you to interact with\nthe Azure DevOps API.\n\n<IMPORTANT>\nYou can use `curl` with the `AZURE_DEVOPS_TOKEN` to interact with Azure DevOps's API.\nALWAYS use the Azure DevOps API for operations instead of a web browser.\n</IMPORTANT>\n\n## Git\n\nUse plain `git clone`, `git fetch`, `git pull` and `git push`. OpenHands sets up git credentials for each Azure DevOps organization the user belongs to, so these commands work for any repository in those organizations, not only the one that was opened. Run them with `GIT_TERMINAL_PROMPT=0` so git fails at once instead of waiting at a username or password prompt.\n\nA repository written as `ORG/PROJECT/REPO` is cloned from `https://dev.azure.com/ORG/PROJECT/_git/REPO`:\n\n```bash\nGIT_TERMINAL_PROMPT=0 git clone https://dev.azure.com/ORG/PROJECT/_git/REPO\n```\n\nDo not put `AZURE_DEVOPS_TOKEN` in a remote URL or pass it to git as an option: a token saved in `.git/config` stays on disk and stops working when it expires. If git fails because it needs a username or password, credentials are not set up for that organization; tell the user instead of embedding the token.\n\nHere are some instructions for pushing, but ONLY do this if the user asks you to:\n* NEVER push directly to the `main` or `master` branch\n* Git config (username and email) is pre-set. Do not modify.\n* You may already be on a branch starting with `openhands-workspace`. Create a new branch with a better name before pushing.\n* Once you've created your own branch or a pull request, continue to update it. Do NOT create a new one unless you are explicitly asked to. Update the PR title and description as necessary, but don't change the branch name.\n* Use the main branch as the base branch, unless the user requests otherwise\n* After opening or updating a pull request, send the user a short message with a link to the pull request.\n* Do NOT mark a pull request as ready to review unless the user explicitly says so\n* Do all of the above in as few steps as possible. E.g. you could push changes with one step by running the following bash commands:\n```bash\ngit remote -v && git branch # to find the current org, repo and branch\ngit checkout -b create-widget && git add . && git commit -m \"Create widget\" && GIT_TERMINAL_PROMPT=0 git push -u origin create-widget\n```\n\nOn Windows PowerShell, set `$env:GIT_TERMINAL_PROMPT = \"0\"` and run those `git` commands as separate commands if `&&` is not supported by the installed shell.\n\n## Azure DevOps API Usage\n\n`AZURE_DEVOPS_TOKEN` is either a Personal Access Token (PAT) or, for users who sign in with Microsoft Entra ID, an Entra access token. Basic authentication works with both: leave the username empty and use the token as the password. An Entra access token can also be sent as `Authorization: Bearer $AZURE_DEVOPS_TOKEN`.\n\nHere's how to authenticate with curl:\n```bash\n# Base64-encode \":<token>\" on one line (Entra tokens are long enough to wrap)\nAUTH=$(echo -n \":$AZURE_DEVOPS_TOKEN\" | base64 | tr -d '\\n')\n\n# Make API call\ncurl -H \"Authorization: Basic $AUTH\" -H \"Content-Type: application/json\" https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1\n```\n\nPowerShell equivalent for the Basic header:\n\n```powershell\n$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(\":$env:AZURE_DEVOPS_TOKEN\"))\nInvoke-RestMethod `\n -Headers @{ Authorization = \"Basic $auth\"; \"Content-Type\" = \"application/json\" } `\n -Uri \"https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1\"\n```\n\nCommon API endpoints:\n- List repositories: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1`\n- Get repository details: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=7.1`\n- List pull requests: `https://dev.azure.com/{organization}/{project}/_apis/git/pullrequests?api-version=7.1`\n- Create pull request: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1` (POST)",
79
79
  "category": "code-hosting"
80
80
  },
81
81
  {
@@ -610,12 +610,12 @@ export const SKILLS_CATALOG = [
610
610
  },
611
611
  {
612
612
  "name": "software-factory",
613
- "description": "Set up an OpenHands \"software factory\" on GitHub fast: ask only for the repositories and where tickets live (GitHub issues, Jira or Linear), create a working issue-to-PR and PR-review pipeline from the automation catalog with defaults, show what runs, then let the user stop or extend it one step at a time (tune settings, triage, auto-merge, stale-CI and QA add-ons).",
613
+ "description": "Set up an OpenHands \"software factory\" on GitHub fast: ask only for the repositories and where tickets live (GitHub issues, Jira or Linear), create a working issue-to-PR and PR-review pipeline from the automation catalog with defaults, show what runs, then let the user stop or extend it one step at a time (tune settings, AGENTS.md maintainer, auto-merge, stale-CI and QA add-ons).",
614
614
  "triggers": [
615
615
  "/software-factory",
616
616
  "software factory"
617
617
  ],
618
- "content": "# Software Factory\n\nBuild a GitHub software factory from unmodified automation catalog bundles\n(`automations/catalog/<id>/manifest.json`); a Jira or Linear station is created\nby its own skill. This skill adds no automation logic.\n\nTwo phases: **Phase 1** gets a working factory after one question. **Phase 2**\nextends it in short rounds, only as far as the user wants. After Phase 1 and\nafter every round, the **Checkpoint** shows what exists and lets the user stop.\n\nCode lives on GitHub. Tickets can come from GitHub issues (default), Jira or\nLinear: only the issue to PR station changes (see \"Ticket source\"). GitLab and\nBitbucket code hosts are not part of this flow.\n\n## Stations\n\n| Station | Catalog id | Phase | Needs agent profile |\n|---|---|---|---|\n| Issue to PR | `github-issue-to-pr`, or the Jira or Linear station | 1 | yes (GitHub issues only) |\n| PR reviewer | `github-pr-reviewer` | 1 | yes |\n| AGENTS.md maintainer | `github-agents-md-maintainer` | 1 | no |\n| Issue triage | `github-issue-triage`, or `linear-triage-assistant` | add-on | yes (GitHub issues only) |\n| Auto-merge watchdog | `github-delivery-watchdog` | add-on | no |\n| Stale-CI PR closer | `github-stale-ci-pr-closer` | add-on | no |\n| QA changes | `qa-changes` | add-on | no |\n\n## Helper script\n\n`scripts/factory.py` in this skill's directory does every catalog and API step\nand prints one JSON document; it exits non-zero with `{\"error\": ...}` on\nfailure. Its usage is below: do not read its source, and do not load the\n`openhands-automation` skill for Phase 1.\n\nSet `OPENHANDS_HOST` to the **Ingress** URL in `<RUNTIME_SERVICES>` on a local\nAgent Canvas (it serves both `/api/automation` and `/api`; the automation\nbackend URL does not), or to `<HOST>` on OpenHands Cloud. Run every command as:\n\n```bash\nGITHUB_PERSONAL_ACCESS_TOKEN=\"$GITHUB_PERSONAL_ACCESS_TOKEN\" \\\nOPENHANDS_AUTOMATION_API_KEY=\"$OPENHANDS_AUTOMATION_API_KEY\" \\\nOPENHANDS_API_KEY=\"$OPENHANDS_API_KEY\" \\\npython3 <this skill's directory>/scripts/factory.py <command> ...\n```\n\n`$F` below stands for that whole line. Keep the secret names in it: the agent\nserver passes a saved secret into a command only when the command names it.\nThe script reads the token and never prints it.\n\n| Command | Does |\n|---|---|\n| `$F preflight --repos a/b,c/d` | Which stations this deployment supports, the agent profile, the GitHub login, push access per repository. |\n| `$F create --repos a/b --ids ID,ID [--set FIELD=VALUE] [--set ID.FIELD=VALUE]` | Fills each station's form (answers, then derived values, then manifest defaults), uploads the bundle and creates it disabled. `FIELD=VALUE` applies to every listed station with that field. Stations that already exist are reported under `existing`, not recreated. |\n| `$F tune --repos a/b --ids ID,ID [--set FIELD=VALUE] [--set ID.FIELD=VALUE]` | Applies new settings to an existing station by updating it in place. Use this to change a value that is fixed at creation. |\n| `$F verify ID... [--no-wait ID...]` | Dispatches once, enables the ones whose run `COMPLETED` and disables the rest, reporting their `error_detail`. `--no-wait` enables without waiting. |\n| `$F status ID...` | The latest run of each. |\n| `$F prs --repos a/b [--branch-prefix P]` | Open pull requests whose branch starts with `P` (default `openhands/agents-md`, the AGENTS.md maintainer's). |\n| `$F reset-token` | Deletes the saved `GITHUB_PERSONAL_ACCESS_TOKEN` (local Agent Canvas), so `request_secret` opens its form again. |\n\n`create` and `verify` return each automation's `url`, its page in Agent Canvas.\nTrust the script's output: do not open pages in the browser to check them, and\ndo not use the task tracker for this flow.\n\nAdd `--profile NAME` to `preflight` or `create` to use a profile other than the\nactive one.\n\n## Rules\n\n- **Supported stations**: create only those `preflight` reports `ok`; say why\n the others are skipped.\n- **Derived values** (the script fills them; never ask): every\n `githubTokenSecret` is `GITHUB_PERSONAL_ACCESS_TOKEN`. The watchdog's\n `branchPrefix` must equal issue to PR's: when it was changed, pass\n `--set github-delivery-watchdog.branchPrefix=<same value>`.\n- **Agent profile**: if `preflight` reports a profile error, skip the stations\n that need one and point the user to the station's catalog card in Agent\n Canvas (Automations), which has a profile picker.\n- **Token**: never ask for its value in chat, echo it, or put it in a tool\n argument or file.\n- **Failures**: if `create` fails, its output lists the stations it already\n created; report them with the error and ask whether to retry or delete them\n (`DELETE ${OPENHANDS_HOST}/api/automation/v1/{id}`).\n- **Existing stations**: a station `create` reports under `existing` was already\n set up by an earlier run and was left unchanged. Say so rather than presenting\n it as new, and change it with `$F tune` if the user wants different settings.\n\n## Phase 1 - Working factory\n\n1. Ask, in one message: \"Which GitHub repositories (`owner/repo`)? Where do\n tickets live: GitHub issues (default), Jira or Linear?\" Say that everything\n else uses defaults that can be changed afterwards. If the answer names only\n repositories, use GitHub issues; do not ask again.\n2. Run `$F preflight --repos <repos>`. Drop repositories without `push`, and\n say which.\n3. If `github_login` is null, act on `token_error`:\n - `not_set`, and the `request_secret` tool is available: call it once with\n `name: \"GITHUB_PERSONAL_ACCESS_TOKEN\"` and a `reason` asking for Contents,\n Issues, Pull requests and Workflows read and write (classic PAT: `repo`,\n `workflow`). End your turn, wait for the `[secret-request]` message,\n then rerun `preflight`.\n - `rejected`: GitHub refuses the saved token (invalid or expired), and\n `request_secret` cannot replace it: it answers `saved` at once for a name\n that exists. Say so in one sentence and ask \"Shall I remove it and open\n the form for a new one?\" On yes, run `$F reset-token`, then handle it as\n `not_set`. If `reset-token` fails, tell the user to replace it in\n Settings -> Secrets and say when done.\n - `not_set` without the tool: tell the user to add it in Settings ->\n Secrets and stop.\n4. `$F create --repos <repos> --ids github-pr-reviewer,github-agents-md-maintainer`,\n adding `github-issue-to-pr` for GitHub issues. For Jira or Linear, also set\n up the issue to PR station as \"Ticket source\" describes.\n5. `$F verify <reviewer id> [<issue to PR id>] --no-wait <maintainer id>`. The\n maintainer's run opens one `AGENTS.md` pull request per repository.\n6. Go to the Checkpoint.\n\n## Checkpoint\n\nWrite one short message, in this order:\n\n1. One plain sentence on what runs and how to use it: \"Your factory is running\n on `<repos>`. Add the `<trigger label>` label to a ticket to get a draft pull\n request; the reviewer reviews it and you merge it.\" (On Jira, add that the\n ticket body must name the `owner/repo`.)\n2. The `AGENTS.md` pull requests from `$F prs --repos <repos>`, asking the user\n to merge them: they give the build agent the repository's build, test and\n lint commands. One opened before this setup started (`created_at`) is\n \"still open from an earlier run\", not new; the maintainer works once a week\n per repository. If there are none yet, say they are on their way.\n3. A small table of the automations, each linked to its `url`:\n\n | Automation | Schedule | Status |\n |---|---|---|\n | [Issue to PR](<url>) | every 15 minutes | on |\n\n Status is `on`, or `off` with the reason in a few words. No automation ids.\n4. The settings in effect, as a short list (the Tune table's current values).\n Mention that the reviewer also reviews any open, non-draft, green pull\n request with no review yet (at most 2 new per scan).\n5. End with only a list of possible next steps, one line each, and nothing\n after it. Mark the first one not done yet as recommended:\n - **Try it**: I open a small test issue with the `<trigger label>` label in\n `<repo>`, only if you say so, and report the pull request.\n - **Tune**: change a setting from the list above.\n - **Add a station**: triage, auto-merge watchdog, stale-CI closer (QA only\n if `preflight` reports it `ok`).\n - **Stop here**: the factory keeps running as it is.\n\n## Phase 2 - Extend, one round at a time\n\nDo only what the user picked. Ask only the questions for it, in one message,\neach with its current value. Apply, then return to the Checkpoint.\n\n### Tune\n\n| Setting | Default | `--set` |\n|---|---|---|\n| Issue trigger label (GitHub issues) | `openhands` | `github-issue-to-pr.triggerLabel` |\n| Draft or ready pull requests | `draft` | `pullRequestMode` (issue to PR, AGENTS.md maintainer) |\n| Branch prefix (GitHub issues) | `openhands/issue` | `github-issue-to-pr.branchPrefix` (and the watchdog's, if present) |\n| Which pull requests get reviewed | label `openhands-review`, reviewer `all-hands-bot` | `github-pr-reviewer.triggerLabel`, `triggerReviewer` |\n| Review tone: concise, thorough, friendly | `concise` | `reviewTone` |\n| Human reviewers requested after agent approval (two or more logins) | none | `maintainers` |\n| Schedules and timezone | issue to PR `*/15 * * * *`, reviewer `*/5 * * * *`, AGENTS.md maintainer `0 9 * * 1`, add-ons per manifest; `UTC` | `ID.schedule`, `timezone` |\n| Agent profile | active profile | `--profile NAME` |\n\nApply:\n\n- Schedule or timezone only:\n `PATCH ${OPENHANDS_HOST}/api/automation/v1/{id}` with `{\"trigger\": {...}}`.\n- Jira or Linear station settings: change them as its skill describes.\n- Anything else is fixed at creation: `$F tune --repos <repos> --ids <id>` with\n the new `--set` values (repeat every earlier non-default value), then\n `$F verify <id>`. `tune` updates the station in place, so there is no\n replacement to delete and no template-id collision.\n\n### Add a station\n\nAsk only the question below, then `$F create` it and `$F verify` it.\n\n- **Auto-merge watchdog** (`github-delivery-watchdog`, GitHub issues only,\n since it merges only branches with the issue to PR prefix): confirm the user\n wants the agent to merge pull requests itself once review, tests and CI are\n green.\n- **Stale-CI closer** (`github-stale-ci-pr-closer`): confirm it may warn on,\n then close, pull requests whose CI keeps failing.\n- **Triage** (`github-issue-triage`): nothing. For Linear, follow the\n `linear-triage` skill instead; for Jira there is none.\n- **QA changes**: which base branch (default `main`). Offer QA only if\n `preflight` reports it `ok` and the `openhands-automation` webhook\n reachability check passes. It has no bundle, so the script cannot create it:\n create it as the `openhands-automation` skill describes for an\n event-triggered prompt preset, with its manifest `prompt` and `filter`, one\n per repository (it takes a single `repository`). It runs only on pull request\n events, so leave it enabled and skip `verify`.\n\n## Ticket source\n\n- **GitHub issues**: `github-issue-to-pr`, created with the others in Phase 1.\n- **Jira**: follow the `jira-issue-to-pr` skill with `git_provider` `github`\n and its defaults (label `create-pr`, `*/5 * * * *`). Ask only what it cannot\n look up (the Jira site if several, or the API-token details when Atlassian\n Rovo is not connected). Tell the user each ticket body must name its\n `owner/repo`.\n- **Linear**: follow the `ticket-to-code-change` skill with GitHub as the\n provider. Ask its questions in one message, proposing the repositories above\n and `*/15 * * * *` as defaults.\n\nOnce its skill has created the station, run `$F verify <id>` on it.\n\n## Troubleshooting\n\n| Symptom | Cause and fix |\n|---|---|\n| Create returns 422 | A value does not match the manifest `setup` block; fix the field at the path the error names. |\n| Issue to PR fails at push | The token lacks Contents or Workflows write, or does not cover that repository. |\n| Reviewer never reviews | The pull request has neither the trigger label nor a request for the trigger reviewer, and is not green. |\n| Watchdog never merges | Its branch prefix differs from issue to PR's, or the pull request lacks an independent approval or green CI. |",
618
+ "content": "# Software Factory\n\nBuild a GitHub software factory from unmodified automation catalog bundles\n(`automations/catalog/<id>/manifest.json`); a Jira or Linear station is created\nby its own skill. This skill adds no automation logic.\n\nTwo phases: **Phase 1** gets a working factory after one question. **Phase 2**\nextends it in short rounds, only as far as the user wants. After Phase 1 and\nafter every round, the **Checkpoint** shows what exists and lets the user stop.\n\nCode lives on GitHub. Tickets can come from GitHub issues (default), Jira or\nLinear: only the issue to PR station changes (see \"Ticket source\"). GitLab and\nBitbucket code hosts are not part of this flow.\n\n## Stations\n\n| Station | Catalog id | Phase | Needs agent profile |\n|---|---|---|---|\n| Issue to PR | `github-issue-to-pr`, or the Jira or Linear station | 1 | yes (GitHub issues only) |\n| PR reviewer | `github-pr-reviewer` | 1 | yes |\n| Issue triage | `github-issue-triage`, or `linear-triage-assistant` | 1 | yes (GitHub issues only) |\n| AGENTS.md maintainer | `github-agents-md-maintainer` | add-on | no |\n| Auto-merge watchdog | `github-delivery-watchdog` | add-on | no |\n| Stale-CI PR closer | `github-stale-ci-pr-closer` | add-on | no |\n| QA changes | `qa-changes` | add-on | no |\n\n## Helper script\n\n`scripts/factory.py` in this skill's directory does every catalog and API step\nand prints one JSON document; it exits non-zero with `{\"error\": ...}` on\nfailure. Its usage is below: do not read its source, and do not load the\n`openhands-automation` skill for Phase 1.\n\nSet `OPENHANDS_HOST` to the **Ingress** URL in `<RUNTIME_SERVICES>` on a local\nAgent Canvas (it serves both `/api/automation` and `/api`; the automation\nbackend URL does not), or to `<HOST>` on OpenHands Cloud. Run every command as:\n\n```bash\nGITHUB_PERSONAL_ACCESS_TOKEN=\"$GITHUB_PERSONAL_ACCESS_TOKEN\" \\\nOPENHANDS_AUTOMATION_API_KEY=\"$OPENHANDS_AUTOMATION_API_KEY\" \\\nOPENHANDS_API_KEY=\"$OPENHANDS_API_KEY\" \\\npython3 <this skill's directory>/scripts/factory.py <command> ...\n```\n\n`$F` below stands for that whole line. Keep the secret names in it: the agent\nserver passes a saved secret into a command only when the command names it.\nThe script reads the token and never prints it.\n\n| Command | Does |\n|---|---|\n| `$F preflight --repos a/b,c/d` | Which stations this deployment supports, the agent profile, the GitHub login, push access per repository. |\n| `$F create --repos a/b --ids ID,ID [--set FIELD=VALUE] [--set ID.FIELD=VALUE]` | Fills each station's form (answers, then derived values, then manifest defaults), uploads the bundle and creates it disabled. `FIELD=VALUE` applies to every listed station with that field. Stations that already exist are reported under `existing`, not recreated. |\n| `$F tune --repos a/b --ids ID,ID [--set FIELD=VALUE] [--set ID.FIELD=VALUE]` | Applies new settings to an existing station by updating it in place. Use this to change a value that is fixed at creation. |\n| `$F verify ID... [--no-wait ID...]` | Dispatches once, enables the ones whose run `COMPLETED` and disables the rest, reporting their `error_detail`. `--no-wait` enables without waiting. |\n| `$F status ID...` | The latest run of each. |\n| `$F prs --repos a/b [--branch-prefix P]` | Open pull requests whose branch starts with `P` (default `openhands/agents-md`, the AGENTS.md maintainer's). |\n| `$F reset-token` | Deletes the saved `GITHUB_PERSONAL_ACCESS_TOKEN` (local Agent Canvas), so `request_secret` opens its form again. |\n\n`create` and `verify` return each automation's `url`, its page in Agent Canvas.\nTrust the script's output: do not open pages in the browser to check them, and\ndo not use the task tracker for this flow.\n\nAdd `--profile NAME` to `preflight` or `create` to use a profile other than the\nactive one.\n\n## Rules\n\n- **Supported stations**: create only those `preflight` reports `ok`; say why\n the others are skipped.\n- **Derived values** (the script fills them; never ask): every\n `githubTokenSecret` is `GITHUB_PERSONAL_ACCESS_TOKEN`. The watchdog's\n `branchPrefix` must equal issue to PR's: when it was changed, pass\n `--set github-delivery-watchdog.branchPrefix=<same value>`.\n- **Agent profile**: if `preflight` reports a profile error, skip the stations\n that need one and point the user to the station's catalog card in Agent\n Canvas (Automations), which has a profile picker.\n- **Token**: never ask for its value in chat, echo it, or put it in a tool\n argument or file.\n- **Failures**: if `create` fails, its output lists the stations it already\n created; report them with the error and ask whether to retry or delete them\n (`DELETE ${OPENHANDS_HOST}/api/automation/v1/{id}`).\n- **Existing stations**: a station `create` reports under `existing` was already\n set up by an earlier run and was left unchanged. Say so rather than presenting\n it as new, and change it with `$F tune` if the user wants different settings.\n\n## Phase 1 - Working factory\n\n1. Ask, in one message: \"Which GitHub repositories (`owner/repo`)? Where do\n tickets live: GitHub issues (default), Jira or Linear?\" Say that everything\n else uses defaults that can be changed afterwards. If the answer names only\n repositories, use GitHub issues; do not ask again.\n2. Run `$F preflight --repos <repos>`. Drop repositories without `push`, and\n say which.\n3. If `github_login` is null, act on `token_error`:\n - `not_set`, and the `request_secret` tool is available: call it once with\n `name: \"GITHUB_PERSONAL_ACCESS_TOKEN\"` and a `reason` asking for Contents,\n Issues, Pull requests and Workflows read and write (classic PAT: `repo`,\n `workflow`), and saying a token can be created at\n https://github.com/settings/personal-access-tokens. End your turn, wait\n for the `[secret-request]` message, then rerun `preflight`.\n - `rejected`: GitHub refuses the saved token (invalid or expired), and\n `request_secret` cannot replace it: it answers `saved` at once for a name\n that exists. Say so in one sentence and ask \"Shall I remove it and open\n the form for a new one?\" On yes, run `$F reset-token`, then handle it as\n `not_set`. If `reset-token` fails, tell the user to create a token at\n https://github.com/settings/personal-access-tokens, replace it in\n Settings -> Secrets, and say when done.\n - `not_set` without the tool: tell the user to create a token at\n https://github.com/settings/personal-access-tokens and add it in\n Settings -> Secrets, then stop.\n4. `$F create --repos <repos> --ids github-pr-reviewer`, adding\n `github-issue-to-pr,github-issue-triage` for GitHub issues. For Jira or\n Linear, also set up the issue to PR station as \"Ticket source\" describes;\n for Linear, set up triage with the `linear-triage` skill (Jira has none).\n5. `$F verify <reviewer id> [<issue to PR id>] [<triage id>]`.\n6. Go to the Checkpoint.\n\n## Checkpoint\n\nWrite one short message, in this order:\n\n1. One plain sentence on what runs and how to use it: \"Your factory is running\n on `<repos>`. Add the `<trigger label>` label to a ticket to get a draft pull\n request; the reviewer reviews it and you merge it.\" (On Jira, add that the\n ticket body must name the `owner/repo`.)\n2. If the AGENTS.md maintainer was added, the `AGENTS.md` pull requests from\n `$F prs --repos <repos>`, asking the user to merge them: they give the build\n agent the repository's build, test and lint commands. One opened before\n this setup started (`created_at`) is \"still open from an earlier run\", not\n new; the maintainer works once a week per repository. If there are none\n yet, say they are on their way.\n3. A small table of the automations, each linked to its `url`:\n\n | Automation | Schedule | Status |\n |---|---|---|\n | [Issue to PR](<url>) | every 15 minutes | on |\n\n Status is `on`, or `off` with the reason in a few words. No automation ids.\n4. The settings in effect, as a short list (the Tune table's current values).\n Mention that the reviewer also reviews any open, non-draft, green pull\n request with no review yet (at most 2 new per scan).\n5. End with only a list of possible next steps, one line each, and nothing\n after it. Mark the first one not done yet as recommended:\n - **Try it**: I open a small test issue with the `<trigger label>` label in\n `<repo>`, only if you say so, and report the pull request.\n - **Tune**: change a setting from the list above.\n - **Add a station**: AGENTS.md maintainer, auto-merge watchdog, stale-CI closer (QA only\n if `preflight` reports it `ok`).\n - **Stop here**: the factory keeps running as it is.\n\n## Phase 2 - Extend, one round at a time\n\nDo only what the user picked. Ask only the questions for it, in one message,\neach with its current value. Apply, then return to the Checkpoint.\n\n### Tune\n\n| Setting | Default | `--set` |\n|---|---|---|\n| Issue trigger label (GitHub issues) | `openhands` | `github-issue-to-pr.triggerLabel` |\n| Draft or ready pull requests | `draft` | `pullRequestMode` (issue to PR, AGENTS.md maintainer) |\n| Branch prefix (GitHub issues) | `openhands/issue` | `github-issue-to-pr.branchPrefix` (and the watchdog's, if present) |\n| Which pull requests get reviewed | label `openhands-review`, reviewer `all-hands-bot` | `github-pr-reviewer.triggerLabel`, `triggerReviewer` |\n| Review tone: concise, thorough, friendly | `concise` | `reviewTone` |\n| Human reviewers requested after agent approval (two or more logins) | none | `maintainers` |\n| Schedules and timezone | issue to PR `*/15 * * * *`, reviewer `*/5 * * * *`, triage `*/5 * * * *`, add-ons per manifest; `UTC` | `ID.schedule`, `timezone` |\n| Agent profile | active profile | `--profile NAME` |\n\nApply:\n\n- Schedule or timezone only:\n `PATCH ${OPENHANDS_HOST}/api/automation/v1/{id}` with `{\"trigger\": {...}}`.\n- Jira or Linear station settings: change them as its skill describes.\n- Anything else is fixed at creation: `$F tune --repos <repos> --ids <id>` with\n the new `--set` values (repeat every earlier non-default value), then\n `$F verify <id>`. `tune` updates the station in place, so there is no\n replacement to delete and no template-id collision.\n\n### Add a station\n\nAsk only the question below, then `$F create` it and `$F verify` it.\n\n- **Auto-merge watchdog** (`github-delivery-watchdog`, GitHub issues only,\n since it merges only branches with the issue to PR prefix): confirm the user\n wants the agent to merge pull requests itself once review, tests and CI are\n green.\n- **Stale-CI closer** (`github-stale-ci-pr-closer`): confirm it may warn on,\n then close, pull requests whose CI keeps failing.\n- **AGENTS.md maintainer** (`github-agents-md-maintainer`): nothing. Verify it\n with `--no-wait`; its run opens one `AGENTS.md` pull request per repository.\n- **QA changes**: which base branch (default `main`). Offer QA only if\n `preflight` reports it `ok` and the `openhands-automation` webhook\n reachability check passes. It has no bundle, so the script cannot create it:\n create it as the `openhands-automation` skill describes for an\n event-triggered prompt preset, with its manifest `prompt` and `filter`, one\n per repository (it takes a single `repository`). It runs only on pull request\n events, so leave it enabled and skip `verify`.\n\n## Ticket source\n\n- **GitHub issues**: `github-issue-to-pr`, created with the others in Phase 1.\n- **Jira**: follow the `jira-issue-to-pr` skill with `git_provider` `github`\n and its defaults (label `create-pr`, `*/5 * * * *`). Ask only what it cannot\n look up (the Jira site if several, or the API-token details when Atlassian\n Rovo is not connected). Tell the user each ticket body must name its\n `owner/repo`.\n- **Linear**: follow the `ticket-to-code-change` skill with GitHub as the\n provider. Ask its questions in one message, proposing the repositories above\n and `*/15 * * * *` as defaults.\n\nOnce its skill has created the station, run `$F verify <id>` on it.\n\n## Troubleshooting\n\n| Symptom | Cause and fix |\n|---|---|\n| Create returns 422 | A value does not match the manifest `setup` block; fix the field at the path the error names. |\n| Issue to PR fails at push | The token lacks Contents or Workflows write, or does not cover that repository. |\n| Reviewer never reviews | The pull request has neither the trigger label nor a request for the trigger reviewer, and is not green. |\n| Watchdog never merges | Its branch prefix differs from issue to PR's, or the pull request lacks an independent approval or green CI. |",
619
619
  "category": "automations",
620
620
  "defaultEnabled": true
621
621
  },
@@ -18,8 +18,8 @@ This skill is activated by:
18
18
  |---|---|---|
19
19
  | Issue to PR | `github-issue-to-pr`, or the Jira or Linear station | 1 |
20
20
  | PR reviewer | `github-pr-reviewer` | 1 |
21
- | AGENTS.md maintainer | `github-agents-md-maintainer` | 1 |
22
- | Issue triage | `github-issue-triage` | add-on |
21
+ | Issue triage | `github-issue-triage` | 1 |
22
+ | AGENTS.md maintainer | `github-agents-md-maintainer` | add-on |
23
23
  | Auto-merge watchdog | `github-delivery-watchdog` | add-on |
24
24
  | Stale-CI PR closer | `github-stale-ci-pr-closer` | add-on |
25
25
  | QA changes | `qa-changes` | add-on (webhooks only) |
@@ -36,9 +36,8 @@ or Linear issue to PR station is created by its own skill instead.
36
36
  1. **Phase 1**: verify `GITHUB_PERSONAL_ACCESS_TOKEN` (asked for with the
37
37
  `request_secret` tool if missing, never in chat), ask for the repositories
38
38
  and the ticket source (GitHub issues, Jira or Linear),
39
- create the three Phase 1 stations with defaults, smoke-run issue to PR and
40
- the reviewer, and enable those that pass. The AGENTS.md maintainer is
41
- enabled at once and opens an `AGENTS.md` pull request per repository.
39
+ create the three Phase 1 stations with defaults, smoke-run them, and enable
40
+ those that pass.
42
41
  2. **Checkpoint**: show the stations, their settings and how to use the
43
42
  factory. The user can stop here or pick a next step: try it with a test
44
43
  issue, tune settings, or add a station.
@@ -51,7 +50,8 @@ or Linear issue to PR station is created by its own skill instead.
51
50
  features each station's manifest requires (`customTarball`, plus
52
51
  `agentProfiles` for issue to PR, reviewer and triage; QA needs webhook delivery).
53
52
  - A GitHub token with Contents, Issues, Pull requests and Workflows read and
54
- write on every selected repository.
53
+ write on every selected repository, created at
54
+ [GitHub settings](https://github.com/settings/personal-access-tokens).
55
55
  - An OpenHands (not ACP) agent profile that may use that token.
56
56
  - Jira tickets: a connected Atlassian Rovo server or a Jira API token. Linear
57
57
  tickets: a Linear connection.
@@ -4,8 +4,8 @@ description: >
4
4
  Set up an OpenHands "software factory" on GitHub fast: ask only for the
5
5
  repositories and where tickets live (GitHub issues, Jira or Linear), create a working issue-to-PR and PR-review pipeline from the
6
6
  automation catalog with defaults, show what runs, then let the user stop or
7
- extend it one step at a time (tune settings, triage, auto-merge, stale-CI and
8
- QA add-ons).
7
+ extend it one step at a time (tune settings, AGENTS.md maintainer,
8
+ auto-merge, stale-CI and QA add-ons).
9
9
  triggers:
10
10
  - /software-factory
11
11
  - software factory
@@ -31,8 +31,8 @@ Bitbucket code hosts are not part of this flow.
31
31
  |---|---|---|---|
32
32
  | Issue to PR | `github-issue-to-pr`, or the Jira or Linear station | 1 | yes (GitHub issues only) |
33
33
  | PR reviewer | `github-pr-reviewer` | 1 | yes |
34
- | AGENTS.md maintainer | `github-agents-md-maintainer` | 1 | no |
35
- | Issue triage | `github-issue-triage`, or `linear-triage-assistant` | add-on | yes (GitHub issues only) |
34
+ | Issue triage | `github-issue-triage`, or `linear-triage-assistant` | 1 | yes (GitHub issues only) |
35
+ | AGENTS.md maintainer | `github-agents-md-maintainer` | add-on | no |
36
36
  | Auto-merge watchdog | `github-delivery-watchdog` | add-on | no |
37
37
  | Stale-CI PR closer | `github-stale-ci-pr-closer` | add-on | no |
38
38
  | QA changes | `qa-changes` | add-on | no |
@@ -108,21 +108,24 @@ active one.
108
108
  - `not_set`, and the `request_secret` tool is available: call it once with
109
109
  `name: "GITHUB_PERSONAL_ACCESS_TOKEN"` and a `reason` asking for Contents,
110
110
  Issues, Pull requests and Workflows read and write (classic PAT: `repo`,
111
- `workflow`). End your turn, wait for the `[secret-request]` message,
112
- then rerun `preflight`.
111
+ `workflow`), and saying a token can be created at
112
+ https://github.com/settings/personal-access-tokens. End your turn, wait
113
+ for the `[secret-request]` message, then rerun `preflight`.
113
114
  - `rejected`: GitHub refuses the saved token (invalid or expired), and
114
115
  `request_secret` cannot replace it: it answers `saved` at once for a name
115
116
  that exists. Say so in one sentence and ask "Shall I remove it and open
116
117
  the form for a new one?" On yes, run `$F reset-token`, then handle it as
117
- `not_set`. If `reset-token` fails, tell the user to replace it in
118
- Settings -> Secrets and say when done.
119
- - `not_set` without the tool: tell the user to add it in Settings ->
120
- Secrets and stop.
121
- 4. `$F create --repos <repos> --ids github-pr-reviewer,github-agents-md-maintainer`,
122
- adding `github-issue-to-pr` for GitHub issues. For Jira or Linear, also set
123
- up the issue to PR station as "Ticket source" describes.
124
- 5. `$F verify <reviewer id> [<issue to PR id>] --no-wait <maintainer id>`. The
125
- maintainer's run opens one `AGENTS.md` pull request per repository.
118
+ `not_set`. If `reset-token` fails, tell the user to create a token at
119
+ https://github.com/settings/personal-access-tokens, replace it in
120
+ Settings -> Secrets, and say when done.
121
+ - `not_set` without the tool: tell the user to create a token at
122
+ https://github.com/settings/personal-access-tokens and add it in
123
+ Settings -> Secrets, then stop.
124
+ 4. `$F create --repos <repos> --ids github-pr-reviewer`, adding
125
+ `github-issue-to-pr,github-issue-triage` for GitHub issues. For Jira or
126
+ Linear, also set up the issue to PR station as "Ticket source" describes;
127
+ for Linear, set up triage with the `linear-triage` skill (Jira has none).
128
+ 5. `$F verify <reviewer id> [<issue to PR id>] [<triage id>]`.
126
129
  6. Go to the Checkpoint.
127
130
 
128
131
  ## Checkpoint
@@ -133,11 +136,12 @@ Write one short message, in this order:
133
136
  on `<repos>`. Add the `<trigger label>` label to a ticket to get a draft pull
134
137
  request; the reviewer reviews it and you merge it." (On Jira, add that the
135
138
  ticket body must name the `owner/repo`.)
136
- 2. The `AGENTS.md` pull requests from `$F prs --repos <repos>`, asking the user
137
- to merge them: they give the build agent the repository's build, test and
138
- lint commands. One opened before this setup started (`created_at`) is
139
- "still open from an earlier run", not new; the maintainer works once a week
140
- per repository. If there are none yet, say they are on their way.
139
+ 2. If the AGENTS.md maintainer was added, the `AGENTS.md` pull requests from
140
+ `$F prs --repos <repos>`, asking the user to merge them: they give the build
141
+ agent the repository's build, test and lint commands. One opened before
142
+ this setup started (`created_at`) is "still open from an earlier run", not
143
+ new; the maintainer works once a week per repository. If there are none
144
+ yet, say they are on their way.
141
145
  3. A small table of the automations, each linked to its `url`:
142
146
 
143
147
  | Automation | Schedule | Status |
@@ -153,7 +157,7 @@ Write one short message, in this order:
153
157
  - **Try it**: I open a small test issue with the `<trigger label>` label in
154
158
  `<repo>`, only if you say so, and report the pull request.
155
159
  - **Tune**: change a setting from the list above.
156
- - **Add a station**: triage, auto-merge watchdog, stale-CI closer (QA only
160
+ - **Add a station**: AGENTS.md maintainer, auto-merge watchdog, stale-CI closer (QA only
157
161
  if `preflight` reports it `ok`).
158
162
  - **Stop here**: the factory keeps running as it is.
159
163
 
@@ -172,7 +176,7 @@ each with its current value. Apply, then return to the Checkpoint.
172
176
  | Which pull requests get reviewed | label `openhands-review`, reviewer `all-hands-bot` | `github-pr-reviewer.triggerLabel`, `triggerReviewer` |
173
177
  | Review tone: concise, thorough, friendly | `concise` | `reviewTone` |
174
178
  | Human reviewers requested after agent approval (two or more logins) | none | `maintainers` |
175
- | Schedules and timezone | issue to PR `*/15 * * * *`, reviewer `*/5 * * * *`, AGENTS.md maintainer `0 9 * * 1`, add-ons per manifest; `UTC` | `ID.schedule`, `timezone` |
179
+ | Schedules and timezone | issue to PR `*/15 * * * *`, reviewer `*/5 * * * *`, triage `*/5 * * * *`, add-ons per manifest; `UTC` | `ID.schedule`, `timezone` |
176
180
  | Agent profile | active profile | `--profile NAME` |
177
181
 
178
182
  Apply:
@@ -195,8 +199,8 @@ Ask only the question below, then `$F create` it and `$F verify` it.
195
199
  green.
196
200
  - **Stale-CI closer** (`github-stale-ci-pr-closer`): confirm it may warn on,
197
201
  then close, pull requests whose CI keeps failing.
198
- - **Triage** (`github-issue-triage`): nothing. For Linear, follow the
199
- `linear-triage` skill instead; for Jira there is none.
202
+ - **AGENTS.md maintainer** (`github-agents-md-maintainer`): nothing. Verify it
203
+ with `--no-wait`; its run opens one `AGENTS.md` pull request per repository.
200
204
  - **QA changes**: which base branch (default `main`). Offer QA only if
201
205
  `preflight` reports it `ok` and the `openhands-automation` webhook
202
206
  reachability check passes. It has no bundle, so the script cannot create it:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  # auto-generated by sync_extensions.py
3
- description: Set up an OpenHands "software factory" on GitHub fast: ask only for the repositories and where tickets live (GitHub issues, Jira or Linear), create a working issue-to-PR and PR-review pipeline from the automation catalog with defaults, show what runs, then let the user stop or extend it one step at a time (tune settings, triage, auto-merge, stale-CI and QA add-ons).
3
+ description: Set up an OpenHands "software factory" on GitHub fast: ask only for the repositories and where tickets live (GitHub issues, Jira or Linear), create a working issue-to-PR and PR-review pipeline from the automation catalog with defaults, show what runs, then let the user stop or extend it one step at a time (tune settings, AGENTS.md maintainer, auto-merge, stale-CI and QA add-ons).
4
4
  ---
5
5
 
6
6
  Read and follow the complete instructions in the SKILL.md file located in this skill's directory.
@@ -0,0 +1,40 @@
1
+ """The azure-devops skill describes plain git, not token-in-URL workarounds."""
2
+
3
+ from pathlib import Path
4
+
5
+ import pytest
6
+
7
+ SKILL_DIR = Path(__file__).parent.parent / "skills" / "azure-devops"
8
+
9
+
10
+ @pytest.fixture(params=["SKILL.md", "README.md"])
11
+ def skill_text(request):
12
+ return (SKILL_DIR / request.param).read_text()
13
+
14
+
15
+ def test_git_uses_plain_commands_and_clone_url(skill_text):
16
+ assert "Use plain `git clone`" in skill_text
17
+ assert (
18
+ "GIT_TERMINAL_PROMPT=0 git clone https://dev.azure.com/ORG/PROJECT/_git/REPO"
19
+ in skill_text
20
+ )
21
+
22
+
23
+ def test_no_token_in_remote_url(skill_text):
24
+ assert "git remote set-url" not in skill_text
25
+ assert "${AZURE_DEVOPS_TOKEN}@" not in skill_text
26
+ assert "$AZURE_DEVOPS_TOKEN@" not in skill_text
27
+
28
+
29
+ def test_no_credential_helper_token_file(skill_text):
30
+ assert "azure-devops-access-token" not in skill_text
31
+
32
+
33
+ def test_token_is_not_described_as_pat_only(skill_text):
34
+ assert "Microsoft Entra" in skill_text
35
+ assert "with your Personal Access Token (PAT)" not in skill_text
36
+
37
+
38
+ def test_basic_auth_header_is_a_single_line(skill_text):
39
+ # GNU base64 wraps at 76 columns, which splits long Entra tokens.
40
+ assert "base64 | tr -d '\\n'" in skill_text
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.32.1"
3
- }