@openhands/extensions 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/custom-codereview-guide.md +25 -0
- package/.github/pull_request_template.md +38 -0
- package/.github/release.yml +14 -0
- package/.github/workflows/check-extensions.yml +72 -0
- package/.github/workflows/npm-publish.yml +89 -0
- package/.github/workflows/pr.yml +30 -0
- package/.github/workflows/release.yml +24 -0
- package/.github/workflows/tests.yml +25 -0
- package/.github/workflows/vulnerability-scan.yml +87 -0
- package/.release-please-manifest.json +3 -0
- package/AGENTS.md +132 -0
- package/README.md +10 -0
- package/analysis_results.md +162 -0
- package/marketplaces/large-codebase.json +66 -0
- package/marketplaces/openhands-extensions.json +682 -0
- package/package.json +4 -10
- package/plugins/README.md +30 -0
- package/plugins/city-weather/.plugin/plugin.json +13 -0
- package/plugins/city-weather/README.md +145 -0
- package/plugins/city-weather/commands/now.md +56 -0
- package/plugins/cobol-modernization/.plugin/plugin.json +19 -0
- package/plugins/cobol-modernization/README.md +201 -0
- package/plugins/cobol-modernization/references/troubleshooting.md +18 -0
- package/plugins/cobol-modernization/skills/build-setup/SKILL.md +78 -0
- package/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +32 -0
- package/plugins/cobol-modernization/skills/cobol-modernization-overview/SKILL.md +113 -0
- package/plugins/cobol-modernization/skills/mainfraime-removal/SKILL.md +62 -0
- package/plugins/cobol-modernization/skills/mainfraime-removal/references/cics-transformation-examples.md +45 -0
- package/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +78 -0
- package/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +59 -0
- package/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +58 -0
- package/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +19 -0
- package/plugins/issue-duplicate-checker/.plugin/plugin.json +13 -0
- package/plugins/issue-duplicate-checker/README.md +51 -0
- package/plugins/issue-duplicate-checker/action.yml +349 -0
- package/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +569 -0
- package/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +681 -0
- package/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.js +220 -0
- package/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.js +27 -0
- package/plugins/magic-test/.plugin/plugin.json +13 -0
- package/plugins/magic-test/skills/magic-word/SKILL.md +33 -0
- package/plugins/migration-scoring/.plugin/plugin.json +19 -0
- package/plugins/migration-scoring/README.md +244 -0
- package/plugins/migration-scoring/skills/migration-mapping/SKILL.md +72 -0
- package/plugins/migration-scoring/skills/migration-report/SKILL.md +118 -0
- package/plugins/migration-scoring/skills/migration-scoring-overview/SKILL.md +126 -0
- package/plugins/migration-scoring/skills/score-quality/SKILL.md +54 -0
- package/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +30 -0
- package/plugins/migration-scoring/skills/score-style/SKILL.md +106 -0
- package/plugins/onboarding/.plugin/plugin.json +20 -0
- package/plugins/onboarding/README.md +30 -0
- package/plugins/onboarding/references/criteria.md +144 -0
- package/plugins/onboarding/skills/agent-readiness-report/README.md +23 -0
- package/plugins/onboarding/skills/agent-readiness-report/SKILL.md +122 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +88 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +114 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +133 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +113 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +127 -0
- package/plugins/onboarding/skills/improve-agent-readiness/README.md +19 -0
- package/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +167 -0
- package/plugins/onboarding/skills/setup-agents-md/README.md +15 -0
- package/plugins/onboarding/skills/setup-agents-md/SKILL.md +150 -0
- package/plugins/onboarding/skills/setup-openhands/README.md +20 -0
- package/plugins/onboarding/skills/setup-openhands/SKILL.md +56 -0
- package/plugins/onboarding/skills/setup-pr-review/README.md +23 -0
- package/plugins/onboarding/skills/setup-pr-review/SKILL.md +72 -0
- package/plugins/openhands/.plugin/plugin.json +13 -0
- package/plugins/openhands/README.md +52 -0
- package/plugins/openhands/SKILL.md +61 -0
- package/plugins/openhands/commands/create.md +55 -0
- package/plugins/openhands/commands/openhands-cloud.md +8 -0
- package/plugins/openhands/scripts/run.sh +69 -0
- package/plugins/pr-review/.plugin/plugin.json +13 -0
- package/plugins/pr-review/README.md +393 -0
- package/plugins/pr-review/action.yml +298 -0
- package/plugins/pr-review/scripts/agent_script.py +1282 -0
- package/plugins/pr-review/scripts/evaluate_review.py +655 -0
- package/plugins/pr-review/scripts/prompt.py +260 -0
- package/plugins/pr-review/workflows/pr-review-by-openhands.yml +51 -0
- package/plugins/pr-review/workflows/pr-review-evaluation.yml +85 -0
- package/plugins/qa-changes/.plugin/plugin.json +11 -0
- package/plugins/qa-changes/README.md +185 -0
- package/plugins/qa-changes/action.yml +181 -0
- package/plugins/qa-changes/scripts/agent_script.py +406 -0
- package/plugins/qa-changes/scripts/evaluate_qa_changes.py +385 -0
- package/plugins/qa-changes/scripts/prompt.py +174 -0
- package/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +50 -0
- package/plugins/qa-changes/workflows/qa-changes-evaluation.yml +85 -0
- package/plugins/release-notes/.plugin/plugin.json +19 -0
- package/plugins/release-notes/README.md +283 -0
- package/plugins/release-notes/SKILL.md +83 -0
- package/plugins/release-notes/action.yml +117 -0
- package/plugins/release-notes/commands/release-notes.md +8 -0
- package/plugins/release-notes/scripts/agent_script.py +292 -0
- package/plugins/release-notes/scripts/generate_release_notes.py +733 -0
- package/plugins/release-notes/scripts/prompt.py +90 -0
- package/plugins/release-notes/scripts/validate_release_notes.py +328 -0
- package/plugins/release-notes/workflows/release-notes.yml +76 -0
- package/plugins/vulnerability-remediation/.plugin/plugin.json +19 -0
- package/plugins/vulnerability-remediation/README.md +217 -0
- package/plugins/vulnerability-remediation/action.yml +187 -0
- package/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +561 -0
- package/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +87 -0
- package/pyproject.toml +12 -0
- package/release-please-config.json +16 -0
- package/scripts/sync_extensions.py +494 -0
- package/scripts/sync_openhands_sdk_skill.py +264 -0
- package/skills/README.md +159 -0
- package/skills/add-javadoc/.plugin/plugin.json +18 -0
- package/skills/add-javadoc/README.md +40 -0
- package/skills/add-javadoc/SKILL.md +35 -0
- package/skills/add-javadoc/references/example.md +32 -0
- package/skills/add-skill/.plugin/plugin.json +18 -0
- package/skills/add-skill/README.md +67 -0
- package/skills/add-skill/SKILL.md +47 -0
- package/skills/add-skill/scripts/fetch_skill.py +259 -0
- package/skills/agent-creator/.plugin/plugin.json +20 -0
- package/skills/agent-creator/README.md +104 -0
- package/skills/agent-creator/SKILL.md +190 -0
- package/skills/agent-creator/commands/agent-creator.md +8 -0
- package/skills/agent-creator/references/fallback.md +117 -0
- package/skills/agent-memory/.plugin/plugin.json +18 -0
- package/skills/agent-memory/README.md +35 -0
- package/skills/agent-memory/SKILL.md +30 -0
- package/skills/agent-memory/commands/remember.md +8 -0
- package/skills/agent-sdk-builder/.plugin/plugin.json +18 -0
- package/skills/agent-sdk-builder/README.md +40 -0
- package/skills/agent-sdk-builder/SKILL.md +37 -0
- package/skills/agent-sdk-builder/commands/agent-builder.md +8 -0
- package/skills/azure-devops/.plugin/plugin.json +18 -0
- package/skills/azure-devops/README.md +55 -0
- package/skills/azure-devops/SKILL.md +50 -0
- package/skills/bitbucket/.plugin/plugin.json +17 -0
- package/skills/bitbucket/README.md +50 -0
- package/skills/bitbucket/SKILL.md +45 -0
- package/skills/code-review/.plugin/plugin.json +19 -0
- package/skills/code-review/README.md +18 -0
- package/skills/code-review/SKILL.md +208 -0
- package/skills/code-review/commands/codereview-roasted.md +8 -0
- package/skills/code-review/commands/codereview.md +8 -0
- package/skills/code-review/references/risk-evaluation.md +41 -0
- package/skills/code-review/references/supply-chain-security.md +31 -0
- package/skills/code-simplifier/.plugin/plugin.json +21 -0
- package/skills/code-simplifier/README.md +30 -0
- package/skills/code-simplifier/SKILL.md +91 -0
- package/skills/code-simplifier/commands/simplify.md +8 -0
- package/skills/code-simplifier/references/code-quality-review.md +86 -0
- package/skills/code-simplifier/references/code-reuse-review.md +63 -0
- package/skills/code-simplifier/references/efficiency-review.md +81 -0
- package/skills/datadog/.plugin/plugin.json +19 -0
- package/skills/datadog/README.md +100 -0
- package/skills/datadog/SKILL.md +95 -0
- package/skills/deno/.plugin/plugin.json +18 -0
- package/skills/deno/README.md +5 -0
- package/skills/deno/SKILL.md +99 -0
- package/skills/deno/references/README.md +6 -0
- package/skills/discord/.plugin/plugin.json +18 -0
- package/skills/discord/README.md +31 -0
- package/skills/discord/SKILL.md +109 -0
- package/skills/discord/__init__.py +0 -0
- package/skills/discord/references/REFERENCE.md +78 -0
- package/skills/discord/scripts/__init__.py +0 -0
- package/skills/discord/scripts/_http.py +127 -0
- package/skills/discord/scripts/post_webhook.py +106 -0
- package/skills/discord/scripts/send_message.py +102 -0
- package/skills/docker/.plugin/plugin.json +17 -0
- package/skills/docker/README.md +34 -0
- package/skills/docker/SKILL.md +29 -0
- package/skills/evidence-based-citations/.plugin/plugin.json +20 -0
- package/skills/evidence-based-citations/README.md +31 -0
- package/skills/evidence-based-citations/SKILL.md +59 -0
- package/skills/flarglebargle/.plugin/plugin.json +16 -0
- package/skills/flarglebargle/README.md +14 -0
- package/skills/flarglebargle/SKILL.md +9 -0
- package/skills/frontend-design/.plugin/plugin.json +21 -0
- package/skills/frontend-design/LICENSE.txt +177 -0
- package/skills/frontend-design/README.md +42 -0
- package/skills/frontend-design/SKILL.md +42 -0
- package/skills/github/.plugin/plugin.json +19 -0
- package/skills/github/README.md +42 -0
- package/skills/github/SKILL.md +106 -0
- package/skills/github-pr-review/.plugin/plugin.json +18 -0
- package/skills/github-pr-review/README.md +145 -0
- package/skills/github-pr-review/SKILL.md +148 -0
- package/skills/github-pr-review/commands/github-pr-review.md +8 -0
- package/skills/github-pr-reviewer/.plugin/plugin.json +20 -0
- package/skills/github-pr-reviewer/README.md +34 -0
- package/skills/github-pr-reviewer/SKILL.md +89 -0
- package/skills/github-pr-reviewer/commands/pr-reviewer:setup.md +8 -0
- package/skills/github-repo-monitor/.plugin/plugin.json +22 -0
- package/skills/github-repo-monitor/README.md +70 -0
- package/skills/github-repo-monitor/SKILL.md +316 -0
- package/skills/github-repo-monitor/commands/github-monitor:poll.md +8 -0
- package/skills/github-repo-monitor/references/github-api.md +241 -0
- package/skills/github-repo-monitor/references/state-schema.md +160 -0
- package/skills/github-repo-monitor/scripts/main.py +915 -0
- package/skills/github-repo-monitor/tests/test_main.py +400 -0
- package/skills/gitlab/.plugin/plugin.json +17 -0
- package/skills/gitlab/README.md +37 -0
- package/skills/gitlab/SKILL.md +32 -0
- package/skills/incident-retrospective/.plugin/plugin.json +21 -0
- package/skills/incident-retrospective/README.md +34 -0
- package/skills/incident-retrospective/SKILL.md +98 -0
- package/skills/incident-retrospective/commands/incident-retro:setup.md +8 -0
- package/skills/iterate/.plugin/plugin.json +13 -0
- package/skills/iterate/README.md +25 -0
- package/skills/iterate/SKILL.md +399 -0
- package/skills/iterate/commands/babysit.md +8 -0
- package/skills/iterate/commands/iterate.md +8 -0
- package/skills/iterate/commands/verify.md +8 -0
- package/skills/iterate/references/heuristics.md +58 -0
- package/skills/iterate/references/verification.md +96 -0
- package/skills/jupyter/.plugin/plugin.json +18 -0
- package/skills/jupyter/README.md +55 -0
- package/skills/jupyter/SKILL.md +50 -0
- package/skills/kubernetes/.plugin/plugin.json +18 -0
- package/skills/kubernetes/README.md +53 -0
- package/skills/kubernetes/SKILL.md +48 -0
- package/skills/learn-from-code-review/.plugin/plugin.json +19 -0
- package/skills/learn-from-code-review/README.md +64 -0
- package/skills/learn-from-code-review/SKILL.md +186 -0
- package/skills/learn-from-code-review/commands/learn-from-reviews.md +8 -0
- package/skills/linear/.plugin/plugin.json +19 -0
- package/skills/linear/README.md +58 -0
- package/skills/linear/SKILL.md +213 -0
- package/skills/linear-triage/.plugin/plugin.json +21 -0
- package/skills/linear-triage/README.md +34 -0
- package/skills/linear-triage/SKILL.md +91 -0
- package/skills/linear-triage/commands/linear-triage:setup.md +8 -0
- package/skills/notion/.plugin/plugin.json +17 -0
- package/skills/notion/README.md +114 -0
- package/skills/notion/SKILL.md +109 -0
- package/skills/npm/.plugin/plugin.json +17 -0
- package/skills/npm/README.md +14 -0
- package/skills/npm/SKILL.md +9 -0
- package/skills/openhands-api/.plugin/plugin.json +22 -0
- package/skills/openhands-api/README.md +48 -0
- package/skills/openhands-api/SKILL.md +399 -0
- package/skills/openhands-api/references/README.md +33 -0
- package/skills/openhands-api/references/TROUBLESHOOTING.md +81 -0
- package/skills/openhands-api/references/example_prompt.md +12 -0
- package/skills/openhands-api/scripts/openhands_api.py +606 -0
- package/skills/openhands-api/scripts/openhands_api.ts +252 -0
- package/skills/openhands-automation/.plugin/plugin.json +19 -0
- package/skills/openhands-automation/README.md +89 -0
- package/skills/openhands-automation/SKILL.md +875 -0
- package/skills/openhands-automation/commands/automation:create.md +8 -0
- package/skills/openhands-automation/references/ab-testing.md +185 -0
- package/skills/openhands-automation/references/custom-automation.md +644 -0
- package/skills/openhands-sdk/.plugin/plugin.json +20 -0
- package/skills/openhands-sdk/README.md +22 -0
- package/skills/openhands-sdk/SKILL.md +229 -0
- package/skills/openhands-sdk/commands/sdk.md +8 -0
- package/skills/pdflatex/.plugin/plugin.json +18 -0
- package/skills/pdflatex/README.md +39 -0
- package/skills/pdflatex/SKILL.md +34 -0
- package/skills/prd/.plugin/plugin.json +19 -0
- package/skills/prd/README.md +28 -0
- package/skills/prd/SKILL.md +237 -0
- package/skills/prd/commands/prd.md +8 -0
- package/skills/qa-changes/README.md +18 -0
- package/skills/qa-changes/SKILL.md +229 -0
- package/skills/qa-changes/commands/qa-changes.md +8 -0
- package/skills/release-notes/README.md +24 -0
- package/skills/release-notes/SKILL.md +19 -0
- package/skills/release-notes/commands/release-notes.md +8 -0
- package/skills/research-brief/.plugin/plugin.json +20 -0
- package/skills/research-brief/README.md +34 -0
- package/skills/research-brief/SKILL.md +99 -0
- package/skills/research-brief/commands/research-brief:setup.md +8 -0
- package/skills/security/.plugin/plugin.json +18 -0
- package/skills/security/README.md +38 -0
- package/skills/security/SKILL.md +33 -0
- package/skills/skill-creator/.plugin/plugin.json +17 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/README.md +182 -0
- package/skills/skill-creator/SKILL.md +545 -0
- package/skills/skill-creator/references/output-patterns.md +82 -0
- package/skills/skill-creator/references/workflows.md +28 -0
- package/skills/skill-creator/scripts/init_skill.py +303 -0
- package/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/skills/slack-channel-monitor/.plugin/plugin.json +21 -0
- package/skills/slack-channel-monitor/README.md +91 -0
- package/skills/slack-channel-monitor/SKILL.md +276 -0
- package/skills/slack-channel-monitor/commands/slack-monitor:poll.md +8 -0
- package/skills/slack-channel-monitor/references/slack-api.md +207 -0
- package/skills/slack-channel-monitor/references/state-schema.md +180 -0
- package/skills/slack-channel-monitor/scripts/main.py +962 -0
- package/skills/slack-standup-digest/.plugin/plugin.json +21 -0
- package/skills/slack-standup-digest/README.md +34 -0
- package/skills/slack-standup-digest/SKILL.md +92 -0
- package/skills/slack-standup-digest/commands/standup-digest:setup.md +8 -0
- package/skills/spark-version-upgrade/.plugin/plugin.json +20 -0
- package/skills/spark-version-upgrade/README.md +54 -0
- package/skills/spark-version-upgrade/SKILL.md +233 -0
- package/skills/ssh/.plugin/plugin.json +18 -0
- package/skills/ssh/README.md +140 -0
- package/skills/ssh/SKILL.md +135 -0
- package/skills/swift-linux/.plugin/plugin.json +17 -0
- package/skills/swift-linux/README.md +86 -0
- package/skills/swift-linux/SKILL.md +81 -0
- package/skills/theme-factory/.plugin/plugin.json +19 -0
- package/skills/theme-factory/LICENSE.txt +202 -0
- package/skills/theme-factory/README.md +58 -0
- package/skills/theme-factory/SKILL.md +59 -0
- package/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/theme-factory/themes/desert-rose.md +19 -0
- package/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/theme-factory/themes/golden-hour.md +19 -0
- package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/uv/.plugin/plugin.json +18 -0
- package/skills/uv/README.md +5 -0
- package/skills/uv/SKILL.md +95 -0
- package/skills/uv/references/README.md +5 -0
- package/skills/vercel/.plugin/plugin.json +18 -0
- package/skills/vercel/README.md +108 -0
- package/skills/vercel/SKILL.md +103 -0
- package/tests/test_add_skill_installs_to_agents_dir.py +42 -0
- package/tests/test_catalogs.py +109 -0
- package/tests/test_code_review_risk_evaluation.py +94 -0
- package/tests/test_issue_duplicate_checker.py +240 -0
- package/tests/test_openhands_api_python.py +152 -0
- package/tests/test_plugin_manifest.py +83 -0
- package/tests/test_pr_review_diff_payload.py +202 -0
- package/tests/test_pr_review_feedback.py +263 -0
- package/tests/test_pr_review_prompt.py +152 -0
- package/tests/test_pr_review_review_context.py +253 -0
- package/tests/test_qa_changes.py +232 -0
- package/tests/test_qa_changes_evaluation.py +259 -0
- package/tests/test_release_notes_generator.py +990 -0
- package/tests/test_sdk_loading.py +150 -0
- package/tests/test_skill_plugin_loading.py +149 -0
- package/tests/test_skills_have_readme.py +66 -0
- package/tests/test_sync_extensions.py +292 -0
- package/tests/test_workflow_sync.py +46 -0
- package/utils/analysis/README.md +7 -0
- package/utils/analysis/laminar_signals/README.md +211 -0
- package/utils/analysis/laminar_signals/analyze.py +780 -0
- package/utils/analysis/laminar_signals/templates/default.j2 +49 -0
- package/utils/analysis/laminar_signals/templates/pr_review.j2 +61 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-pr-review
|
|
3
|
+
description: Post PR review comments using the GitHub API with inline comments, suggestions, and priority labels.
|
|
4
|
+
triggers:
|
|
5
|
+
- /github-pr-review
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# GitHub PR Review
|
|
9
|
+
|
|
10
|
+
Post structured code review feedback using the GitHub API with inline comments on specific lines.
|
|
11
|
+
|
|
12
|
+
## Key Rule: One API Call
|
|
13
|
+
|
|
14
|
+
Bundle ALL comments into a **single review API call**. Do not post comments individually.
|
|
15
|
+
|
|
16
|
+
## Posting a Review
|
|
17
|
+
|
|
18
|
+
Use the GitHub CLI (`gh`) with a JSON input file. The `GITHUB_TOKEN` is automatically available.
|
|
19
|
+
|
|
20
|
+
**Important**: Always use `--input` with a JSON file instead of `-F` flags. This avoids shell quoting issues with special characters in comment bodies (quotes, backticks, newlines, etc.) and eliminates the need for complex heredoc scripts.
|
|
21
|
+
|
|
22
|
+
### Step 1: Create a JSON file
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
cat > /tmp/review.json << 'EOF'
|
|
26
|
+
{
|
|
27
|
+
"commit_id": "{commit_sha}",
|
|
28
|
+
"event": "COMMENT",
|
|
29
|
+
"body": "Brief 1-3 sentence summary.",
|
|
30
|
+
"comments": [
|
|
31
|
+
{
|
|
32
|
+
"path": "path/to/file.py",
|
|
33
|
+
"line": 42,
|
|
34
|
+
"side": "RIGHT",
|
|
35
|
+
"body": "🟠 Important: Your comment here."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"path": "another/file.js",
|
|
39
|
+
"line": 15,
|
|
40
|
+
"side": "RIGHT",
|
|
41
|
+
"body": "🟡 Suggestion: Another comment."
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
EOF
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step 2: Post the review
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
gh api -X POST repos/{owner}/{repo}/pulls/{pr_number}/reviews --input /tmp/review.json
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Parameters
|
|
55
|
+
|
|
56
|
+
| Parameter | Description |
|
|
57
|
+
|-----------|-------------|
|
|
58
|
+
| `commit_id` | Commit SHA to comment on (use `git rev-parse HEAD`) |
|
|
59
|
+
| `event` | `COMMENT`, `APPROVE`, or `REQUEST_CHANGES` |
|
|
60
|
+
| `path` | File path as shown in the diff |
|
|
61
|
+
| `line` | Line number in the NEW version (right side of diff) |
|
|
62
|
+
| `side` | `RIGHT` for new/added lines, `LEFT` for deleted lines |
|
|
63
|
+
| `body` | Comment text with priority label |
|
|
64
|
+
|
|
65
|
+
### Multi-Line Comments
|
|
66
|
+
|
|
67
|
+
For comments spanning multiple lines, add `start_line` to specify the range:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"path": "path/to/file.py",
|
|
72
|
+
"start_line": 10,
|
|
73
|
+
"line": 12,
|
|
74
|
+
"side": "RIGHT",
|
|
75
|
+
"body": "🟡 Suggestion: Refactor this block:\n\n```suggestion\nline_one = \"new\"\nline_two = \"code\"\nline_three = \"here\"\n```"
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Important**: The suggestion must have the same number of lines as the range (e.g., lines 10-12 = 3 lines).
|
|
80
|
+
|
|
81
|
+
## Priority Labels
|
|
82
|
+
|
|
83
|
+
Start each comment with a priority label. **Minimize nits** - leave minor style issues to linters.
|
|
84
|
+
|
|
85
|
+
| Label | When to Use |
|
|
86
|
+
|-------|-------------|
|
|
87
|
+
| 🔴 **Critical** | Must fix: security vulnerabilities, bugs, data loss risks |
|
|
88
|
+
| 🟠 **Important** | Should fix: logic errors, performance issues, missing error handling |
|
|
89
|
+
| 🟡 **Suggestion** | Worth considering: significant improvements to clarity or maintainability |
|
|
90
|
+
|
|
91
|
+
**Do NOT post 🟢 Nit or 🟢 Acceptable comments.** If code is fine, simply don't comment on it. Inline comments that say "this looks good" or "acceptable trade-off" are noise — they create review threads that must be resolved without providing actionable value.
|
|
92
|
+
|
|
93
|
+
**Example:**
|
|
94
|
+
```
|
|
95
|
+
🟠 Important: This function doesn't handle None, which could cause an AttributeError.
|
|
96
|
+
|
|
97
|
+
```suggestion
|
|
98
|
+
if user is None:
|
|
99
|
+
raise ValueError("User cannot be None")
|
|
100
|
+
```
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## GitHub Suggestions
|
|
104
|
+
|
|
105
|
+
For small code changes, use the suggestion syntax for one-click apply:
|
|
106
|
+
|
|
107
|
+
~~~
|
|
108
|
+
```suggestion
|
|
109
|
+
improved_code_here()
|
|
110
|
+
```
|
|
111
|
+
~~~
|
|
112
|
+
|
|
113
|
+
Use suggestions for: renaming, typos, small refactors (1-5 lines), type hints, docstrings.
|
|
114
|
+
|
|
115
|
+
Avoid for: large refactors, architectural changes, ambiguous improvements.
|
|
116
|
+
|
|
117
|
+
## Finding Line Numbers
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# From diff header: @@ -old_start,old_count +new_start,new_count @@
|
|
121
|
+
# Count from new_start for added/modified lines
|
|
122
|
+
|
|
123
|
+
grep -n "pattern" filename # Find line number
|
|
124
|
+
head -n 42 filename | tail -1 # Verify line content
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Fallback: curl
|
|
128
|
+
|
|
129
|
+
If `gh` is unavailable, use curl with the JSON file:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
curl -X POST \
|
|
133
|
+
-H "Authorization: token $GITHUB_TOKEN" \
|
|
134
|
+
-H "Accept: application/vnd.github+json" \
|
|
135
|
+
"https://api.github.com/repos/{owner}/{repo}/pulls/{pr_number}/reviews" \
|
|
136
|
+
-d @/tmp/review.json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Summary
|
|
140
|
+
|
|
141
|
+
1. Analyze the code and identify important issues (minimize nits)
|
|
142
|
+
2. Write review data to a JSON file (e.g., `/tmp/review.json`)
|
|
143
|
+
3. Post **ONE** review using `gh api --input /tmp/review.json`
|
|
144
|
+
4. Use priority labels (🔴🟠🟡) on every comment
|
|
145
|
+
5. Do NOT post comments for code that is acceptable — only comment when action is needed
|
|
146
|
+
6. Use suggestion syntax for concrete code changes
|
|
147
|
+
7. Keep the review body brief (details go in inline comments)
|
|
148
|
+
8. If no issues: post a short approval message with no inline comments
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
# auto-generated by sync_extensions.py
|
|
3
|
+
description: Post PR review comments using the GitHub API with inline comments, suggestions, and priority labels.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Read and follow the complete instructions in the SKILL.md file located in this skill's directory.
|
|
7
|
+
|
|
8
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "github-pr-reviewer",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"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.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "OpenHands",
|
|
7
|
+
"email": "contact@all-hands.dev"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/OpenHands/extensions",
|
|
10
|
+
"repository": "https://github.com/OpenHands/extensions",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"github",
|
|
14
|
+
"pull-request",
|
|
15
|
+
"review",
|
|
16
|
+
"code-review",
|
|
17
|
+
"automation",
|
|
18
|
+
"integration"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# GitHub PR Reviewer
|
|
2
|
+
|
|
3
|
+
Create an automation that reviews GitHub pull requests on open or update.
|
|
4
|
+
|
|
5
|
+
## Triggers
|
|
6
|
+
|
|
7
|
+
This skill is activated by keywords:
|
|
8
|
+
|
|
9
|
+
- `review pull requests`
|
|
10
|
+
- `PR review automation`
|
|
11
|
+
- `auto-review PRs`
|
|
12
|
+
|
|
13
|
+
## Features
|
|
14
|
+
|
|
15
|
+
- **Inspects PR diff, changed files, and test coverage**
|
|
16
|
+
- **Posts review with correctness risks, security issues, missing tests**
|
|
17
|
+
- **Supports event-based (webhook) or cron-based (polling) triggers**
|
|
18
|
+
- **Configurable review tone (thorough, concise, friendly)**
|
|
19
|
+
- **Auto-post or draft mode for human approval**
|
|
20
|
+
|
|
21
|
+
## Prerequisites
|
|
22
|
+
|
|
23
|
+
GitHub MCP installed in Settings → MCP
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
Ask OpenHands:
|
|
28
|
+
|
|
29
|
+
> "Set up a PR review automation for my myorg/backend repo that posts
|
|
30
|
+
> concise reviews when PRs are opened"
|
|
31
|
+
|
|
32
|
+
## See Also
|
|
33
|
+
|
|
34
|
+
- [SKILL.md](SKILL.md) — Full setup workflow reference
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: github-pr-reviewer
|
|
3
|
+
description: >
|
|
4
|
+
Create an automation that reviews GitHub pull requests when they are opened
|
|
5
|
+
or updated. Inspects the diff, changed files, tests, and existing discussion
|
|
6
|
+
via GitHub MCP, then posts a concise review highlighting risks, security
|
|
7
|
+
issues, missing tests, and next steps.
|
|
8
|
+
triggers:
|
|
9
|
+
- /pr-reviewer:setup
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# GitHub PR Reviewer Automation
|
|
13
|
+
|
|
14
|
+
Set up a cron or event-triggered automation that reviews GitHub pull requests.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
### Required integration
|
|
21
|
+
|
|
22
|
+
- **GitHub MCP** must be installed in Settings → MCP.
|
|
23
|
+
|
|
24
|
+
### Information to collect
|
|
25
|
+
|
|
26
|
+
Ask the user for:
|
|
27
|
+
|
|
28
|
+
1. **Repositories** — which repos should be watched (e.g. `myorg/backend`, `myorg/frontend`)
|
|
29
|
+
2. **Trigger type** — event-based (reacts to `pull_request.opened` / `pull_request.synchronize`) or cron-based polling
|
|
30
|
+
3. **Review tone** — thorough, concise, or friendly
|
|
31
|
+
4. **Auto-post or draft** — should reviews be posted as GitHub comments automatically, or saved as draft artifacts for human approval first?
|
|
32
|
+
5. **Filters** — any label, branch, or author filters (e.g. skip drafts, only review PRs with `needs-review` label)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Setup Workflow
|
|
37
|
+
|
|
38
|
+
### Step 1 — Verify GitHub MCP access
|
|
39
|
+
|
|
40
|
+
Confirm the GitHub MCP integration is working:
|
|
41
|
+
```
|
|
42
|
+
Use the GitHub MCP to list recent pull requests in one of the target repositories.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If it fails, tell the user to install the GitHub MCP integration first.
|
|
46
|
+
|
|
47
|
+
### Step 2 — Determine trigger type
|
|
48
|
+
|
|
49
|
+
**Event-based (recommended if publicly reachable):**
|
|
50
|
+
Check `<RUNTIME_SERVICES>` for deployment reachability. If the deployment has a public URL, recommend an event trigger on `pull_request.opened` and `pull_request.synchronize`.
|
|
51
|
+
|
|
52
|
+
**Cron-based (local/private deployments):**
|
|
53
|
+
If the deployment is local, set up a cron schedule (e.g. every 5 minutes) that polls for recently updated PRs.
|
|
54
|
+
|
|
55
|
+
### Step 3 — Build the review prompt
|
|
56
|
+
|
|
57
|
+
Construct a prompt for the automation that includes:
|
|
58
|
+
- The user's chosen repositories
|
|
59
|
+
- Review focus areas (correctness, security, tests, maintainability)
|
|
60
|
+
- Review tone preference
|
|
61
|
+
- Whether to auto-post or draft
|
|
62
|
+
|
|
63
|
+
### Step 4 — Create the automation
|
|
64
|
+
|
|
65
|
+
Read the Automation backend URL and auth from `<RUNTIME_SERVICES>`:
|
|
66
|
+
- Use the **Automation backend** `url_from_agent` as `OPENHANDS_HOST`
|
|
67
|
+
- Auth: `X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY`
|
|
68
|
+
|
|
69
|
+
Use the **prompt preset** endpoint:
|
|
70
|
+
```bash
|
|
71
|
+
curl -s -X POST "${OPENHANDS_HOST}/api/automation/v1/preset/prompt" \
|
|
72
|
+
-H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \
|
|
73
|
+
-H "Content-Type: application/json" \
|
|
74
|
+
-d '{
|
|
75
|
+
"name": "GitHub PR Reviewer",
|
|
76
|
+
"prompt": "<constructed review prompt>",
|
|
77
|
+
"trigger": <trigger config from step 2>
|
|
78
|
+
}'
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Step 5 — Confirm
|
|
82
|
+
|
|
83
|
+
Tell the user:
|
|
84
|
+
> ✅ **GitHub PR Reviewer** is running!
|
|
85
|
+
>
|
|
86
|
+
> - Automation ID: `{id}`
|
|
87
|
+
> - Repositories: `{repo list}`
|
|
88
|
+
> - Trigger: `{trigger description}`
|
|
89
|
+
> - Review style: `{tone}`, `{auto-post or draft}`
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
# auto-generated by sync_extensions.py
|
|
3
|
+
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.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Read and follow the complete instructions in the SKILL.md file located in this skill's directory.
|
|
7
|
+
|
|
8
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "github-repo-monitor",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"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.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "OpenHands",
|
|
7
|
+
"email": "contact@all-hands.dev"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/OpenHands/extensions",
|
|
10
|
+
"repository": "https://github.com/OpenHands/extensions",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"github",
|
|
14
|
+
"monitor",
|
|
15
|
+
"issues",
|
|
16
|
+
"pull-requests",
|
|
17
|
+
"trigger",
|
|
18
|
+
"cron",
|
|
19
|
+
"automation",
|
|
20
|
+
"integration"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# GitHub Repository Monitor Skill
|
|
2
|
+
|
|
3
|
+
An OpenHands skill that creates a cron automation to monitor a GitHub
|
|
4
|
+
repository for issue and PR comments, routing them to OpenHands conversations
|
|
5
|
+
and posting results back as GitHub comments.
|
|
6
|
+
|
|
7
|
+
## What it does
|
|
8
|
+
|
|
9
|
+
1. **Polls** a GitHub repository for new comments on issues and PRs.
|
|
10
|
+
2. **Triggers** when a comment contains `@OpenHands` (configurable).
|
|
11
|
+
3. **Creates** an OpenHands conversation pre-loaded with the full issue/PR
|
|
12
|
+
context — title, description, labels, and the last 10 comments.
|
|
13
|
+
4. **Posts** a GitHub comment with a link to the conversation and an
|
|
14
|
+
AI-disclosure notice.
|
|
15
|
+
5. **Forwards** follow-up trigger comments to the running conversation,
|
|
16
|
+
or re-opens it if it was previously closed.
|
|
17
|
+
6. **Summarises** by posting the agent's final response back to the
|
|
18
|
+
issue/PR once the conversation finishes.
|
|
19
|
+
|
|
20
|
+
## Files
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
github-repo-monitor/
|
|
24
|
+
├── SKILL.md ← agent instructions (loaded automatically)
|
|
25
|
+
├── README.md ← this file
|
|
26
|
+
├── scripts/
|
|
27
|
+
│ └── main.py ← automation script template
|
|
28
|
+
└── references/
|
|
29
|
+
├── state-schema.md ← JSON state file documentation
|
|
30
|
+
└── github-api.md ← GitHub API endpoints and rate-limit notes
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Quick start
|
|
34
|
+
|
|
35
|
+
Just tell OpenHands:
|
|
36
|
+
|
|
37
|
+
> *"Set up a GitHub repository monitor for `owner/repo`"*
|
|
38
|
+
|
|
39
|
+
The skill will walk through token verification, allowed-login selection,
|
|
40
|
+
event-type selection, cron schedule, and automation creation automatically.
|
|
41
|
+
|
|
42
|
+
## Requirements
|
|
43
|
+
|
|
44
|
+
- `GITHUB_TOKEN` secret set in OpenHands Settings → Secrets
|
|
45
|
+
- Classic PAT: `repo` (private repos) or `public_repo` (public repos)
|
|
46
|
+
- Fine-grained PAT: Issues — Read and Write
|
|
47
|
+
- The monitored repository must be accessible with that token
|
|
48
|
+
|
|
49
|
+
## Configuration options
|
|
50
|
+
|
|
51
|
+
| Option | Default | Description |
|
|
52
|
+
|--------|---------|-------------|
|
|
53
|
+
| Repository | (required) | `owner/repo` format |
|
|
54
|
+
| Trigger phrase | `@OpenHands` | Case-insensitive string to watch for in comments |
|
|
55
|
+
| Allowed GitHub logins | token owner only | Who may trigger conversations; use explicit logins or `*` for any non-bot commenter |
|
|
56
|
+
| Event types | `issue_comment` | `issue_comment`, `pr_review_comment`, or both |
|
|
57
|
+
| Cron schedule | `* * * * *` | Every minute; any valid 5-field cron expression |
|
|
58
|
+
|
|
59
|
+
## State file
|
|
60
|
+
|
|
61
|
+
The automation maintains a JSON state file at:
|
|
62
|
+
```
|
|
63
|
+
~/.openhands/workspaces/automation-state/github_poller_{automation_id}.json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
See `references/state-schema.md` for the full schema.
|
|
67
|
+
|
|
68
|
+
## Similar skills
|
|
69
|
+
|
|
70
|
+
- `slack-channel-monitor` — same pattern applied to Slack channels
|