@openhands/extensions 0.27.0 → 0.29.0

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 (70) hide show
  1. package/.agents/skills/custom-codereview-guide.md +31 -0
  2. package/.claude-plugin/marketplace.json +9 -0
  3. package/.codex-plugin/marketplace.json +9 -0
  4. package/.github/workflows/build-vscode-app.yml +3 -3
  5. package/.github/workflows/deprecation-check.yml +1 -1
  6. package/.github/workflows/pypi-publish.yml +2 -2
  7. package/.github/workflows/tests.yml +1 -1
  8. package/.plugin/marketplace.json +9 -0
  9. package/.release-please-manifest.json +1 -1
  10. package/AGENTS.md +7 -2
  11. package/README.md +3 -2
  12. package/automations/bundle-index.js +5 -5
  13. package/automations/catalog/github-issue-to-pr/manifest.json +2 -2
  14. package/automations/catalog/github-issue-triage/manifest.json +2 -2
  15. package/automations/catalog/github-pr-reviewer/manifest.json +2 -2
  16. package/marketplaces/openhands-extensions.json +9 -0
  17. package/package.json +1 -1
  18. package/plugins/openhands/skills/openhands-automation/README.md +6 -4
  19. package/plugins/openhands/skills/openhands-automation/SKILL.md +103 -21
  20. package/plugins/openhands/skills/openhands-automation/references/custom-automation.md +79 -12
  21. package/plugins/openhands/skills/openhands-sdk/SKILL.md +2 -1
  22. package/plugins/qa-changes/README.md +4 -0
  23. package/plugins/qa-changes/skills/qa-changes/README.md +3 -1
  24. package/plugins/qa-changes/skills/qa-changes/SKILL.md +42 -0
  25. package/plugins/vulnerability-remediation/skills/github/README.md +5 -1
  26. package/plugins/vulnerability-remediation/skills/github/SKILL.md +27 -0
  27. package/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +51 -4
  28. package/pyproject.toml +1 -1
  29. package/python/openhands_extensions/_version.py +1 -1
  30. package/scripts/sync_openhands_sdk_skill.py +16 -13
  31. package/skills/azure-devops/README.md +3 -1
  32. package/skills/azure-devops/SKILL.md +4 -0
  33. package/skills/bitbucket/README.md +3 -1
  34. package/skills/bitbucket/SKILL.md +4 -2
  35. package/skills/bitbucket-cloud/README.md +2 -0
  36. package/skills/bitbucket-cloud/SKILL.md +2 -0
  37. package/skills/bitbucket-data-center/README.md +2 -0
  38. package/skills/bitbucket-data-center/SKILL.md +2 -0
  39. package/skills/canvas-extension-api/SKILL.md +4 -1
  40. package/skills/canvas-extension-api/references/native-design.md +250 -0
  41. package/skills/github/README.md +5 -1
  42. package/skills/github/SKILL.md +27 -0
  43. package/skills/github/scripts/agent_conversation.py +51 -4
  44. package/skills/github-issue-to-pr/scripts/agent_conversation.py +51 -4
  45. package/skills/github-issue-triage/scripts/agent_conversation.py +51 -4
  46. package/skills/github-pr-reviewer/README.md +5 -0
  47. package/skills/github-pr-reviewer/SKILL.md +12 -0
  48. package/skills/github-pr-reviewer/scripts/agent_conversation.py +51 -4
  49. package/skills/github-pr-reviewer/scripts/main.py +20 -6
  50. package/skills/github-pr-reviewer/scripts/worker.py +77 -15
  51. package/skills/github-pr-reviewer/tests/test_main.py +23 -0
  52. package/skills/gitlab/README.md +3 -1
  53. package/skills/gitlab/SKILL.md +4 -0
  54. package/skills/index.js +25 -13
  55. package/skills/linear/README.md +2 -0
  56. package/skills/linear/SKILL.md +6 -2
  57. package/skills/openhands-automation/README.md +6 -4
  58. package/skills/openhands-automation/SKILL.md +103 -21
  59. package/skills/openhands-automation/references/custom-automation.md +79 -12
  60. package/skills/openhands-sdk/SKILL.md +2 -1
  61. package/skills/qa-changes/README.md +3 -1
  62. package/skills/qa-changes/SKILL.md +42 -0
  63. package/skills/simplified-technical-english/.claude-plugin/plugin.json +15 -0
  64. package/skills/simplified-technical-english/.codex-plugin/plugin.json +15 -0
  65. package/skills/simplified-technical-english/.plugin/plugin.json +15 -0
  66. package/skills/simplified-technical-english/README.md +21 -0
  67. package/skills/simplified-technical-english/SKILL.md +65 -0
  68. package/tests/fixtures/automations/github-pr-reviewer.json +9 -9
  69. package/tests/test_agent_conversation_dispatch.py +130 -0
  70. package/tests/test_github_reviewer_delivery.py +279 -2
@@ -88,6 +88,37 @@ package manager and runtime used by the extension. Temporary git pins and
88
88
  unreleased package APIs are blockers for merge unless the PR is an explicit,
89
89
  coordinated stack that will replace them before release.
90
90
 
91
+ ### Design context for deep changes
92
+
93
+ A diff shows edits, not always the design. Expect concise design context when a
94
+ reviewer cannot judge a change from the diff in a few minutes: a new or changed
95
+ skill, plugin, automation, integration contract, or manifest schema; a new
96
+ subsystem, migration, or cross-cutting refactor; a behavior change in shared
97
+ loading, validation, discovery, or execution; or a large diff whose intent is
98
+ hard to hold once generated files, lockfiles, snapshots, vendored code, and
99
+ mechanical churn are set aside. Typos, one-line guards, dependency bumps, small
100
+ documentation edits, and localized fixes need none. Line count is a signal,
101
+ never a gate by itself.
102
+
103
+ Design context is an available design-doc artifact or a durable write-up in the
104
+ PR description that states the intent, the important before/after behavior or
105
+ contract shape, compatibility and risk, and grounded code references. When a
106
+ deep change lacks it, weigh the gap by risk:
107
+
108
+ - **HIGH** risk: do not approve; submit a COMMENT review that asks for design
109
+ context before a human merge decision.
110
+ - **MEDIUM** risk: withhold approval only when reconstructing the design from
111
+ the diff would materially slow or weaken the review.
112
+ - **LOW** risk: never block on missing design context alone.
113
+
114
+ Approving a same-repository PR removes its `.pr/` directory. If a temporary
115
+ `.pr/` page is the only design explanation, submit a COMMENT review instead of
116
+ approving, so the page remains for the human maintainer's decision, unless the
117
+ PR description already carries the durable equivalent.
118
+
119
+ Design context aids review; it does not excuse correctness, security,
120
+ architecture, or repository-ownership problems.
121
+
91
122
  ## Evidence and comment discipline
92
123
 
93
124
  Evidence should exercise the extension as users invoke it: run the command, hook,
@@ -830,6 +830,15 @@
830
830
  "technical-writing"
831
831
  ]
832
832
  },
833
+ {
834
+ "name": "simplified-technical-english",
835
+ "source": "./skills/simplified-technical-english",
836
+ "description": "Write explanations and chat in the style of ASD-STE100 Simplified Technical English: short active sentences, one idea each, plain consistent words. Applies to prose only, never to code.",
837
+ "category": "writing",
838
+ "keywords": [
839
+ "simplified-technical-english"
840
+ ]
841
+ },
833
842
  {
834
843
  "name": "plain-english-content",
835
844
  "source": "./skills/plain-english-content",
@@ -830,6 +830,15 @@
830
830
  "technical-writing"
831
831
  ]
832
832
  },
833
+ {
834
+ "name": "simplified-technical-english",
835
+ "source": "./skills/simplified-technical-english",
836
+ "description": "Write explanations and chat in the style of ASD-STE100 Simplified Technical English: short active sentences, one idea each, plain consistent words. Applies to prose only, never to code.",
837
+ "category": "writing",
838
+ "keywords": [
839
+ "simplified-technical-english"
840
+ ]
841
+ },
833
842
  {
834
843
  "name": "plain-english-content",
835
844
  "source": "./skills/plain-english-content",
@@ -11,8 +11,8 @@ jobs:
11
11
  package:
12
12
  runs-on: ubuntu-latest
13
13
  steps:
14
- - uses: actions/checkout@v4
15
- - uses: actions/setup-node@v4
14
+ - uses: actions/checkout@v7
15
+ - uses: actions/setup-node@v7
16
16
  with:
17
17
  node-version: "20"
18
18
  - name: Build installable App package
@@ -23,7 +23,7 @@ jobs:
23
23
  test -f dist/apps/vscode/extension.js
24
24
  test -f dist/apps/vscode/backend/openvscode-linux-amd64.tar.gz
25
25
  test -f dist/apps/vscode/backend/openvscode-linux-arm64.tar.gz
26
- - uses: actions/upload-artifact@v4
26
+ - uses: actions/upload-artifact@v7
27
27
  with:
28
28
  name: vscode-app-${{ github.sha }}
29
29
  path: dist/apps/vscode
@@ -16,7 +16,7 @@ jobs:
16
16
  uses: actions/checkout@v7
17
17
 
18
18
  - name: Install uv
19
- uses: astral-sh/setup-uv@v7
19
+ uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
20
20
  with:
21
21
  enable-cache: true
22
22
  python-version: "3.12"
@@ -43,7 +43,7 @@ jobs:
43
43
  echo "📦 Version: $VERSION"
44
44
 
45
45
  - name: Install uv
46
- uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
46
+ uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
47
47
  with:
48
48
  version: latest
49
49
  python-version: '3.12'
@@ -101,4 +101,4 @@ jobs:
101
101
  path: dist/
102
102
 
103
103
  - name: Publish to PyPI
104
- uses: pypa/gh-action-pypi-publish@release/v1
104
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -15,7 +15,7 @@ jobs:
15
15
  uses: actions/checkout@v7
16
16
 
17
17
  - name: Install uv
18
- uses: astral-sh/setup-uv@v7
18
+ uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
19
19
  with:
20
20
  enable-cache: true
21
21
  python-version: "3.12"
@@ -830,6 +830,15 @@
830
830
  "technical-writing"
831
831
  ]
832
832
  },
833
+ {
834
+ "name": "simplified-technical-english",
835
+ "source": "./skills/simplified-technical-english",
836
+ "description": "Write explanations and chat in the style of ASD-STE100 Simplified Technical English: short active sentences, one idea each, plain consistent words. Applies to prose only, never to code.",
837
+ "category": "writing",
838
+ "keywords": [
839
+ "simplified-technical-english"
840
+ ]
841
+ },
833
842
  {
834
843
  "name": "plain-english-content",
835
844
  "source": "./skills/plain-english-content",
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "0.27.0"
2
+ ".": "0.29.0"
3
3
  }
package/AGENTS.md CHANGED
@@ -6,7 +6,7 @@ It contains **shareable skills and plugins** that can be loaded by OpenHands (CL
6
6
 
7
7
  ## Cross-Repository Boundaries
8
8
 
9
- This repository owns the public registry of reusable OpenHands skills, plugins, automations, and integrations. These extensions are consumed by OpenHands applications and SDK-based clients.
9
+ This repository owns the public registry of reusable OpenHands skills, plugins, Agent Canvas Apps, automations, and integrations. These extensions are consumed by OpenHands applications and SDK-based clients.
10
10
 
11
11
  Related repositories have distinct responsibilities:
12
12
 
@@ -49,7 +49,12 @@ Before opening a PR:
49
49
  - `plugins/<plugin-name>/hooks/` — lifecycle hooks (optional)
50
50
  - `plugins/<plugin-name>/scripts/` — utility scripts (optional)
51
51
 
52
- There is no application code here; the primary artifacts are Markdown skill definitions and plugin configurations, which can contain `scripts/`, `hooks/` sub-directories.
52
+ - `apps/` — a catalog of Agent Canvas Apps (beta), **one directory per app**.
53
+ - `apps/<app-name>/canvas-extension.json` — the App manifest (Canvas Extensions API v1)
54
+ - `apps/<app-name>/extension.js` — the browser ESM entrypoint exporting `activate(host)`
55
+ - `apps/catalog.json` — the registry catalog, exposed as `APPS_CATALOG` from `@openhands/extensions/apps`
56
+
57
+ Most content is Markdown skill definitions and plugin configurations; the executable parts are plugin `scripts/` and `hooks/` plus the browser ESM App packages under `apps/`, each of which may ship its own `scripts/` and build sub-directories.
53
58
 
54
59
  ## How client code uses this repo
55
60
 
package/README.md CHANGED
@@ -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 **76 extensions** (65 skills, 11 plugins).
103
+ This repository contains **2 marketplace(s)** with **77 extensions** (66 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
- **72 extensions** (63 skills, 9 plugins)
122
+ **73 extensions** (64 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
+ | simplified-technical-english | skill | Write explanations and chat in the style of ASD-STE100 Simplified Technical English: short active sentences, one idea... | — |
185
186
  | 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... | — |
186
187
  | 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` |
187
188
  | slack-standup-digest | skill | Create an automation that generates an async standup digest from Slack. Searches selected channels for messages since... | `/standup-digest:setup` |