@openhands/extensions 0.13.0 → 0.15.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/.release-please-manifest.json +1 -1
- package/README.md +7 -3
- package/automations/catalog/upstream-fork-sync/manifest.json +85 -0
- package/automations/catalog-index.js +3 -1
- package/marketplaces/large-codebase.json +2 -2
- package/marketplaces/openhands-extensions.json +61 -47
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/python/openhands_extensions/_version.py +1 -1
- package/scripts/build-skills-catalog.mjs +76 -3
- package/skills/index.d.ts +21 -0
- package/skills/index.js +116 -51
- package/skills/upstream-fork-sync/.plugin/plugin.json +21 -0
- package/skills/upstream-fork-sync/README.md +38 -0
- package/skills/upstream-fork-sync/SKILL.md +122 -0
- package/skills/upstream-fork-sync/commands/upstream-fork-sync-setup.md +8 -0
- package/tests/fixtures/automations/upstream-fork-sync.json +223 -0
- package/tests/test_skills_catalog.py +214 -4
package/README.md
CHANGED
|
@@ -89,7 +89,7 @@ The JS and Python versions are kept in lock-step by `release-please` and guarded
|
|
|
89
89
|
## Extensions Catalog
|
|
90
90
|
|
|
91
91
|
<!-- BEGIN AUTO-GENERATED CATALOG -->
|
|
92
|
-
This repository contains **2 marketplace(s)** with **
|
|
92
|
+
This repository contains **2 marketplace(s)** with **64 extensions** (54 skills, 10 plugins).
|
|
93
93
|
|
|
94
94
|
### large-codebase
|
|
95
95
|
|
|
@@ -108,7 +108,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases
|
|
|
108
108
|
|
|
109
109
|
Official skills and plugins for OpenHands — the open-source AI software engineer.
|
|
110
110
|
|
|
111
|
-
**
|
|
111
|
+
**60 extensions** (52 skills, 8 plugins)
|
|
112
112
|
|
|
113
113
|
| Name | Type | Description | Commands |
|
|
114
114
|
|------|------|-------------|----------|
|
|
@@ -168,6 +168,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
|
|
|
168
168
|
| swift-linux | skill | Install and configure Swift programming language on Debian Linux for server-side development. Use when building Swift... | — |
|
|
169
169
|
| technical-writing | skill | Write and revise technical explanations in flowing, direct, conversational prose that stays concise without becoming ... | — |
|
|
170
170
|
| theme-factory | skill | Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc.... | — |
|
|
171
|
+
| upstream-fork-sync | skill | Keep a long-lived fork in sync with its upstream. Creates a cron automation that fetches upstream changes, rebases lo... | `/upstream-fork-sync:setup` |
|
|
171
172
|
| uv | skill | Common project, dependency, and environment operations using uv. | — |
|
|
172
173
|
| vercel | skill | Deploy and manage applications on Vercel, including preview deployments and deployment protection. | — |
|
|
173
174
|
| vulnerability-remediation | plugin | Automated security vulnerability scanning and AI-powered remediation. Scans repositories, skips when no issues found,... | — |
|
|
@@ -181,7 +182,10 @@ Official skills and plugins for OpenHands — the open-source AI software engine
|
|
|
181
182
|
2. Create a new directory: `skills/<your-skill-name>/`
|
|
182
183
|
3. Add `skills/<your-skill-name>/SKILL.md`
|
|
183
184
|
4. (Optional) Add `README.md`, `references/`, `scripts/`, etc.
|
|
184
|
-
5.
|
|
185
|
+
5. Add an entry to `marketplaces/openhands-extensions.json` with a `category` — this is what the OpenHands Skills page uses to group the skill. Skills with no entry are grouped as "Uncategorized". Marketplace entries also require `.plugin/plugin.json` and vendor symlinks.
|
|
186
|
+
6. Submit a pull request
|
|
187
|
+
|
|
188
|
+
Valid skill categories: `automations`, `environment`, `code-hosting`, `agent-authoring`, `code-quality`, `integrations`, `writing`, `design`, `other`.
|
|
185
189
|
|
|
186
190
|
### Adding a Plugin
|
|
187
191
|
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "upstream-fork-sync",
|
|
3
|
+
"name": "Upstream fork sync",
|
|
4
|
+
"category": "Developer tools",
|
|
5
|
+
"description": "Keep a long-lived fork current with its upstream by re-running a nightly job that fetches upstream changes, rebases local customizations on top, verifies the software still works, and replaces the running version when it does.",
|
|
6
|
+
"requires": {
|
|
7
|
+
"integrations": {
|
|
8
|
+
"github": {
|
|
9
|
+
"message": "Used to fetch upstream changes and push the rebased fork."
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"features": [
|
|
13
|
+
"repoClone",
|
|
14
|
+
"presetPrompt"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
"popularityRank": 80,
|
|
18
|
+
"estimatedSetupMinutes": 4,
|
|
19
|
+
"exampleImplementation": "Trigger: cron, nightly (configurable)\nRequired secret: GITHUB_PERSONAL_ACCESS_TOKEN\n\n1. Clone the fork repository and fetch the latest from its upstream remote.\n2. Rebase every local customization commit on top of the newest upstream HEAD.\n3. Run the configured verification command to confirm the software works as intended.\n4. If verification passes, force-push the rebased branch and replace the currently deployed version with the freshly built one.\n5. If verification fails, leave the running version untouched and report the conflict.",
|
|
20
|
+
"setup": {
|
|
21
|
+
"version": "1.0",
|
|
22
|
+
"mode": "direct",
|
|
23
|
+
"form": {
|
|
24
|
+
"triggers": {
|
|
25
|
+
"cron": {
|
|
26
|
+
"schedule": {
|
|
27
|
+
"type": "cron",
|
|
28
|
+
"label": "Sync schedule",
|
|
29
|
+
"help": "How often to fetch upstream and rebase local changes. Nightly is the default.",
|
|
30
|
+
"default": "0 3 * * *",
|
|
31
|
+
"required": true
|
|
32
|
+
},
|
|
33
|
+
"timezone": {
|
|
34
|
+
"type": "timezone",
|
|
35
|
+
"label": "Timezone",
|
|
36
|
+
"help": "Timezone the schedule is interpreted in.",
|
|
37
|
+
"default": "UTC",
|
|
38
|
+
"required": true
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"args": {
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "repo-picker",
|
|
45
|
+
"label": "Repository",
|
|
46
|
+
"help": "The long-lived fork to keep synchronized with upstream.",
|
|
47
|
+
"provider": "github",
|
|
48
|
+
"required": true
|
|
49
|
+
},
|
|
50
|
+
"upstreamRemote": {
|
|
51
|
+
"type": "text",
|
|
52
|
+
"label": "Upstream remote",
|
|
53
|
+
"help": "The remote (URL or owner/repo) the fork tracks. Defaults to the repository's parent.",
|
|
54
|
+
"default": "",
|
|
55
|
+
"required": false,
|
|
56
|
+
"constraints": {
|
|
57
|
+
"maxLength": 255
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"localChanges": {
|
|
61
|
+
"type": "text",
|
|
62
|
+
"label": "Local changes",
|
|
63
|
+
"help": "Plain-language description of the customizations to preserve across rebase.",
|
|
64
|
+
"default": "",
|
|
65
|
+
"required": false,
|
|
66
|
+
"constraints": {
|
|
67
|
+
"maxLength": 2000
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"verifyCommand": {
|
|
71
|
+
"type": "text",
|
|
72
|
+
"label": "Verify command",
|
|
73
|
+
"help": "The command that confirms the software works as intended (e.g. `make test`). If blank, the agent infers a sensible check.",
|
|
74
|
+
"default": "",
|
|
75
|
+
"required": false,
|
|
76
|
+
"constraints": {
|
|
77
|
+
"maxLength": 500
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"prompt": "Fetch the latest upstream changes for the fork {{form.repository}} and rebase all local changes on top of upstream. Local changes to preserve: {{form.localChanges}}. Check that the software works as intended; if it does, replace the current version, otherwise leave the running version untouched and report what failed.",
|
|
83
|
+
"message": "This deployment cannot run the scheduled fork-sync automation directly. Set it up in this conversation instead: confirm the fork repository, the upstream remote, the local changes to preserve, the verification command, and the nightly schedule, then create the automation."
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -9,7 +9,8 @@ import entry3 from "./catalog/slack-channel-monitor/manifest.json" with { type:
|
|
|
9
9
|
import entry4 from "./catalog/linear-triage-assistant/manifest.json" with { type: "json" };
|
|
10
10
|
import entry5 from "./catalog/jira-issue-to-pr/manifest.json" with { type: "json" };
|
|
11
11
|
import entry6 from "./catalog/research-brief-writer/manifest.json" with { type: "json" };
|
|
12
|
-
import entry7 from "./catalog/
|
|
12
|
+
import entry7 from "./catalog/upstream-fork-sync/manifest.json" with { type: "json" };
|
|
13
|
+
import entry8 from "./catalog/incident-retrospective-drafter/manifest.json" with { type: "json" };
|
|
13
14
|
|
|
14
15
|
export const AUTOMATION_CATALOG_ENTRIES = [
|
|
15
16
|
entry0,
|
|
@@ -20,4 +21,5 @@ export const AUTOMATION_CATALOG_ENTRIES = [
|
|
|
20
21
|
entry5,
|
|
21
22
|
entry6,
|
|
22
23
|
entry7,
|
|
24
|
+
entry8,
|
|
23
25
|
];
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"name": "add-javadoc",
|
|
15
15
|
"source": "./skills/add-javadoc",
|
|
16
16
|
"description": "Add comprehensive JavaDoc documentation to Java classes and methods. Use when documenting Java code, adding API documentation, or improving code documentation.",
|
|
17
|
-
"category": "
|
|
17
|
+
"category": "code-quality",
|
|
18
18
|
"keywords": [
|
|
19
19
|
"javadoc",
|
|
20
20
|
"java",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"name": "spark-version-upgrade",
|
|
53
53
|
"source": "./skills/spark-version-upgrade",
|
|
54
54
|
"description": "Upgrade Apache Spark applications between major versions (2.x→3.x, 3.x→4.x). Covers build files, deprecated APIs, configuration changes, SQL/DataFrame updates, and test validation.",
|
|
55
|
-
"category": "
|
|
55
|
+
"category": "environment",
|
|
56
56
|
"keywords": [
|
|
57
57
|
"spark",
|
|
58
58
|
"upgrade",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"name": "agent-creator",
|
|
15
15
|
"source": "./skills/agent-creator",
|
|
16
16
|
"description": "Create file-based sub-agents as Markdown files \u2014 no Python code required. Guides the user through a structured interview and generates a ready-to-deploy .md agent file following the OpenHands SDK specification.",
|
|
17
|
-
"category": "
|
|
17
|
+
"category": "agent-authoring",
|
|
18
18
|
"keywords": [
|
|
19
19
|
"agent",
|
|
20
20
|
"sub-agent",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"name": "add-skill",
|
|
29
29
|
"source": "./skills/add-skill",
|
|
30
30
|
"description": "Add (import) an OpenHands skill from a GitHub repository into the current workspace.",
|
|
31
|
-
"category": "
|
|
31
|
+
"category": "agent-authoring",
|
|
32
32
|
"keywords": [
|
|
33
33
|
"skill",
|
|
34
34
|
"import",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"name": "agent-memory",
|
|
41
41
|
"source": "./skills/agent-memory",
|
|
42
42
|
"description": "Persist and retrieve repository-specific knowledge using AGENTS.md files. Use when you want to save important information about a codebase (build commands, code style, workflows) for future sessions.",
|
|
43
|
-
"category": "
|
|
43
|
+
"category": "agent-authoring",
|
|
44
44
|
"keywords": [
|
|
45
45
|
"memory",
|
|
46
46
|
"knowledge",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"name": "agent-sdk-builder",
|
|
53
53
|
"source": "./skills/agent-sdk-builder",
|
|
54
54
|
"description": "Guided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a new agent through an interactive interview process that gathers requirements and generates implementation plans.",
|
|
55
|
-
"category": "
|
|
55
|
+
"category": "agent-authoring",
|
|
56
56
|
"keywords": [
|
|
57
57
|
"agent",
|
|
58
58
|
"sdk",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"name": "code-simplifier",
|
|
65
65
|
"source": "./skills/code-simplifier",
|
|
66
66
|
"description": "Simplifies and refines code across three dimensions - code reuse, code quality, and efficiency - while preserving all functionality. Analyzes recently modified code and provides actionable improvement suggestions.",
|
|
67
|
-
"category": "
|
|
67
|
+
"category": "code-quality",
|
|
68
68
|
"keywords": [
|
|
69
69
|
"simplify",
|
|
70
70
|
"refine",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"name": "openhands-automation",
|
|
80
80
|
"source": "./skills/openhands-automation",
|
|
81
81
|
"description": "Create and manage OpenHands automations - scheduled tasks that run in sandboxes. Use the prompt preset to create automations from natural language, or manage existing automations.",
|
|
82
|
-
"category": "
|
|
82
|
+
"category": "automations",
|
|
83
83
|
"keywords": [
|
|
84
84
|
"automation",
|
|
85
85
|
"cron",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"name": "agent-canvas-environment",
|
|
93
93
|
"source": "./skills/agent-canvas-environment",
|
|
94
94
|
"description": "Work effectively inside a local Agent Canvas environment, including local agent-server auth, safe workspace hygiene, and local conversation delegation.",
|
|
95
|
-
"category": "
|
|
95
|
+
"category": "agent-authoring",
|
|
96
96
|
"keywords": [
|
|
97
97
|
"agent-canvas",
|
|
98
98
|
"openhands",
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"name": "openhands-sdk",
|
|
106
106
|
"source": "./skills/openhands-sdk",
|
|
107
107
|
"description": "Reference skill for the OpenHands Software Agent SDK - build AI agents with custom tools, LLM configuration, conversations, sub-agent delegation, MCP integration, security, and persistence.",
|
|
108
|
-
"category": "
|
|
108
|
+
"category": "agent-authoring",
|
|
109
109
|
"keywords": [
|
|
110
110
|
"sdk",
|
|
111
111
|
"agent",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"name": "azure-devops",
|
|
120
120
|
"source": "./skills/azure-devops",
|
|
121
121
|
"description": "Interact with Azure DevOps repositories, pull requests, and APIs using the AZURE_DEVOPS_TOKEN environment variable. Use when working with code hosted on Azure DevOps or managing Azure DevOps resources.",
|
|
122
|
-
"category": "
|
|
122
|
+
"category": "code-hosting",
|
|
123
123
|
"keywords": [
|
|
124
124
|
"azure",
|
|
125
125
|
"devops",
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"name": "bitbucket",
|
|
132
132
|
"source": "./skills/bitbucket",
|
|
133
133
|
"description": "Bitbucket integration hub. Detects whether the repository is on Bitbucket Cloud or Bitbucket Data Center and directs you to the matching detailed skill (bitbucket-cloud or bitbucket-data-center). Use for any Bitbucket repository or pull request task.",
|
|
134
|
-
"category": "
|
|
134
|
+
"category": "code-hosting",
|
|
135
135
|
"keywords": [
|
|
136
136
|
"bitbucket",
|
|
137
137
|
"git",
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
"name": "bitbucket-cloud",
|
|
143
143
|
"source": "./skills/bitbucket-cloud",
|
|
144
144
|
"description": "Bitbucket Cloud (bitbucket.org) specifics — authenticate with BITBUCKET_TOKEN, use the REST API v2, workspace/repo_slug repositories, and the create_bitbucket_pr tool. Loaded on demand by the bitbucket skill once a Cloud environment is detected.",
|
|
145
|
-
"category": "
|
|
145
|
+
"category": "code-hosting",
|
|
146
146
|
"keywords": [
|
|
147
147
|
"bitbucket",
|
|
148
148
|
"bitbucket-cloud",
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
"name": "bitbucket-data-center",
|
|
155
155
|
"source": "./skills/bitbucket-data-center",
|
|
156
156
|
"description": "Bitbucket Data Center (self-hosted Bitbucket Server) specifics — authenticate with BITBUCKET_DATA_CENTER_TOKEN, use the REST API 1.0, PROJECT/repo_slug repositories, scm/ git remotes, and the create_bitbucket_data_center_pr tool. Loaded on demand by the bitbucket skill once a Data Center environment is detected.",
|
|
157
|
-
"category": "
|
|
157
|
+
"category": "code-hosting",
|
|
158
158
|
"keywords": [
|
|
159
159
|
"bitbucket",
|
|
160
160
|
"bitbucket-data-center",
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
"name": "datadog",
|
|
195
195
|
"source": "./skills/datadog",
|
|
196
196
|
"description": "Query and analyze Datadog logs, metrics, APM traces, and monitors using the Datadog API. Use when debugging production issues, monitoring application performance, or investigating alerts.",
|
|
197
|
-
"category": "
|
|
197
|
+
"category": "integrations",
|
|
198
198
|
"keywords": [
|
|
199
199
|
"datadog",
|
|
200
200
|
"monitoring",
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
"name": "deno",
|
|
208
208
|
"source": "./skills/deno",
|
|
209
209
|
"description": "Common project operations using Deno (tasks, run/test/lint/fmt, and dependency management).",
|
|
210
|
-
"category": "
|
|
210
|
+
"category": "environment",
|
|
211
211
|
"keywords": [
|
|
212
212
|
"deno",
|
|
213
213
|
"typescript",
|
|
@@ -219,7 +219,7 @@
|
|
|
219
219
|
"name": "discord",
|
|
220
220
|
"source": "./skills/discord",
|
|
221
221
|
"description": "Build and automate Discord integrations (bots, webhooks, slash commands, and REST API workflows). Use when the user mentions Discord, a Discord server/guild, channels, webhooks, bot tokens, slash commands/application commands, discord.js, or discord.py.",
|
|
222
|
-
"category": "
|
|
222
|
+
"category": "integrations",
|
|
223
223
|
"keywords": [
|
|
224
224
|
"discord",
|
|
225
225
|
"bot",
|
|
@@ -231,7 +231,7 @@
|
|
|
231
231
|
"name": "docker",
|
|
232
232
|
"source": "./skills/docker",
|
|
233
233
|
"description": "Run Docker commands within a container environment, including starting the Docker daemon and managing containers. Use when building, running, or managing Docker containers and images.",
|
|
234
|
-
"category": "
|
|
234
|
+
"category": "environment",
|
|
235
235
|
"keywords": [
|
|
236
236
|
"docker",
|
|
237
237
|
"container",
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
"name": "flarglebargle",
|
|
243
243
|
"source": "./skills/flarglebargle",
|
|
244
244
|
"description": "A test skill that responds to the magic word 'flarglebargle' with a compliment. Use for testing skill activation and trigger functionality.",
|
|
245
|
-
"category": "
|
|
245
|
+
"category": "other",
|
|
246
246
|
"keywords": [
|
|
247
247
|
"test",
|
|
248
248
|
"demo"
|
|
@@ -267,7 +267,7 @@
|
|
|
267
267
|
"name": "github",
|
|
268
268
|
"source": "./skills/github",
|
|
269
269
|
"description": "Interact with GitHub repositories, pull requests, issues, and workflows using the GITHUB_TOKEN environment variable and GitHub CLI. Use when working with code hosted on GitHub or managing GitHub resources.",
|
|
270
|
-
"category": "
|
|
270
|
+
"category": "code-hosting",
|
|
271
271
|
"keywords": [
|
|
272
272
|
"github",
|
|
273
273
|
"git",
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
"name": "github-actions",
|
|
281
281
|
"source": "./skills/github-actions",
|
|
282
282
|
"description": "Create, debug, and test GitHub Actions workflows and custom actions. Use when building CI/CD pipelines, automating workflows, or troubleshooting GitHub Actions.",
|
|
283
|
-
"category": "
|
|
283
|
+
"category": "code-hosting",
|
|
284
284
|
"keywords": [
|
|
285
285
|
"github-actions",
|
|
286
286
|
"workflows",
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
"name": "github-pr-review",
|
|
294
294
|
"source": "./skills/github-pr-review",
|
|
295
295
|
"description": "Post structured PR reviews to GitHub with inline comments/suggestions in a single API call.",
|
|
296
|
-
"category": "code-
|
|
296
|
+
"category": "code-hosting",
|
|
297
297
|
"keywords": [
|
|
298
298
|
"github",
|
|
299
299
|
"pull-request",
|
|
@@ -305,7 +305,7 @@
|
|
|
305
305
|
"name": "github-repo-monitor",
|
|
306
306
|
"source": "./skills/github-repo-monitor",
|
|
307
307
|
"description": "Create a cron automation that polls a GitHub repository for issue and PR comments containing a configurable trigger phrase (@OpenHands by default). Starts an OpenHands conversation with full issue/PR context, posts acknowledgement comments with a conversation link, and summarises results back to the issue/PR when the agent finishes.",
|
|
308
|
-
"category": "
|
|
308
|
+
"category": "automations",
|
|
309
309
|
"keywords": [
|
|
310
310
|
"github",
|
|
311
311
|
"monitor",
|
|
@@ -321,7 +321,7 @@
|
|
|
321
321
|
"name": "gitlab",
|
|
322
322
|
"source": "./skills/gitlab",
|
|
323
323
|
"description": "Interact with GitLab repositories, merge requests, and APIs using the GITLAB_TOKEN environment variable. Use when working with code hosted on GitLab or managing GitLab resources.",
|
|
324
|
-
"category": "
|
|
324
|
+
"category": "code-hosting",
|
|
325
325
|
"keywords": [
|
|
326
326
|
"gitlab",
|
|
327
327
|
"git",
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
"name": "jupyter",
|
|
333
333
|
"source": "./skills/jupyter",
|
|
334
334
|
"description": "Read, modify, execute, and convert Jupyter notebooks programmatically. Use when working with .ipynb files for data science workflows, including editing cells, clearing outputs, or converting to other formats.",
|
|
335
|
-
"category": "
|
|
335
|
+
"category": "environment",
|
|
336
336
|
"keywords": [
|
|
337
337
|
"jupyter",
|
|
338
338
|
"notebook",
|
|
@@ -344,7 +344,7 @@
|
|
|
344
344
|
"name": "kubernetes",
|
|
345
345
|
"source": "./skills/kubernetes",
|
|
346
346
|
"description": "Set up and manage local Kubernetes clusters using KIND (Kubernetes IN Docker). Use when testing Kubernetes applications locally or developing cloud-native workloads.",
|
|
347
|
-
"category": "
|
|
347
|
+
"category": "environment",
|
|
348
348
|
"keywords": [
|
|
349
349
|
"kubernetes",
|
|
350
350
|
"k8s",
|
|
@@ -369,7 +369,7 @@
|
|
|
369
369
|
"name": "linear",
|
|
370
370
|
"source": "./skills/linear",
|
|
371
371
|
"description": "Interact with Linear project management - query issues, update status, create tickets using the Linear GraphQL API.",
|
|
372
|
-
"category": "
|
|
372
|
+
"category": "integrations",
|
|
373
373
|
"keywords": [
|
|
374
374
|
"linear",
|
|
375
375
|
"ticket",
|
|
@@ -395,7 +395,7 @@
|
|
|
395
395
|
"name": "notion",
|
|
396
396
|
"source": "./skills/notion",
|
|
397
397
|
"description": "Create, search, and update Notion pages/databases using the Notion API. Use for documenting work, generating runbooks, and automating knowledge base updates.",
|
|
398
|
-
"category": "
|
|
398
|
+
"category": "integrations",
|
|
399
399
|
"keywords": [
|
|
400
400
|
"notion",
|
|
401
401
|
"documentation",
|
|
@@ -406,7 +406,7 @@
|
|
|
406
406
|
"name": "npm",
|
|
407
407
|
"source": "./skills/npm",
|
|
408
408
|
"description": "Handle npm package installation in non-interactive environments by piping confirmations. Use when installing Node.js packages that require user confirmation prompts.",
|
|
409
|
-
"category": "
|
|
409
|
+
"category": "environment",
|
|
410
410
|
"keywords": [
|
|
411
411
|
"npm",
|
|
412
412
|
"nodejs",
|
|
@@ -443,7 +443,7 @@
|
|
|
443
443
|
"name": "openhands-api",
|
|
444
444
|
"source": "./skills/openhands-api",
|
|
445
445
|
"description": "Use the OpenHands Cloud REST API (V1) and agent-server APIs to create and manage Cloud or local backend conversations, including multi-conversation delegation workflows. Includes minimal Python and TypeScript clients under scripts/.",
|
|
446
|
-
"category": "
|
|
446
|
+
"category": "agent-authoring",
|
|
447
447
|
"keywords": [
|
|
448
448
|
"openhands",
|
|
449
449
|
"api",
|
|
@@ -459,7 +459,7 @@
|
|
|
459
459
|
"name": "pdflatex",
|
|
460
460
|
"source": "./skills/pdflatex",
|
|
461
461
|
"description": "Install and use pdflatex to compile LaTeX documents into PDFs on Linux. Use when generating academic papers, research publications, or any documents written in LaTeX.",
|
|
462
|
-
"category": "
|
|
462
|
+
"category": "environment",
|
|
463
463
|
"keywords": [
|
|
464
464
|
"latex",
|
|
465
465
|
"pdf",
|
|
@@ -496,7 +496,7 @@
|
|
|
496
496
|
"name": "prd",
|
|
497
497
|
"source": "./skills/prd",
|
|
498
498
|
"description": "Generate a Product Requirements Document (PRD) for a new feature through an interactive clarifying-question workflow. Use when planning a feature, starting a new project, or when asked to create a PRD.",
|
|
499
|
-
"category": "
|
|
499
|
+
"category": "writing",
|
|
500
500
|
"keywords": [
|
|
501
501
|
"prd",
|
|
502
502
|
"requirements",
|
|
@@ -521,7 +521,7 @@
|
|
|
521
521
|
"name": "security",
|
|
522
522
|
"source": "./skills/security",
|
|
523
523
|
"description": "Security best practices for secure coding, authentication, authorization, and data protection. Use when developing features that handle sensitive data, user authentication, or require security review.",
|
|
524
|
-
"category": "
|
|
524
|
+
"category": "code-quality",
|
|
525
525
|
"keywords": [
|
|
526
526
|
"security",
|
|
527
527
|
"authentication",
|
|
@@ -533,7 +533,7 @@
|
|
|
533
533
|
"name": "skill-creator",
|
|
534
534
|
"source": "./skills/skill-creator",
|
|
535
535
|
"description": "Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.",
|
|
536
|
-
"category": "
|
|
536
|
+
"category": "agent-authoring",
|
|
537
537
|
"keywords": [
|
|
538
538
|
"skill",
|
|
539
539
|
"plugin",
|
|
@@ -544,7 +544,7 @@
|
|
|
544
544
|
"name": "slack-channel-monitor",
|
|
545
545
|
"source": "./skills/slack-channel-monitor",
|
|
546
546
|
"description": "Create a cron automation that polls up to 10 Slack channels every minute and starts an OpenHands conversation when a configurable trigger phrase is detected. Forwards thread replies to running conversations and posts summaries back to Slack when the agent finishes.",
|
|
547
|
-
"category": "
|
|
547
|
+
"category": "automations",
|
|
548
548
|
"keywords": [
|
|
549
549
|
"slack",
|
|
550
550
|
"monitor",
|
|
@@ -559,7 +559,7 @@
|
|
|
559
559
|
"name": "ssh",
|
|
560
560
|
"source": "./skills/ssh",
|
|
561
561
|
"description": "Establish and manage SSH connections to remote machines, including key generation, configuration, and file transfers. Use when connecting to remote servers, executing remote commands, or transferring files via SCP.",
|
|
562
|
-
"category": "
|
|
562
|
+
"category": "environment",
|
|
563
563
|
"keywords": [
|
|
564
564
|
"ssh",
|
|
565
565
|
"remote",
|
|
@@ -571,7 +571,7 @@
|
|
|
571
571
|
"name": "swift-linux",
|
|
572
572
|
"source": "./skills/swift-linux",
|
|
573
573
|
"description": "Install and configure Swift programming language on Debian Linux for server-side development. Use when building Swift applications on Linux or setting up a Swift development environment.",
|
|
574
|
-
"category": "
|
|
574
|
+
"category": "environment",
|
|
575
575
|
"keywords": [
|
|
576
576
|
"swift",
|
|
577
577
|
"linux",
|
|
@@ -595,7 +595,7 @@
|
|
|
595
595
|
"name": "uv",
|
|
596
596
|
"source": "./skills/uv",
|
|
597
597
|
"description": "Common project, dependency, and environment operations using uv.",
|
|
598
|
-
"category": "
|
|
598
|
+
"category": "environment",
|
|
599
599
|
"keywords": [
|
|
600
600
|
"uv",
|
|
601
601
|
"python",
|
|
@@ -603,11 +603,25 @@
|
|
|
603
603
|
"venv"
|
|
604
604
|
]
|
|
605
605
|
},
|
|
606
|
+
{
|
|
607
|
+
"name": "upstream-fork-sync",
|
|
608
|
+
"source": "./skills/upstream-fork-sync",
|
|
609
|
+
"description": "Keep a long-lived fork in sync with its upstream. Creates a cron automation that fetches upstream changes, rebases local customizations on top, verifies the software works, and replaces the running version when the rebase is clean.",
|
|
610
|
+
"category": "integrations",
|
|
611
|
+
"keywords": [
|
|
612
|
+
"fork",
|
|
613
|
+
"upstream",
|
|
614
|
+
"rebase",
|
|
615
|
+
"sync",
|
|
616
|
+
"automation",
|
|
617
|
+
"long-lived-fork"
|
|
618
|
+
]
|
|
619
|
+
},
|
|
606
620
|
{
|
|
607
621
|
"name": "vercel",
|
|
608
622
|
"source": "./skills/vercel",
|
|
609
623
|
"description": "Deploy and manage applications on Vercel, including preview deployments and deployment protection.",
|
|
610
|
-
"category": "
|
|
624
|
+
"category": "integrations",
|
|
611
625
|
"keywords": [
|
|
612
626
|
"vercel",
|
|
613
627
|
"deployment",
|
|
@@ -632,7 +646,7 @@
|
|
|
632
646
|
"name": "iterate",
|
|
633
647
|
"source": "./skills/iterate",
|
|
634
648
|
"description": "Iterate on a GitHub pull request \u2014 drive it through CI, code review, and QA until merge-ready. Monitors state, fixes failures, addresses review feedback, retries flaky checks, and pushes fixes in one continuous loop.",
|
|
635
|
-
"category": "
|
|
649
|
+
"category": "code-quality",
|
|
636
650
|
"keywords": [
|
|
637
651
|
"github",
|
|
638
652
|
"ci",
|
|
@@ -646,7 +660,7 @@
|
|
|
646
660
|
"name": "evidence-based-citations",
|
|
647
661
|
"source": "./skills/evidence-based-citations",
|
|
648
662
|
"description": "Back factual claims and field values with official, verifiable sources. Use when the user asks to fill fields, answer questions, or make claims that must be supported by an exact quote and an official link.",
|
|
649
|
-
"category": "
|
|
663
|
+
"category": "writing",
|
|
650
664
|
"keywords": [
|
|
651
665
|
"evidence",
|
|
652
666
|
"citations",
|
|
@@ -660,7 +674,7 @@
|
|
|
660
674
|
"name": "github-pr-reviewer",
|
|
661
675
|
"source": "./skills/github-pr-reviewer",
|
|
662
676
|
"description": "Create an automation that reviews GitHub pull requests when they are opened or updated. Inspects the diff, changed files, tests, and existing discussion via GitHub MCP, then posts a concise review highlighting risks, security issues, missing tests, and next steps.",
|
|
663
|
-
"category": "
|
|
677
|
+
"category": "automations",
|
|
664
678
|
"keywords": [
|
|
665
679
|
"github",
|
|
666
680
|
"pull-request",
|
|
@@ -674,7 +688,7 @@
|
|
|
674
688
|
"name": "incident-retrospective",
|
|
675
689
|
"source": "./skills/incident-retrospective",
|
|
676
690
|
"description": "Create an automation that drafts incident retrospectives by gathering incident-channel messages from Slack, collecting linked tickets from Linear, and publishing a retrospective draft to Notion with timeline, impact summary, root-cause hypotheses, and action items.",
|
|
677
|
-
"category": "
|
|
691
|
+
"category": "automations",
|
|
678
692
|
"keywords": [
|
|
679
693
|
"incident",
|
|
680
694
|
"retrospective",
|
|
@@ -689,7 +703,7 @@
|
|
|
689
703
|
"name": "linear-triage",
|
|
690
704
|
"source": "./skills/linear-triage",
|
|
691
705
|
"description": "Create an automation that triages new Linear issues by inspecting title, description, team, and recent related issues. Suggests labels, priority, likely owner, and potential duplicates, then posts a clarifying comment.",
|
|
692
|
-
"category": "
|
|
706
|
+
"category": "automations",
|
|
693
707
|
"keywords": [
|
|
694
708
|
"linear",
|
|
695
709
|
"triage",
|
|
@@ -704,7 +718,7 @@
|
|
|
704
718
|
"name": "research-brief",
|
|
705
719
|
"source": "./skills/research-brief",
|
|
706
720
|
"description": "Create a recurring automation that researches a topic using Tavily web search and publishes a structured brief to Notion with executive summary, key findings, implications, and source citations.",
|
|
707
|
-
"category": "
|
|
721
|
+
"category": "automations",
|
|
708
722
|
"keywords": [
|
|
709
723
|
"research",
|
|
710
724
|
"brief",
|
|
@@ -718,7 +732,7 @@
|
|
|
718
732
|
"name": "slack-standup-digest",
|
|
719
733
|
"source": "./skills/slack-standup-digest",
|
|
720
734
|
"description": "Create an automation that generates an async standup digest from Slack. Searches selected channels for messages since the previous workday, groups updates by project, highlights blockers and decisions, and posts a summary to a target channel.",
|
|
721
|
-
"category": "
|
|
735
|
+
"category": "automations",
|
|
722
736
|
"keywords": [
|
|
723
737
|
"slack",
|
|
724
738
|
"standup",
|
|
@@ -733,7 +747,7 @@
|
|
|
733
747
|
"name": "technical-writing",
|
|
734
748
|
"source": "./skills/technical-writing",
|
|
735
749
|
"description": "Write and revise technical explanations in flowing, direct, conversational prose that stays concise without becoming fragmented or vague.",
|
|
736
|
-
"category": "
|
|
750
|
+
"category": "writing",
|
|
737
751
|
"keywords": [
|
|
738
752
|
"technical-writing"
|
|
739
753
|
]
|
|
@@ -742,7 +756,7 @@
|
|
|
742
756
|
"name": "plain-english-content",
|
|
743
757
|
"source": "./skills/plain-english-content",
|
|
744
758
|
"description": "Write and edit clear, accessible prose in a plain English content style: active voice, front-loaded content, sentence case, and accessible formatting.",
|
|
745
|
-
"category": "
|
|
759
|
+
"category": "writing",
|
|
746
760
|
"keywords": [
|
|
747
761
|
"plain-english"
|
|
748
762
|
]
|
|
@@ -751,7 +765,7 @@
|
|
|
751
765
|
"name": "jira-issue-to-pr",
|
|
752
766
|
"source": "./skills/jira-issue-to-pr",
|
|
753
767
|
"description": "Deploy a cron-based OpenHands automation that watches a Jira Cloud project for issues labeled with a configurable label (default: create-pr) and spawns an agent conversation to create a GitHub pull request for each new issue found. The target GitHub repo is read from the ticket body - no repo parameter required at deploy time.",
|
|
754
|
-
"category": "
|
|
768
|
+
"category": "automations",
|
|
755
769
|
"keywords": [
|
|
756
770
|
"jira",
|
|
757
771
|
"atlassian"
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
@@ -18,7 +18,7 @@ from importlib.metadata import PackageNotFoundError, version
|
|
|
18
18
|
#: Kept in lock-step with pyproject.toml/package.json by the version test.
|
|
19
19
|
#: release-please only rewrites a semver found on the annotated line itself, so
|
|
20
20
|
#: the annotation must stay on the assignment; on its own line it is a no-op.
|
|
21
|
-
_FALLBACK_VERSION = "0.
|
|
21
|
+
_FALLBACK_VERSION = "0.15.0" # x-release-please-version
|
|
22
22
|
|
|
23
23
|
try:
|
|
24
24
|
__version__: str = version("openhands-extensions")
|