@openhands/extensions 0.26.0 → 0.28.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 (72) 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/README.md +3 -2
  11. package/automations/README.md +7 -6
  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/automations/index.d.ts +9 -1
  17. package/automations/interface.json +9 -0
  18. package/automations/interface.schema.json +37 -2
  19. package/marketplaces/openhands-extensions.json +9 -0
  20. package/package.json +1 -1
  21. package/plugins/openhands/skills/openhands-automation/README.md +6 -4
  22. package/plugins/openhands/skills/openhands-automation/SKILL.md +103 -21
  23. package/plugins/openhands/skills/openhands-automation/references/custom-automation.md +3 -4
  24. package/plugins/openhands/skills/openhands-sdk/SKILL.md +2 -1
  25. package/plugins/qa-changes/README.md +4 -0
  26. package/plugins/qa-changes/skills/qa-changes/README.md +3 -1
  27. package/plugins/qa-changes/skills/qa-changes/SKILL.md +42 -0
  28. package/plugins/vulnerability-remediation/skills/github/README.md +5 -1
  29. package/plugins/vulnerability-remediation/skills/github/SKILL.md +27 -0
  30. package/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +51 -4
  31. package/pyproject.toml +1 -1
  32. package/python/openhands_extensions/_version.py +1 -1
  33. package/scripts/sync_openhands_sdk_skill.py +16 -13
  34. package/skills/azure-devops/README.md +3 -1
  35. package/skills/azure-devops/SKILL.md +4 -0
  36. package/skills/bitbucket/README.md +3 -1
  37. package/skills/bitbucket/SKILL.md +4 -2
  38. package/skills/bitbucket-cloud/README.md +2 -0
  39. package/skills/bitbucket-cloud/SKILL.md +2 -0
  40. package/skills/bitbucket-data-center/README.md +2 -0
  41. package/skills/bitbucket-data-center/SKILL.md +2 -0
  42. package/skills/github/README.md +5 -1
  43. package/skills/github/SKILL.md +27 -0
  44. package/skills/github/scripts/agent_conversation.py +51 -4
  45. package/skills/github-issue-to-pr/scripts/agent_conversation.py +51 -4
  46. package/skills/github-issue-triage/scripts/agent_conversation.py +51 -4
  47. package/skills/github-pr-reviewer/README.md +5 -0
  48. package/skills/github-pr-reviewer/SKILL.md +12 -0
  49. package/skills/github-pr-reviewer/scripts/agent_conversation.py +51 -4
  50. package/skills/github-pr-reviewer/scripts/main.py +20 -6
  51. package/skills/github-pr-reviewer/scripts/worker.py +77 -15
  52. package/skills/github-pr-reviewer/tests/test_main.py +23 -0
  53. package/skills/gitlab/README.md +3 -1
  54. package/skills/gitlab/SKILL.md +4 -0
  55. package/skills/index.js +23 -11
  56. package/skills/linear/README.md +2 -0
  57. package/skills/linear/SKILL.md +6 -2
  58. package/skills/openhands-automation/README.md +6 -4
  59. package/skills/openhands-automation/SKILL.md +103 -21
  60. package/skills/openhands-automation/references/custom-automation.md +3 -4
  61. package/skills/openhands-sdk/SKILL.md +2 -1
  62. package/skills/qa-changes/README.md +3 -1
  63. package/skills/qa-changes/SKILL.md +42 -0
  64. package/skills/simplified-technical-english/.claude-plugin/plugin.json +15 -0
  65. package/skills/simplified-technical-english/.codex-plugin/plugin.json +15 -0
  66. package/skills/simplified-technical-english/.plugin/plugin.json +15 -0
  67. package/skills/simplified-technical-english/README.md +21 -0
  68. package/skills/simplified-technical-english/SKILL.md +65 -0
  69. package/tests/fixtures/automations/github-pr-reviewer.json +9 -9
  70. package/tests/test_agent_conversation_dispatch.py +130 -0
  71. package/tests/test_github_reviewer_delivery.py +279 -2
  72. package/tests/test_interface_manifest.py +23 -1
@@ -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.26.0"
2
+ ".": "0.28.0"
3
3
  }
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` |
@@ -270,12 +270,13 @@ falling back to its built-in defaults when the manifest is absent or fails admis
270
270
  captions it: `overview.tiles[].metric` names a host-computed value (`automations`, `needs-attention`,
271
271
  `total-runs`, `average-duration`), filter option values name host predicates (`status`: enabled /
272
272
  latest-run-failed / disabled; `trigger`: `event` matches event-triggered automations, `schedule`
273
- everything else), `sort` values name host comparators, and `insights` captions the host's run-health
274
- states and per-automation stats. The health precedence, the run sampling, the value formatting, the
275
- relative-time rendering, and the filtered-empty state with its reset button are the host's - a manifest
276
- cannot redefine them, only relabel what appears. Tile `detail` copy is plain substitution over the
277
- metric's placeholder namespace (only the `automations` metric exposes `{{active}}`); `zeroDetail`
278
- replaces `detail` while the value is zero.
273
+ everything else; `created_by`: `me` matches automations the signed-in user created, `others` everything
274
+ else, and the host decides where it is shown), `sort` values name host comparators, and `insights`
275
+ captions the host's run-health states and per-automation stats. The health precedence, the run
276
+ sampling, the value formatting, the relative-time rendering, and the filtered-empty state with its reset
277
+ button are the host's - a manifest cannot redefine them, only relabel what appears. Tile `detail` copy is
278
+ plain substitution over the metric's placeholder namespace (only the `automations` metric exposes
279
+ `{{active}}`); `zeroDetail` replaces `detail` while the value is zero.
279
280
  - **`docsUrl`** - the automations documentation link, prefix-pinned to docs.openhands.dev by schema.
280
281
  - **`attributes`** - the input surface of an existing Automation: which attributes can be set after
281
282
  creation, keyed by the runtime-model property the host sends (`name`, `prompt`, `model`, `timeout`,