@openhands/extensions 0.8.0 → 0.9.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 (71) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/README.md +3 -2
  3. package/automations/catalog/jira-issue-to-pr.json +14 -0
  4. package/automations/index.js +2 -0
  5. package/integrations/catalog/atlassian.json +78 -3
  6. package/integrations/catalog/datadog.json +33 -2
  7. package/integrations/catalog/superhuman-mail.json +36 -0
  8. package/integrations/catalog-index.js +45 -43
  9. package/marketplaces/openhands-extensions.json +10 -0
  10. package/package.json +1 -1
  11. package/plugins/cobol-modernization/skills/build-setup/SKILL.md +1 -0
  12. package/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +9 -0
  13. package/plugins/migration-scoring/skills/migration-scoring/SKILL.md +11 -0
  14. package/plugins/onboarding/skills/agent-readiness-report/SKILL.md +2 -0
  15. package/plugins/openhands/SKILL.md +7 -0
  16. package/plugins/release-notes/SKILL.md +9 -0
  17. package/pyproject.toml +1 -1
  18. package/python/openhands_extensions/_version.py +1 -1
  19. package/scripts/build-skills-catalog.mjs +1 -1
  20. package/skills/add-skill/SKILL.md +2 -0
  21. package/skills/azure-devops/SKILL.md +12 -1
  22. package/skills/bitbucket-cloud/SKILL.md +11 -0
  23. package/skills/code-review/SKILL.md +1 -0
  24. package/skills/datadog/SKILL.md +3 -1
  25. package/skills/datadog/references/windows.md +45 -0
  26. package/skills/discord/SKILL.md +2 -0
  27. package/skills/docker/SKILL.md +5 -1
  28. package/skills/github/SKILL.md +3 -1
  29. package/skills/github/references/windows.md +48 -0
  30. package/skills/github-pr-review/SKILL.md +1 -0
  31. package/skills/github-pr-review/references/windows.md +47 -0
  32. package/skills/github-pr-reviewer/SKILL.md +1 -0
  33. package/skills/github-pr-reviewer/references/windows.md +61 -0
  34. package/skills/github-repo-monitor/SKILL.md +1 -0
  35. package/skills/github-repo-monitor/references/windows.md +61 -0
  36. package/skills/gitlab/SKILL.md +3 -1
  37. package/skills/incident-retrospective/SKILL.md +2 -0
  38. package/skills/index.js +36 -30
  39. package/skills/iterate/SKILL.md +1 -0
  40. package/skills/iterate/references/windows.md +41 -0
  41. package/skills/jira-issue-to-pr/.plugin/plugin.json +19 -0
  42. package/skills/jira-issue-to-pr/README.md +56 -0
  43. package/skills/jira-issue-to-pr/SKILL.md +216 -0
  44. package/skills/jira-issue-to-pr/references/setup.md +170 -0
  45. package/skills/jira-issue-to-pr/scripts/main.py +341 -0
  46. package/skills/jupyter/SKILL.md +7 -1
  47. package/skills/kubernetes/SKILL.md +2 -1
  48. package/skills/kubernetes/references/windows.md +38 -0
  49. package/skills/linear/SKILL.md +2 -0
  50. package/skills/linear/references/windows.md +29 -0
  51. package/skills/linear-triage/SKILL.md +2 -0
  52. package/skills/notion/SKILL.md +2 -0
  53. package/skills/notion/references/windows.md +43 -0
  54. package/skills/openhands-api/SKILL.md +1 -0
  55. package/skills/openhands-api/references/windows.md +44 -0
  56. package/skills/openhands-automation/SKILL.md +1 -0
  57. package/skills/openhands-automation/references/custom-automation.md +20 -0
  58. package/skills/openhands-automation/references/windows.md +57 -0
  59. package/skills/pdflatex/SKILL.md +3 -1
  60. package/skills/research-brief/SKILL.md +2 -0
  61. package/skills/skill-creator/SKILL.md +1 -0
  62. package/skills/skill-creator/references/windows.md +30 -0
  63. package/skills/slack-channel-monitor/SKILL.md +1 -0
  64. package/skills/slack-channel-monitor/references/windows.md +64 -0
  65. package/skills/slack-standup-digest/SKILL.md +2 -0
  66. package/skills/spark-version-upgrade/SKILL.md +2 -1
  67. package/skills/ssh/SKILL.md +2 -1
  68. package/skills/ssh/references/windows.md +59 -0
  69. package/skills/swift-linux/SKILL.md +2 -1
  70. package/skills/vercel/SKILL.md +5 -0
  71. package/tests/test_catalogs.py +6 -1
@@ -0,0 +1,45 @@
1
+ # Windows Notes for Datadog Commands
2
+
3
+ Use these PowerShell forms when running the Datadog examples natively on Windows.
4
+
5
+ ## Check Required Environment Variables
6
+
7
+ ```powershell
8
+ foreach ($name in "DD_API_KEY", "DD_APP_KEY", "DD_SITE") {
9
+ if ([Environment]::GetEnvironmentVariable($name)) {
10
+ "$name is set"
11
+ } else {
12
+ "$name is NOT set"
13
+ }
14
+ }
15
+ ```
16
+
17
+ ## Run the Curl Examples
18
+
19
+ In PowerShell, call `curl.exe` so the examples use real curl rather than the `curl` alias. Replace `${DD_SITE}` with `$env:DD_SITE` and `${DD_API_KEY}` / `${DD_APP_KEY}` with `$env:DD_API_KEY` / `$env:DD_APP_KEY`.
20
+
21
+ ```powershell
22
+ curl.exe -s -X POST "https://api.$env:DD_SITE/api/v2/logs/events/search" `
23
+ -H "DD-API-KEY: $env:DD_API_KEY" `
24
+ -H "DD-APPLICATION-KEY: $env:DD_APP_KEY" `
25
+ -H "Content-Type: application/json" `
26
+ -d '{"filter":{"query":"service:my-service status:error","from":"now-1h","to":"now"},"sort":"-timestamp","page":{"limit":50}}' |
27
+ ConvertFrom-Json
28
+ ```
29
+
30
+ ## Replace Linux Date and Jq
31
+
32
+ The metrics example uses `date -d` and `jq`. In PowerShell, compute Unix timestamps with .NET and pipe JSON to `ConvertFrom-Json`.
33
+
34
+ ```powershell
35
+ $from = [DateTimeOffset]::UtcNow.AddHours(-1).ToUnixTimeSeconds()
36
+ $to = [DateTimeOffset]::UtcNow.ToUnixTimeSeconds()
37
+
38
+ curl.exe -s -G "https://api.$env:DD_SITE/api/v1/query" `
39
+ -H "DD-API-KEY: $env:DD_API_KEY" `
40
+ -H "DD-APPLICATION-KEY: $env:DD_APP_KEY" `
41
+ --data-urlencode "query=avg:system.cpu.user{*}" `
42
+ --data-urlencode "from=$from" `
43
+ --data-urlencode "to=$to" |
44
+ ConvertFrom-Json
45
+ ```
@@ -49,6 +49,8 @@ Use this skill when implementing or automating Discord integrations.
49
49
 
50
50
  ## Quick recipes
51
51
 
52
+ The shell snippets below use POSIX-style environment variables and line continuations. On Windows PowerShell, use `curl.exe` for the shown flags and `$env:DISCORD_WEBHOOK_URL` / `$env:DISCORD_BOT_TOKEN` for environment variables, or translate the request to `Invoke-RestMethod`.
53
+
52
54
  ### Post a message via an incoming webhook (recommended)
53
55
 
54
56
  Discord requires at least one of `content`, `embeds`, `components`, `file`, or `poll`.
@@ -20,10 +20,14 @@ sudo dockerd > /tmp/docker.log 2>&1 &
20
20
  sleep 5
21
21
  ```
22
22
 
23
+ On Windows, start Docker Desktop or the Docker service instead of running `sudo dockerd`; then run Docker commands from PowerShell without `sudo`.
24
+
23
25
  ## Verifying Docker Installation
24
26
 
25
27
  To verify Docker is working correctly, run the hello-world container:
26
28
 
27
29
  ```bash
28
30
  sudo docker run hello-world
29
- ```
31
+ ```
32
+
33
+ PowerShell equivalent after Docker Desktop is running: `docker run hello-world`.
@@ -19,6 +19,8 @@ Examples:
19
19
  - `gh pr checks 200 --watch --interval 10` to check until completed.
20
20
  </IMPORTANT>
21
21
 
22
+ Windows PowerShell equivalents for the multi-line shell snippets below are in `references/windows.md`.
23
+
22
24
  If you encounter authentication issues when pushing to GitHub (such as password prompts or permission errors), the old token may have expired. In such case, update the remote URL to include the current token: `git remote set-url origin https://${GITHUB_TOKEN}@github.com/username/repo.git`
23
25
 
24
26
  Here are some instructions for pushing, but ONLY do this if the user asks you to:
@@ -103,4 +105,4 @@ gh run list --repo <OWNER>/<REPO> --branch <BRANCH> --limit 5
103
105
 
104
106
  # Rerun failed jobs
105
107
  gh run rerun <RUN_ID> --repo <OWNER>/<REPO> --failed
106
- ```
108
+ ```
@@ -0,0 +1,48 @@
1
+ # Windows Notes for GitHub Commands
2
+
3
+ Use these PowerShell forms when running this skill's GitHub commands natively on Windows.
4
+
5
+ ## Environment Variables
6
+
7
+ PowerShell environment variables use `$env:NAME`:
8
+
9
+ ```powershell
10
+ git remote set-url origin "https://$($env:GITHUB_TOKEN)@github.com/username/repo.git"
11
+ ```
12
+
13
+ ## Chained Git Commands
14
+
15
+ If the installed shell does not support `&&`, run the commands separately and stop if one fails:
16
+
17
+ ```powershell
18
+ git remote -v
19
+ git branch
20
+ git checkout -b create-widget
21
+ git add .
22
+ git commit -m "Create widget"
23
+ git push -u origin create-widget
24
+ ```
25
+
26
+ ## GraphQL Requests with gh
27
+
28
+ For multi-line GraphQL queries, use a PowerShell here-string and pass it to `gh api`.
29
+
30
+ ```powershell
31
+ $query = @'
32
+ {
33
+ repository(owner: "<OWNER>", name: "<REPO>") {
34
+ pullRequest(number: <PR_NUMBER>) {
35
+ reviewThreads(first: 20) {
36
+ nodes { id isResolved }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ '@
42
+
43
+ gh api graphql -f query="$query"
44
+ ```
45
+
46
+ ## Redirects
47
+
48
+ Replace POSIX redirects such as `2>/dev/null` with PowerShell redirects such as `2>$null`.
@@ -8,6 +8,7 @@ triggers:
8
8
  # GitHub PR Review
9
9
 
10
10
  Post structured code review feedback using the GitHub API with inline comments on specific lines.
11
+ Windows PowerShell equivalents for JSON file creation, temp paths, line lookup, and fallback `curl` are in `references/windows.md`.
11
12
 
12
13
  ## Key Rule: One API Call
13
14
 
@@ -0,0 +1,47 @@
1
+ # Windows Notes for GitHub PR Review Commands
2
+
3
+ Use these PowerShell forms for the JSON-file, line-check, and fallback API snippets.
4
+
5
+ ## Create the Review JSON File
6
+
7
+ ```powershell
8
+ $reviewJson = Join-Path $env:TEMP "review.json"
9
+ @'
10
+ {
11
+ "commit_id": "{commit_sha}",
12
+ "event": "COMMENT",
13
+ "body": "Brief 1-3 sentence summary.",
14
+ "comments": []
15
+ }
16
+ '@ | Set-Content -LiteralPath $reviewJson -Encoding utf8
17
+ ```
18
+
19
+ Then pass the file to `gh`:
20
+
21
+ ```powershell
22
+ gh api -X POST repos/{owner}/{repo}/pulls/{pr_number}/reviews --input $reviewJson
23
+ ```
24
+
25
+ ## Verify File Lines
26
+
27
+ Use `Select-String` for pattern lookup and `Get-Content` for exact ranges.
28
+
29
+ ```powershell
30
+ Select-String -Path filename -Pattern "pattern"
31
+
32
+ $lines = Get-Content -LiteralPath filename
33
+ $lines[41] # line 42, because arrays are zero-based
34
+ $lines[($start - 1)..($end - 1)]
35
+ ```
36
+
37
+ ## Fallback Curl
38
+
39
+ Use `curl.exe` so PowerShell does not resolve `curl` to its alias.
40
+
41
+ ```powershell
42
+ curl.exe -X POST `
43
+ -H "Authorization: token $env:GITHUB_TOKEN" `
44
+ -H "Accept: application/vnd.github+json" `
45
+ "https://api.github.com/repos/{owner}/{repo}/pulls/{pr_number}/reviews" `
46
+ --data-binary "@$reviewJson"
47
+ ```
@@ -14,6 +14,7 @@ triggers:
14
14
  Create a cron automation that watches a GitHub repository for pull requests
15
15
  with a review trigger label, starts an OpenHands review conversation once per
16
16
  label event, and posts the AI review as a GitHub comment.
17
+ Windows PowerShell equivalents for the setup, packaging, upload, and API-check shell snippets are in `references/windows.md`.
17
18
 
18
19
  The automation script is deterministic: PR discovery, label-event tracking,
19
20
  state persistence, stale-result suppression, and GitHub comment posting are
@@ -0,0 +1,61 @@
1
+ # Windows Notes for GitHub PR Reviewer Setup
2
+
3
+ Use these PowerShell forms when creating the reviewer automation from Windows.
4
+
5
+ ## Validate the GitHub Token
6
+
7
+ ```powershell
8
+ Invoke-RestMethod `
9
+ -Uri "https://api.github.com/user" `
10
+ -Headers @{ Authorization = "Bearer $env:GITHUB_PERSONAL_ACCESS_TOKEN" }
11
+ ```
12
+
13
+ ## Build Directory and Syntax Check
14
+
15
+ ```powershell
16
+ $buildDir = Join-Path $env:TEMP "pr-reviewer-build"
17
+ New-Item -ItemType Directory -Force $buildDir | Out-Null
18
+ # write the customised main.py to (Join-Path $buildDir "main.py")
19
+
20
+ python -m py_compile (Join-Path $buildDir "main.py")
21
+ if ($LASTEXITCODE -eq 0) { "Syntax OK" }
22
+ ```
23
+
24
+ ## Package and Upload
25
+
26
+ Modern Windows includes `tar.exe`. Use it to create the `.tar.gz` expected by the automation API.
27
+
28
+ ```powershell
29
+ $tarball = Join-Path $env:TEMP "pr-reviewer.tar.gz"
30
+ tar.exe -czf $tarball -C $buildDir .
31
+
32
+ $upload = curl.exe -s -X POST `
33
+ "$env:OPENHANDS_HOST/api/automation/v1/uploads?name=github-pr-reviewer" `
34
+ -H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
35
+ -H "Content-Type: application/gzip" `
36
+ --data-binary "@$tarball" | ConvertFrom-Json
37
+
38
+ $tarballPath = $upload.tarball_path
39
+ "Uploaded: $tarballPath"
40
+ ```
41
+
42
+ ## Register the Automation
43
+
44
+ Use a double-quoted here-string when the body needs PowerShell variable interpolation.
45
+
46
+ ```powershell
47
+ $body = @"
48
+ {
49
+ "name": "GitHub PR Reviewer: {owner}/{repo}",
50
+ "trigger": {"type": "cron", "schedule": "{cron_schedule}"},
51
+ "tarball_path": "$tarballPath",
52
+ "entrypoint": "python3 main.py",
53
+ "timeout": 300
54
+ }
55
+ "@
56
+
57
+ curl.exe -s -X POST "$env:OPENHANDS_HOST/api/automation/v1" `
58
+ -H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
59
+ -H "Content-Type: application/json" `
60
+ -d $body
61
+ ```
@@ -16,6 +16,7 @@ triggers:
16
16
 
17
17
  Create a cron automation that polls a single GitHub repository on a
18
18
  configurable schedule (default: every minute).
19
+ Windows PowerShell equivalents for the setup, packaging, upload, and API-check shell snippets are in `references/windows.md`.
19
20
 
20
21
  When a comment on an issue or PR contains the **trigger phrase**
21
22
  (default: `@OpenHands`) it:
@@ -0,0 +1,61 @@
1
+ # Windows Notes for GitHub Repository Monitor Setup
2
+
3
+ Use these PowerShell forms when creating the monitor automation from Windows.
4
+
5
+ ## Validate the GitHub Token and Repo
6
+
7
+ ```powershell
8
+ Invoke-RestMethod `
9
+ -Uri "https://api.github.com/user" `
10
+ -Headers @{ Authorization = "Bearer $env:GITHUB_PERSONAL_ACCESS_TOKEN"; Accept = "application/vnd.github+json" }
11
+
12
+ Invoke-RestMethod `
13
+ -Uri "https://api.github.com/repos/{owner}/{repo}" `
14
+ -Headers @{ Authorization = "Bearer $env:GITHUB_PERSONAL_ACCESS_TOKEN"; Accept = "application/vnd.github+json" }
15
+ ```
16
+
17
+ ## Build Directory and Syntax Check
18
+
19
+ ```powershell
20
+ $buildDir = Join-Path $env:TEMP "github-monitor-build"
21
+ New-Item -ItemType Directory -Force $buildDir | Out-Null
22
+ # write the customised main.py to (Join-Path $buildDir "main.py")
23
+
24
+ python -m py_compile (Join-Path $buildDir "main.py")
25
+ if ($LASTEXITCODE -eq 0) { "Syntax OK" }
26
+ ```
27
+
28
+ ## Package and Upload
29
+
30
+ ```powershell
31
+ $tarball = Join-Path $env:TEMP "github-monitor.tar.gz"
32
+ tar.exe -czf $tarball -C $buildDir .
33
+
34
+ $upload = curl.exe -s -X POST `
35
+ "$env:OPENHANDS_HOST/api/automation/v1/uploads?name=github-repo-monitor" `
36
+ -H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
37
+ -H "Content-Type: application/gzip" `
38
+ --data-binary "@$tarball" | ConvertFrom-Json
39
+
40
+ $tarballPath = $upload.tarball_path
41
+ "Uploaded: $tarballPath"
42
+ ```
43
+
44
+ ## Create the Automation
45
+
46
+ ```powershell
47
+ $body = @"
48
+ {
49
+ "name": "GitHub Monitor: {owner}/{repo}",
50
+ "trigger": {"type": "cron", "schedule": "{cron_schedule}"},
51
+ "tarball_path": "$tarballPath",
52
+ "entrypoint": "python3 main.py",
53
+ "timeout": 55
54
+ }
55
+ "@
56
+
57
+ curl.exe -s -X POST "$env:OPENHANDS_HOST/api/automation/v1" `
58
+ -H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
59
+ -H "Content-Type: application/json" `
60
+ -d $body
61
+ ```
@@ -29,4 +29,6 @@ Here are some instructions for pushing, but ONLY do this if the user asks you to
29
29
  ```bash
30
30
  git remote -v && git branch # to find the current org, repo and branch
31
31
  git checkout -b create-widget && git add . && git commit -m "Create widget" && git push -u origin create-widget
32
- ```
32
+ ```
33
+
34
+ On Windows PowerShell, use `$env:GITLAB_TOKEN` in remote URLs and run the `git` commands as separate commands if `&&` is not supported by the installed shell.
@@ -85,6 +85,8 @@ curl -s -X POST "${OPENHANDS_HOST}/api/automation/v1/preset/prompt" \
85
85
  }'
86
86
  ```
87
87
 
88
+ PowerShell note: use `curl.exe` for this exact flag syntax, and replace `${OPENHANDS_HOST}` / `$OPENHANDS_AUTOMATION_API_KEY` with `$env:OPENHANDS_HOST` / `$env:OPENHANDS_AUTOMATION_API_KEY` if running it natively.
89
+
88
90
  ### Step 5 — Confirm
89
91
 
90
92
  Tell the user: