openhands-extensions 0.35.0__tar.gz → 0.36.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 (721) hide show
  1. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.agents/skills/custom-codereview-guide.md +21 -5
  2. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/dependabot.yml +4 -0
  3. openhands_extensions-0.36.0/.github/workflows/kanban-app.yml +34 -0
  4. openhands_extensions-0.36.0/.release-please-manifest.json +3 -0
  5. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/AGENTS.md +36 -1
  6. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/PKG-INFO +1 -1
  7. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/README.md +3 -2
  8. openhands_extensions-0.36.0/apps/catalog.json +18 -0
  9. openhands_extensions-0.36.0/apps/kanban-manager/.gitignore +2 -0
  10. openhands_extensions-0.36.0/apps/kanban-manager/.npmignore +4 -0
  11. openhands_extensions-0.36.0/apps/kanban-manager/LICENSE +21 -0
  12. openhands_extensions-0.36.0/apps/kanban-manager/README.md +184 -0
  13. openhands_extensions-0.36.0/apps/kanban-manager/build.mjs +122 -0
  14. openhands_extensions-0.36.0/apps/kanban-manager/canvas-extension.json +19 -0
  15. openhands_extensions-0.36.0/apps/kanban-manager/extension.js +3744 -0
  16. openhands_extensions-0.36.0/apps/kanban-manager/package-lock.json +878 -0
  17. openhands_extensions-0.36.0/apps/kanban-manager/package.json +17 -0
  18. openhands_extensions-0.36.0/apps/kanban-manager/src/automation/main.py +665 -0
  19. openhands_extensions-0.36.0/apps/kanban-manager/src/automation/vibectl.py +214 -0
  20. openhands_extensions-0.36.0/apps/kanban-manager/src/automation/vibestore.py +649 -0
  21. openhands_extensions-0.36.0/apps/kanban-manager/src/board.css +811 -0
  22. openhands_extensions-0.36.0/apps/kanban-manager/src/extension.js +1685 -0
  23. openhands_extensions-0.36.0/apps/kanban-manager/src/live.js +320 -0
  24. openhands_extensions-0.36.0/apps/kanban-manager/src/manager.js +206 -0
  25. openhands_extensions-0.36.0/apps/kanban-manager/src/managerchat.js +173 -0
  26. openhands_extensions-0.36.0/apps/kanban-manager/src/markup.js +216 -0
  27. openhands_extensions-0.36.0/apps/kanban-manager/src/setup.css +91 -0
  28. openhands_extensions-0.36.0/apps/kanban-manager/src/store.js +625 -0
  29. openhands_extensions-0.36.0/apps/kanban-manager/test/extension.test.js +1395 -0
  30. openhands_extensions-0.36.0/apps/kanban-manager/test/manager.test.mjs +125 -0
  31. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/README.md +4 -1
  32. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/github-issue-to-pr/manifest.json +4 -4
  33. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/gitlab-issue-to-mr/manifest.json +4 -4
  34. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/index.d.ts +15 -1
  35. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/interface.json +7 -1
  36. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/interface.schema.json +25 -3
  37. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/marketplaces/openhands-extensions.json +14 -0
  38. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/package.json +1 -1
  39. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/README.md +5 -0
  40. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/action.yml +5 -0
  41. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/scripts/agent_script.py +6 -0
  42. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/scripts/prompt.py +19 -1
  43. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/github/README.md +9 -0
  44. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/github/SKILL.md +19 -0
  45. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/pyproject.toml +8 -1
  46. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/python/openhands_extensions/_version.py +1 -1
  47. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/index.js +12 -3
  48. openhands_extensions-0.36.0/skills/show-me/.claude-plugin/plugin.json +18 -0
  49. openhands_extensions-0.36.0/skills/show-me/LICENSE +202 -0
  50. openhands_extensions-0.36.0/skills/show-me/NOTICE +10 -0
  51. openhands_extensions-0.36.0/skills/show-me/README.md +20 -0
  52. openhands_extensions-0.36.0/skills/show-me/SKILL.md +120 -0
  53. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/software-factory/README.md +3 -1
  54. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/software-factory/SKILL.md +13 -2
  55. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/software-factory/scripts/factory.py +83 -7
  56. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_apps_catalog.py +12 -0
  57. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_interface_manifest.py +10 -0
  58. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_pr_review_prompt.py +86 -2
  59. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_pr_review_prompt_injection.py +8 -1
  60. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_skills_catalog.py +16 -0
  61. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_software_factory_script.py +131 -1
  62. openhands_extensions-0.35.0/.release-please-manifest.json +0 -3
  63. openhands_extensions-0.35.0/apps/catalog.json +0 -10
  64. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.claude-plugin/marketplace.json +0 -0
  65. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/pull_request_template.md +0 -0
  66. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/release.yml +0 -0
  67. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/scripts/check_pr_description.py +0 -0
  68. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/scripts/markdown_sections.py +0 -0
  69. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/scripts/refresh_linked_pr_checks.py +0 -0
  70. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/build-vscode-app.yml +0 -0
  71. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/check-extensions.yml +0 -0
  72. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/deprecation-check.yml +0 -0
  73. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/issue-readiness-check.yml +0 -0
  74. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/npm-publish.yml +0 -0
  75. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/pr-artifacts.yml +0 -0
  76. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/pr-description-check.yml +0 -0
  77. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/pr.yml +0 -0
  78. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/pypi-publish.yml +0 -0
  79. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/release.yml +0 -0
  80. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/tests.yml +0 -0
  81. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.github/workflows/vulnerability-scan.yml +0 -0
  82. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.gitignore +0 -0
  83. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/.npmignore +0 -0
  84. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/LICENSE +0 -0
  85. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/MIGRATION.md +0 -0
  86. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/analysis_results.md +0 -0
  87. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/apps/README.md +0 -0
  88. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/apps/index.d.ts +0 -0
  89. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/apps/index.js +0 -0
  90. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/apps/vscode/README.md +0 -0
  91. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/apps/vscode/canvas-extension.json +0 -0
  92. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/apps/vscode/extension.js +0 -0
  93. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/apps/vscode/scripts/package.mjs +0 -0
  94. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/bundle-index.js +0 -0
  95. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/custom-automation/manifest.json +0 -0
  96. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/github-agents-md-maintainer/manifest.json +0 -0
  97. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/github-delivery-watchdog/manifest.json +0 -0
  98. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/github-issue-triage/manifest.json +0 -0
  99. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/github-pr-reviewer/manifest.json +0 -0
  100. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/github-repo-monitor/manifest.json +0 -0
  101. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/github-stale-ci-pr-closer/manifest.json +0 -0
  102. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/incident-retrospective-drafter/manifest.json +0 -0
  103. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/jira-issue-to-bitbucket-pr/manifest.json +0 -0
  104. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/jira-issue-to-gitlab-mr/manifest.json +0 -0
  105. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/jira-issue-to-pr/manifest.json +0 -0
  106. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/linear-issue-to-bitbucket-pr/manifest.json +0 -0
  107. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/linear-issue-to-github-pr/manifest.json +0 -0
  108. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/linear-issue-to-gitlab-mr/manifest.json +0 -0
  109. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/linear-triage-assistant/manifest.json +0 -0
  110. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/news-digest/manifest.json +0 -0
  111. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/qa-changes/manifest.json +0 -0
  112. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/research-brief-writer/manifest.json +0 -0
  113. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/slack-channel-monitor/manifest.json +0 -0
  114. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/slack-github-linear-daily-organization.json +0 -0
  115. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/slack-standup-digest/manifest.json +0 -0
  116. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog/upstream-fork-sync/manifest.json +0 -0
  117. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog-index.js +0 -0
  118. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/catalog.schema.json +0 -0
  119. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/automations/index.js +0 -0
  120. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/index.d.ts +0 -0
  121. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/index.js +0 -0
  122. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/README.md +0 -0
  123. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/airtable.json +0 -0
  124. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/apify.json +0 -0
  125. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/asana.json +0 -0
  126. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/atlassian-rovo.json +0 -0
  127. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/atlassian.json +0 -0
  128. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/bitbucket.json +0 -0
  129. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/box.json +0 -0
  130. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/brave-search.json +0 -0
  131. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/browser-mcp.json +0 -0
  132. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/canva.json +0 -0
  133. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/clickhouse.json +0 -0
  134. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/cloudflare-bindings.json +0 -0
  135. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/cloudflare-browser-rendering.json +0 -0
  136. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/cloudflare-builds.json +0 -0
  137. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/cloudflare-docs.json +0 -0
  138. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/cloudflare-observability.json +0 -0
  139. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/confluence.json +0 -0
  140. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/datadog.json +0 -0
  141. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/deepwiki.json +0 -0
  142. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/discord.json +0 -0
  143. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/elevenlabs.json +0 -0
  144. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/everything.json +0 -0
  145. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/exa.json +0 -0
  146. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/fetch.json +0 -0
  147. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/figma.json +0 -0
  148. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/filesystem.json +0 -0
  149. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/firecrawl.json +0 -0
  150. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/git.json +0 -0
  151. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/github.json +0 -0
  152. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/gitlab.json +0 -0
  153. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/gmail.json +0 -0
  154. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/google-calendar.json +0 -0
  155. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/google-docs.json +0 -0
  156. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/google-drive.json +0 -0
  157. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/google-sheets.json +0 -0
  158. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/granola.json +0 -0
  159. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/hubspot.json +0 -0
  160. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/huggingface.json +0 -0
  161. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/intercom.json +0 -0
  162. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/jira.json +0 -0
  163. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/kagi.json +0 -0
  164. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/linear.json +0 -0
  165. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/memory.json +0 -0
  166. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/microsoft-outlook.json +0 -0
  167. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/microsoft-teams.json +0 -0
  168. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/miro.json +0 -0
  169. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/monday.json +0 -0
  170. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/mongodb.json +0 -0
  171. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/neon.json +0 -0
  172. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/netlify.json +0 -0
  173. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/notion.json +0 -0
  174. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/obsidian.json +0 -0
  175. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/okta.json +0 -0
  176. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/onedrive.json +0 -0
  177. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/ordinal.json +0 -0
  178. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/paypal.json +0 -0
  179. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/playwright.json +0 -0
  180. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/posthog.json +0 -0
  181. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/quickbooks.json +0 -0
  182. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/redis.json +0 -0
  183. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/reportportal.json +0 -0
  184. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/resend.json +0 -0
  185. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/salesforce.json +0 -0
  186. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/sentry.json +0 -0
  187. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/sequential-thinking.json +0 -0
  188. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/sharepoint.json +0 -0
  189. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/slack.json +0 -0
  190. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/sonarqube.json +0 -0
  191. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/stripe.json +0 -0
  192. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/supabase.json +0 -0
  193. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/superhuman-mail.json +0 -0
  194. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/tavily.json +0 -0
  195. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/time.json +0 -0
  196. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/trello.json +0 -0
  197. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/vanta.json +0 -0
  198. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/vercel.json +0 -0
  199. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/webflow.json +0 -0
  200. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/xero.json +0 -0
  201. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog/zoom.json +0 -0
  202. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog-index.js +0 -0
  203. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/catalog.schema.json +0 -0
  204. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/icons/salesforce.svg +0 -0
  205. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/icons/slack.svg +0 -0
  206. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/index.d.ts +0 -0
  207. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/integrations/index.js +0 -0
  208. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/marketplaces/large-codebase.json +0 -0
  209. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/README.md +0 -0
  210. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/city-weather/.claude-plugin/plugin.json +0 -0
  211. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/city-weather/README.md +0 -0
  212. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/city-weather/commands/now.md +0 -0
  213. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/.claude-plugin/plugin.json +0 -0
  214. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/README.md +0 -0
  215. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/references/troubleshooting.md +0 -0
  216. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/build-setup/SKILL.md +0 -0
  217. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +0 -0
  218. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +0 -0
  219. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +0 -0
  220. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/mainframe-removal/SKILL.md +0 -0
  221. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/mainframe-removal/references/cics-transformation-examples.md +0 -0
  222. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +0 -0
  223. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +0 -0
  224. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +0 -0
  225. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +0 -0
  226. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/issue-duplicate-checker/README.md +0 -0
  227. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/issue-duplicate-checker/action.yml +0 -0
  228. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +0 -0
  229. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +0 -0
  230. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.cjs +0 -0
  231. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.cjs +0 -0
  232. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/magic-test/.claude-plugin/plugin.json +0 -0
  233. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/magic-test/skills/magic-word/SKILL.md +0 -0
  234. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/migration-scoring/.claude-plugin/plugin.json +0 -0
  235. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/migration-scoring/README.md +0 -0
  236. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/migration-scoring/skills/migration-mapping/SKILL.md +0 -0
  237. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/migration-scoring/skills/migration-report/SKILL.md +0 -0
  238. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/migration-scoring/skills/migration-scoring/SKILL.md +0 -0
  239. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/migration-scoring/skills/score-quality/SKILL.md +0 -0
  240. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +0 -0
  241. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/migration-scoring/skills/score-style/SKILL.md +0 -0
  242. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/.claude-plugin/plugin.json +0 -0
  243. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/README.md +0 -0
  244. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/references/criteria.md +0 -0
  245. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/agent-readiness-report/README.md +0 -0
  246. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/agent-readiness-report/SKILL.md +0 -0
  247. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +0 -0
  248. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +0 -0
  249. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +0 -0
  250. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +0 -0
  251. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +0 -0
  252. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +0 -0
  253. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/improve-agent-readiness/README.md +0 -0
  254. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +0 -0
  255. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +0 -0
  256. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/setup-agents-md/README.md +0 -0
  257. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/setup-agents-md/SKILL.md +0 -0
  258. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/setup-openhands/README.md +0 -0
  259. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/setup-openhands/SKILL.md +0 -0
  260. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/setup-pr-review/README.md +0 -0
  261. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/onboarding/skills/setup-pr-review/SKILL.md +0 -0
  262. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/.claude-plugin/plugin.json +0 -0
  263. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/README.md +0 -0
  264. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/SKILL.md +0 -0
  265. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/commands/create.md +0 -0
  266. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/commands/openhands-cloud.md +0 -0
  267. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/scripts/run.sh +0 -0
  268. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +0 -0
  269. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/README.md +0 -0
  270. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/SKILL.md +0 -0
  271. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/references/README.md +0 -0
  272. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +0 -0
  273. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/references/example_prompt.md +0 -0
  274. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/references/windows.md +0 -0
  275. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +0 -0
  276. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +0 -0
  277. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +0 -0
  278. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-automation/README.md +0 -0
  279. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-automation/SKILL.md +0 -0
  280. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-automation/commands/automation-create.md +0 -0
  281. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-automation/references/ab-testing.md +0 -0
  282. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-automation/references/custom-automation.md +0 -0
  283. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-automation/references/security.md +0 -0
  284. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-automation/references/windows.md +0 -0
  285. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +0 -0
  286. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-sdk/README.md +0 -0
  287. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-sdk/SKILL.md +0 -0
  288. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/openhands/skills/openhands-sdk/commands/sdk.md +0 -0
  289. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/.claude-plugin/plugin.json +0 -0
  290. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/scripts/evaluate_review.py +0 -0
  291. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +0 -0
  292. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/code-review/README.md +0 -0
  293. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/code-review/SKILL.md +0 -0
  294. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +0 -0
  295. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/code-review/commands/codereview.md +0 -0
  296. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/code-review/references/risk-evaluation.md +0 -0
  297. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/code-review/references/supply-chain-security.md +0 -0
  298. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +0 -0
  299. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/github-pr-review/README.md +0 -0
  300. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/github-pr-review/SKILL.md +0 -0
  301. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +0 -0
  302. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/skills/github-pr-review/references/windows.md +0 -0
  303. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/workflows/pr-review-by-openhands.yml +0 -0
  304. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/pr-review/workflows/pr-review-evaluation.yml +0 -0
  305. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/.claude-plugin/plugin.json +0 -0
  306. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/README.md +0 -0
  307. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/action.yml +0 -0
  308. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/scripts/agent_script.py +0 -0
  309. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/scripts/evaluate_qa_changes.py +0 -0
  310. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/scripts/prompt.py +0 -0
  311. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/skills/qa-changes/README.md +0 -0
  312. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/skills/qa-changes/SKILL.md +0 -0
  313. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +0 -0
  314. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +0 -0
  315. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/qa-changes/workflows/qa-changes-evaluation.yml +0 -0
  316. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/.claude-plugin/plugin.json +0 -0
  317. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/README.md +0 -0
  318. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/SKILL.md +0 -0
  319. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/action.yml +0 -0
  320. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/commands/release-notes.md +0 -0
  321. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/scripts/agent_script.py +0 -0
  322. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/scripts/generate_release_notes.py +0 -0
  323. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/scripts/prompt.py +0 -0
  324. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/scripts/validate_release_notes.py +0 -0
  325. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/skills/release-notes/README.md +0 -0
  326. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/skills/release-notes/SKILL.md +0 -0
  327. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/skills/release-notes/commands/release-notes.md +0 -0
  328. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/release-notes/workflows/release-notes.yml +0 -0
  329. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/runtime-api-configs/.claude-plugin/plugin.json +0 -0
  330. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/runtime-api-configs/README.md +0 -0
  331. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/runtime-api-configs/SKILL.md +0 -0
  332. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/runtime-api-configs/scripts/warm_runtime_configs.py +0 -0
  333. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/runtime-api-configs/tests/test_warm_runtime_configs.py +0 -0
  334. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/.claude-plugin/plugin.json +0 -0
  335. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/README.md +0 -0
  336. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/action.yml +0 -0
  337. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +0 -0
  338. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +0 -0
  339. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/github/references/windows.md +0 -0
  340. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +0 -0
  341. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/github/scripts/github_client.py +0 -0
  342. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +0 -0
  343. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/security/README.md +0 -0
  344. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/skills/security/SKILL.md +0 -0
  345. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +0 -0
  346. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/python/openhands_extensions/__init__.py +0 -0
  347. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/python/openhands_extensions/deprecation.py +0 -0
  348. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/python/openhands_extensions/integration_models.py +0 -0
  349. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/python/openhands_extensions/integrations.py +0 -0
  350. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/release-please-config.json +0 -0
  351. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/scripts/build-automation-catalog.mjs +0 -0
  352. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/scripts/build-integration-catalog.mjs +0 -0
  353. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/scripts/build-skills-catalog.mjs +0 -0
  354. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/scripts/check_deprecations.py +0 -0
  355. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/scripts/check_plugin_resources.py +0 -0
  356. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/scripts/sync_extensions.py +0 -0
  357. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/scripts/sync_openhands_sdk_skill.py +0 -0
  358. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/README.md +0 -0
  359. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/add-javadoc/.claude-plugin/plugin.json +0 -0
  360. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/add-javadoc/README.md +0 -0
  361. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/add-javadoc/SKILL.md +0 -0
  362. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/add-javadoc/references/example.md +0 -0
  363. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/add-skill/.claude-plugin/plugin.json +0 -0
  364. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/add-skill/README.md +0 -0
  365. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/add-skill/SKILL.md +0 -0
  366. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/add-skill/scripts/fetch_skill.py +0 -0
  367. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-canvas-environment/.claude-plugin/plugin.json +0 -0
  368. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-canvas-environment/README.md +0 -0
  369. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-canvas-environment/SKILL.md +0 -0
  370. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-creator/.claude-plugin/plugin.json +0 -0
  371. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-creator/README.md +0 -0
  372. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-creator/SKILL.md +0 -0
  373. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-creator/commands/agent-creator.md +0 -0
  374. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-creator/references/fallback.md +0 -0
  375. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-memory/.claude-plugin/plugin.json +0 -0
  376. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-memory/README.md +0 -0
  377. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-memory/SKILL.md +0 -0
  378. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-memory/commands/remember.md +0 -0
  379. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-sdk-builder/.claude-plugin/plugin.json +0 -0
  380. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-sdk-builder/README.md +0 -0
  381. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-sdk-builder/SKILL.md +0 -0
  382. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/agent-sdk-builder/commands/agent-builder.md +0 -0
  383. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/azure-devops/.claude-plugin/plugin.json +0 -0
  384. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/azure-devops/README.md +0 -0
  385. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/azure-devops/SKILL.md +0 -0
  386. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket/.claude-plugin/plugin.json +0 -0
  387. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket/README.md +0 -0
  388. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket/SKILL.md +0 -0
  389. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket-cloud/.claude-plugin/plugin.json +0 -0
  390. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket-cloud/README.md +0 -0
  391. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket-cloud/SKILL.md +0 -0
  392. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket-data-center/.claude-plugin/plugin.json +0 -0
  393. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket-data-center/README.md +0 -0
  394. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/bitbucket-data-center/SKILL.md +0 -0
  395. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/.claude-plugin/plugin.json +0 -0
  396. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/README.md +0 -0
  397. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/SKILL.md +0 -0
  398. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/references/acceptance-checklist.md +0 -0
  399. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/references/backend-safety.md +0 -0
  400. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/references/connections.md +0 -0
  401. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/references/native-design.md +0 -0
  402. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/references/packaging-recipes.md +0 -0
  403. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/references/sidecar-pattern.md +0 -0
  404. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/references/testing-and-installation.md +0 -0
  405. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/references/v1-contract.md +0 -0
  406. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/scripts/validate-extension.mjs +0 -0
  407. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/canvas-extension-api/scripts/validate-extension.test.mjs +0 -0
  408. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/code-simplifier/.claude-plugin/plugin.json +0 -0
  409. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/code-simplifier/README.md +0 -0
  410. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/code-simplifier/SKILL.md +0 -0
  411. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/code-simplifier/commands/simplify.md +0 -0
  412. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/code-simplifier/references/code-quality-review.md +0 -0
  413. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/code-simplifier/references/code-reuse-review.md +0 -0
  414. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/code-simplifier/references/efficiency-review.md +0 -0
  415. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/datadog/.claude-plugin/plugin.json +0 -0
  416. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/datadog/README.md +0 -0
  417. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/datadog/SKILL.md +0 -0
  418. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/datadog/references/windows.md +0 -0
  419. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/deno/.claude-plugin/plugin.json +0 -0
  420. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/deno/README.md +0 -0
  421. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/deno/SKILL.md +0 -0
  422. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/deno/references/README.md +0 -0
  423. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/.claude-plugin/plugin.json +0 -0
  424. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/README.md +0 -0
  425. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/SKILL.md +0 -0
  426. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/__init__.py +0 -0
  427. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/references/REFERENCE.md +0 -0
  428. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/scripts/__init__.py +0 -0
  429. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/scripts/_http.py +0 -0
  430. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/scripts/post_webhook.py +0 -0
  431. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/discord/scripts/send_message.py +0 -0
  432. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/docker/.claude-plugin/plugin.json +0 -0
  433. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/docker/README.md +0 -0
  434. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/docker/SKILL.md +0 -0
  435. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/evidence-based-citations/.claude-plugin/plugin.json +0 -0
  436. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/evidence-based-citations/README.md +0 -0
  437. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/evidence-based-citations/SKILL.md +0 -0
  438. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/flarglebargle/.claude-plugin/plugin.json +0 -0
  439. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/flarglebargle/README.md +0 -0
  440. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/flarglebargle/SKILL.md +0 -0
  441. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/frontend-design/.claude-plugin/plugin.json +0 -0
  442. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/frontend-design/LICENSE.txt +0 -0
  443. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/frontend-design/README.md +0 -0
  444. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/frontend-design/SKILL.md +0 -0
  445. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-actions/.claude-plugin/plugin.json +0 -0
  446. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-actions/README.md +0 -0
  447. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-actions/SKILL.md +0 -0
  448. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-agents-md-maintainer/.claude-plugin/plugin.json +0 -0
  449. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-agents-md-maintainer/README.md +0 -0
  450. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-agents-md-maintainer/SKILL.md +0 -0
  451. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-agents-md-maintainer/commands/agents-md-setup.md +0 -0
  452. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-agents-md-maintainer/references/state-schema.md +0 -0
  453. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-agents-md-maintainer/scripts/github_client.py +0 -0
  454. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-agents-md-maintainer/scripts/main.py +0 -0
  455. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-delivery-watchdog/.claude-plugin/plugin.json +0 -0
  456. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-delivery-watchdog/README.md +0 -0
  457. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-delivery-watchdog/SKILL.md +0 -0
  458. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-delivery-watchdog/commands/github-delivery-watchdog.md +0 -0
  459. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-delivery-watchdog/scripts/github_client.py +0 -0
  460. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-delivery-watchdog/scripts/worker.py +0 -0
  461. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/.claude-plugin/plugin.json +0 -0
  462. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/README.md +0 -0
  463. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/SKILL.md +0 -0
  464. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/commands/issue-to-pr-setup.md +0 -0
  465. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/references/state-schema.md +0 -0
  466. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/scripts/agent_conversation.py +0 -0
  467. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/scripts/github_client.py +0 -0
  468. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/scripts/main.py +0 -0
  469. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-to-pr/scripts/worker.py +0 -0
  470. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-triage/.claude-plugin/plugin.json +0 -0
  471. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-triage/README.md +0 -0
  472. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-triage/SKILL.md +0 -0
  473. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-triage/commands/github-issue-triage.md +0 -0
  474. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-triage/scripts/agent_conversation.py +0 -0
  475. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-triage/scripts/github_client.py +0 -0
  476. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-triage/scripts/triage_publication.py +0 -0
  477. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-issue-triage/scripts/worker.py +0 -0
  478. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/.claude-plugin/plugin.json +0 -0
  479. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/README.md +0 -0
  480. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/SKILL.md +0 -0
  481. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/commands/pr-reviewer-setup.md +0 -0
  482. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/references/state-schema.md +0 -0
  483. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/references/windows.md +0 -0
  484. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/scripts/agent_conversation.py +0 -0
  485. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/scripts/github_client.py +0 -0
  486. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/scripts/main.py +0 -0
  487. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/scripts/maintainer_handoff.py +0 -0
  488. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/scripts/publication.py +0 -0
  489. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/scripts/worker.py +0 -0
  490. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-pr-reviewer/tests/test_main.py +0 -0
  491. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/.claude-plugin/plugin.json +0 -0
  492. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/README.md +0 -0
  493. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/SKILL.md +0 -0
  494. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/commands/github-monitor-poll.md +0 -0
  495. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/references/github-api.md +0 -0
  496. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/references/state-schema.md +0 -0
  497. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/references/windows.md +0 -0
  498. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/scripts/github_client.py +0 -0
  499. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/scripts/main.py +0 -0
  500. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-repo-monitor/tests/test_main.py +0 -0
  501. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-stale-ci-pr-closer/.claude-plugin/plugin.json +0 -0
  502. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-stale-ci-pr-closer/README.md +0 -0
  503. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-stale-ci-pr-closer/SKILL.md +0 -0
  504. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-stale-ci-pr-closer/commands/github-stale-ci-pr-closer.md +0 -0
  505. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-stale-ci-pr-closer/scripts/worker.py +0 -0
  506. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/github-stale-ci-pr-closer/tests/test_worker.py +0 -0
  507. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab/.claude-plugin/plugin.json +0 -0
  508. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab/README.md +0 -0
  509. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab/SKILL.md +0 -0
  510. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab-issue-to-mr/.claude-plugin/plugin.json +0 -0
  511. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab-issue-to-mr/README.md +0 -0
  512. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab-issue-to-mr/SKILL.md +0 -0
  513. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab-issue-to-mr/commands/issue-to-mr-setup.md +0 -0
  514. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab-issue-to-mr/references/state-schema.md +0 -0
  515. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/gitlab-issue-to-mr/scripts/main.py +0 -0
  516. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/incident-retrospective/.claude-plugin/plugin.json +0 -0
  517. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/incident-retrospective/README.md +0 -0
  518. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/incident-retrospective/SKILL.md +0 -0
  519. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/incident-retrospective/commands/incident-retro-setup.md +0 -0
  520. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/index.d.ts +0 -0
  521. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/.claude-plugin/plugin.json +0 -0
  522. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/.codex-plugin/plugin.json +0 -0
  523. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/.plugin/plugin.json +0 -0
  524. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/README.md +0 -0
  525. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/SKILL.md +0 -0
  526. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/commands/babysit.md +0 -0
  527. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/commands/iterate.md +0 -0
  528. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/commands/verify.md +0 -0
  529. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/references/heuristics.md +0 -0
  530. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/references/verification.md +0 -0
  531. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/iterate/references/windows.md +0 -0
  532. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jira-issue-to-pr/.claude-plugin/plugin.json +0 -0
  533. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jira-issue-to-pr/README.md +0 -0
  534. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jira-issue-to-pr/SKILL.md +0 -0
  535. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jira-issue-to-pr/references/setup.md +0 -0
  536. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jira-issue-to-pr/scripts/main.py +0 -0
  537. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jira-issue-to-pr/scripts/setup_webhook.py +0 -0
  538. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jupyter/.claude-plugin/plugin.json +0 -0
  539. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jupyter/README.md +0 -0
  540. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/jupyter/SKILL.md +0 -0
  541. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/kubernetes/.claude-plugin/plugin.json +0 -0
  542. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/kubernetes/README.md +0 -0
  543. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/kubernetes/SKILL.md +0 -0
  544. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/kubernetes/references/windows.md +0 -0
  545. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/learn-from-code-review/.claude-plugin/plugin.json +0 -0
  546. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/learn-from-code-review/README.md +0 -0
  547. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/learn-from-code-review/SKILL.md +0 -0
  548. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/learn-from-code-review/commands/learn-from-reviews.md +0 -0
  549. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/linear/.claude-plugin/plugin.json +0 -0
  550. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/linear/README.md +0 -0
  551. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/linear/SKILL.md +0 -0
  552. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/linear/references/windows.md +0 -0
  553. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/linear-triage/.claude-plugin/plugin.json +0 -0
  554. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/linear-triage/README.md +0 -0
  555. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/linear-triage/SKILL.md +0 -0
  556. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/linear-triage/commands/linear-triage-setup.md +0 -0
  557. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/news-digest/.claude-plugin/plugin.json +0 -0
  558. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/news-digest/README.md +0 -0
  559. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/news-digest/SKILL.md +0 -0
  560. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/news-digest/commands/news-digest-setup.md +0 -0
  561. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/news-digest/references/state-schema.md +0 -0
  562. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/news-digest/scripts/main.py +0 -0
  563. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/notion/.claude-plugin/plugin.json +0 -0
  564. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/notion/README.md +0 -0
  565. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/notion/SKILL.md +0 -0
  566. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/notion/references/windows.md +0 -0
  567. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/npm/.claude-plugin/plugin.json +0 -0
  568. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/npm/README.md +0 -0
  569. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/npm/SKILL.md +0 -0
  570. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/openhands-enterprise-troubleshooting/.claude-plugin/plugin.json +0 -0
  571. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/openhands-enterprise-troubleshooting/README.md +0 -0
  572. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/openhands-enterprise-troubleshooting/SKILL.md +0 -0
  573. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/openhands-enterprise-troubleshooting/references/diagnostics.md +0 -0
  574. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/openhands-enterprise-troubleshooting/references/support-bundle-analysis.md +0 -0
  575. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/openhands-enterprise-troubleshooting/scripts/bundle_triage.py +0 -0
  576. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/pdflatex/.claude-plugin/plugin.json +0 -0
  577. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/pdflatex/README.md +0 -0
  578. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/pdflatex/SKILL.md +0 -0
  579. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/plain-english-content/.claude-plugin/plugin.json +0 -0
  580. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/plain-english-content/README.md +0 -0
  581. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/plain-english-content/SKILL.md +0 -0
  582. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/prd/.claude-plugin/plugin.json +0 -0
  583. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/prd/README.md +0 -0
  584. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/prd/SKILL.md +0 -0
  585. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/prd/commands/prd.md +0 -0
  586. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/research-brief/.claude-plugin/plugin.json +0 -0
  587. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/research-brief/README.md +0 -0
  588. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/research-brief/SKILL.md +0 -0
  589. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/research-brief/commands/research-brief-setup.md +0 -0
  590. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/simplified-technical-english/.claude-plugin/plugin.json +0 -0
  591. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/simplified-technical-english/README.md +0 -0
  592. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/simplified-technical-english/SKILL.md +0 -0
  593. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/.claude-plugin/plugin.json +0 -0
  594. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/LICENSE.txt +0 -0
  595. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/README.md +0 -0
  596. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/SKILL.md +0 -0
  597. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/references/output-patterns.md +0 -0
  598. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/references/windows.md +0 -0
  599. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/references/workflows.md +0 -0
  600. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/scripts/init_skill.py +0 -0
  601. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/skill-creator/scripts/quick_validate.py +0 -0
  602. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-channel-monitor/.claude-plugin/plugin.json +0 -0
  603. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-channel-monitor/README.md +0 -0
  604. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-channel-monitor/SKILL.md +0 -0
  605. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-channel-monitor/commands/slack-monitor-poll.md +0 -0
  606. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-channel-monitor/references/slack-api.md +0 -0
  607. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-channel-monitor/references/state-schema.md +0 -0
  608. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-channel-monitor/references/windows.md +0 -0
  609. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-channel-monitor/scripts/main.py +0 -0
  610. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-standup-digest/.claude-plugin/plugin.json +0 -0
  611. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-standup-digest/README.md +0 -0
  612. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-standup-digest/SKILL.md +0 -0
  613. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/slack-standup-digest/commands/standup-digest-setup.md +0 -0
  614. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/software-factory/.claude-plugin/plugin.json +0 -0
  615. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/software-factory/commands/software-factory.md +0 -0
  616. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/spark-version-upgrade/.claude-plugin/plugin.json +0 -0
  617. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/spark-version-upgrade/README.md +0 -0
  618. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/spark-version-upgrade/SKILL.md +0 -0
  619. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/ssh/.claude-plugin/plugin.json +0 -0
  620. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/ssh/README.md +0 -0
  621. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/ssh/SKILL.md +0 -0
  622. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/ssh/references/windows.md +0 -0
  623. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/swift-linux/.claude-plugin/plugin.json +0 -0
  624. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/swift-linux/README.md +0 -0
  625. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/swift-linux/SKILL.md +0 -0
  626. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/technical-writing/.claude-plugin/plugin.json +0 -0
  627. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/technical-writing/README.md +0 -0
  628. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/technical-writing/SKILL.md +0 -0
  629. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/.claude-plugin/plugin.json +0 -0
  630. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/LICENSE.txt +0 -0
  631. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/README.md +0 -0
  632. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/SKILL.md +0 -0
  633. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/theme-showcase.pdf +0 -0
  634. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/arctic-frost.md +0 -0
  635. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/botanical-garden.md +0 -0
  636. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/desert-rose.md +0 -0
  637. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/forest-canopy.md +0 -0
  638. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/golden-hour.md +0 -0
  639. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/midnight-galaxy.md +0 -0
  640. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/modern-minimalist.md +0 -0
  641. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/ocean-depths.md +0 -0
  642. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/sunset-boulevard.md +0 -0
  643. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/theme-factory/themes/tech-innovation.md +0 -0
  644. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/ticket-to-code-change/.claude-plugin/plugin.json +0 -0
  645. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/ticket-to-code-change/README.md +0 -0
  646. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/ticket-to-code-change/SKILL.md +0 -0
  647. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/ticket-to-code-change/commands/ticket-to-code-change-setup.md +0 -0
  648. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/upstream-fork-sync/.claude-plugin/plugin.json +0 -0
  649. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/upstream-fork-sync/README.md +0 -0
  650. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/upstream-fork-sync/SKILL.md +0 -0
  651. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/upstream-fork-sync/commands/upstream-fork-sync-setup.md +0 -0
  652. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/use-jev/.claude-plugin/plugin.json +0 -0
  653. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/use-jev/README.md +0 -0
  654. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/use-jev/SKILL.md +0 -0
  655. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/uv/.claude-plugin/plugin.json +0 -0
  656. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/uv/README.md +0 -0
  657. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/uv/SKILL.md +0 -0
  658. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/uv/references/README.md +0 -0
  659. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/vercel/.claude-plugin/plugin.json +0 -0
  660. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/vercel/README.md +0 -0
  661. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/skills/vercel/SKILL.md +0 -0
  662. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/fixtures/automations/capabilities.json +0 -0
  663. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/fixtures/automations/custom-automation.json +0 -0
  664. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/fixtures/automations/github-pr-reviewer.json +0 -0
  665. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/fixtures/automations/github-repo-monitor.json +0 -0
  666. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/fixtures/automations/incident-retrospective-drafter.json +0 -0
  667. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/fixtures/automations/upstream-fork-sync.json +0 -0
  668. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/github_automation_helpers.py +0 -0
  669. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_add_skill_installs_to_agents_dir.py +0 -0
  670. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_agent_conversation_dispatch.py +0 -0
  671. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_automation_llm_provenance.py +0 -0
  672. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_automation_setup.py +0 -0
  673. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_azure_devops_skill.py +0 -0
  674. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_catalog_schema.py +0 -0
  675. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_catalogs.py +0 -0
  676. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_check_pr_description.py +0 -0
  677. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_code_review_risk_evaluation.py +0 -0
  678. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_deprecations.py +0 -0
  679. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_agents_md_maintainer.py +0 -0
  680. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_automation_foundation.py +0 -0
  681. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_developer_delivery.py +0 -0
  682. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_issue_to_pr.py +0 -0
  683. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_pr_review_skill.py +0 -0
  684. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_repo_monitor.py +0 -0
  685. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_review_publication.py +0 -0
  686. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_reviewer_delivery.py +0 -0
  687. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_skill_installation.py +0 -0
  688. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_stale_ci_pr_closer.py +0 -0
  689. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_triage_delivery.py +0 -0
  690. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_github_watchdog_delivery.py +0 -0
  691. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_gitlab_issue_to_mr.py +0 -0
  692. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_integration_catalog_in_sync.py +0 -0
  693. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_issue_duplicate_checker.py +0 -0
  694. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_jira_issue_to_pr.py +0 -0
  695. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_jira_setup_webhook.py +0 -0
  696. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_live_integration_smoke.py +0 -0
  697. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_maintainer_handoff.py +0 -0
  698. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_news_digest.py +0 -0
  699. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_openhands_api_python.py +0 -0
  700. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_plugin_manifest.py +0 -0
  701. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_pr_review_diff_payload.py +0 -0
  702. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_pr_review_feedback.py +0 -0
  703. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_pr_review_review_context.py +0 -0
  704. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_qa_changes.py +0 -0
  705. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_qa_changes_evaluation.py +0 -0
  706. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_refresh_linked_pr_checks.py +0 -0
  707. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_release_notes_generator.py +0 -0
  708. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_sdk_loading.py +0 -0
  709. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_skill_plugin_loading.py +0 -0
  710. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_skills_have_readme.py +0 -0
  711. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_slack_channel_monitor.py +0 -0
  712. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_sync_extensions.py +0 -0
  713. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_version_alignment.py +0 -0
  714. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_vscode_app.py +0 -0
  715. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/test_workflow_sync.py +0 -0
  716. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/tests/vscode-app.test.mjs +0 -0
  717. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/utils/analysis/README.md +0 -0
  718. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/utils/analysis/laminar_signals/README.md +0 -0
  719. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/utils/analysis/laminar_signals/analyze.py +0 -0
  720. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/utils/analysis/laminar_signals/templates/default.j2 +0 -0
  721. {openhands_extensions-0.35.0 → openhands_extensions-0.36.0}/utils/analysis/laminar_signals/templates/pr_review.j2 +0 -0
@@ -117,11 +117,27 @@ window.
117
117
 
118
118
  ### Dependencies and supply chain
119
119
 
120
- Apply the general seven-day release-recency guard to the exact dependency version,
121
- regardless of the package's age or popularity. Validate installation with the
122
- package manager and runtime used by the extension. Temporary git pins and
123
- unreleased package APIs are blockers for merge unless the PR is an explicit,
124
- coordinated stack that will replace them before release.
120
+ Validate installation with the package manager and runtime used by the extension.
121
+ Temporary git pins and unreleased package APIs are blockers for merge unless the
122
+ PR is an explicit, coordinated stack that will replace them before release.
123
+
124
+ For dependency additions or updates, inspect every changed third-party npm or
125
+ PyPI version, including transitive lockfile changes. Require at least seven days
126
+ since publication of that exact version. Use registry publication/upload metadata
127
+ or the relevant artifact's `uv.lock` `upload-time`; a weekly bot schedule, an old
128
+ package name, or a passing install is not age evidence.
129
+
130
+ For an under-seven-day artifact, leave a COMMENT naming the package, version,
131
+ publication time, and source, and defer approval until it ages out or a maintainer
132
+ explicitly approves a narrowly documented exception. If publication time is
133
+ unavailable, ask for that evidence. Existing named first-party exemptions apply
134
+ only to those packages, not their third-party dependencies or blanket approval
135
+ of the lockfile. Apply this check before any dependency-bump fast path.
136
+
137
+ Flag removal or weakening of seven-day uv/Dependabot guards or new broad
138
+ exemptions. Dependabot security updates bypass cooldown, so review them under
139
+ the explicit maintainer-exception rule in `AGENTS.md`; agents cannot approve
140
+ their own bypass.
125
141
 
126
142
  ### Design context for deep changes
127
143
 
@@ -10,6 +10,8 @@ updates:
10
10
 
11
11
  - package-ecosystem: npm
12
12
  directory: /
13
+ cooldown:
14
+ default-days: 7
13
15
  schedule:
14
16
  interval: weekly
15
17
  commit-message:
@@ -18,6 +20,8 @@ updates:
18
20
 
19
21
  - package-ecosystem: pip
20
22
  directory: /
23
+ cooldown:
24
+ default-days: 7
21
25
  schedule:
22
26
  interval: weekly
23
27
  commit-message:
@@ -0,0 +1,34 @@
1
+ name: Kanban App
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "apps/kanban-manager/**"
7
+ - "skills/canvas-extension-api/scripts/validate-extension.mjs"
8
+ - ".github/workflows/kanban-app.yml"
9
+ push:
10
+ branches: [main]
11
+ paths:
12
+ - "apps/kanban-manager/**"
13
+ - ".github/workflows/kanban-app.yml"
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ check:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v7
23
+ - uses: actions/setup-node@v7
24
+ with:
25
+ node-version: "24"
26
+ cache: npm
27
+ cache-dependency-path: apps/kanban-manager/package-lock.json
28
+ - run: npm ci --ignore-scripts
29
+ working-directory: apps/kanban-manager
30
+ - run: npm run check
31
+ working-directory: apps/kanban-manager
32
+ - run: node skills/canvas-extension-api/scripts/validate-extension.mjs apps/kanban-manager
33
+ - name: Confirm the checked-in bundle is current
34
+ run: git diff --exit-code -- apps/kanban-manager/extension.js
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.36.0"
3
+ }
@@ -137,7 +137,7 @@ When editing or adding skills in this repo, follow these rules (and add new skil
137
137
  - Agent-driven plugins (for example `plugins/pr-review` and `plugins/release-notes`) use `uv run --with openhands-sdk --with openhands-tools ...` and require an `LLM_API_KEY` in addition to `GITHUB_TOKEN`.
138
138
  - For OpenHands Cloud API guidance, automations, and CLI integration, use `plugins/openhands`. It is the canonical unified OpenHands plugin covering the V1 Cloud API, Automations API, and CLI. The individual skills (`skills/openhands-api`, `skills/openhands-automation`) are also available standalone.
139
139
  - When reviewing or editing `skills/openhands-sdk`, validate copy-paste imports against the released packages with `uv run --with openhands-tools --with openhands-workspace --with openhands-agent-server python ...`. In the current released workspace package, the exported remote workspace classes are `APIRemoteWorkspace` / `OpenHandsCloudWorkspace`; `RemoteAPIWorkspace` is not available.
140
- - For agent-driven plugin scripts, prefer `from openhands.sdk.plugin import PluginSource` and pass `plugins=[PluginSource(source=...)]` into `Conversation`. The current released SDK (`openhands-sdk` 1.49.x) exports both `PluginSource` and `Plugin` from `openhands.sdk.plugin`, so `Plugin.load(...)` imports also work (used by `tests/test_skill_plugin_loading.py`).
140
+ - For agent-driven plugin scripts, prefer `from openhands.sdk.plugin import PluginSource` and pass `plugins=[PluginSource(source=...)]` into `Conversation`. `tests/test_skill_plugin_loading.py` also exercises `Plugin.load(...)` from `openhands.sdk.plugin`.
141
141
  - `plugins/qa-changes/action.yml` now has a preflight guard for fork PRs in `pull_request` context: if the PR comes from a fork and `LLM_API_KEY` is unavailable (normal for forks), the action exits successfully with a clear skip notice instead of failing.
142
142
  - `skills/bitbucket` should not tell agents to rewrite remotes proactively. In OpenHands, `BITBUCKET_TOKEN` is commonly kept in unencoded `user:token` form for API calls like `curl --user "$BITBUCKET_TOKEN" ...`; only split and URL-encode it when constructing a non-interactive HTTPS Git remote URL.
143
143
 
@@ -199,13 +199,48 @@ Important notes:
199
199
  - The `code-review` and `codereview-roasted` skills have been merged into a single `code-review` skill. The `/codereview-roasted` trigger is kept as an alias for backward compatibility. The `review-style` action input is deprecated and ignored.
200
200
  - `plugins/pr-review` supports an optional `require-evidence` action input that tells the reviewer to require end-to-end proof in the PR description that the code works; test output alone is not sufficient evidence.
201
201
  - The corresponding `REQUIRE_EVIDENCE` env flag is consumed by `plugins/pr-review/scripts/agent_script.py` and injected into the review prompt via `plugins/pr-review/scripts/prompt.py`.
202
+ - `plugins/pr-review` supports an optional `require-pinned-actions` input (default `'false'`) that tells the reviewer to require commit-SHA pins on third-party actions in workflow and `action.yml` changes. The reviewed repository's owner is exempt; the `REQUIRE_PINNED_ACTIONS` env flag follows the same path as `REQUIRE_EVIDENCE`.
202
203
  - `plugins/pr-review` exposes an `enable-uv-cache` input (default `'false'`) that toggles `setup-uv`'s GitHub Actions cache. Default stays off because a prompt-injected reviewer could poison a shared cache that higher-privilege workflows later consume; opt in only on single-tenant self-hosted runners. The README's "Caching and Security" section documents the threat model and recommends a host-level uv cache volume as the preferred alternative for self-hosted setups.
203
204
  - GitHub review suggestions that only delete lines can look empty in `PullRequestReviewComment.body`; the rendered content is available via `bodyText`/`bodyHTML`, so review-context formatting should fall back there before treating a suggestion as empty.
204
205
  - Prompt coverage for this behavior lives in `tests/test_pr_review_prompt.py`.
205
206
  - `plugins/pr-review`'s `collect-feedback` input should append a short thumbs up/down footer to the main GitHub review body via `agent_script.py` / `prompt.py`, rather than posting a separate PR comment. `evaluate_review.py` should read feedback from review-body reactions while still tolerating legacy issue-comment markers.
207
+ - In `plugins/pr-review/scripts/prompt.py`, PR-derived text (title, head branch, description, review context, files manifest, and patches) goes through the private `_fence_untrusted()` helper, with one nonce per `format_prompt()` call. Keep new PR-derived prompt fields inside these regions; containment tests live in `tests/test_pr_review_prompt_injection.py`.
206
208
 
207
209
 
208
210
  ## When uncertain
209
211
 
210
212
  - Prefer the official OpenHands docs on skills: https://docs.openhands.dev/overview/skills
211
213
  - Prefer the SDK skill guide: https://docs.openhands.dev/sdk/guides/skill
214
+
215
+ ## Dependency release-age policy
216
+
217
+ - Wait at least seven days after publication before adding or updating a
218
+ third-party npm or PyPI version, including transitive lockfile changes.
219
+ A weekly update schedule alone does not enforce this minimum age.
220
+ - Keep Dependabot `cooldown.default-days: 7` for npm and Python version
221
+ updates, and preserve `tool.uv.exclude-newer = "7 days"` where configured.
222
+ Existing named first-party exceptions do not exempt their third-party
223
+ dependencies. Do not add broad exemptions or disable the cutoff to make a
224
+ resolver succeed.
225
+ - Verify the exact version's publication/upload time from npm or PyPI metadata
226
+ (or artifact `upload-time` in `uv.lock`), not the package's creation date.
227
+ If age cannot be established, report the missing evidence rather than guess.
228
+ - Security updates can bypass Dependabot cooldown. An urgent exception needs
229
+ explicit maintainer approval recorded in the PR with the package, version,
230
+ advisory/reason, and publication time. Agents must not grant themselves an
231
+ exception. Keep overrides narrow and remove temporary exceptions afterward.
232
+ - Use the committed lock for reproducible installs; review newly resolved
233
+ artifacts before committing a lock update.
234
+
235
+ For manual npm dependency resolution, use npm >= 11.10 with
236
+ `npm install --min-release-age=7` (days), or verify registry timestamps before
237
+ committing the result. Older npm versions do not enforce this option. `npm ci`
238
+ replays the lock and is not proof that newly locked versions meet the age rule.
239
+
240
+ Use uv >= 0.9.25 for this policy. Older versions cannot parse the boolean
241
+ first-party exemptions and can discard the entire `[tool.uv]` table, including
242
+ `required-version`. Check `uv --version` before running `uv sync`, `uv lock`,
243
+ or `uv run`; this repository does not commit a lockfile to reject old parsers.
244
+ The named exemptions cover the released SDK, tools, workspace, and agent-server
245
+ packages used by the documented import checks; their third-party dependencies
246
+ still have the seven-day cutoff.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhands-extensions
3
- Version: 0.35.0
3
+ Version: 0.36.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
@@ -100,7 +100,7 @@ The JS and Python versions are kept in lock-step by `release-please` and guarded
100
100
  ## Extensions Catalog
101
101
 
102
102
  <!-- BEGIN AUTO-GENERATED CATALOG -->
103
- This repository contains **2 marketplace(s)** with **78 extensions** (67 skills, 11 plugins).
103
+ This repository contains **2 marketplace(s)** with **79 extensions** (68 skills, 11 plugins).
104
104
 
105
105
  ### large-codebase
106
106
 
@@ -119,7 +119,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases
119
119
 
120
120
  Official skills and plugins for OpenHands — the open-source AI software engineer.
121
121
 
122
- **74 extensions** (65 skills, 9 plugins)
122
+ **75 extensions** (66 skills, 9 plugins)
123
123
 
124
124
  | Name | Type | Description | Commands |
125
125
  |------|------|-------------|----------|
@@ -182,6 +182,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
182
182
  | research-brief | skill | Create a recurring automation that researches a topic using Tavily web search and publishes a structured brief to Not... | `/research-brief:setup` |
183
183
  | runtime-api-configs | plugin | Manage warm sandbox pools on OpenHands Enterprise from a Python CLI: list, template, save, and delete warm runtime co... | — |
184
184
  | security | skill | Security best practices for secure coding, authentication, authorization, and data protection. Use when developing fe... | — |
185
+ | show-me | skill | Help the user understand the current topic visually with concise diagrams, code-shape sketches, and focused HTML arti... | — |
185
186
  | simplified-technical-english | skill | Write explanations and chat in the style of ASD-STE100 Simplified Technical English: short active sentences, one idea... | — |
186
187
  | skill-creator | skill | Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an ex... | — |
187
188
  | slack-channel-monitor | skill | Create a cron automation that polls up to 10 Slack channels every minute and starts an OpenHands conversation when a ... | `/slack-monitor:poll` |
@@ -0,0 +1,18 @@
1
+ [
2
+ {
3
+ "id": "kanban-manager",
4
+ "name": "Kanban Manager",
5
+ "description": "A beta board for agent work: queue requests, track progress, and review completed tickets.",
6
+ "source": "./apps/kanban-manager",
7
+ "manifest": "./apps/kanban-manager/canvas-extension.json",
8
+ "beta": true
9
+ },
10
+ {
11
+ "id": "vscode",
12
+ "name": "VS Code",
13
+ "description": "A managed full-height OpenVSCode editor for the selected Agent Canvas workspace.",
14
+ "source": "./apps/vscode",
15
+ "manifest": "./apps/vscode/canvas-extension.json",
16
+ "beta": true
17
+ }
18
+ ]
@@ -0,0 +1,2 @@
1
+ node_modules/
2
+ *.tgz
@@ -0,0 +1,4 @@
1
+ node_modules/
2
+ test/
3
+ package-lock.json
4
+ *.log
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright © 2025 OpenHands contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the “Software”), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,184 @@
1
+ # Kanban Manager
2
+
3
+ **Beta.** Install explicitly and enable only after reviewing the source.
4
+
5
+ Kanban Manager is a board for agent work. You queue requests as cards, a
6
+ manager agent picks them up and dispatches workers, and the board shows what
7
+ each agent is doing right now and what has landed.
8
+
9
+ It is a Canvas Extension with no server of its own. Everything it needs — the
10
+ board, its settings, ticket attachments — is JSON on the Agent Server's own
11
+ filesystem, written through the file API.
12
+
13
+ (Previously published here as `vibe-board`.)
14
+
15
+
16
+ ## Install in Agent Canvas
17
+
18
+ In **Customize -> Apps -> Add app**, use:
19
+
20
+ - Source: `https://github.com/OpenHands/extensions`
21
+ - Path within repository: `apps/kanban-manager`
22
+ - Revision: choose the reviewed release tag or commit containing this app.
23
+
24
+ Installation leaves the app disabled. Review the source and revision, then
25
+ choose **Enable trusted app**. Open **Kanban Manager** from the navigation.
26
+ The app uses the active Agent Server's file API. Cloud backends do not currently
27
+ support Canvas Apps.
28
+
29
+ ### Existing installations
30
+
31
+ The app name remains `kanban-manager` (version `0.2.0`), and its board data
32
+ remains at `~/.openhands/vibe-manager/` on the same Agent Server. Browser keys
33
+ such as `vibe.workspace` and `vibe.theme` also stay unchanged. Moving this
34
+ package does not move, rewrite, or delete that data or any manager automation.
35
+
36
+ When switching an existing installation, stop active UI edits, disable the old
37
+ app, and remove its installed package through Canvas. Do not delete its board
38
+ data. Install the new coordinates above on the **same backend**, then enable
39
+ and check that the existing workspaces and tickets appear. Do not run two
40
+ copies under different app names against the same data. A workspace that moved
41
+ to a different Agent Server needs a separate, deliberate data migration.
42
+
43
+ ### Compatibility and optional manager
44
+
45
+ The board works as a manual Kanban without starting an automation. Enabling the
46
+ app does not start a manager or create a conversation. **Start manager** is an
47
+ explicit, separate action and can dispatch agents that use paid models.
48
+
49
+ The imported manager, chat, and attachment features rely on the existing
50
+ Canvas backend registry and a deployment that exposes the Automation service
51
+ at `/api/automation/v1` using the selected backend's credentials. This is not
52
+ a portable host-API guarantee: a remote backend without that route can use the
53
+ manual board, but manager actions may be unavailable. The migration does not
54
+ add routes, change credentials, or grant access to another backend.
55
+
56
+ ## Credits and migration source
57
+
58
+ Originally authored by Robert Brennan, with contributions from OpenHands.
59
+ This migration preserves their app and automation code.
60
+
61
+ Moved from [OpenHands/canvas-apps](https://github.com/OpenHands/canvas-apps/tree/b83068fdce5ec7f85c07b8aefa15d413982059d0/kanban-manager)
62
+ at `b83068fdce5ec7f85c07b8aefa15d413982059d0`, retaining the MIT [LICENSE](LICENSE).
63
+ The app vendors its original board styles and automation from
64
+ [rbren/vibe-manager](https://github.com/rbren/vibe-manager).
65
+
66
+ The separate [canvas-apps PR #21](https://github.com/OpenHands/canvas-apps/pull/21)
67
+ proposes a React/FastAPI/SQLite rewrite. It was still open when this migration
68
+ was prepared and is **not** included. Its code and any live database must not
69
+ be treated as migrated; a future port requires its own review and data plan.
70
+
71
+ ## Lanes
72
+
73
+ Cards move left to right: **Pending** → **In progress** → **Needs input** →
74
+ **Finished**, plus a **Verified** lane you can toggle for the archive. Drag a
75
+ card to reprioritise within a lane. Click one to open a drawer with the full
76
+ append-only history; adding a note to a finished ticket reopens it.
77
+
78
+ In-progress cards show the worker's most recent action as it happens, so you
79
+ can see an agent working without opening its conversation.
80
+
81
+ ## The manager
82
+
83
+ The control in the top right owns the manager automation for the selected
84
+ workspace, so a board can be made autonomous without leaving Canvas:
85
+
86
+ - **Start manager** (orange) — there is no manager yet, or it was stopped.
87
+ Clicking it packs the automation's python sources (compiled into the bundle,
88
+ `src/automation/`) plus a per-workspace `config.json` into a `tar.gz`,
89
+ uploads it to `POST /api/automation/v1/uploads`, and creates a cron
90
+ automation that runs `python3 main.py` once a minute. The automation id is
91
+ recorded on the workspace.
92
+ - **manager ✓ / working / ✗** — a manager is running. The badge reports the
93
+ last run and the manager conversation; clicking it triggers a run now.
94
+ - **Stop manager** — `PATCH {"enabled": false}`. The automation and its run
95
+ history are kept, so starting again is a re-enable with a fresh tarball.
96
+
97
+ Two implementation notes, since neither is obvious:
98
+
99
+ - The tar archive is built in the browser and gzipped with
100
+ `CompressionStream`. Sizes in the ustar header must be **byte** counts, not
101
+ string lengths, or a file with any multi-byte character truncates and every
102
+ following header lands mid-stream.
103
+ - The upload is a plain `fetch` rather than `host.agentServer.request`,
104
+ because the host client JSON-stringifies any body that is not `FormData`,
105
+ which would corrupt the gzip bytes. Every other call goes through the host.
106
+
107
+ Without a manager the board is still a perfectly good manual kanban: you can
108
+ create, edit, reorder and verify tickets, and open the conversation behind any
109
+ card.
110
+
111
+ ## How it stores state
112
+
113
+ There is no database and no backend process. The store is a directory tree
114
+ under the Agent Server's home:
115
+
116
+ ```
117
+ ~/.openhands/vibe-manager/
118
+ index.json workspaces + settings
119
+ workspaces/<id>/tickets/<tid>/ticket.json one file per ticket
120
+ attachments/<id>/<filename> uploaded files
121
+ ```
122
+
123
+ The directory keeps its old name so boards created by earlier installs — and
124
+ by the manager automation, which writes the same files from the shell — are
125
+ still found.
126
+
127
+ Reads are `GET /api/file/download`, writes are `POST /api/file/upload`, both
128
+ through the host's `agentServer.request` so they are same-origin and
129
+ authenticated by Canvas. The home directory is resolved at runtime from
130
+ `GET /api/file/home` rather than assumed, so this works whatever user the
131
+ Agent Server runs as.
132
+
133
+ Two consequences worth knowing:
134
+
135
+ - **One file per ticket is what keeps writers apart.** There is no conditional
136
+ upload to build a compare-and-swap on, so the extension, the manager
137
+ automation and the manager's CLI would lose each other's edits if they all
138
+ rewrote one board document. Touching separate files, they cannot. The two
139
+ documents still shared — `index.json`, and a ticket two writers both target —
140
+ carry a `rev`/`writer` pair that detects a lost write and re-applies it.
141
+ - **Reads bypass the HTTP cache.** The file API sends `ETag`/`Last-Modified`
142
+ but no `Cache-Control`, so a browser may reuse a stale response for its
143
+ heuristic freshness window. On the directory listing that assembles the
144
+ board, that means a ticket created moments earlier never appears at all.
145
+ Both the listing and `readJson` defeat it per request; attachment blobs are
146
+ immutable and stay cacheable.
147
+
148
+ ## Build
149
+
150
+ The checked-in `extension.js` is the built bundle; the sources are in `src/`.
151
+
152
+ ```bash
153
+ npm ci
154
+ npm run check # build + test
155
+ ```
156
+
157
+ `build.mjs` bundles the ES modules with esbuild and inlines two things that
158
+ must travel with a single-file extension:
159
+
160
+ - `src/board.css`, scoping every selector under `.vibe-ext` and rewriting
161
+ `rem` lengths onto a local `--vibe-rem`, so the board can size itself
162
+ without restyling Canvas;
163
+ - `src/automation/*.py`, the manager automation, because "Start manager"
164
+ uploads it from the browser and the machine running Canvas has no checkout
165
+ of it to read.
166
+
167
+ Both are vendored from [rbren/vibe-manager](https://github.com/rbren/vibe-manager),
168
+ which is where they are maintained. The bundle's destination comes from the
169
+ manifest's `entrypoint`, so the declared and built paths cannot drift.
170
+
171
+ ## Tests
172
+
173
+ `test/extension.test.js` mounts the built bundle against a linkedom DOM and a
174
+ fake host, and covers rendering, lane sorting, the submit path, the manager
175
+ start/stop control and disposal. It runs on the bundle rather than the
176
+ sources, so a broken build fails the suite.
177
+
178
+ `test/manager.test.mjs` checks the browser-built tarball with real GNU tar. It
179
+ also has two tests that talk to a running automation backend; they skip unless
180
+ a session key is available (`OH_SESSION_API_KEYS_0`, plus `VIBE_TEST_INGRESS`
181
+ if it is not on `http://127.0.0.1:8000`).
182
+
183
+ The upstream repository additionally has tests that drive the real Agent Server
184
+ file API; those need a running server and are not included here.
@@ -0,0 +1,122 @@
1
+ /* Build the Kanban Manager canvas extension into one self-contained browser
2
+ ESM file: the bundle carries the board, the stylesheet and the manager
3
+ automation's python sources, because an extension is a single file.
4
+
5
+ The stylesheet is vendored in src/board.css. Two transforms adapt it to
6
+ living inside Canvas:
7
+
8
+ 1. Every selector is scoped under .vibe-ext, and the page-level selectors
9
+ (:root, html, body, *) are rewritten onto that root, so the extension
10
+ cannot restyle Canvas.
11
+ 2. rem lengths become calc(N * var(--vibe-rem)). The SPA sets
12
+ html { font-size: 120% } to scale itself, which an extension must not do
13
+ to the host page; --vibe-rem reproduces that scale locally instead.
14
+ */
15
+
16
+ import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
17
+ import { dirname, join } from "node:path";
18
+ import { fileURLToPath } from "node:url";
19
+ import esbuild from "esbuild";
20
+ import postcss from "postcss";
21
+ import prefixer from "postcss-prefix-selector";
22
+
23
+ const here = dirname(fileURLToPath(import.meta.url));
24
+ const ROOT_CLASS = ".vibe-ext";
25
+
26
+ // Build only from this package: unrelated files in the parent repository must
27
+ // not replace the vendored stylesheet or the manager automation.
28
+ const SOURCE_CSS = join(here, "src", "board.css");
29
+ const AUTOMATION_DIR = join(here, "src", "automation");
30
+ const AUTOMATION_MODULES = ["main.py", "vibestore.py", "vibectl.py"];
31
+
32
+ /* The manifest decides where the bundle goes, so the declared entrypoint and
33
+ the built file cannot drift apart (this package publishes it under dist/,
34
+ the canvas-extensions repo at the package root). */
35
+ const MANIFEST = JSON.parse(readFileSync(join(here, "canvas-extension.json"), "utf8"));
36
+ const OUTFILE = join(here, MANIFEST.entrypoint);
37
+
38
+ // Selectors that target the page itself. Inside the extension they all mean
39
+ // "our root element" instead.
40
+ const PAGE_LEVEL = new Set([
41
+ ":root",
42
+ "html",
43
+ "body",
44
+ "html, body",
45
+ "html,body",
46
+ ]);
47
+
48
+ function scopeSelector(selector) {
49
+ const trimmed = selector.trim();
50
+ if (PAGE_LEVEL.has(trimmed)) return ROOT_CLASS;
51
+
52
+ // html[data-theme="light"] -> .vibe-ext[data-theme="light"] (the SPA's light
53
+ // mode is a token override; we keep it on our own root so the toggle never
54
+ // touches Canvas's <html>).
55
+ if (trimmed.startsWith("html[")) {
56
+ return ROOT_CLASS + trimmed.slice("html".length);
57
+ }
58
+ // html[data-theme="light"] .foo -> .vibe-ext[data-theme="light"] .foo
59
+ if (trimmed.startsWith("html[data-theme")) {
60
+ return ROOT_CLASS + trimmed.slice("html".length);
61
+ }
62
+ if (trimmed === "*") return `${ROOT_CLASS}, ${ROOT_CLASS} *`;
63
+ return null; // fall through to the default prefixer behaviour
64
+ }
65
+
66
+ function remToScaled(css) {
67
+ // 0.9375rem -> calc(0.9375 * var(--vibe-rem)). Skip 0rem and anything already
68
+ // inside a var() fallback chain we generated.
69
+ return css.replace(/(-?\d*\.?\d+)rem\b/g, (match, value) => {
70
+ const n = Number(value);
71
+ if (!Number.isFinite(n) || n === 0) return match;
72
+ return `calc(${value} * var(--vibe-rem))`;
73
+ });
74
+ }
75
+
76
+ async function buildCss() {
77
+ const raw = readFileSync(SOURCE_CSS, "utf8");
78
+ const result = await postcss([
79
+ prefixer({
80
+ prefix: ROOT_CLASS,
81
+ transform(prefix, selector, prefixedSelector) {
82
+ return scopeSelector(selector) ?? prefixedSelector;
83
+ },
84
+ }),
85
+ ]).process(raw, { from: SOURCE_CSS });
86
+
87
+ // --vibe-rem reproduces the SPA's html { font-size: 120% } locally. Change
88
+ // this one value to rescale the whole board inside Canvas.
89
+ const scale = `${ROOT_CLASS} { --vibe-rem: 1.2rem; }\n`;
90
+ // setup.css is extension-only and already written scoped, so it bypasses the
91
+ // prefixer but still gets the rem rescale.
92
+ const setup = readFileSync(join(here, "src", "setup.css"), "utf8");
93
+ return scale + remToScaled(result.css) + remToScaled(setup);
94
+ }
95
+
96
+ function readAutomation() {
97
+ return Object.fromEntries(
98
+ AUTOMATION_MODULES.map((name) => [name, readFileSync(join(AUTOMATION_DIR, name), "utf8")]),
99
+ );
100
+ }
101
+
102
+ const css = await buildCss();
103
+ const automation = readAutomation();
104
+ mkdirSync(dirname(OUTFILE), { recursive: true });
105
+
106
+ await esbuild.build({
107
+ entryPoints: [join(here, "src", "extension.js")],
108
+ outfile: OUTFILE,
109
+ bundle: true,
110
+ format: "esm",
111
+ platform: "browser",
112
+ target: "es2022",
113
+ legalComments: "none",
114
+ define: {
115
+ __VIBE_CSS__: JSON.stringify(css),
116
+ __VIBE_AUTOMATION__: JSON.stringify(automation),
117
+ },
118
+ });
119
+
120
+ const out = readFileSync(OUTFILE, "utf8").replace(/[ \t]+$/gm, "");
121
+ writeFileSync(OUTFILE, `/* Generated by build.mjs - do not edit. */\n${out}`);
122
+ console.log(`built ${MANIFEST.entrypoint} (${(out.length / 1024).toFixed(1)} KB)`);
@@ -0,0 +1,19 @@
1
+ {
2
+ "schema_version": 1,
3
+ "name": "kanban-manager",
4
+ "display_name": "Kanban Manager",
5
+ "version": "0.2.0",
6
+ "description": "Agent dispatch board: queue work, watch agents pick it up, review what lands.",
7
+ "entrypoint": "extension.js",
8
+ "contributes": {
9
+ "pages": [
10
+ {
11
+ "id": "board",
12
+ "title": "Kanban Manager",
13
+ "path": "/board",
14
+ "nav_label": "Kanban Manager",
15
+ "description": "Kanban board of agent work across your workspaces."
16
+ }
17
+ ]
18
+ }
19
+ }