@openhands/extensions 0.23.0 → 0.24.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.
- package/.agents/skills/custom-codereview-guide.md +14 -12
- package/.claude-plugin/marketplace.json +14 -0
- package/.codex-plugin/marketplace.json +14 -0
- package/.github/workflows/check-extensions.yml +6 -6
- package/.github/workflows/deprecation-check.yml +1 -1
- package/.github/workflows/issue-readiness-check.yml +37 -106
- package/.github/workflows/npm-publish.yml +2 -2
- package/.github/workflows/pr-description-check.yml +1 -1
- package/.github/workflows/pypi-publish.yml +3 -3
- package/.github/workflows/tests.yml +2 -2
- package/.plugin/marketplace.json +14 -0
- package/.release-please-manifest.json +1 -1
- package/AGENTS.md +10 -1
- package/README.md +3 -2
- package/automations/bundle-index.js +2 -2
- package/automations/catalog/github-pr-reviewer/manifest.json +4 -4
- package/integrations/catalog/granola.json +38 -0
- package/integrations/catalog-index.js +16 -14
- package/marketplaces/openhands-extensions.json +14 -0
- package/package.json +1 -1
- package/pyproject.toml +2 -2
- package/python/openhands_extensions/_version.py +1 -1
- package/skills/add-skill/SKILL.md +5 -2
- package/skills/canvas-extension-api/.claude-plugin/plugin.json +19 -0
- package/skills/canvas-extension-api/.codex-plugin/plugin.json +19 -0
- package/skills/canvas-extension-api/.plugin/plugin.json +19 -0
- package/skills/canvas-extension-api/README.md +33 -0
- package/skills/canvas-extension-api/SKILL.md +254 -0
- package/skills/canvas-extension-api/references/acceptance-checklist.md +20 -0
- package/skills/canvas-extension-api/references/backend-safety.md +9 -0
- package/skills/canvas-extension-api/references/connections.md +126 -0
- package/skills/canvas-extension-api/references/packaging-recipes.md +43 -0
- package/skills/canvas-extension-api/references/sidecar-pattern.md +49 -0
- package/skills/canvas-extension-api/references/testing-and-installation.md +286 -0
- package/skills/canvas-extension-api/references/v1-contract.md +250 -0
- package/skills/canvas-extension-api/scripts/validate-extension.mjs +92 -0
- package/skills/canvas-extension-api/scripts/validate-extension.test.mjs +60 -0
- package/skills/github-pr-reviewer/README.md +6 -1
- package/skills/github-pr-reviewer/SKILL.md +24 -1
- package/skills/github-pr-reviewer/scripts/main.py +40 -11
- package/skills/github-pr-reviewer/scripts/worker.py +12 -3
- package/skills/github-pr-reviewer/tests/test_main.py +69 -0
- package/skills/index.js +11 -3
- package/tests/fixtures/automations/github-pr-reviewer.json +9 -9
- package/tests/test_github_reviewer_delivery.py +128 -1
- package/.github/scripts/check_issue_readiness.py +0 -272
- package/.github/scripts/post-readiness-comment.mjs +0 -184
- package/tests/test_check_issue_readiness.py +0 -135
|
@@ -12,18 +12,20 @@ current head when it has no material correctness, security, compatibility, or
|
|
|
12
12
|
acceptance-criterion defect. Comment only on concrete failures; do not withhold
|
|
13
13
|
approval for optional refactors, tone, style, or speculative improvements.
|
|
14
14
|
|
|
15
|
-
## Repository
|
|
16
|
-
|
|
17
|
-
This repository owns reusable skills, plugins,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
`OpenHands/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
## Repository scope
|
|
16
|
+
|
|
17
|
+
This repository owns reusable extensions: skills, plugins, and automation
|
|
18
|
+
bundles that use existing public host and runtime interfaces. Out of scope here,
|
|
19
|
+
because another repository owns the contract or machinery:
|
|
20
|
+
|
|
21
|
+
- SDK, agent-server, and client contracts — `OpenHands/software-agent-sdk`;
|
|
22
|
+
- generic automation scheduling, state, dispatch, and profile machinery —
|
|
23
|
+
`OpenHands/automation`;
|
|
24
|
+
- Canvas product and UI integration — `OpenHands/OpenHands`.
|
|
25
|
+
|
|
26
|
+
Cross-repository work is acceptable when this PR contains only the
|
|
27
|
+
extensions-owned portion and relies on public interfaces from the owning
|
|
28
|
+
repository.
|
|
27
29
|
|
|
28
30
|
## Blocking checkpoints
|
|
29
31
|
|
|
@@ -106,6 +106,20 @@
|
|
|
106
106
|
"delegation"
|
|
107
107
|
]
|
|
108
108
|
},
|
|
109
|
+
{
|
|
110
|
+
"name": "canvas-extension-api",
|
|
111
|
+
"source": "./skills/canvas-extension-api",
|
|
112
|
+
"description": "Build and validate Apps for Agent Canvas using the supported Canvas Extensions API v1 routed-page contract.",
|
|
113
|
+
"category": "agent-authoring",
|
|
114
|
+
"defaultEnabled": true,
|
|
115
|
+
"keywords": [
|
|
116
|
+
"agent-canvas",
|
|
117
|
+
"canvas-app",
|
|
118
|
+
"canvas-extension",
|
|
119
|
+
"register-page",
|
|
120
|
+
"app-development"
|
|
121
|
+
]
|
|
122
|
+
},
|
|
109
123
|
{
|
|
110
124
|
"name": "openhands-sdk",
|
|
111
125
|
"source": "./skills/openhands-sdk",
|
|
@@ -106,6 +106,20 @@
|
|
|
106
106
|
"delegation"
|
|
107
107
|
]
|
|
108
108
|
},
|
|
109
|
+
{
|
|
110
|
+
"name": "canvas-extension-api",
|
|
111
|
+
"source": "./skills/canvas-extension-api",
|
|
112
|
+
"description": "Build and validate Apps for Agent Canvas using the supported Canvas Extensions API v1 routed-page contract.",
|
|
113
|
+
"category": "agent-authoring",
|
|
114
|
+
"defaultEnabled": true,
|
|
115
|
+
"keywords": [
|
|
116
|
+
"agent-canvas",
|
|
117
|
+
"canvas-app",
|
|
118
|
+
"canvas-extension",
|
|
119
|
+
"register-page",
|
|
120
|
+
"app-development"
|
|
121
|
+
]
|
|
122
|
+
},
|
|
109
123
|
{
|
|
110
124
|
"name": "openhands-sdk",
|
|
111
125
|
"source": "./skills/openhands-sdk",
|
|
@@ -11,10 +11,10 @@ jobs:
|
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
steps:
|
|
13
13
|
- name: Checkout repository
|
|
14
|
-
uses: actions/checkout@
|
|
14
|
+
uses: actions/checkout@v7
|
|
15
15
|
|
|
16
16
|
- name: Setup Node.js
|
|
17
|
-
uses: actions/setup-node@
|
|
17
|
+
uses: actions/setup-node@v7
|
|
18
18
|
with:
|
|
19
19
|
node-version: "20"
|
|
20
20
|
|
|
@@ -44,10 +44,10 @@ jobs:
|
|
|
44
44
|
runs-on: ubuntu-latest
|
|
45
45
|
steps:
|
|
46
46
|
- name: Checkout repository
|
|
47
|
-
uses: actions/checkout@
|
|
47
|
+
uses: actions/checkout@v7
|
|
48
48
|
|
|
49
49
|
- name: Setup Python
|
|
50
|
-
uses: actions/setup-python@
|
|
50
|
+
uses: actions/setup-python@v7
|
|
51
51
|
with:
|
|
52
52
|
python-version: "3.12"
|
|
53
53
|
|
|
@@ -63,10 +63,10 @@ jobs:
|
|
|
63
63
|
runs-on: ubuntu-latest
|
|
64
64
|
steps:
|
|
65
65
|
- name: Checkout repository
|
|
66
|
-
uses: actions/checkout@
|
|
66
|
+
uses: actions/checkout@v7
|
|
67
67
|
|
|
68
68
|
- name: Setup Python
|
|
69
|
-
uses: actions/setup-python@
|
|
69
|
+
uses: actions/setup-python@v7
|
|
70
70
|
with:
|
|
71
71
|
python-version: "3.12"
|
|
72
72
|
|
|
@@ -1,131 +1,62 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: Ready-for-dev Label Policy
|
|
3
3
|
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# automations).
|
|
7
|
-
#
|
|
8
|
-
# Bug reports (label `bug`): the Actual Behavior section must reference a
|
|
9
|
-
# reproducible command (`uv run pytest`, `pytest`, `python`, `pip`, `npm run`,
|
|
10
|
-
# or `node`), plus an Acceptance Criteria section with at least one checklist
|
|
11
|
-
# item.
|
|
12
|
-
#
|
|
13
|
-
# Enhancements (label `enhancement`): the body must contain Desired Behavior and
|
|
14
|
-
# Acceptance Criteria sections, the latter with at least one checklist item.
|
|
15
|
-
#
|
|
16
|
-
# When criteria are met the label is added (idempotently); when they are not the
|
|
17
|
-
# label is removed. A feedback comment is posted (or updated) in three cases:
|
|
18
|
-
# 1. The issue is first opened or reopened - always comment so the author
|
|
19
|
-
# knows whether their issue is ready or what is missing.
|
|
20
|
-
# 2. The label is being added (issue became ready) - comment celebrating it.
|
|
21
|
-
# 3. The label is being removed (issue was ready but is no longer) - comment
|
|
22
|
-
# explaining what changed.
|
|
23
|
-
# Edits that do not change the label state do not produce a new comment. All
|
|
24
|
-
# comments are upserted by a hidden marker so there is at most one per issue.
|
|
25
|
-
#
|
|
26
|
-
# The readiness step uses `--json`, which always exits 0, so a not-ready result
|
|
27
|
-
# never aborts the workflow under `set -euo pipefail`; label and comment steps
|
|
28
|
-
# run for both outcomes.
|
|
4
|
+
# The issue-triage automation and repository writers may grant ready-for-dev.
|
|
5
|
+
# Labels from any other actor are removed.
|
|
29
6
|
|
|
30
7
|
on:
|
|
31
8
|
issues:
|
|
32
|
-
types: [
|
|
33
|
-
|
|
34
|
-
permissions:
|
|
35
|
-
issues: write
|
|
36
|
-
pull-requests: read
|
|
37
|
-
contents: read
|
|
9
|
+
types: [labeled, unlabeled]
|
|
38
10
|
|
|
39
11
|
concurrency:
|
|
40
|
-
group:
|
|
12
|
+
group: ready-for-dev-policy-${{ github.event.issue.number }}
|
|
41
13
|
cancel-in-progress: false
|
|
42
14
|
|
|
43
15
|
jobs:
|
|
44
|
-
|
|
45
|
-
|
|
16
|
+
enforce-label-policy:
|
|
17
|
+
name: Enforce ready-for-dev label policy
|
|
18
|
+
if: >-
|
|
19
|
+
github.event.issue.state == 'open'
|
|
20
|
+
&& github.event.issue.pull_request == null
|
|
21
|
+
&& github.event.label.name == 'ready-for-dev'
|
|
46
22
|
runs-on: ubuntu-latest
|
|
47
23
|
timeout-minutes: 5
|
|
24
|
+
permissions:
|
|
25
|
+
issues: write
|
|
26
|
+
outputs:
|
|
27
|
+
refresh-linked-prs: ${{ steps.policy.outputs.refresh-linked-prs }}
|
|
48
28
|
steps:
|
|
49
|
-
- name:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- name: Evaluate issue readiness
|
|
53
|
-
id: readiness
|
|
54
|
-
env:
|
|
55
|
-
GITHUB_EVENT_PATH: ${{ github.event_path }}
|
|
56
|
-
run: |
|
|
57
|
-
set -euo pipefail
|
|
58
|
-
python .github/scripts/check_issue_readiness.py --json > /tmp/result.json
|
|
59
|
-
echo "ready=$(jq -r '.ready' /tmp/result.json)" >> "$GITHUB_OUTPUT"
|
|
60
|
-
# Write reasons to a file so the comment step can read them
|
|
61
|
-
# without shell-escaping multiline text.
|
|
62
|
-
jq -r '.reasons[]?' /tmp/result.json > /tmp/reasons.txt || true
|
|
63
|
-
echo "reasons_file=/tmp/reasons.txt" >> "$GITHUB_OUTPUT"
|
|
64
|
-
|
|
65
|
-
- name: Add ready-for-dev label
|
|
66
|
-
if: steps.readiness.outputs.ready == 'true'
|
|
29
|
+
- name: Check label actor
|
|
30
|
+
id: policy
|
|
67
31
|
env:
|
|
68
32
|
GH_TOKEN: ${{ github.token }}
|
|
33
|
+
ACTION: ${{ github.event.action }}
|
|
34
|
+
ACTOR: ${{ github.event.sender.login }}
|
|
35
|
+
REPOSITORY: ${{ github.repository }}
|
|
36
|
+
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
|
69
37
|
run: |
|
|
70
38
|
set -euo pipefail
|
|
71
|
-
# Capture stderr — tolerate "label already present" (exit 0
|
|
72
|
-
# from gh) but surface unexpected errors to the step summary.
|
|
73
|
-
if ! gh issue edit "${{ github.event.issue.number }}" \
|
|
74
|
-
--repo "${{ github.repository }}" \
|
|
75
|
-
--add-label "ready-for-dev" 2>/tmp/gh-err.txt; then
|
|
76
|
-
echo "::warning::Failed to add ready-for-dev label:" >> "$GITHUB_STEP_SUMMARY"
|
|
77
|
-
cat /tmp/gh-err.txt >> "$GITHUB_STEP_SUMMARY"
|
|
78
|
-
fi
|
|
79
39
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
GH_TOKEN: ${{ github.token }}
|
|
84
|
-
run: |
|
|
85
|
-
set -euo pipefail
|
|
86
|
-
# Capture stderr — tolerate "label already removed" but
|
|
87
|
-
# surface unexpected errors.
|
|
88
|
-
if ! gh issue edit "${{ github.event.issue.number }}" \
|
|
89
|
-
--repo "${{ github.repository }}" \
|
|
90
|
-
--remove-label "ready-for-dev" 2>/tmp/gh-err.txt; then
|
|
91
|
-
echo "::warning::Failed to remove ready-for-dev label:" >> "$GITHUB_STEP_SUMMARY"
|
|
92
|
-
cat /tmp/gh-err.txt >> "$GITHUB_STEP_SUMMARY"
|
|
40
|
+
if [ "$ACTION" = "unlabeled" ]; then
|
|
41
|
+
echo "refresh-linked-prs=true" >> "$GITHUB_OUTPUT"
|
|
42
|
+
exit 0
|
|
93
43
|
fi
|
|
94
44
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if [ "${{ steps.readiness.outputs.ready }}" = "true" ]; then
|
|
106
|
-
node .github/scripts/post-readiness-comment.mjs \
|
|
107
|
-
--issue-number "${{ github.event.issue.number }}" \
|
|
108
|
-
--repo "${{ github.repository }}" \
|
|
109
|
-
--ready
|
|
110
|
-
else
|
|
111
|
-
node .github/scripts/post-readiness-comment.mjs \
|
|
112
|
-
--issue-number "${{ github.event.issue.number }}" \
|
|
113
|
-
--repo "${{ github.repository }}" \
|
|
114
|
-
--reasons-file "${{ steps.readiness.outputs.reasons_file }}"
|
|
115
|
-
fi
|
|
45
|
+
permission="$(gh api "repos/$REPOSITORY/collaborators/$ACTOR/permission" --jq .permission 2>/dev/null || true)"
|
|
46
|
+
case "$permission" in
|
|
47
|
+
write|maintain|admin)
|
|
48
|
+
echo "refresh-linked-prs=true" >> "$GITHUB_OUTPUT"
|
|
49
|
+
;;
|
|
50
|
+
*)
|
|
51
|
+
gh issue edit "$ISSUE_NUMBER" --repo "$REPOSITORY" --remove-label ready-for-dev
|
|
52
|
+
echo "refresh-linked-prs=false" >> "$GITHUB_OUTPUT"
|
|
53
|
+
;;
|
|
54
|
+
esac
|
|
116
55
|
|
|
117
|
-
# When the ready-for-dev label is added or removed, re-run the PR
|
|
118
|
-
# description check for every open PR that links this issue, so the
|
|
119
|
-
# `ready-for-dev` gate does not go stale between PR events. Runs after
|
|
120
|
-
# `check` so the label reflects the settled readiness state.
|
|
121
56
|
refresh-linked-pr-gates:
|
|
122
57
|
name: Refresh PR gates for linked issues
|
|
123
|
-
needs:
|
|
124
|
-
if:
|
|
125
|
-
github.event.issue.state == 'open'
|
|
126
|
-
&& github.event.issue.pull_request == null
|
|
127
|
-
&& (github.event.action == 'labeled' || github.event.action == 'unlabeled')
|
|
128
|
-
&& github.event.label.name == 'ready-for-dev'
|
|
58
|
+
needs: enforce-label-policy
|
|
59
|
+
if: needs.enforce-label-policy.outputs.refresh-linked-prs == 'true'
|
|
129
60
|
runs-on: ubuntu-latest
|
|
130
61
|
timeout-minutes: 10
|
|
131
62
|
permissions:
|
|
@@ -134,7 +65,7 @@ jobs:
|
|
|
134
65
|
actions: write
|
|
135
66
|
steps:
|
|
136
67
|
- name: Checkout trusted workflow scripts
|
|
137
|
-
uses: actions/checkout@
|
|
68
|
+
uses: actions/checkout@v7
|
|
138
69
|
|
|
139
70
|
- name: Re-run PR description checks for linked open PRs
|
|
140
71
|
env:
|
|
@@ -31,14 +31,14 @@ jobs:
|
|
|
31
31
|
|
|
32
32
|
steps:
|
|
33
33
|
- name: Check out repository
|
|
34
|
-
uses: actions/checkout@
|
|
34
|
+
uses: actions/checkout@v7
|
|
35
35
|
with:
|
|
36
36
|
ref: ${{ inputs.tag || github.ref }}
|
|
37
37
|
|
|
38
38
|
# Trusted publishing requires Node 22.14.0+ and npm 11.5.1+
|
|
39
39
|
# See: https://docs.npmjs.com/trusted-publishers/
|
|
40
40
|
- name: Set up Node.js for npm trusted publishing
|
|
41
|
-
uses: actions/setup-node@
|
|
41
|
+
uses: actions/setup-node@v7
|
|
42
42
|
with:
|
|
43
43
|
node-version: '24'
|
|
44
44
|
registry-url: https://registry.npmjs.org
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
22
|
- name: Check out repository
|
|
23
|
-
uses: actions/checkout@
|
|
23
|
+
uses: actions/checkout@v7
|
|
24
24
|
|
|
25
25
|
- name: Extract version
|
|
26
26
|
id: extract_version
|
|
@@ -72,7 +72,7 @@ jobs:
|
|
|
72
72
|
run: uv build
|
|
73
73
|
|
|
74
74
|
- name: Upload distributions
|
|
75
|
-
uses: actions/upload-artifact@
|
|
75
|
+
uses: actions/upload-artifact@v7
|
|
76
76
|
with:
|
|
77
77
|
name: python-package-distributions
|
|
78
78
|
path: dist/
|
|
@@ -95,7 +95,7 @@ jobs:
|
|
|
95
95
|
|
|
96
96
|
steps:
|
|
97
97
|
- name: Download distributions
|
|
98
|
-
uses: actions/download-artifact@
|
|
98
|
+
uses: actions/download-artifact@v8
|
|
99
99
|
with:
|
|
100
100
|
name: python-package-distributions
|
|
101
101
|
path: dist/
|
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
13
|
steps:
|
|
14
14
|
- name: Checkout repository
|
|
15
|
-
uses: actions/checkout@
|
|
15
|
+
uses: actions/checkout@v7
|
|
16
16
|
|
|
17
17
|
- name: Install uv
|
|
18
18
|
uses: astral-sh/setup-uv@v7
|
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
python-version: "3.12"
|
|
22
22
|
|
|
23
23
|
- name: Setup Node.js
|
|
24
|
-
uses: actions/setup-node@
|
|
24
|
+
uses: actions/setup-node@v7
|
|
25
25
|
with:
|
|
26
26
|
node-version: "20"
|
|
27
27
|
|
package/.plugin/marketplace.json
CHANGED
|
@@ -106,6 +106,20 @@
|
|
|
106
106
|
"delegation"
|
|
107
107
|
]
|
|
108
108
|
},
|
|
109
|
+
{
|
|
110
|
+
"name": "canvas-extension-api",
|
|
111
|
+
"source": "./skills/canvas-extension-api",
|
|
112
|
+
"description": "Build and validate Apps for Agent Canvas using the supported Canvas Extensions API v1 routed-page contract.",
|
|
113
|
+
"category": "agent-authoring",
|
|
114
|
+
"defaultEnabled": true,
|
|
115
|
+
"keywords": [
|
|
116
|
+
"agent-canvas",
|
|
117
|
+
"canvas-app",
|
|
118
|
+
"canvas-extension",
|
|
119
|
+
"register-page",
|
|
120
|
+
"app-development"
|
|
121
|
+
]
|
|
122
|
+
},
|
|
109
123
|
{
|
|
110
124
|
"name": "openhands-sdk",
|
|
111
125
|
"source": "./skills/openhands-sdk",
|
package/AGENTS.md
CHANGED
|
@@ -169,7 +169,16 @@ Important notes:
|
|
|
169
169
|
- `scripts/sync_extensions.py` keeps generated artifacts in sync: Claude Code command files, README catalog section, coverage checks, and vendor symlinks. Run `python scripts/sync_extensions.py --check` (or just push — CI runs it) to verify everything is consistent. Run without `--check` to auto-fix. The "Quick Start" section in `README.md` (OpenHands SDK, Claude Code, and Codex setup instructions) is **manually maintained** above the auto-generated catalog markers and is intentionally not generated by the sync script.
|
|
170
170
|
- The sync script uses PyYAML to parse SKILL.md frontmatter. If you add a skill with a slash trigger (e.g., `triggers: ["/mycommand"]`), the script auto-generates `commands/mycommand.md`. **Note:** Slash triggers in SKILL.md frontmatter are deprecated — prefer adding a `commands/command-name.md` file to the plugin's `commands/` directory instead. Keyword triggers (non-slash) remain the recommended way to activate skills by topic.
|
|
171
171
|
|
|
172
|
-
- The
|
|
172
|
+
- The GitHub issue-triage automation and repository writers may grant
|
|
173
|
+
`ready-for-dev`.
|
|
174
|
+
`.github/workflows/issue-readiness-check.yml` removes a newly applied label
|
|
175
|
+
unless a user with `write`, `maintain`, or `admin` permission applied it. An
|
|
176
|
+
`unlabeled` event then lets triage reassess the issue.
|
|
177
|
+
`.github/workflows/pr-description-check.yml` still requires linked issues to
|
|
178
|
+
be ready, and label transitions refresh that check through
|
|
179
|
+
`.github/scripts/refresh_linked_pr_checks.py`. Tests for the PR gates live in
|
|
180
|
+
`tests/test_check_pr_description.py` and
|
|
181
|
+
`tests/test_refresh_linked_pr_checks.py`.
|
|
173
182
|
|
|
174
183
|
## OpenHands SDK documentation policy
|
|
175
184
|
|
package/README.md
CHANGED
|
@@ -96,7 +96,7 @@ The JS and Python versions are kept in lock-step by `release-please` and guarded
|
|
|
96
96
|
## Extensions Catalog
|
|
97
97
|
|
|
98
98
|
<!-- BEGIN AUTO-GENERATED CATALOG -->
|
|
99
|
-
This repository contains **2 marketplace(s)** with **
|
|
99
|
+
This repository contains **2 marketplace(s)** with **73 extensions** (63 skills, 10 plugins).
|
|
100
100
|
|
|
101
101
|
### large-codebase
|
|
102
102
|
|
|
@@ -115,7 +115,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases
|
|
|
115
115
|
|
|
116
116
|
Official skills and plugins for OpenHands — the open-source AI software engineer.
|
|
117
117
|
|
|
118
|
-
**
|
|
118
|
+
**69 extensions** (61 skills, 8 plugins)
|
|
119
119
|
|
|
120
120
|
| Name | Type | Description | Commands |
|
|
121
121
|
|------|------|-------------|----------|
|
|
@@ -128,6 +128,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
|
|
|
128
128
|
| bitbucket | skill | Bitbucket integration hub. Detects whether the repository is on Bitbucket Cloud or Bitbucket Data Center and directs ... | — |
|
|
129
129
|
| bitbucket-cloud | skill | Bitbucket Cloud (bitbucket.org) specifics — authenticate with BITBUCKET_TOKEN, use the REST API v2, workspace/repo_sl... | — |
|
|
130
130
|
| bitbucket-data-center | skill | Bitbucket Data Center (self-hosted Bitbucket Server) specifics — authenticate with BITBUCKET_DATA_CENTER_TOKEN, use t... | — |
|
|
131
|
+
| canvas-extension-api | skill | Build and validate Apps for Agent Canvas using the supported Canvas Extensions API v1 routed-page contract. | — |
|
|
131
132
|
| city-weather | plugin | Get current weather, time, and precipitation forecast for any city using the free Open-Meteo API. Provides slash comm... | — |
|
|
132
133
|
| code-review | skill | Rigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provi... | `/codereview`, `/codereview-roasted` |
|
|
133
134
|
| code-simplifier | skill | Simplifies and refines code across three dimensions - code reuse, code quality, and efficiency - while preserving all... | `/simplify` |
|