@openhands/extensions 0.0.1-alpha → 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.
Files changed (347) hide show
  1. package/.agents/skills/custom-codereview-guide.md +25 -0
  2. package/.github/pull_request_template.md +38 -0
  3. package/.github/release.yml +14 -0
  4. package/.github/workflows/check-extensions.yml +72 -0
  5. package/.github/workflows/npm-publish.yml +89 -0
  6. package/.github/workflows/pr.yml +30 -0
  7. package/.github/workflows/release.yml +24 -0
  8. package/.github/workflows/tests.yml +25 -0
  9. package/.github/workflows/vulnerability-scan.yml +87 -0
  10. package/.release-please-manifest.json +3 -0
  11. package/AGENTS.md +132 -0
  12. package/README.md +10 -0
  13. package/analysis_results.md +162 -0
  14. package/marketplaces/large-codebase.json +66 -0
  15. package/marketplaces/openhands-extensions.json +682 -0
  16. package/package.json +4 -10
  17. package/plugins/README.md +30 -0
  18. package/plugins/city-weather/.plugin/plugin.json +13 -0
  19. package/plugins/city-weather/README.md +145 -0
  20. package/plugins/city-weather/commands/now.md +56 -0
  21. package/plugins/cobol-modernization/.plugin/plugin.json +19 -0
  22. package/plugins/cobol-modernization/README.md +201 -0
  23. package/plugins/cobol-modernization/references/troubleshooting.md +18 -0
  24. package/plugins/cobol-modernization/skills/build-setup/SKILL.md +78 -0
  25. package/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +32 -0
  26. package/plugins/cobol-modernization/skills/cobol-modernization-overview/SKILL.md +113 -0
  27. package/plugins/cobol-modernization/skills/mainfraime-removal/SKILL.md +62 -0
  28. package/plugins/cobol-modernization/skills/mainfraime-removal/references/cics-transformation-examples.md +45 -0
  29. package/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +78 -0
  30. package/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +59 -0
  31. package/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +58 -0
  32. package/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +19 -0
  33. package/plugins/issue-duplicate-checker/.plugin/plugin.json +13 -0
  34. package/plugins/issue-duplicate-checker/README.md +51 -0
  35. package/plugins/issue-duplicate-checker/action.yml +349 -0
  36. package/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +569 -0
  37. package/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +681 -0
  38. package/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.js +220 -0
  39. package/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.js +27 -0
  40. package/plugins/magic-test/.plugin/plugin.json +13 -0
  41. package/plugins/magic-test/skills/magic-word/SKILL.md +33 -0
  42. package/plugins/migration-scoring/.plugin/plugin.json +19 -0
  43. package/plugins/migration-scoring/README.md +244 -0
  44. package/plugins/migration-scoring/skills/migration-mapping/SKILL.md +72 -0
  45. package/plugins/migration-scoring/skills/migration-report/SKILL.md +118 -0
  46. package/plugins/migration-scoring/skills/migration-scoring-overview/SKILL.md +126 -0
  47. package/plugins/migration-scoring/skills/score-quality/SKILL.md +54 -0
  48. package/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +30 -0
  49. package/plugins/migration-scoring/skills/score-style/SKILL.md +106 -0
  50. package/plugins/onboarding/.plugin/plugin.json +20 -0
  51. package/plugins/onboarding/README.md +30 -0
  52. package/plugins/onboarding/references/criteria.md +144 -0
  53. package/plugins/onboarding/skills/agent-readiness-report/README.md +23 -0
  54. package/plugins/onboarding/skills/agent-readiness-report/SKILL.md +122 -0
  55. package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +88 -0
  56. package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +114 -0
  57. package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +133 -0
  58. package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +113 -0
  59. package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +127 -0
  60. package/plugins/onboarding/skills/improve-agent-readiness/README.md +19 -0
  61. package/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +167 -0
  62. package/plugins/onboarding/skills/setup-agents-md/README.md +15 -0
  63. package/plugins/onboarding/skills/setup-agents-md/SKILL.md +150 -0
  64. package/plugins/onboarding/skills/setup-openhands/README.md +20 -0
  65. package/plugins/onboarding/skills/setup-openhands/SKILL.md +56 -0
  66. package/plugins/onboarding/skills/setup-pr-review/README.md +23 -0
  67. package/plugins/onboarding/skills/setup-pr-review/SKILL.md +72 -0
  68. package/plugins/openhands/.plugin/plugin.json +13 -0
  69. package/plugins/openhands/README.md +52 -0
  70. package/plugins/openhands/SKILL.md +61 -0
  71. package/plugins/openhands/commands/create.md +55 -0
  72. package/plugins/openhands/commands/openhands-cloud.md +8 -0
  73. package/plugins/openhands/scripts/run.sh +69 -0
  74. package/plugins/pr-review/.plugin/plugin.json +13 -0
  75. package/plugins/pr-review/README.md +393 -0
  76. package/plugins/pr-review/action.yml +298 -0
  77. package/plugins/pr-review/scripts/agent_script.py +1282 -0
  78. package/plugins/pr-review/scripts/evaluate_review.py +655 -0
  79. package/plugins/pr-review/scripts/prompt.py +260 -0
  80. package/plugins/pr-review/workflows/pr-review-by-openhands.yml +51 -0
  81. package/plugins/pr-review/workflows/pr-review-evaluation.yml +85 -0
  82. package/plugins/qa-changes/.plugin/plugin.json +11 -0
  83. package/plugins/qa-changes/README.md +185 -0
  84. package/plugins/qa-changes/action.yml +181 -0
  85. package/plugins/qa-changes/scripts/agent_script.py +406 -0
  86. package/plugins/qa-changes/scripts/evaluate_qa_changes.py +385 -0
  87. package/plugins/qa-changes/scripts/prompt.py +174 -0
  88. package/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +50 -0
  89. package/plugins/qa-changes/workflows/qa-changes-evaluation.yml +85 -0
  90. package/plugins/release-notes/.plugin/plugin.json +19 -0
  91. package/plugins/release-notes/README.md +283 -0
  92. package/plugins/release-notes/SKILL.md +83 -0
  93. package/plugins/release-notes/action.yml +117 -0
  94. package/plugins/release-notes/commands/release-notes.md +8 -0
  95. package/plugins/release-notes/scripts/agent_script.py +292 -0
  96. package/plugins/release-notes/scripts/generate_release_notes.py +733 -0
  97. package/plugins/release-notes/scripts/prompt.py +90 -0
  98. package/plugins/release-notes/scripts/validate_release_notes.py +328 -0
  99. package/plugins/release-notes/workflows/release-notes.yml +76 -0
  100. package/plugins/vulnerability-remediation/.plugin/plugin.json +19 -0
  101. package/plugins/vulnerability-remediation/README.md +217 -0
  102. package/plugins/vulnerability-remediation/action.yml +187 -0
  103. package/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +561 -0
  104. package/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +87 -0
  105. package/pyproject.toml +12 -0
  106. package/release-please-config.json +16 -0
  107. package/scripts/sync_extensions.py +494 -0
  108. package/scripts/sync_openhands_sdk_skill.py +264 -0
  109. package/skills/README.md +159 -0
  110. package/skills/add-javadoc/.plugin/plugin.json +18 -0
  111. package/skills/add-javadoc/README.md +40 -0
  112. package/skills/add-javadoc/SKILL.md +35 -0
  113. package/skills/add-javadoc/references/example.md +32 -0
  114. package/skills/add-skill/.plugin/plugin.json +18 -0
  115. package/skills/add-skill/README.md +67 -0
  116. package/skills/add-skill/SKILL.md +47 -0
  117. package/skills/add-skill/scripts/fetch_skill.py +259 -0
  118. package/skills/agent-creator/.plugin/plugin.json +20 -0
  119. package/skills/agent-creator/README.md +104 -0
  120. package/skills/agent-creator/SKILL.md +190 -0
  121. package/skills/agent-creator/commands/agent-creator.md +8 -0
  122. package/skills/agent-creator/references/fallback.md +117 -0
  123. package/skills/agent-memory/.plugin/plugin.json +18 -0
  124. package/skills/agent-memory/README.md +35 -0
  125. package/skills/agent-memory/SKILL.md +30 -0
  126. package/skills/agent-memory/commands/remember.md +8 -0
  127. package/skills/agent-sdk-builder/.plugin/plugin.json +18 -0
  128. package/skills/agent-sdk-builder/README.md +40 -0
  129. package/skills/agent-sdk-builder/SKILL.md +37 -0
  130. package/skills/agent-sdk-builder/commands/agent-builder.md +8 -0
  131. package/skills/azure-devops/.plugin/plugin.json +18 -0
  132. package/skills/azure-devops/README.md +55 -0
  133. package/skills/azure-devops/SKILL.md +50 -0
  134. package/skills/bitbucket/.plugin/plugin.json +17 -0
  135. package/skills/bitbucket/README.md +50 -0
  136. package/skills/bitbucket/SKILL.md +45 -0
  137. package/skills/code-review/.plugin/plugin.json +19 -0
  138. package/skills/code-review/README.md +18 -0
  139. package/skills/code-review/SKILL.md +208 -0
  140. package/skills/code-review/commands/codereview-roasted.md +8 -0
  141. package/skills/code-review/commands/codereview.md +8 -0
  142. package/skills/code-review/references/risk-evaluation.md +41 -0
  143. package/skills/code-review/references/supply-chain-security.md +31 -0
  144. package/skills/code-simplifier/.plugin/plugin.json +21 -0
  145. package/skills/code-simplifier/README.md +30 -0
  146. package/skills/code-simplifier/SKILL.md +91 -0
  147. package/skills/code-simplifier/commands/simplify.md +8 -0
  148. package/skills/code-simplifier/references/code-quality-review.md +86 -0
  149. package/skills/code-simplifier/references/code-reuse-review.md +63 -0
  150. package/skills/code-simplifier/references/efficiency-review.md +81 -0
  151. package/skills/datadog/.plugin/plugin.json +19 -0
  152. package/skills/datadog/README.md +100 -0
  153. package/skills/datadog/SKILL.md +95 -0
  154. package/skills/deno/.plugin/plugin.json +18 -0
  155. package/skills/deno/README.md +5 -0
  156. package/skills/deno/SKILL.md +99 -0
  157. package/skills/deno/references/README.md +6 -0
  158. package/skills/discord/.plugin/plugin.json +18 -0
  159. package/skills/discord/README.md +31 -0
  160. package/skills/discord/SKILL.md +109 -0
  161. package/skills/discord/__init__.py +0 -0
  162. package/skills/discord/references/REFERENCE.md +78 -0
  163. package/skills/discord/scripts/__init__.py +0 -0
  164. package/skills/discord/scripts/_http.py +127 -0
  165. package/skills/discord/scripts/post_webhook.py +106 -0
  166. package/skills/discord/scripts/send_message.py +102 -0
  167. package/skills/docker/.plugin/plugin.json +17 -0
  168. package/skills/docker/README.md +34 -0
  169. package/skills/docker/SKILL.md +29 -0
  170. package/skills/evidence-based-citations/.plugin/plugin.json +20 -0
  171. package/skills/evidence-based-citations/README.md +31 -0
  172. package/skills/evidence-based-citations/SKILL.md +59 -0
  173. package/skills/flarglebargle/.plugin/plugin.json +16 -0
  174. package/skills/flarglebargle/README.md +14 -0
  175. package/skills/flarglebargle/SKILL.md +9 -0
  176. package/skills/frontend-design/.plugin/plugin.json +21 -0
  177. package/skills/frontend-design/LICENSE.txt +177 -0
  178. package/skills/frontend-design/README.md +42 -0
  179. package/skills/frontend-design/SKILL.md +42 -0
  180. package/skills/github/.plugin/plugin.json +19 -0
  181. package/skills/github/README.md +42 -0
  182. package/skills/github/SKILL.md +106 -0
  183. package/skills/github-pr-review/.plugin/plugin.json +18 -0
  184. package/skills/github-pr-review/README.md +145 -0
  185. package/skills/github-pr-review/SKILL.md +148 -0
  186. package/skills/github-pr-review/commands/github-pr-review.md +8 -0
  187. package/skills/github-pr-reviewer/.plugin/plugin.json +20 -0
  188. package/skills/github-pr-reviewer/README.md +34 -0
  189. package/skills/github-pr-reviewer/SKILL.md +89 -0
  190. package/skills/github-pr-reviewer/commands/pr-reviewer:setup.md +8 -0
  191. package/skills/github-repo-monitor/.plugin/plugin.json +22 -0
  192. package/skills/github-repo-monitor/README.md +70 -0
  193. package/skills/github-repo-monitor/SKILL.md +316 -0
  194. package/skills/github-repo-monitor/commands/github-monitor:poll.md +8 -0
  195. package/skills/github-repo-monitor/references/github-api.md +241 -0
  196. package/skills/github-repo-monitor/references/state-schema.md +160 -0
  197. package/skills/github-repo-monitor/scripts/main.py +915 -0
  198. package/skills/github-repo-monitor/tests/test_main.py +400 -0
  199. package/skills/gitlab/.plugin/plugin.json +17 -0
  200. package/skills/gitlab/README.md +37 -0
  201. package/skills/gitlab/SKILL.md +32 -0
  202. package/skills/incident-retrospective/.plugin/plugin.json +21 -0
  203. package/skills/incident-retrospective/README.md +34 -0
  204. package/skills/incident-retrospective/SKILL.md +98 -0
  205. package/skills/incident-retrospective/commands/incident-retro:setup.md +8 -0
  206. package/skills/iterate/.plugin/plugin.json +13 -0
  207. package/skills/iterate/README.md +25 -0
  208. package/skills/iterate/SKILL.md +399 -0
  209. package/skills/iterate/commands/babysit.md +8 -0
  210. package/skills/iterate/commands/iterate.md +8 -0
  211. package/skills/iterate/commands/verify.md +8 -0
  212. package/skills/iterate/references/heuristics.md +58 -0
  213. package/skills/iterate/references/verification.md +96 -0
  214. package/skills/jupyter/.plugin/plugin.json +18 -0
  215. package/skills/jupyter/README.md +55 -0
  216. package/skills/jupyter/SKILL.md +50 -0
  217. package/skills/kubernetes/.plugin/plugin.json +18 -0
  218. package/skills/kubernetes/README.md +53 -0
  219. package/skills/kubernetes/SKILL.md +48 -0
  220. package/skills/learn-from-code-review/.plugin/plugin.json +19 -0
  221. package/skills/learn-from-code-review/README.md +64 -0
  222. package/skills/learn-from-code-review/SKILL.md +186 -0
  223. package/skills/learn-from-code-review/commands/learn-from-reviews.md +8 -0
  224. package/skills/linear/.plugin/plugin.json +19 -0
  225. package/skills/linear/README.md +58 -0
  226. package/skills/linear/SKILL.md +213 -0
  227. package/skills/linear-triage/.plugin/plugin.json +21 -0
  228. package/skills/linear-triage/README.md +34 -0
  229. package/skills/linear-triage/SKILL.md +91 -0
  230. package/skills/linear-triage/commands/linear-triage:setup.md +8 -0
  231. package/skills/notion/.plugin/plugin.json +17 -0
  232. package/skills/notion/README.md +114 -0
  233. package/skills/notion/SKILL.md +109 -0
  234. package/skills/npm/.plugin/plugin.json +17 -0
  235. package/skills/npm/README.md +14 -0
  236. package/skills/npm/SKILL.md +9 -0
  237. package/skills/openhands-api/.plugin/plugin.json +22 -0
  238. package/skills/openhands-api/README.md +48 -0
  239. package/skills/openhands-api/SKILL.md +399 -0
  240. package/skills/openhands-api/references/README.md +33 -0
  241. package/skills/openhands-api/references/TROUBLESHOOTING.md +81 -0
  242. package/skills/openhands-api/references/example_prompt.md +12 -0
  243. package/skills/openhands-api/scripts/openhands_api.py +606 -0
  244. package/skills/openhands-api/scripts/openhands_api.ts +252 -0
  245. package/skills/openhands-automation/.plugin/plugin.json +19 -0
  246. package/skills/openhands-automation/README.md +89 -0
  247. package/skills/openhands-automation/SKILL.md +875 -0
  248. package/skills/openhands-automation/commands/automation:create.md +8 -0
  249. package/skills/openhands-automation/references/ab-testing.md +185 -0
  250. package/skills/openhands-automation/references/custom-automation.md +644 -0
  251. package/skills/openhands-sdk/.plugin/plugin.json +20 -0
  252. package/skills/openhands-sdk/README.md +22 -0
  253. package/skills/openhands-sdk/SKILL.md +229 -0
  254. package/skills/openhands-sdk/commands/sdk.md +8 -0
  255. package/skills/pdflatex/.plugin/plugin.json +18 -0
  256. package/skills/pdflatex/README.md +39 -0
  257. package/skills/pdflatex/SKILL.md +34 -0
  258. package/skills/prd/.plugin/plugin.json +19 -0
  259. package/skills/prd/README.md +28 -0
  260. package/skills/prd/SKILL.md +237 -0
  261. package/skills/prd/commands/prd.md +8 -0
  262. package/skills/qa-changes/README.md +18 -0
  263. package/skills/qa-changes/SKILL.md +229 -0
  264. package/skills/qa-changes/commands/qa-changes.md +8 -0
  265. package/skills/release-notes/README.md +24 -0
  266. package/skills/release-notes/SKILL.md +19 -0
  267. package/skills/release-notes/commands/release-notes.md +8 -0
  268. package/skills/research-brief/.plugin/plugin.json +20 -0
  269. package/skills/research-brief/README.md +34 -0
  270. package/skills/research-brief/SKILL.md +99 -0
  271. package/skills/research-brief/commands/research-brief:setup.md +8 -0
  272. package/skills/security/.plugin/plugin.json +18 -0
  273. package/skills/security/README.md +38 -0
  274. package/skills/security/SKILL.md +33 -0
  275. package/skills/skill-creator/.plugin/plugin.json +17 -0
  276. package/skills/skill-creator/LICENSE.txt +202 -0
  277. package/skills/skill-creator/README.md +182 -0
  278. package/skills/skill-creator/SKILL.md +545 -0
  279. package/skills/skill-creator/references/output-patterns.md +82 -0
  280. package/skills/skill-creator/references/workflows.md +28 -0
  281. package/skills/skill-creator/scripts/init_skill.py +303 -0
  282. package/skills/skill-creator/scripts/quick_validate.py +95 -0
  283. package/skills/slack-channel-monitor/.plugin/plugin.json +21 -0
  284. package/skills/slack-channel-monitor/README.md +91 -0
  285. package/skills/slack-channel-monitor/SKILL.md +276 -0
  286. package/skills/slack-channel-monitor/commands/slack-monitor:poll.md +8 -0
  287. package/skills/slack-channel-monitor/references/slack-api.md +207 -0
  288. package/skills/slack-channel-monitor/references/state-schema.md +180 -0
  289. package/skills/slack-channel-monitor/scripts/main.py +962 -0
  290. package/skills/slack-standup-digest/.plugin/plugin.json +21 -0
  291. package/skills/slack-standup-digest/README.md +34 -0
  292. package/skills/slack-standup-digest/SKILL.md +92 -0
  293. package/skills/slack-standup-digest/commands/standup-digest:setup.md +8 -0
  294. package/skills/spark-version-upgrade/.plugin/plugin.json +20 -0
  295. package/skills/spark-version-upgrade/README.md +54 -0
  296. package/skills/spark-version-upgrade/SKILL.md +233 -0
  297. package/skills/ssh/.plugin/plugin.json +18 -0
  298. package/skills/ssh/README.md +140 -0
  299. package/skills/ssh/SKILL.md +135 -0
  300. package/skills/swift-linux/.plugin/plugin.json +17 -0
  301. package/skills/swift-linux/README.md +86 -0
  302. package/skills/swift-linux/SKILL.md +81 -0
  303. package/skills/theme-factory/.plugin/plugin.json +19 -0
  304. package/skills/theme-factory/LICENSE.txt +202 -0
  305. package/skills/theme-factory/README.md +58 -0
  306. package/skills/theme-factory/SKILL.md +59 -0
  307. package/skills/theme-factory/theme-showcase.pdf +0 -0
  308. package/skills/theme-factory/themes/arctic-frost.md +19 -0
  309. package/skills/theme-factory/themes/botanical-garden.md +19 -0
  310. package/skills/theme-factory/themes/desert-rose.md +19 -0
  311. package/skills/theme-factory/themes/forest-canopy.md +19 -0
  312. package/skills/theme-factory/themes/golden-hour.md +19 -0
  313. package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  314. package/skills/theme-factory/themes/modern-minimalist.md +19 -0
  315. package/skills/theme-factory/themes/ocean-depths.md +19 -0
  316. package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  317. package/skills/theme-factory/themes/tech-innovation.md +19 -0
  318. package/skills/uv/.plugin/plugin.json +18 -0
  319. package/skills/uv/README.md +5 -0
  320. package/skills/uv/SKILL.md +95 -0
  321. package/skills/uv/references/README.md +5 -0
  322. package/skills/vercel/.plugin/plugin.json +18 -0
  323. package/skills/vercel/README.md +108 -0
  324. package/skills/vercel/SKILL.md +103 -0
  325. package/tests/test_add_skill_installs_to_agents_dir.py +42 -0
  326. package/tests/test_catalogs.py +109 -0
  327. package/tests/test_code_review_risk_evaluation.py +94 -0
  328. package/tests/test_issue_duplicate_checker.py +240 -0
  329. package/tests/test_openhands_api_python.py +152 -0
  330. package/tests/test_plugin_manifest.py +83 -0
  331. package/tests/test_pr_review_diff_payload.py +202 -0
  332. package/tests/test_pr_review_feedback.py +263 -0
  333. package/tests/test_pr_review_prompt.py +152 -0
  334. package/tests/test_pr_review_review_context.py +253 -0
  335. package/tests/test_qa_changes.py +232 -0
  336. package/tests/test_qa_changes_evaluation.py +259 -0
  337. package/tests/test_release_notes_generator.py +990 -0
  338. package/tests/test_sdk_loading.py +150 -0
  339. package/tests/test_skill_plugin_loading.py +149 -0
  340. package/tests/test_skills_have_readme.py +66 -0
  341. package/tests/test_sync_extensions.py +292 -0
  342. package/tests/test_workflow_sync.py +46 -0
  343. package/utils/analysis/README.md +7 -0
  344. package/utils/analysis/laminar_signals/README.md +211 -0
  345. package/utils/analysis/laminar_signals/analyze.py +780 -0
  346. package/utils/analysis/laminar_signals/templates/default.j2 +49 -0
  347. 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