@openhands/extensions 0.20.0 → 0.22.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/.claude-plugin/marketplace.json +881 -0
- package/.codex-plugin/marketplace.json +881 -0
- package/.github/workflows/check-extensions.yml +4 -0
- package/.github/workflows/npm-publish.yml +9 -3
- package/.github/workflows/pr-artifacts.yml +294 -0
- package/.github/workflows/pr-description-check.yml +4 -2
- package/.plugin/marketplace.json +881 -0
- package/.release-please-manifest.json +1 -1
- package/AGENTS.md +27 -3
- package/README.md +6 -2
- package/automations/bundle-index.js +22 -3
- package/automations/catalog/github-agents-md-maintainer/manifest.json +2 -1
- package/automations/catalog/github-delivery-watchdog/manifest.json +79 -0
- package/automations/catalog/github-issue-to-pr/manifest.json +24 -15
- package/automations/catalog/github-issue-triage/manifest.json +73 -0
- package/automations/catalog/github-pr-reviewer/manifest.json +23 -15
- package/automations/catalog/gitlab-issue-to-mr/manifest.json +124 -0
- package/automations/catalog-index.js +17 -11
- package/integrations/catalog/reportportal.json +76 -0
- package/integrations/catalog-index.js +6 -4
- package/marketplaces/openhands-extensions.json +42 -0
- package/package.json +1 -1
- package/plugins/city-weather/.claude-plugin/plugin.json +13 -0
- package/plugins/city-weather/.codex-plugin/plugin.json +13 -0
- package/plugins/cobol-modernization/.claude-plugin/plugin.json +19 -0
- package/plugins/cobol-modernization/.codex-plugin/plugin.json +19 -0
- package/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +13 -0
- package/plugins/issue-duplicate-checker/.codex-plugin/plugin.json +13 -0
- package/plugins/magic-test/.claude-plugin/plugin.json +13 -0
- package/plugins/magic-test/.codex-plugin/plugin.json +13 -0
- package/plugins/migration-scoring/.claude-plugin/plugin.json +19 -0
- package/plugins/migration-scoring/.codex-plugin/plugin.json +19 -0
- package/plugins/onboarding/.claude-plugin/plugin.json +20 -0
- package/plugins/onboarding/.codex-plugin/plugin.json +20 -0
- package/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +144 -0
- package/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +144 -0
- package/plugins/openhands/.claude-plugin/plugin.json +13 -0
- package/plugins/openhands/.codex-plugin/plugin.json +13 -0
- package/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +22 -0
- package/plugins/openhands/skills/openhands-api/.codex-plugin/plugin.json +22 -0
- package/plugins/openhands/skills/openhands-api/.plugin/plugin.json +22 -0
- package/plugins/openhands/skills/openhands-api/README.md +52 -0
- package/plugins/openhands/skills/openhands-api/SKILL.md +469 -0
- package/plugins/openhands/skills/openhands-api/references/README.md +33 -0
- package/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +81 -0
- package/plugins/openhands/skills/openhands-api/references/example_prompt.md +12 -0
- package/plugins/openhands/skills/openhands-api/references/windows.md +44 -0
- package/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +606 -0
- package/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +252 -0
- package/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +19 -0
- package/plugins/openhands/skills/openhands-automation/.codex-plugin/plugin.json +19 -0
- package/plugins/openhands/skills/openhands-automation/.plugin/plugin.json +19 -0
- package/plugins/openhands/skills/openhands-automation/README.md +89 -0
- package/plugins/openhands/skills/openhands-automation/SKILL.md +899 -0
- package/plugins/openhands/skills/openhands-automation/commands/automation-create.md +8 -0
- package/plugins/openhands/skills/openhands-automation/references/ab-testing.md +185 -0
- package/plugins/openhands/skills/openhands-automation/references/custom-automation.md +832 -0
- package/plugins/openhands/skills/openhands-automation/references/security.md +84 -0
- package/plugins/openhands/skills/openhands-automation/references/windows.md +57 -0
- package/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +20 -0
- package/plugins/openhands/skills/openhands-sdk/.codex-plugin/plugin.json +20 -0
- package/plugins/openhands/skills/openhands-sdk/.plugin/plugin.json +20 -0
- package/plugins/openhands/skills/openhands-sdk/README.md +22 -0
- package/plugins/openhands/skills/openhands-sdk/SKILL.md +245 -0
- package/plugins/openhands/skills/openhands-sdk/commands/sdk.md +8 -0
- package/plugins/pr-review/.claude-plugin/plugin.json +13 -0
- package/plugins/pr-review/.codex-plugin/plugin.json +13 -0
- package/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +19 -0
- package/plugins/pr-review/skills/code-review/.codex-plugin/plugin.json +19 -0
- package/plugins/pr-review/skills/code-review/.plugin/plugin.json +19 -0
- package/plugins/pr-review/skills/code-review/README.md +18 -0
- package/plugins/pr-review/skills/code-review/SKILL.md +209 -0
- package/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +8 -0
- package/plugins/pr-review/skills/code-review/commands/codereview.md +8 -0
- package/plugins/pr-review/skills/code-review/references/risk-evaluation.md +41 -0
- package/plugins/pr-review/skills/code-review/references/supply-chain-security.md +31 -0
- package/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +18 -0
- package/plugins/pr-review/skills/github-pr-review/.codex-plugin/plugin.json +18 -0
- package/plugins/pr-review/skills/github-pr-review/.plugin/plugin.json +18 -0
- package/plugins/pr-review/skills/github-pr-review/README.md +145 -0
- package/plugins/pr-review/skills/github-pr-review/SKILL.md +187 -0
- package/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +8 -0
- package/plugins/pr-review/skills/github-pr-review/references/windows.md +47 -0
- package/plugins/qa-changes/.claude-plugin/plugin.json +11 -0
- package/plugins/qa-changes/.codex-plugin/plugin.json +11 -0
- package/plugins/qa-changes/skills/github-pr-review/.claude-plugin/plugin.json +18 -0
- package/plugins/qa-changes/skills/github-pr-review/.codex-plugin/plugin.json +18 -0
- package/plugins/qa-changes/skills/github-pr-review/.plugin/plugin.json +18 -0
- package/plugins/qa-changes/skills/github-pr-review/README.md +145 -0
- package/plugins/qa-changes/skills/github-pr-review/SKILL.md +187 -0
- package/plugins/qa-changes/skills/github-pr-review/commands/github-pr-review.md +8 -0
- package/plugins/qa-changes/skills/github-pr-review/references/windows.md +47 -0
- package/plugins/qa-changes/skills/qa-changes/README.md +18 -0
- package/plugins/qa-changes/skills/qa-changes/SKILL.md +229 -0
- package/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +8 -0
- package/plugins/release-notes/.claude-plugin/plugin.json +19 -0
- package/plugins/release-notes/.codex-plugin/plugin.json +19 -0
- package/plugins/release-notes/skills/release-notes/README.md +24 -0
- package/plugins/release-notes/skills/release-notes/SKILL.md +19 -0
- package/plugins/release-notes/skills/release-notes/commands/release-notes.md +8 -0
- package/plugins/vulnerability-remediation/.claude-plugin/plugin.json +19 -0
- package/plugins/vulnerability-remediation/.codex-plugin/plugin.json +19 -0
- package/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +19 -0
- package/plugins/vulnerability-remediation/skills/github/.codex-plugin/plugin.json +19 -0
- package/plugins/vulnerability-remediation/skills/github/.plugin/plugin.json +19 -0
- package/plugins/vulnerability-remediation/skills/github/README.md +42 -0
- package/plugins/vulnerability-remediation/skills/github/SKILL.md +107 -0
- package/plugins/vulnerability-remediation/skills/github/references/windows.md +48 -0
- package/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +143 -0
- package/plugins/vulnerability-remediation/skills/github/scripts/github_client.py +230 -0
- package/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +18 -0
- package/plugins/vulnerability-remediation/skills/security/.codex-plugin/plugin.json +18 -0
- package/plugins/vulnerability-remediation/skills/security/.plugin/plugin.json +18 -0
- package/plugins/vulnerability-remediation/skills/security/README.md +38 -0
- package/plugins/vulnerability-remediation/skills/security/SKILL.md +33 -0
- package/pyproject.toml +2 -2
- package/python/openhands_extensions/_version.py +1 -1
- package/skills/add-javadoc/.claude-plugin/plugin.json +18 -0
- package/skills/add-javadoc/.codex-plugin/plugin.json +18 -0
- package/skills/add-skill/.claude-plugin/plugin.json +18 -0
- package/skills/add-skill/.codex-plugin/plugin.json +18 -0
- package/skills/agent-canvas-environment/.claude-plugin/plugin.json +19 -0
- package/skills/agent-canvas-environment/.codex-plugin/plugin.json +19 -0
- package/skills/agent-creator/.claude-plugin/plugin.json +20 -0
- package/skills/agent-creator/.codex-plugin/plugin.json +20 -0
- package/skills/agent-memory/.claude-plugin/plugin.json +18 -0
- package/skills/agent-memory/.codex-plugin/plugin.json +18 -0
- package/skills/agent-sdk-builder/.claude-plugin/plugin.json +18 -0
- package/skills/agent-sdk-builder/.codex-plugin/plugin.json +18 -0
- package/skills/azure-devops/.claude-plugin/plugin.json +18 -0
- package/skills/azure-devops/.codex-plugin/plugin.json +18 -0
- package/skills/bitbucket/.claude-plugin/plugin.json +17 -0
- package/skills/bitbucket/.codex-plugin/plugin.json +17 -0
- package/skills/bitbucket-cloud/.claude-plugin/plugin.json +18 -0
- package/skills/bitbucket-cloud/.codex-plugin/plugin.json +18 -0
- package/skills/bitbucket-data-center/.claude-plugin/plugin.json +19 -0
- package/skills/bitbucket-data-center/.codex-plugin/plugin.json +19 -0
- package/skills/code-review/.claude-plugin/plugin.json +19 -0
- package/skills/code-review/.codex-plugin/plugin.json +19 -0
- package/skills/code-simplifier/.claude-plugin/plugin.json +21 -0
- package/skills/code-simplifier/.codex-plugin/plugin.json +21 -0
- package/skills/datadog/.claude-plugin/plugin.json +19 -0
- package/skills/datadog/.codex-plugin/plugin.json +19 -0
- package/skills/deno/.claude-plugin/plugin.json +18 -0
- package/skills/deno/.codex-plugin/plugin.json +18 -0
- package/skills/discord/.claude-plugin/plugin.json +18 -0
- package/skills/discord/.codex-plugin/plugin.json +18 -0
- package/skills/docker/.claude-plugin/plugin.json +17 -0
- package/skills/docker/.codex-plugin/plugin.json +17 -0
- package/skills/evidence-based-citations/.claude-plugin/plugin.json +20 -0
- package/skills/evidence-based-citations/.codex-plugin/plugin.json +20 -0
- package/skills/flarglebargle/.claude-plugin/plugin.json +16 -0
- package/skills/flarglebargle/.codex-plugin/plugin.json +16 -0
- package/skills/frontend-design/.claude-plugin/plugin.json +21 -0
- package/skills/frontend-design/.codex-plugin/plugin.json +21 -0
- package/skills/github/.claude-plugin/plugin.json +19 -0
- package/skills/github/.codex-plugin/plugin.json +19 -0
- package/skills/github/scripts/agent_conversation.py +143 -0
- package/skills/github/scripts/github_client.py +230 -0
- package/skills/github-actions/.claude-plugin/plugin.json +19 -0
- package/skills/github-actions/.codex-plugin/plugin.json +19 -0
- package/skills/github-agents-md-maintainer/.claude-plugin/plugin.json +19 -0
- package/skills/github-agents-md-maintainer/.codex-plugin/plugin.json +19 -0
- package/skills/github-agents-md-maintainer/SKILL.md +7 -1
- package/skills/github-agents-md-maintainer/scripts/github_client.py +230 -0
- package/skills/github-agents-md-maintainer/scripts/main.py +4 -40
- package/skills/github-delivery-watchdog/.claude-plugin/plugin.json +9 -0
- package/skills/github-delivery-watchdog/.codex-plugin/plugin.json +9 -0
- package/skills/github-delivery-watchdog/.plugin/plugin.json +9 -0
- package/skills/github-delivery-watchdog/README.md +10 -0
- package/skills/github-delivery-watchdog/SKILL.md +35 -0
- package/skills/github-delivery-watchdog/commands/github-delivery-watchdog.md +8 -0
- package/skills/github-delivery-watchdog/scripts/github_client.py +230 -0
- package/skills/github-delivery-watchdog/scripts/worker.py +96 -0
- package/skills/github-issue-to-pr/.claude-plugin/plugin.json +19 -0
- package/skills/github-issue-to-pr/.codex-plugin/plugin.json +19 -0
- package/skills/github-issue-to-pr/SKILL.md +15 -1
- package/skills/github-issue-to-pr/scripts/agent_conversation.py +143 -0
- package/skills/github-issue-to-pr/scripts/github_client.py +230 -0
- package/skills/github-issue-to-pr/scripts/main.py +19 -50
- package/skills/github-issue-to-pr/scripts/worker.py +172 -0
- package/skills/github-issue-triage/.claude-plugin/plugin.json +9 -0
- package/skills/github-issue-triage/.codex-plugin/plugin.json +9 -0
- package/skills/github-issue-triage/.plugin/plugin.json +9 -0
- package/skills/github-issue-triage/README.md +9 -0
- package/skills/github-issue-triage/SKILL.md +34 -0
- package/skills/github-issue-triage/commands/github-issue-triage.md +8 -0
- package/skills/github-issue-triage/scripts/agent_conversation.py +143 -0
- package/skills/github-issue-triage/scripts/github_client.py +230 -0
- package/skills/github-issue-triage/scripts/worker.py +106 -0
- package/skills/github-pr-review/.claude-plugin/plugin.json +18 -0
- package/skills/github-pr-review/.codex-plugin/plugin.json +18 -0
- package/skills/github-pr-reviewer/.claude-plugin/plugin.json +20 -0
- package/skills/github-pr-reviewer/.codex-plugin/plugin.json +20 -0
- package/skills/github-pr-reviewer/SKILL.md +15 -1
- package/skills/github-pr-reviewer/scripts/agent_conversation.py +143 -0
- package/skills/github-pr-reviewer/scripts/github_client.py +230 -0
- package/skills/github-pr-reviewer/scripts/main.py +23 -49
- package/skills/github-pr-reviewer/scripts/worker.py +94 -0
- package/skills/github-repo-monitor/.claude-plugin/plugin.json +22 -0
- package/skills/github-repo-monitor/.codex-plugin/plugin.json +22 -0
- package/skills/github-repo-monitor/SKILL.md +7 -1
- package/skills/github-repo-monitor/scripts/github_client.py +230 -0
- package/skills/github-repo-monitor/scripts/main.py +4 -46
- package/skills/gitlab/.claude-plugin/plugin.json +17 -0
- package/skills/gitlab/.codex-plugin/plugin.json +17 -0
- package/skills/gitlab-issue-to-mr/.claude-plugin/plugin.json +19 -0
- package/skills/gitlab-issue-to-mr/.codex-plugin/plugin.json +19 -0
- package/skills/gitlab-issue-to-mr/.plugin/plugin.json +19 -0
- package/skills/gitlab-issue-to-mr/README.md +92 -0
- package/skills/gitlab-issue-to-mr/SKILL.md +408 -0
- package/skills/gitlab-issue-to-mr/commands/issue-to-mr-setup.md +8 -0
- package/skills/gitlab-issue-to-mr/references/state-schema.md +140 -0
- package/skills/gitlab-issue-to-mr/scripts/main.py +1448 -0
- package/skills/incident-retrospective/.claude-plugin/plugin.json +21 -0
- package/skills/incident-retrospective/.codex-plugin/plugin.json +21 -0
- package/skills/index.js +52 -6
- package/skills/iterate/.claude-plugin/plugin.json +13 -0
- package/skills/iterate/.codex-plugin/plugin.json +13 -0
- package/skills/jira-issue-to-pr/.claude-plugin/plugin.json +19 -0
- package/skills/jira-issue-to-pr/.codex-plugin/plugin.json +19 -0
- package/skills/jupyter/.claude-plugin/plugin.json +18 -0
- package/skills/jupyter/.codex-plugin/plugin.json +18 -0
- package/skills/kubernetes/.claude-plugin/plugin.json +18 -0
- package/skills/kubernetes/.codex-plugin/plugin.json +18 -0
- package/skills/learn-from-code-review/.claude-plugin/plugin.json +19 -0
- package/skills/learn-from-code-review/.codex-plugin/plugin.json +19 -0
- package/skills/linear/.claude-plugin/plugin.json +19 -0
- package/skills/linear/.codex-plugin/plugin.json +19 -0
- package/skills/linear-triage/.claude-plugin/plugin.json +21 -0
- package/skills/linear-triage/.codex-plugin/plugin.json +21 -0
- package/skills/news-digest/.claude-plugin/plugin.json +19 -0
- package/skills/news-digest/.codex-plugin/plugin.json +19 -0
- package/skills/notion/.claude-plugin/plugin.json +17 -0
- package/skills/notion/.codex-plugin/plugin.json +17 -0
- package/skills/npm/.claude-plugin/plugin.json +17 -0
- package/skills/npm/.codex-plugin/plugin.json +17 -0
- package/skills/openhands-api/.claude-plugin/plugin.json +22 -0
- package/skills/openhands-api/.codex-plugin/plugin.json +22 -0
- package/skills/openhands-automation/.claude-plugin/plugin.json +19 -0
- package/skills/openhands-automation/.codex-plugin/plugin.json +19 -0
- package/skills/openhands-automation/README.md +1 -1
- package/skills/openhands-automation/SKILL.md +18 -8
- package/skills/openhands-enterprise-troubleshooting/.claude-plugin/plugin.json +20 -0
- package/skills/openhands-enterprise-troubleshooting/.codex-plugin/plugin.json +20 -0
- package/skills/openhands-enterprise-troubleshooting/.plugin/plugin.json +20 -0
- package/skills/openhands-enterprise-troubleshooting/README.md +79 -0
- package/skills/openhands-enterprise-troubleshooting/SKILL.md +339 -0
- package/skills/openhands-enterprise-troubleshooting/references/diagnostics.md +698 -0
- package/skills/openhands-enterprise-troubleshooting/references/support-bundle-analysis.md +570 -0
- package/skills/openhands-enterprise-troubleshooting/scripts/bundle_triage.py +532 -0
- package/skills/openhands-sdk/.claude-plugin/plugin.json +20 -0
- package/skills/openhands-sdk/.codex-plugin/plugin.json +20 -0
- package/skills/openhands-sdk/SKILL.md +2 -0
- package/skills/pdflatex/.claude-plugin/plugin.json +18 -0
- package/skills/pdflatex/.codex-plugin/plugin.json +18 -0
- package/skills/plain-english-content/.claude-plugin/plugin.json +15 -0
- package/skills/plain-english-content/.codex-plugin/plugin.json +15 -0
- package/skills/prd/.claude-plugin/plugin.json +19 -0
- package/skills/prd/.codex-plugin/plugin.json +19 -0
- package/skills/research-brief/.claude-plugin/plugin.json +20 -0
- package/skills/research-brief/.codex-plugin/plugin.json +20 -0
- package/skills/security/.claude-plugin/plugin.json +18 -0
- package/skills/security/.codex-plugin/plugin.json +18 -0
- package/skills/skill-creator/.claude-plugin/plugin.json +17 -0
- package/skills/skill-creator/.codex-plugin/plugin.json +17 -0
- package/skills/slack-channel-monitor/.claude-plugin/plugin.json +21 -0
- package/skills/slack-channel-monitor/.codex-plugin/plugin.json +21 -0
- package/skills/slack-standup-digest/.claude-plugin/plugin.json +21 -0
- package/skills/slack-standup-digest/.codex-plugin/plugin.json +21 -0
- package/skills/spark-version-upgrade/.claude-plugin/plugin.json +20 -0
- package/skills/spark-version-upgrade/.codex-plugin/plugin.json +20 -0
- package/skills/ssh/.claude-plugin/plugin.json +18 -0
- package/skills/ssh/.codex-plugin/plugin.json +18 -0
- package/skills/swift-linux/.claude-plugin/plugin.json +17 -0
- package/skills/swift-linux/.codex-plugin/plugin.json +17 -0
- package/skills/technical-writing/.claude-plugin/plugin.json +15 -0
- package/skills/technical-writing/.codex-plugin/plugin.json +15 -0
- package/skills/theme-factory/.claude-plugin/plugin.json +19 -0
- package/skills/theme-factory/.codex-plugin/plugin.json +19 -0
- package/skills/ticket-to-code-change/.claude-plugin/plugin.json +21 -0
- package/skills/ticket-to-code-change/.codex-plugin/plugin.json +21 -0
- package/skills/upstream-fork-sync/.claude-plugin/plugin.json +21 -0
- package/skills/upstream-fork-sync/.codex-plugin/plugin.json +21 -0
- package/skills/uv/.claude-plugin/plugin.json +18 -0
- package/skills/uv/.codex-plugin/plugin.json +18 -0
- package/skills/vercel/.claude-plugin/plugin.json +18 -0
- package/skills/vercel/.codex-plugin/plugin.json +18 -0
- package/tests/fixtures/automations/capabilities.json +6 -3
- package/tests/fixtures/automations/github-pr-reviewer.json +64 -43
- package/tests/github_automation_helpers.py +31 -0
- package/tests/test_agent_conversation_dispatch.py +180 -0
- package/tests/test_automation_setup.py +3 -3
- package/tests/test_github_automation_foundation.py +73 -0
- package/tests/test_github_developer_delivery.py +150 -0
- package/tests/test_github_reviewer_delivery.py +110 -0
- package/tests/test_github_skill_installation.py +63 -0
- package/tests/test_github_triage_delivery.py +90 -0
- package/tests/test_github_watchdog_delivery.py +233 -0
- package/tests/test_gitlab_issue_to_mr.py +823 -0
- package/.pr/custom-automation-event-trigger.png +0 -0
- package/.pr/custom-automation-plugin-fields.png +0 -0
- package/.pr/custom-automation-prompt-review.png +0 -0
- package/.pr/custom-automation-prompt-scheduled.png +0 -0
- package/.pr/custom-automation-upload-fields.png +0 -0
|
@@ -88,7 +88,8 @@
|
|
|
88
88
|
"entrypoint": "python3 main.py",
|
|
89
89
|
"timeout": 900,
|
|
90
90
|
"files": {
|
|
91
|
-
"main.py": "skills/github-agents-md-maintainer/scripts/main.py"
|
|
91
|
+
"main.py": "skills/github-agents-md-maintainer/scripts/main.py",
|
|
92
|
+
"github_client.py": "skills/github/scripts/github_client.py"
|
|
92
93
|
},
|
|
93
94
|
"config": {
|
|
94
95
|
"repos": "{{form.repositories}}",
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "github-delivery-watchdog",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"name": "GitHub delivery watchdog",
|
|
5
|
+
"category": "Project management",
|
|
6
|
+
"description": "Periodically check pull requests and merge only current heads with independent review, tests, and passing CI.",
|
|
7
|
+
"requires": {
|
|
8
|
+
"integrations": {},
|
|
9
|
+
"features": [
|
|
10
|
+
"customTarball"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"estimatedSetupMinutes": 3,
|
|
14
|
+
"exampleImplementation": "Run a deterministic scheduled scanner using its configured GitHub credential. It creates no agent or conversation. For each managed PR, it rechecks the exact head, independent review and test statuses, GitHub Actions, base freshness, and mergeability before issuing a SHA-pinned squash merge.",
|
|
15
|
+
"setup": {
|
|
16
|
+
"version": "1.0",
|
|
17
|
+
"mode": "direct",
|
|
18
|
+
"form": {
|
|
19
|
+
"triggers": {
|
|
20
|
+
"cron": {
|
|
21
|
+
"schedule": {
|
|
22
|
+
"type": "cron",
|
|
23
|
+
"label": "Check frequency",
|
|
24
|
+
"help": "How often to check repository progress.",
|
|
25
|
+
"default": "*/5 * * * *",
|
|
26
|
+
"required": true
|
|
27
|
+
},
|
|
28
|
+
"timezone": {
|
|
29
|
+
"type": "timezone",
|
|
30
|
+
"label": "Timezone",
|
|
31
|
+
"help": "Timezone for the schedule.",
|
|
32
|
+
"default": "UTC",
|
|
33
|
+
"required": true
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"args": {
|
|
38
|
+
"repositories": {
|
|
39
|
+
"type": "repo-picker",
|
|
40
|
+
"provider": "github",
|
|
41
|
+
"multiple": true,
|
|
42
|
+
"label": "Repositories",
|
|
43
|
+
"help": "Repositories this automation may work on.",
|
|
44
|
+
"required": true
|
|
45
|
+
},
|
|
46
|
+
"githubTokenSecret": {
|
|
47
|
+
"type": "text",
|
|
48
|
+
"label": "GitHub token secret",
|
|
49
|
+
"help": "Name of a saved Agent Server secret. Enter its name, not its value.",
|
|
50
|
+
"default": "GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
51
|
+
"required": true
|
|
52
|
+
},
|
|
53
|
+
"branchPrefix": {
|
|
54
|
+
"type": "text",
|
|
55
|
+
"label": "Delivery branch prefix",
|
|
56
|
+
"help": "Only merge branches with this prefix and an issue number. Match the developer and reviewer settings.",
|
|
57
|
+
"default": "openhands/issue",
|
|
58
|
+
"required": true
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"bundle": {
|
|
63
|
+
"version": "1.0.0",
|
|
64
|
+
"entrypoint": "python3 worker.py",
|
|
65
|
+
"timeout": 300,
|
|
66
|
+
"files": {
|
|
67
|
+
"worker.py": "skills/github-delivery-watchdog/scripts/worker.py",
|
|
68
|
+
"github_client.py": "skills/github/scripts/github_client.py"
|
|
69
|
+
},
|
|
70
|
+
"config": {
|
|
71
|
+
"repos": "{{form.repositories}}",
|
|
72
|
+
"github_token_secret": "{{form.githubTokenSecret}}",
|
|
73
|
+
"branch_prefix": "{{form.branchPrefix}}"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"message": "Configure the repositories, credential name, delivery branch prefix, and schedule."
|
|
77
|
+
},
|
|
78
|
+
"popularityRank": 80
|
|
79
|
+
}
|
|
@@ -2,20 +2,17 @@
|
|
|
2
2
|
"id": "github-issue-to-pr",
|
|
3
3
|
"name": "GitHub issue to PR",
|
|
4
4
|
"category": "Software development",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Implement ready GitHub issues, address pull request feedback, and publish tested changes for review.",
|
|
6
6
|
"requires": {
|
|
7
|
-
"integrations": {
|
|
8
|
-
"github": {
|
|
9
|
-
"message": "Used to read labelled issues, push the branch, and open the pull request."
|
|
10
|
-
}
|
|
11
|
-
},
|
|
7
|
+
"integrations": {},
|
|
12
8
|
"features": [
|
|
13
|
-
"customTarball"
|
|
9
|
+
"customTarball",
|
|
10
|
+
"agentProfiles"
|
|
14
11
|
]
|
|
15
12
|
},
|
|
16
13
|
"popularityRank": 95,
|
|
17
14
|
"estimatedSetupMinutes": 4,
|
|
18
|
-
"exampleImplementation": "
|
|
15
|
+
"exampleImplementation": "A scheduled scanner selects every ready issue and each pull request whose exact head failed review. It submits one idempotent subject turn for each item. The profile-backed agent then clones the repository in its own runtime, implements or revises the change, tests it, pushes it, and requests independent review.",
|
|
19
16
|
"impact": {
|
|
20
17
|
"basis": "completed-runs",
|
|
21
18
|
"one": "1 issue sweep completed",
|
|
@@ -90,23 +87,35 @@
|
|
|
90
87
|
"label": "Ready for review"
|
|
91
88
|
}
|
|
92
89
|
]
|
|
90
|
+
},
|
|
91
|
+
"githubTokenSecret": {
|
|
92
|
+
"type": "text",
|
|
93
|
+
"label": "GitHub token secret",
|
|
94
|
+
"help": "Name of a saved Agent Server secret. Include it in the selected profile so the delegated agent can use GitHub.",
|
|
95
|
+
"default": "GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
96
|
+
"required": true
|
|
93
97
|
}
|
|
94
98
|
}
|
|
95
99
|
},
|
|
96
100
|
"bundle": {
|
|
97
|
-
"version": "1.
|
|
98
|
-
"entrypoint": "python3
|
|
99
|
-
"timeout":
|
|
101
|
+
"version": "1.2.0",
|
|
102
|
+
"entrypoint": "python3 worker.py",
|
|
103
|
+
"timeout": 300,
|
|
100
104
|
"files": {
|
|
101
|
-
"main.py": "skills/github-issue-to-pr/scripts/main.py"
|
|
105
|
+
"main.py": "skills/github-issue-to-pr/scripts/main.py",
|
|
106
|
+
"agent_conversation.py": "skills/github/scripts/agent_conversation.py",
|
|
107
|
+
"github_client.py": "skills/github/scripts/github_client.py",
|
|
108
|
+
"worker.py": "skills/github-issue-to-pr/scripts/worker.py"
|
|
102
109
|
},
|
|
103
110
|
"config": {
|
|
104
111
|
"repos": "{{form.repositories}}",
|
|
105
112
|
"trigger_label": "{{form.triggerLabel}}",
|
|
106
113
|
"branch_prefix": "{{form.branchPrefix}}",
|
|
107
|
-
"pull_request_mode": "{{form.pullRequestMode}}"
|
|
114
|
+
"pull_request_mode": "{{form.pullRequestMode}}",
|
|
115
|
+
"github_token_secret": "{{form.githubTokenSecret}}"
|
|
108
116
|
}
|
|
109
117
|
},
|
|
110
|
-
"message": "
|
|
111
|
-
}
|
|
118
|
+
"message": "Configure the repositories, labels, branch prefix, pull request mode, agent profile, and schedule."
|
|
119
|
+
},
|
|
120
|
+
"version": "1.2.0"
|
|
112
121
|
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "github-issue-triage",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"name": "GitHub issue triage",
|
|
5
|
+
"category": "Project management",
|
|
6
|
+
"description": "Prioritize open issues and establish acceptance criteria before marking them ready for development.",
|
|
7
|
+
"requires": {
|
|
8
|
+
"integrations": {},
|
|
9
|
+
"features": [
|
|
10
|
+
"customTarball",
|
|
11
|
+
"agentProfiles"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"estimatedSetupMinutes": 3,
|
|
15
|
+
"exampleImplementation": "Select an agent profile with Issues: read and write. Run this workflow independently on a schedule.",
|
|
16
|
+
"setup": {
|
|
17
|
+
"version": "1.0",
|
|
18
|
+
"mode": "direct",
|
|
19
|
+
"form": {
|
|
20
|
+
"triggers": {
|
|
21
|
+
"cron": {
|
|
22
|
+
"schedule": {
|
|
23
|
+
"type": "cron",
|
|
24
|
+
"label": "Check frequency",
|
|
25
|
+
"help": "How often to check repository progress.",
|
|
26
|
+
"default": "*/5 * * * *",
|
|
27
|
+
"required": true
|
|
28
|
+
},
|
|
29
|
+
"timezone": {
|
|
30
|
+
"type": "timezone",
|
|
31
|
+
"label": "Timezone",
|
|
32
|
+
"help": "Timezone for the schedule.",
|
|
33
|
+
"default": "UTC",
|
|
34
|
+
"required": true
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"args": {
|
|
39
|
+
"repositories": {
|
|
40
|
+
"type": "repo-picker",
|
|
41
|
+
"provider": "github",
|
|
42
|
+
"multiple": true,
|
|
43
|
+
"label": "Repositories",
|
|
44
|
+
"help": "Repositories this automation may work on.",
|
|
45
|
+
"required": true
|
|
46
|
+
},
|
|
47
|
+
"githubTokenSecret": {
|
|
48
|
+
"type": "text",
|
|
49
|
+
"label": "GitHub token secret",
|
|
50
|
+
"help": "Name of a saved secret allowed by the selected agent profile. Enter its name, not its value.",
|
|
51
|
+
"default": "GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
52
|
+
"required": true
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"bundle": {
|
|
57
|
+
"version": "1.1.0",
|
|
58
|
+
"entrypoint": "python3 worker.py",
|
|
59
|
+
"timeout": 300,
|
|
60
|
+
"files": {
|
|
61
|
+
"worker.py": "skills/github-issue-triage/scripts/worker.py",
|
|
62
|
+
"agent_conversation.py": "skills/github/scripts/agent_conversation.py",
|
|
63
|
+
"github_client.py": "skills/github/scripts/github_client.py"
|
|
64
|
+
},
|
|
65
|
+
"config": {
|
|
66
|
+
"repos": "{{form.repositories}}",
|
|
67
|
+
"github_token_secret": "{{form.githubTokenSecret}}"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"message": "Select an agent profile and configure this scheduled automation in the conversation."
|
|
71
|
+
},
|
|
72
|
+
"popularityRank": 80
|
|
73
|
+
}
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "github-pr-reviewer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"name": "GitHub code review",
|
|
5
5
|
"category": "Code review",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "Review labeled pull-request heads, publish readable findings, and record exact-head test and review decisions.",
|
|
7
7
|
"requires": {
|
|
8
|
-
"integrations": {
|
|
9
|
-
"github": {
|
|
10
|
-
"message": "Used to read pull requests and post review comments."
|
|
11
|
-
}
|
|
12
|
-
},
|
|
8
|
+
"integrations": {},
|
|
13
9
|
"features": [
|
|
14
|
-
"customTarball"
|
|
10
|
+
"customTarball",
|
|
11
|
+
"agentProfiles"
|
|
15
12
|
]
|
|
16
13
|
},
|
|
17
14
|
"popularityRank": 100,
|
|
18
15
|
"estimatedSetupMinutes": 4,
|
|
19
|
-
"exampleImplementation": "
|
|
16
|
+
"exampleImplementation": "A scheduled scanner selects every labeled PR head and submits an idempotent subject turn. The profile-backed agent clones that exact head in its runtime, reuses the established review workflow, runs appropriate tests, publishes a readable native review, and records exact-head review and test statuses.",
|
|
20
17
|
"impact": {
|
|
21
18
|
"basis": "completed-runs",
|
|
22
19
|
"one": "1 PR review sweep completed",
|
|
@@ -84,22 +81,33 @@
|
|
|
84
81
|
"label": "Friendly"
|
|
85
82
|
}
|
|
86
83
|
]
|
|
84
|
+
},
|
|
85
|
+
"githubTokenSecret": {
|
|
86
|
+
"type": "text",
|
|
87
|
+
"label": "GitHub token secret",
|
|
88
|
+
"help": "Name of a saved Agent Server secret. Include it in the selected profile so the delegated agent can use GitHub.",
|
|
89
|
+
"default": "GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
90
|
+
"required": true
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
93
|
},
|
|
90
94
|
"bundle": {
|
|
91
|
-
"version": "1.
|
|
92
|
-
"entrypoint": "python3
|
|
93
|
-
"timeout":
|
|
95
|
+
"version": "1.1.0",
|
|
96
|
+
"entrypoint": "python3 worker.py",
|
|
97
|
+
"timeout": 300,
|
|
94
98
|
"files": {
|
|
95
|
-
"main.py": "skills/github-pr-reviewer/scripts/main.py"
|
|
99
|
+
"main.py": "skills/github-pr-reviewer/scripts/main.py",
|
|
100
|
+
"agent_conversation.py": "skills/github/scripts/agent_conversation.py",
|
|
101
|
+
"github_client.py": "skills/github/scripts/github_client.py",
|
|
102
|
+
"worker.py": "skills/github-pr-reviewer/scripts/worker.py"
|
|
96
103
|
},
|
|
97
104
|
"config": {
|
|
98
105
|
"repos": "{{form.repositories}}",
|
|
99
106
|
"trigger_label": "{{form.triggerLabel}}",
|
|
100
|
-
"review_tone": "{{form.reviewTone}}"
|
|
107
|
+
"review_tone": "{{form.reviewTone}}",
|
|
108
|
+
"github_token_secret": "{{form.githubTokenSecret}}"
|
|
101
109
|
}
|
|
102
110
|
},
|
|
103
|
-
"message": "
|
|
111
|
+
"message": "Configure the repositories, review label, tone, credential name, agent profile, and schedule."
|
|
104
112
|
}
|
|
105
113
|
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "gitlab-issue-to-mr",
|
|
3
|
+
"name": "GitLab issue to MR",
|
|
4
|
+
"category": "Software development",
|
|
5
|
+
"description": "Watch for a configurable label on GitLab issues, implement the issue in a clone of the default branch, and open a merge request for each label event.",
|
|
6
|
+
"requires": {
|
|
7
|
+
"integrations": {
|
|
8
|
+
"gitlab": {
|
|
9
|
+
"message": "Used to read labelled issues, push the branch, and open the merge request."
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"features": [
|
|
13
|
+
"customTarball"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"popularityRank": 88,
|
|
17
|
+
"estimatedSetupMinutes": 4,
|
|
18
|
+
"exampleImplementation": "Trigger: cron polling for open GitLab issues with a configured label such as openhands\nRequired secret: GITLAB_TOKEN, a personal or project access token with the api scope and at least the Developer role\n\n1. Read the projects, trigger label, branch prefix, merge request mode, GitLab API URL, and polling schedule from setup.\n2. Poll each project independently, with its own state, so issue IIDs never collide.\n3. List open labelled issues and find the latest matching GitLab label resource event for each.\n4. Deduplicate on the label event ID so every label application queues exactly one attempt.\n5. Clone the default branch into a directory of its own, create the working branch, and start an OpenHands conversation with that directory as its workspace. The clone carries no credential and the agent is handed no secrets, because the prompt is built from an issue body that anyone can write.\n6. Comment on the issue with the branch and the conversation link.\n7. Once the conversation has stopped, commit whatever the agent left, push the branch, open a merge request titled after the issue and prefixed with Draft:, and comment the link on the issue. An agent that made no changes gets its answer posted instead.\n8. Remove the clone once the conversation has stopped, so nothing accumulates between runs.",
|
|
19
|
+
"impact": {
|
|
20
|
+
"basis": "completed-runs",
|
|
21
|
+
"one": "1 issue sweep completed",
|
|
22
|
+
"other": "{{count}} issue sweeps completed"
|
|
23
|
+
},
|
|
24
|
+
"setup": {
|
|
25
|
+
"version": "1.0",
|
|
26
|
+
"mode": "direct",
|
|
27
|
+
"form": {
|
|
28
|
+
"triggers": {
|
|
29
|
+
"cron": {
|
|
30
|
+
"schedule": {
|
|
31
|
+
"type": "cron",
|
|
32
|
+
"label": "Check frequency",
|
|
33
|
+
"help": "How often to look for newly labelled issues.",
|
|
34
|
+
"default": "*/15 * * * *",
|
|
35
|
+
"required": true
|
|
36
|
+
},
|
|
37
|
+
"timezone": {
|
|
38
|
+
"type": "timezone",
|
|
39
|
+
"label": "Timezone",
|
|
40
|
+
"help": "Timezone the schedule is interpreted in.",
|
|
41
|
+
"default": "UTC",
|
|
42
|
+
"required": true
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"args": {
|
|
47
|
+
"projects": {
|
|
48
|
+
"type": "repo-picker",
|
|
49
|
+
"label": "Projects",
|
|
50
|
+
"help": "The GitLab projects whose labelled issues are implemented. Each is polled independently and keeps its own state, so issue numbers never collide between them.",
|
|
51
|
+
"provider": "gitlab",
|
|
52
|
+
"multiple": true,
|
|
53
|
+
"required": true
|
|
54
|
+
},
|
|
55
|
+
"triggerLabel": {
|
|
56
|
+
"type": "text",
|
|
57
|
+
"label": "Trigger label",
|
|
58
|
+
"help": "Only issues carrying this label are worked on.",
|
|
59
|
+
"default": "openhands",
|
|
60
|
+
"required": true,
|
|
61
|
+
"constraints": {
|
|
62
|
+
"minLength": 1,
|
|
63
|
+
"maxLength": 50
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"branchPrefix": {
|
|
67
|
+
"type": "text",
|
|
68
|
+
"label": "Branch prefix",
|
|
69
|
+
"help": "Branches are named after this prefix and the issue number, such as openhands/issue-42.",
|
|
70
|
+
"default": "openhands/issue",
|
|
71
|
+
"required": true,
|
|
72
|
+
"constraints": {
|
|
73
|
+
"minLength": 1,
|
|
74
|
+
"maxLength": 50
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"mergeRequestMode": {
|
|
78
|
+
"type": "select",
|
|
79
|
+
"label": "Merge request mode",
|
|
80
|
+
"help": "Whether the merge request is opened as a draft or ready for review. GitLab marks a draft by prefixing its title with Draft:.",
|
|
81
|
+
"default": "draft",
|
|
82
|
+
"required": true,
|
|
83
|
+
"options": [
|
|
84
|
+
{
|
|
85
|
+
"value": "draft",
|
|
86
|
+
"label": "Draft"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"value": "ready",
|
|
90
|
+
"label": "Ready for review"
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
},
|
|
94
|
+
"gitlabApiUrl": {
|
|
95
|
+
"type": "text",
|
|
96
|
+
"label": "GitLab API URL",
|
|
97
|
+
"help": "The API root of the GitLab instance. Change it for a self-managed instance, such as https://gitlab.example.com/api/v4.",
|
|
98
|
+
"default": "https://gitlab.com/api/v4",
|
|
99
|
+
"required": true,
|
|
100
|
+
"constraints": {
|
|
101
|
+
"minLength": 1,
|
|
102
|
+
"maxLength": 200
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"bundle": {
|
|
108
|
+
"version": "1.0.0",
|
|
109
|
+
"entrypoint": "python3 main.py",
|
|
110
|
+
"timeout": 900,
|
|
111
|
+
"files": {
|
|
112
|
+
"main.py": "skills/gitlab-issue-to-mr/scripts/main.py"
|
|
113
|
+
},
|
|
114
|
+
"config": {
|
|
115
|
+
"projects": "{{form.projects}}",
|
|
116
|
+
"trigger_label": "{{form.triggerLabel}}",
|
|
117
|
+
"branch_prefix": "{{form.branchPrefix}}",
|
|
118
|
+
"merge_request_mode": "{{form.mergeRequestMode}}",
|
|
119
|
+
"gitlab_api_url": "{{form.gitlabApiUrl}}"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"message": "This deployment cannot run the scheduled issue-to-MR automation directly. Set it up in this conversation instead: confirm the GitLab projects to watch, the trigger label, the branch prefix, whether merge requests open as drafts, the GitLab API URL, and the polling schedule, then create the automation."
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -10,17 +10,20 @@ import entry4 from "./catalog/slack-standup-digest/manifest.json" with { type: "
|
|
|
10
10
|
import entry5 from "./catalog/slack-channel-monitor/manifest.json" with { type: "json" };
|
|
11
11
|
import entry6 from "./catalog/linear-triage-assistant/manifest.json" with { type: "json" };
|
|
12
12
|
import entry7 from "./catalog/linear-issue-to-github-pr/manifest.json" with { type: "json" };
|
|
13
|
-
import entry8 from "./catalog/
|
|
14
|
-
import entry9 from "./catalog/linear-issue-to-
|
|
15
|
-
import entry10 from "./catalog/
|
|
16
|
-
import entry11 from "./catalog/
|
|
17
|
-
import entry12 from "./catalog/
|
|
18
|
-
import entry13 from "./catalog/
|
|
19
|
-
import entry14 from "./catalog/
|
|
20
|
-
import entry15 from "./catalog/
|
|
21
|
-
import entry16 from "./catalog/
|
|
22
|
-
import entry17 from "./catalog/
|
|
23
|
-
import entry18 from "./catalog/
|
|
13
|
+
import entry8 from "./catalog/gitlab-issue-to-mr/manifest.json" with { type: "json" };
|
|
14
|
+
import entry9 from "./catalog/linear-issue-to-gitlab-mr/manifest.json" with { type: "json" };
|
|
15
|
+
import entry10 from "./catalog/linear-issue-to-bitbucket-pr/manifest.json" with { type: "json" };
|
|
16
|
+
import entry11 from "./catalog/jira-issue-to-pr/manifest.json" with { type: "json" };
|
|
17
|
+
import entry12 from "./catalog/qa-changes/manifest.json" with { type: "json" };
|
|
18
|
+
import entry13 from "./catalog/jira-issue-to-gitlab-mr/manifest.json" with { type: "json" };
|
|
19
|
+
import entry14 from "./catalog/research-brief-writer/manifest.json" with { type: "json" };
|
|
20
|
+
import entry15 from "./catalog/jira-issue-to-bitbucket-pr/manifest.json" with { type: "json" };
|
|
21
|
+
import entry16 from "./catalog/github-agents-md-maintainer/manifest.json" with { type: "json" };
|
|
22
|
+
import entry17 from "./catalog/github-delivery-watchdog/manifest.json" with { type: "json" };
|
|
23
|
+
import entry18 from "./catalog/github-issue-triage/manifest.json" with { type: "json" };
|
|
24
|
+
import entry19 from "./catalog/upstream-fork-sync/manifest.json" with { type: "json" };
|
|
25
|
+
import entry20 from "./catalog/incident-retrospective-drafter/manifest.json" with { type: "json" };
|
|
26
|
+
import entry21 from "./catalog/news-digest/manifest.json" with { type: "json" };
|
|
24
27
|
|
|
25
28
|
export const AUTOMATION_CATALOG_ENTRIES = [
|
|
26
29
|
entry0,
|
|
@@ -42,4 +45,7 @@ export const AUTOMATION_CATALOG_ENTRIES = [
|
|
|
42
45
|
entry16,
|
|
43
46
|
entry17,
|
|
44
47
|
entry18,
|
|
48
|
+
entry19,
|
|
49
|
+
entry20,
|
|
50
|
+
entry21,
|
|
45
51
|
];
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "reportportal",
|
|
3
|
+
"name": "ReportPortal",
|
|
4
|
+
"description": "Query test launches, test items, history, and analysis from your ReportPortal test automation dashboard.",
|
|
5
|
+
"categories": [
|
|
6
|
+
"Engineering",
|
|
7
|
+
"Analytics"
|
|
8
|
+
],
|
|
9
|
+
"appUrl": "https://reportportal.io",
|
|
10
|
+
"docsUrl": "https://reportportal.io/docs/external-integrations/MCPServer/",
|
|
11
|
+
"notes": "Uses ReportPortal's official MCP Server, run locally as a Docker container in the default stdio mode. ReportPortal is self-hosted, so there is no public MCP endpoint; the container connects to your own instance. Provide your ReportPortal host URL and an API token from your ReportPortal Profile page.",
|
|
12
|
+
"installHint": "RP_HOST (the URL of your ReportPortal instance) and RP_API_TOKEN (from your ReportPortal Profile page) are required. RP_PROJECT (a default project name) is optional. Requires a container runtime such as Docker.",
|
|
13
|
+
"connectionOptions": [
|
|
14
|
+
{
|
|
15
|
+
"id": "api",
|
|
16
|
+
"provider": "mcp",
|
|
17
|
+
"transport": {
|
|
18
|
+
"kind": "stdio",
|
|
19
|
+
"serverName": "reportportal",
|
|
20
|
+
"command": "docker",
|
|
21
|
+
"args": [
|
|
22
|
+
"run",
|
|
23
|
+
"--init",
|
|
24
|
+
"--pull=always",
|
|
25
|
+
"-i",
|
|
26
|
+
"--rm",
|
|
27
|
+
"-e",
|
|
28
|
+
"RP_API_TOKEN",
|
|
29
|
+
"-e",
|
|
30
|
+
"RP_HOST",
|
|
31
|
+
"-e",
|
|
32
|
+
"RP_PROJECT",
|
|
33
|
+
"reportportal/mcp-server"
|
|
34
|
+
],
|
|
35
|
+
"envFields": [
|
|
36
|
+
{
|
|
37
|
+
"key": "RP_API_TOKEN",
|
|
38
|
+
"label": "ReportPortal API token",
|
|
39
|
+
"type": "password",
|
|
40
|
+
"required": true,
|
|
41
|
+
"helperText": "API token generated on your ReportPortal Profile page.",
|
|
42
|
+
"helperLink": "https://reportportal.io/docs/external-integrations/MCPServer/"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"key": "RP_HOST",
|
|
46
|
+
"label": "ReportPortal host URL",
|
|
47
|
+
"type": "text",
|
|
48
|
+
"required": true,
|
|
49
|
+
"placeholder": "https://your-reportportal-instance.com",
|
|
50
|
+
"helperText": "The base URL of your ReportPortal instance."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"key": "RP_PROJECT",
|
|
54
|
+
"label": "Default project name",
|
|
55
|
+
"type": "text",
|
|
56
|
+
"required": false,
|
|
57
|
+
"placeholder": "my-project",
|
|
58
|
+
"helperText": "Optional default ReportPortal project name to use for requests."
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"auth": {
|
|
63
|
+
"strategy": "api_key"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"iconBg": "#00B4D5",
|
|
68
|
+
"keywords": [
|
|
69
|
+
"test reporting",
|
|
70
|
+
"test automation",
|
|
71
|
+
"qa",
|
|
72
|
+
"launches",
|
|
73
|
+
"test analytics",
|
|
74
|
+
"quality gate"
|
|
75
|
+
]
|
|
76
|
+
}
|
|
@@ -75,10 +75,11 @@ import entry69 from "./catalog/obsidian.json" with { type: "json" };
|
|
|
75
75
|
import entry70 from "./catalog/paypal.json" with { type: "json" };
|
|
76
76
|
import entry71 from "./catalog/playwright.json" with { type: "json" };
|
|
77
77
|
import entry72 from "./catalog/redis.json" with { type: "json" };
|
|
78
|
-
import entry73 from "./catalog/
|
|
79
|
-
import entry74 from "./catalog/
|
|
80
|
-
import entry75 from "./catalog/
|
|
81
|
-
import entry76 from "./catalog/
|
|
78
|
+
import entry73 from "./catalog/reportportal.json" with { type: "json" };
|
|
79
|
+
import entry74 from "./catalog/resend.json" with { type: "json" };
|
|
80
|
+
import entry75 from "./catalog/sequential-thinking.json" with { type: "json" };
|
|
81
|
+
import entry76 from "./catalog/superhuman-mail.json" with { type: "json" };
|
|
82
|
+
import entry77 from "./catalog/time.json" with { type: "json" };
|
|
82
83
|
|
|
83
84
|
export const INTEGRATION_CATALOG_ENTRIES = [
|
|
84
85
|
entry0,
|
|
@@ -158,4 +159,5 @@ export const INTEGRATION_CATALOG_ENTRIES = [
|
|
|
158
159
|
entry74,
|
|
159
160
|
entry75,
|
|
160
161
|
entry76,
|
|
162
|
+
entry77,
|
|
161
163
|
];
|
|
@@ -721,6 +721,19 @@
|
|
|
721
721
|
"integration"
|
|
722
722
|
]
|
|
723
723
|
},
|
|
724
|
+
{
|
|
725
|
+
"name": "gitlab-issue-to-mr",
|
|
726
|
+
"source": "./skills/gitlab-issue-to-mr",
|
|
727
|
+
"description": "Create an automation that implements GitLab issues when a configurable trigger label is applied. Clones the default branch for the agent, then commits, pushes, and opens the merge request itself - the agent is handed no push credential.",
|
|
728
|
+
"category": "automations",
|
|
729
|
+
"keywords": [
|
|
730
|
+
"gitlab",
|
|
731
|
+
"issue",
|
|
732
|
+
"merge-request",
|
|
733
|
+
"automation",
|
|
734
|
+
"integration"
|
|
735
|
+
]
|
|
736
|
+
},
|
|
724
737
|
{
|
|
725
738
|
"name": "incident-retrospective",
|
|
726
739
|
"source": "./skills/incident-retrospective",
|
|
@@ -834,6 +847,35 @@
|
|
|
834
847
|
"pull-request",
|
|
835
848
|
"automation"
|
|
836
849
|
]
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
"name": "openhands-enterprise-troubleshooting",
|
|
853
|
+
"source": "./skills/openhands-enterprise-troubleshooting",
|
|
854
|
+
"description": "Diagnose and resolve common issues on OpenHands Enterprise self-hosted installations. Covers sandbox startup failures, auth issues, certificate errors, LLM connectivity, Keycloak login, Replicated Admin Console access, upgrade failures, and resource exhaustion. Includes support bundle generation, offline bundle analysis with a bundled triage script, and escalation handoffs.",
|
|
855
|
+
"category": "integrations",
|
|
856
|
+
"keywords": [
|
|
857
|
+
"openhands",
|
|
858
|
+
"enterprise",
|
|
859
|
+
"troubleshooting",
|
|
860
|
+
"debugging",
|
|
861
|
+
"replicated",
|
|
862
|
+
"support",
|
|
863
|
+
"diagnostics",
|
|
864
|
+
"support-bundle",
|
|
865
|
+
"kubernetes"
|
|
866
|
+
]
|
|
867
|
+
},
|
|
868
|
+
{
|
|
869
|
+
"name": "github-issue-triage",
|
|
870
|
+
"source": "./skills/github-issue-triage",
|
|
871
|
+
"description": "Prioritize open issues and establish acceptance criteria before marking them ready for development.",
|
|
872
|
+
"category": "automations"
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
"name": "github-delivery-watchdog",
|
|
876
|
+
"source": "./skills/github-delivery-watchdog",
|
|
877
|
+
"description": "Periodically check pull requests and merge only current heads with independent review, tests, and passing CI.",
|
|
878
|
+
"category": "automations"
|
|
837
879
|
}
|
|
838
880
|
]
|
|
839
881
|
}
|
package/package.json
CHANGED