@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,117 @@
1
+ # Fallback Spec — OpenHands File-Based Agent
2
+
3
+ > Use this file ONLY if fetching https://docs.openhands.dev/sdk/guides/agent-file-based fails.
4
+ > When the website is reachable, always prefer the live documentation over this file.
5
+
6
+ ## Agent File Format
7
+
8
+ A file-based sub-agent is a single `.md` file with YAML frontmatter and a Markdown body.
9
+ The frontmatter configures the agent. The Markdown body becomes the agent's system prompt.
10
+
11
+ ## Frontmatter Fields
12
+
13
+ | Field | Required | Default | Description |
14
+ |---|---|---|---|
15
+ | `name` | Yes | — | agent identifier,lowercase + hyphens, matches filename exactly |
16
+ | `description` | No | `""` | What this agent does. Shown to orchestrator. Add `<example>` tags |
17
+ | `tools` | No | `[]` | List of tools the agent can use (for example: `file_editor`, `terminal`, `browser_tool_set`, etc)|
18
+ | `model` | No | `inherit` | LLM model profile to load and use for the subagent ("inherit" uses the parent agent’s model) |
19
+ | `skills` | No | `[]` | List of skill names for this agent |
20
+ | `max_iteration_per_run` | No | `None` | Maximum iterations per run. Must be strictly positive, or `None` for the default value.|
21
+ | `color` | No | `None` | Rich color name (e.g., "blue", "green") used by visualizers to style this agent’s output in terminal panels |
22
+ | `mcp_servers` | No | `None` | MCP server configs |
23
+ | `hooks` | No | `None` | Hook configuration for lifecycle events |
24
+ | `permission_mode` | No | `None` | `always_confirm` / `never_confirm` / `confirm_risky` |
25
+ | `profile_store_dir` | No | `None` | Custom directory path for LLM profiles when using a named model|
26
+
27
+ ## Directory Conventions
28
+
29
+ Place agent files in these directories, scanned in priority order (first match wins):
30
+
31
+ | Priority | Path | Scope |
32
+ |---|---|---|
33
+ | 1 | `{project}/.agents/agents/<name>.md` | Project (primary) |
34
+ | 2 | `{project}/.openhands/agents/<name>.md` | Project (secondary) |
35
+ | 3 | `~/.agents/agents/<name>.md` | User (primary) |
36
+ | 4 | `~/.openhands/agents/<name>.md` | User (secondary) |
37
+
38
+ **Rules:**
39
+ - Filename = agent name exactly (`name: code-reviewer` → `code-reviewer.md`)
40
+ - Place file directly in `agents/` — do NOT create subdirectories
41
+ - `README.md` is automatically skipped by the loader
42
+ - Project-level takes priority over user-level when names conflict
43
+
44
+ ## \<example> Tags
45
+
46
+ Add \<example> tags inside the description to help the orchestrating agent know when to delegate to this agent:
47
+
48
+ For example
49
+ ```markdown
50
+ description: >
51
+ Writes and improves technical documentation.
52
+ <example>Write docs for this module</example>
53
+ <example>Improve the README</example>
54
+ ```
55
+
56
+ ## Minimal Valid Example
57
+
58
+ ```markdown
59
+ ---
60
+ name: code-reviewer
61
+ description: >
62
+ Reviews code for quality, bugs, and best practices.
63
+ <example>Review this pull request for issues</example>
64
+ <example>Check this code for bugs</example>
65
+ tools:
66
+ - file_editor
67
+ - terminal
68
+ model: inherit
69
+ ---
70
+
71
+ # Code Reviewer
72
+
73
+ You are a meticulous code reviewer. When reviewing code:
74
+
75
+ 1. **Correctness** - Look for bugs, off-by-one errors, and race conditions.
76
+ 2. **Style** - Check for consistent naming and idiomatic usage.
77
+ 3. **Performance** - Identify unnecessary allocations or algorithmic issues.
78
+ 4. **Security** - Flag injection vulnerabilities or hardcoded secrets.
79
+
80
+ Keep feedback concise and actionable. For each issue, suggest a fix.
81
+ ```
82
+
83
+ ## Generated File Template
84
+
85
+ ~~~markdown
86
+ ---
87
+ name: <agent-name>
88
+ description: >
89
+ <One imperative sentence — what this agent does and when to use it.>
90
+ <example>A concrete user request this agent handles</example>
91
+ <example>Another concrete delegation trigger</example>
92
+ tools:
93
+ - <tool-name>
94
+ model: inherit
95
+ permission_mode: <always_confirm|never_confirm|confirm_risky>
96
+ ---
97
+
98
+ # <Title>
99
+
100
+ <One paragraph: role, approach, and primary constraint. Written in second person — "You are...">
101
+
102
+ ## How to Execute
103
+
104
+ <Numbered steps — what the AGENT thinks and does, not what the user provides.>
105
+
106
+ ## Output Format
107
+
108
+ <Concrete Markdown template — not a prose description.>
109
+
110
+ ## Gotchas
111
+
112
+ - Do not <most likely wrong behavior specific to this domain>.
113
+
114
+ ## Edge Cases
115
+
116
+ - **<Specific case>**: <Exact handling — not generic advice>.
117
+ ~~~
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "agent-memory",
3
+ "version": "1.0.0",
4
+ "description": "Persist and retrieve repository-specific knowledge using AGENTS.md files. Use when you want to save important information about a codebase (build commands, code style, workflows) for future sessions.",
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
+ "memory",
14
+ "knowledge",
15
+ "persistence",
16
+ "agents"
17
+ ]
18
+ }
@@ -0,0 +1,35 @@
1
+ # Agent Memory
2
+
3
+ Persist and retrieve repository-specific knowledge using AGENTS.md files. Use when you want to save important information about a codebase (build commands, code style, workflows) for future sessions.
4
+
5
+ ## Triggers
6
+
7
+ This skill is activated by the following keywords:
8
+
9
+ - `/remember`
10
+
11
+ ## Details
12
+
13
+ * Repository memory: Use AGENTS.md in each repository root to store and access important information.
14
+ - If this file exists, it will be added to your context automatically.
15
+ - If missing, you should create it unless the user has explicitly asked you to not do so.
16
+
17
+ * Store and maintain **general knowledge** that will be helpful for most future tasks:
18
+ 1. Repository structure
19
+ 2. Common commands (build, lint, test, pre-commit, etc.)
20
+ 3. Code style preferences
21
+ 4. Workflows and best practices
22
+ 5. Any other repository-specific knowledge you learn
23
+
24
+ * IMPORTANT: ONLY LOG the information that would be helpful for different future tasks, for example, how to configure the settings, how to setup the repository. Do NOT add issue-specific information (e.g., what specific error you have ran into and how you fix it).
25
+
26
+ * When adding new information:
27
+ - ALWAYS ask for user confirmation first by listing the exact items (numbered 1, 2, 3, etc.) you plan to save to repo.md
28
+ - Only save the items the user approves (they may ask you to save a subset)
29
+ - Ensure it integrates nicely with existing knowledge in repo.md
30
+ - Reorganize the content if needed to maintain clarity and organization
31
+ - Group related information together under appropriate sections or headings
32
+ - If you've only explored a portion of the codebase, clearly note this limitation in the repository structure documentation
33
+ - If you don't know the essential commands for working with the repository, such as lint or typecheck, ask the user and suggest adding them to repo.md for future reference (with permission)
34
+
35
+ When you receive this message, please review and summarize your recent actions and observations, then present a list of valuable information that should be saved in AGENTS.md to the user.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: agent-memory
3
+ description: Persist and retrieve repository-specific knowledge using AGENTS.md files. Use when you want to save important information about a codebase (build commands, code style, workflows) for future sessions.
4
+ triggers:
5
+ - /remember
6
+ ---
7
+
8
+ * Repository memory: Use AGENTS.md in each repository root to store and access important information.
9
+ - If this file exists, it will be added to your context automatically.
10
+ - If missing, you should create it unless the user has explicitly asked you to not do so.
11
+
12
+ * Store and maintain **general knowledge** that will be helpful for most future tasks:
13
+ 1. Repository structure
14
+ 2. Common commands (build, lint, test, pre-commit, etc.)
15
+ 3. Code style preferences
16
+ 4. Workflows and best practices
17
+ 5. Any other repository-specific knowledge you learn
18
+
19
+ * IMPORTANT: ONLY LOG the information that would be helpful for different future tasks, for example, how to configure the settings, how to setup the repository. Do NOT add issue-specific information (e.g., what specific error you have ran into and how you fix it).
20
+
21
+ * When adding new information:
22
+ - ALWAYS ask for user confirmation first by listing the exact items (numbered 1, 2, 3, etc.) you plan to save to AGENTS.md
23
+ - Only save the items the user approves (they may ask you to save a subset)
24
+ - Ensure it integrates nicely with existing knowledge in AGENTS.md
25
+ - Reorganize the content if needed to maintain clarity and organization
26
+ - Group related information together under appropriate sections or headings
27
+ - If you've only explored a portion of the codebase, clearly note this limitation in the repository structure documentation
28
+ - If you don't know the essential commands for working with the repository, such as lint or typecheck, ask the user and suggest adding them to AGENTS.md for future reference (with permission)
29
+
30
+ When you receive this message, please review and summarize your recent actions and observations, then present a list of valuable information that should be saved in AGENTS.md to the user.
@@ -0,0 +1,8 @@
1
+ ---
2
+ # auto-generated by sync_extensions.py
3
+ description: Persist and retrieve repository-specific knowledge using AGENTS.md files. Use when you want to save important information about a codebase (build commands, code style, workflows) for future sessions.
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,18 @@
1
+ {
2
+ "name": "agent-sdk-builder",
3
+ "version": "1.0.0",
4
+ "description": "Guided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a new agent through an interactive interview process that gathers requirements and ...",
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
+ "agent",
14
+ "sdk",
15
+ "builder",
16
+ "openhands"
17
+ ]
18
+ }
@@ -0,0 +1,40 @@
1
+ # Initial_Prompt
2
+
3
+ Guided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a new agent through an interactive interview process that gathers requirements and generates implementation plans.
4
+
5
+ ## Triggers
6
+
7
+ This skill is activated by the following keywords:
8
+
9
+ - `description: Initial SDK requirements`
10
+ - `/agent-builder`
11
+
12
+ ## Details
13
+
14
+ # Agent Builder and Interviewer Role
15
+
16
+ You are an expert requirements gatherer and agent builder. You must progressively interview the user to understand what type of agent they are looking to build. You should ask one question at a time when interviewing to avoid overwhelming the user.
17
+
18
+ Please refer to the user's initial promot: {INITIAL_PROMPT}
19
+
20
+ If {INITIAL_PROMPT} is blank, your first interview question should be: "Please provide a brief description of the type of agent you are looking to build."
21
+
22
+ # Understanding the OpenHands Software Agent SDK
23
+ At the end of the interview, respond with a summary of the requirements. Then, proceed to thoroughly understand how the OpenHands Software Agent SDK works, it's various APIs, and examples. To do this:
24
+ - First, research the OpenHands documentation which includes references to the Software Agent SDK: https://docs.openhands.dev/llms.txt
25
+ - Then, clone the examples into a temporary workspace folder (under "temp/"): https://github.com/OpenHands/software-agent-sdk/tree/main/examples/01_standalone_sdk
26
+ - Then, clone the SDK docs into the same temporary workspace folder: https://github.com/OpenHands/docs/tree/main/sdk
27
+
28
+ After analyzing the OpenHands Agent SDK, you may optionally ask additional clarifying questions in case it's important for the technical design of the agent.
29
+
30
+ # Generating the SDK Plan
31
+ You can then proceed to build a technical implementation plan based on the user requirements and your understanding of how the OpenHands Agent SDK works.
32
+ - The plan should be stored in "plan/SDK_PLAN.md" from the root of the workspace.
33
+ - A visual representation of how the agent should work based on the SDK_PLAN.md. This should look like a flow diagram with nodes and edges. This should be generated using Javascript, HTML, and CSS and then be rendered using the built-in web server. Store this in the plan/ directory.
34
+
35
+ # Implementing the Plan
36
+ After the plan is generated, please ask the user if they are ready to generate the SDK implementation. When they approve, please make sure the code is stored in the "output/" directory. Make sure the code provides logging that a user can see in the terminal. Ideally, the SDK is a single python file.
37
+
38
+ Additional guidelines:
39
+ - Users can configure their LLM API Key using an environment variable named "LLM_API_KEY"
40
+ - Unless otherwise specified, default to this model: openhands/claude-sonnet-4-5-20250929. This is configurable through the LLM_BASE_MODEL environment variable.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: agent-sdk-builder
3
+ description: Guided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a new agent through an interactive interview process that gathers requirements and generates implementation plans.
4
+ inputs:
5
+ - description: Initial SDK requirements
6
+ name: INITIAL_PROMPT
7
+ triggers:
8
+ - /agent-builder
9
+ ---
10
+
11
+ # Agent Builder and Interviewer Role
12
+
13
+ You are an expert requirements gatherer and agent builder. You must progressively interview the user to understand what type of agent they are looking to build. You should ask one question at a time when interviewing to avoid overwhelming the user.
14
+
15
+ Please refer to the user's initial promot: {INITIAL_PROMPT}
16
+
17
+ If {INITIAL_PROMPT} is blank, your first interview question should be: "Please provide a brief description of the type of agent you are looking to build."
18
+
19
+ # Understanding the OpenHands Software Agent SDK
20
+ At the end of the interview, respond with a summary of the requirements. Then, proceed to thoroughly understand how the OpenHands Software Agent SDK works, it's various APIs, and examples. To do this:
21
+ - First, research the OpenHands documentation which includes references to the Software Agent SDK: https://docs.openhands.dev/llms.txt
22
+ - Then, clone the examples into a temporary workspace folder (under "temp/"): https://github.com/OpenHands/software-agent-sdk/tree/main/examples/01_standalone_sdk
23
+ - Then, clone the SDK docs into the same temporary workspace folder: https://github.com/OpenHands/docs/tree/main/sdk
24
+
25
+ After analyzing the OpenHands Agent SDK, you may optionally ask additional clarifying questions in case it's important for the technical design of the agent.
26
+
27
+ # Generating the SDK Plan
28
+ You can then proceed to build a technical implementation plan based on the user requirements and your understanding of how the OpenHands Agent SDK works.
29
+ - The plan should be stored in "plan/SDK_PLAN.md" from the root of the workspace.
30
+ - A visual representation of how the agent should work based on the SDK_PLAN.md. This should look like a flow diagram with nodes and edges. This should be generated using Javascript, HTML, and CSS and then be rendered using the built-in web server. Store this in the plan/ directory.
31
+
32
+ # Implementing the Plan
33
+ After the plan is generated, please ask the user if they are ready to generate the SDK implementation. When they approve, please make sure the code is stored in the "output/" directory. Make sure the code provides logging that a user can see in the terminal. Ideally, the SDK is a single python file.
34
+
35
+ Additional guidelines:
36
+ - Users can configure their LLM API Key using an environment variable named "LLM_API_KEY"
37
+ - Unless otherwise specified, default to this model: openhands/claude-sonnet-4-5-20250929. This is configurable through the LLM_BASE_MODEL environment variable.
@@ -0,0 +1,8 @@
1
+ ---
2
+ # auto-generated by sync_extensions.py
3
+ description: Guided workflow for building custom AI agents using the OpenHands Software Agent SDK. Use when you want to create a new agent through an interactive interview process that gathers requirements and generates implementation plans.
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,18 @@
1
+ {
2
+ "name": "azure-devops",
3
+ "version": "1.0.0",
4
+ "description": "Interact with Azure DevOps repositories, pull requests, and APIs using the AZURE_DEVOPS_TOKEN environment variable. Use when working with code hosted on Azure DevOps or managing Azure DevOps resour...",
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
+ "azure",
14
+ "devops",
15
+ "git",
16
+ "pull-request"
17
+ ]
18
+ }
@@ -0,0 +1,55 @@
1
+ # Azure Devops
2
+
3
+ Interact with Azure DevOps repositories, pull requests, and APIs using the AZURE_DEVOPS_TOKEN environment variable. Use when working with code hosted on Azure DevOps or managing Azure DevOps resources.
4
+
5
+ ## Triggers
6
+
7
+ This skill is activated by the following keywords:
8
+
9
+ - `azure_devops`
10
+ - `azure`
11
+
12
+ ## Details
13
+
14
+ You have access to an environment variable, `AZURE_DEVOPS_TOKEN`, which allows you to interact with
15
+ the Azure DevOps API.
16
+
17
+ <IMPORTANT>
18
+ You can use `curl` with the `AZURE_DEVOPS_TOKEN` to interact with Azure DevOps's API.
19
+ ALWAYS use the Azure DevOps API for operations instead of a web browser.
20
+ </IMPORTANT>
21
+
22
+ If you encounter authentication issues when pushing to Azure DevOps (such as password prompts or permission errors), the old token may have expired. In such case, update the remote URL to include the current token: `git remote set-url origin https://${AZURE_DEVOPS_TOKEN}@dev.azure.com/organization/project/_git/repository`
23
+
24
+ Here are some instructions for pushing, but ONLY do this if the user asks you to:
25
+ * NEVER push directly to the `main` or `master` branch
26
+ * Git config (username and email) is pre-set. Do not modify.
27
+ * You may already be on a branch starting with `openhands-workspace`. Create a new branch with a better name before pushing.
28
+ * Once you've created your own branch or a pull request, continue to update it. Do NOT create a new one unless you are explicitly asked to. Update the PR title and description as necessary, but don't change the branch name.
29
+ * Use the main branch as the base branch, unless the user requests otherwise
30
+ * After opening or updating a pull request, send the user a short message with a link to the pull request.
31
+ * Do NOT mark a pull request as ready to review unless the user explicitly says so
32
+ * Do all of the above in as few steps as possible. E.g. you could push changes with one step by running the following bash commands:
33
+ ```bash
34
+ git remote -v && git branch # to find the current org, repo and branch
35
+ git checkout -b create-widget && git add . && git commit -m "Create widget" && git push -u origin create-widget
36
+ ```
37
+
38
+ ## Azure DevOps API Usage
39
+
40
+ When working with Azure DevOps API, you need to use Basic authentication with your Personal Access Token (PAT). The username is ignored (empty string), and the password is the PAT.
41
+
42
+ Here's how to authenticate with curl:
43
+ ```bash
44
+ # Convert PAT to base64
45
+ AUTH=$(echo -n ":$AZURE_DEVOPS_TOKEN" | base64)
46
+
47
+ # Make API call
48
+ curl -H "Authorization: Basic $AUTH" -H "Content-Type: application/json" https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1
49
+ ```
50
+
51
+ Common API endpoints:
52
+ - List repositories: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1`
53
+ - Get repository details: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=7.1`
54
+ - List pull requests: `https://dev.azure.com/{organization}/{project}/_apis/git/pullrequests?api-version=7.1`
55
+ - Create pull request: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1` (POST)
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: azure-devops
3
+ description: Interact with Azure DevOps repositories, pull requests, and APIs using the AZURE_DEVOPS_TOKEN environment variable. Use when working with code hosted on Azure DevOps or managing Azure DevOps resources.
4
+ triggers:
5
+ - azure_devops
6
+ - azure
7
+ ---
8
+
9
+ You have access to an environment variable, `AZURE_DEVOPS_TOKEN`, which allows you to interact with
10
+ the Azure DevOps API.
11
+
12
+ <IMPORTANT>
13
+ You can use `curl` with the `AZURE_DEVOPS_TOKEN` to interact with Azure DevOps's API.
14
+ ALWAYS use the Azure DevOps API for operations instead of a web browser.
15
+ </IMPORTANT>
16
+
17
+ If you encounter authentication issues when pushing to Azure DevOps (such as password prompts or permission errors), the old token may have expired. In such case, update the remote URL to include the current token: `git remote set-url origin https://${AZURE_DEVOPS_TOKEN}@dev.azure.com/organization/project/_git/repository`
18
+
19
+ Here are some instructions for pushing, but ONLY do this if the user asks you to:
20
+ * NEVER push directly to the `main` or `master` branch
21
+ * Git config (username and email) is pre-set. Do not modify.
22
+ * You may already be on a branch starting with `openhands-workspace`. Create a new branch with a better name before pushing.
23
+ * Once you've created your own branch or a pull request, continue to update it. Do NOT create a new one unless you are explicitly asked to. Update the PR title and description as necessary, but don't change the branch name.
24
+ * Use the main branch as the base branch, unless the user requests otherwise
25
+ * After opening or updating a pull request, send the user a short message with a link to the pull request.
26
+ * Do NOT mark a pull request as ready to review unless the user explicitly says so
27
+ * Do all of the above in as few steps as possible. E.g. you could push changes with one step by running the following bash commands:
28
+ ```bash
29
+ git remote -v && git branch # to find the current org, repo and branch
30
+ git checkout -b create-widget && git add . && git commit -m "Create widget" && git push -u origin create-widget
31
+ ```
32
+
33
+ ## Azure DevOps API Usage
34
+
35
+ When working with Azure DevOps API, you need to use Basic authentication with your Personal Access Token (PAT). The username is ignored (empty string), and the password is the PAT.
36
+
37
+ Here's how to authenticate with curl:
38
+ ```bash
39
+ # Convert PAT to base64
40
+ AUTH=$(echo -n ":$AZURE_DEVOPS_TOKEN" | base64)
41
+
42
+ # Make API call
43
+ curl -H "Authorization: Basic $AUTH" -H "Content-Type: application/json" https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1
44
+ ```
45
+
46
+ Common API endpoints:
47
+ - List repositories: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=7.1`
48
+ - Get repository details: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=7.1`
49
+ - List pull requests: `https://dev.azure.com/{organization}/{project}/_apis/git/pullrequests?api-version=7.1`
50
+ - Create pull request: `https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullrequests?api-version=7.1` (POST)
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "bitbucket",
3
+ "version": "1.0.0",
4
+ "description": "Interact with Bitbucket repositories and pull requests using the BITBUCKET_TOKEN environment variable. Use when working with code hosted on Bitbucket or managing Bitbucket resources via API.",
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
+ "bitbucket",
14
+ "git",
15
+ "pull-request"
16
+ ]
17
+ }
@@ -0,0 +1,50 @@
1
+ # Bitbucket
2
+
3
+ Interact with Bitbucket repositories and pull requests using the BITBUCKET_TOKEN environment variable. Use when working with code hosted on Bitbucket or managing Bitbucket resources via API.
4
+
5
+ ## Triggers
6
+
7
+ This skill is activated by the following keywords:
8
+
9
+ - `bitbucket`
10
+ - `git`
11
+
12
+ ## Details
13
+
14
+ You have access to an environment variable, `BITBUCKET_TOKEN`, which allows you to interact with
15
+ the Bitbucket API.
16
+
17
+ <IMPORTANT>
18
+ You can use `curl` with the `BITBUCKET_TOKEN` to interact with Bitbucket's API.
19
+ ALWAYS use the Bitbucket API for operations instead of a web browser.
20
+ ALWAYS use the `create_bitbucket_pr` tool to open a pull request
21
+ </IMPORTANT>
22
+
23
+ Only rewrite the Bitbucket remote if a push actually fails with authentication errors and the user has asked you to push. Do not proactively rewrite `origin`. OpenHands commonly stores `BITBUCKET_TOKEN` in the same unencoded `user:token` form used by commands such as `curl --user "$BITBUCKET_TOKEN" ...`, so keep it in that form unless you truly need to embed it in a Git remote URL.
24
+
25
+ If you need a non-interactive HTTPS remote URL, split `BITBUCKET_TOKEN` on the first `:` and URL-encode each part before calling `git remote set-url`. This avoids breaking usernames or emails that contain reserved URL characters such as `@`:
26
+
27
+ ```bash
28
+ BB_USER="${BITBUCKET_TOKEN%%:*}" && \
29
+ BB_PASS="${BITBUCKET_TOKEN#*:}" && \
30
+ ENCODED_USER=$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$BB_USER") && \
31
+ ENCODED_PASS=$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$BB_PASS") && \
32
+ git remote set-url origin "https://${ENCODED_USER}:${ENCODED_PASS}@bitbucket.org/username/repo.git"
33
+ ```
34
+
35
+ Atlassian's Bitbucket Cloud docs recommend avoiding long-lived credentials in the remote URL when possible. Their API token examples use either `https://{bitbucket_username}:{api_token}@...` or `https://x-bitbucket-api-token-auth:{api_token}@...`; OpenHands users should only construct those URLs on demand, with proper URL encoding.
36
+
37
+ Here are some instructions for pushing, but ONLY do this if the user asks you to:
38
+ * NEVER push directly to the `main` or `master` branch
39
+ * Git config (username and email) is pre-set. Do not modify.
40
+ * You may already be on a branch starting with `openhands-workspace`. Create a new branch with a better name before pushing.
41
+ * Use the `create_bitbucket_pr` tool to create a pull request, if you haven't already
42
+ * Once you've created your own branch or a pull request, continue to update it. Do NOT create a new one unless you are explicitly asked to. Update the PR title and description as necessary, but don't change the branch name.
43
+ * Use the main branch as the base branch, unless the user requests otherwise
44
+ * After opening or updating a pull request, send the user a short message with a link to the pull request.
45
+ * Do NOT mark a pull request as ready to review unless the user explicitly says so
46
+ * Do all of the above in as few steps as possible. E.g. you could push changes with one step by running the following bash commands:
47
+ ```bash
48
+ git remote -v && git branch # to find the current org, repo and branch
49
+ git checkout -b create-widget && git add . && git commit -m "Create widget" && git push -u origin create-widget
50
+ ```
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: bitbucket
3
+ description: Interact with Bitbucket repositories and pull requests using the BITBUCKET_TOKEN environment variable. Use when working with code hosted on Bitbucket or managing Bitbucket resources via API.
4
+ triggers:
5
+ - bitbucket
6
+ - git
7
+ ---
8
+
9
+ You have access to an environment variable, `BITBUCKET_TOKEN`, which allows you to interact with
10
+ the Bitbucket API.
11
+
12
+ <IMPORTANT>
13
+ You can use `curl` with the `BITBUCKET_TOKEN` to interact with Bitbucket's API.
14
+ ALWAYS use the Bitbucket API for operations instead of a web browser.
15
+ ALWAYS use the `create_bitbucket_pr` tool to open a pull request
16
+ </IMPORTANT>
17
+
18
+ Only rewrite the Bitbucket remote if a push actually fails with authentication errors and the user has asked you to push. Do not proactively rewrite `origin`. OpenHands OSS commonly stores `BITBUCKET_TOKEN` in the same unencoded `user:token` form used by commands such as `curl --user "$BITBUCKET_TOKEN" ...`, so keep it in that form unless you truly need to embed it in a Git remote URL.
19
+
20
+ If you need a non-interactive HTTPS remote URL, split `BITBUCKET_TOKEN` on the first `:` and URL-encode each part before calling `git remote set-url`. This avoids breaking usernames or emails that contain reserved URL characters such as `@`:
21
+
22
+ ```bash
23
+ BB_USER="${BITBUCKET_TOKEN%%:*}" && \
24
+ BB_PASS="${BITBUCKET_TOKEN#*:}" && \
25
+ ENCODED_USER=$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$BB_USER") && \
26
+ ENCODED_PASS=$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$BB_PASS") && \
27
+ git remote set-url origin "https://${ENCODED_USER}:${ENCODED_PASS}@bitbucket.org/username/repo.git"
28
+ ```
29
+
30
+ Atlassian's Bitbucket Cloud docs recommend avoiding long-lived credentials in the remote URL when possible. Their API token examples use either `https://{bitbucket_username}:{api_token}@...` or `https://x-bitbucket-api-token-auth:{api_token}@...`; OpenHands users should only construct those URLs on demand, with proper URL encoding.
31
+
32
+ Here are some instructions for pushing, but ONLY do this if the user asks you to:
33
+ * NEVER push directly to the `main` or `master` branch
34
+ * Git config (username and email) is pre-set. Do not modify.
35
+ * You may already be on a branch starting with `openhands-workspace`. Create a new branch with a better name before pushing.
36
+ * Use the `create_bitbucket_pr` tool to create a pull request, if you haven't already
37
+ * Once you've created your own branch or a pull request, continue to update it. Do NOT create a new one unless you are explicitly asked to. Update the PR title and description as necessary, but don't change the branch name.
38
+ * Use the main branch as the base branch, unless the user requests otherwise
39
+ * After opening or updating a pull request, send the user a short message with a link to the pull request.
40
+ * Do NOT mark a pull request as ready to review unless the user explicitly says so
41
+ * Do all of the above in as few steps as possible. E.g. you could push changes with one step by running the following bash commands:
42
+ ```bash
43
+ git remote -v && git branch # to find the current org, repo and branch
44
+ git checkout -b create-widget && git add . && git commit -m "Create widget" && git push -u origin create-widget
45
+ ```
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "code-review",
3
+ "version": "1.0.0",
4
+ "description": "Rigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provides brutally honest, actionable feedback on pull requests or merge requests, inc...",
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
+ "code-review",
14
+ "quality",
15
+ "security",
16
+ "style",
17
+ "risk"
18
+ ]
19
+ }
@@ -0,0 +1,18 @@
1
+ # Code Review
2
+
3
+ Rigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provides brutally honest, actionable feedback on pull requests or merge requests, including a risk assessment (🟢 Low / 🟡 Medium / 🔴 High) for every review.
4
+
5
+ This skill combines the previous `code-review` (standard) and `codereview-roasted` skills into a single unified review skill.
6
+
7
+ ## Triggers
8
+
9
+ This skill is activated by the following keywords:
10
+
11
+ - `/codereview`
12
+ - `/codereview-roasted` (backward-compatible alias)
13
+
14
+ ## Details
15
+
16
+ See [SKILL.md](./SKILL.md) for the full skill content including review scenarios, output format, and communication style guidelines.
17
+
18
+ The risk evaluation framework is defined in [`references/risk-evaluation.md`](references/risk-evaluation.md) and classifies PR risk based on pattern conformance, security sensitivity, infrastructure dependencies, blast radius, and core system impact.