@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,50 @@
1
+ ---
2
+ name: jupyter
3
+ description: Read, modify, execute, and convert Jupyter notebooks programmatically. Use when working with .ipynb files for data science workflows, including editing cells, clearing outputs, or converting to other formats.
4
+ triggers:
5
+ - ipynb
6
+ - jupyter
7
+ ---
8
+
9
+ # Jupyter Notebook Guide
10
+
11
+ Notebooks are JSON files. Cells are in `nb['cells']`, each has `source` (list of strings) and `cell_type` ('code', 'markdown', or 'raw').
12
+
13
+ ## Modifying Notebooks
14
+ ```python
15
+ import json
16
+ with open('notebook.ipynb') as f:
17
+ nb = json.load(f)
18
+ # Modify nb['cells'][i]['source'], then:
19
+ with open('notebook.ipynb', 'w') as f:
20
+ json.dump(nb, f, indent=1)
21
+ ```
22
+
23
+ ## Executing & Converting
24
+ ```bash
25
+ jupyter nbconvert --to notebook --execute --inplace notebook.ipynb # Execute in place
26
+ jupyter nbconvert --to html notebook.ipynb # Convert to HTML
27
+ jupyter nbconvert --to script notebook.ipynb # Convert to Python
28
+ jupyter nbconvert --to markdown notebook.ipynb # Convert to Markdown
29
+ ```
30
+
31
+ ## Finding Code
32
+ ```bash
33
+ grep -n "search_term" notebook.ipynb
34
+ ```
35
+
36
+ ## Cell Structure
37
+ ```python
38
+ # Code cell
39
+ {"cell_type": "code", "execution_count": None, "metadata": {}, "outputs": [], "source": ["code\n"]}
40
+ # Markdown cell
41
+ {"cell_type": "markdown", "metadata": {}, "source": ["# Title\n"]}
42
+ ```
43
+
44
+ ## Clear Outputs
45
+ ```python
46
+ for cell in nb['cells']:
47
+ if cell['cell_type'] == 'code':
48
+ cell['outputs'] = []
49
+ cell['execution_count'] = None
50
+ ```
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "kubernetes",
3
+ "version": "1.0.0",
4
+ "description": "Set up and manage local Kubernetes clusters using KIND (Kubernetes IN Docker). Use when testing Kubernetes applications locally or developing cloud-native workloads.",
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
+ "kubernetes",
14
+ "k8s",
15
+ "kind",
16
+ "cloud-native"
17
+ ]
18
+ }
@@ -0,0 +1,53 @@
1
+ # Kubernetes
2
+
3
+ Set up and manage local Kubernetes clusters using KIND (Kubernetes IN Docker). Use when testing Kubernetes applications locally or developing cloud-native workloads.
4
+
5
+ ## Triggers
6
+
7
+ This skill is activated by the following keywords:
8
+
9
+ - `kubernetes`
10
+ - `k8s`
11
+ - `kube`
12
+
13
+ ## Details
14
+
15
+ # Kubernetes Local Development with KIND
16
+
17
+ ## KIND Installation and Setup
18
+
19
+ KIND (Kubernetes IN Docker) is a tool for running local Kubernetes clusters using Docker containers as nodes. It's designed for testing Kubernetes applications locally.
20
+
21
+ IMPORTANT: Before you proceed with installation, make sure you have docker installed locally.
22
+
23
+ ### Installation
24
+
25
+ To install KIND on a Debian/Ubuntu system:
26
+
27
+ ```bash
28
+ # Download KIND binary
29
+ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64
30
+ # Make it executable
31
+ chmod +x ./kind
32
+ # Move to a directory in your PATH
33
+ sudo mv ./kind /usr/local/bin/
34
+ ```
35
+
36
+ To install kubectl:
37
+
38
+ ```bash
39
+ # Download kubectl
40
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
41
+ # Make it executable
42
+ chmod +x kubectl
43
+ # Move to a directory in your PATH
44
+ sudo mv ./kubectl /usr/local/bin/
45
+ ```
46
+
47
+ ### Creating a Cluster
48
+
49
+ Create a basic KIND cluster:
50
+
51
+ ```bash
52
+ kind create cluster
53
+ ```
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: kubernetes
3
+ description: Set up and manage local Kubernetes clusters using KIND (Kubernetes IN Docker). Use when testing Kubernetes applications locally or developing cloud-native workloads.
4
+ triggers:
5
+ - kubernetes
6
+ - k8s
7
+ - kube
8
+ ---
9
+
10
+ # Kubernetes Local Development with KIND
11
+
12
+ ## KIND Installation and Setup
13
+
14
+ KIND (Kubernetes IN Docker) is a tool for running local Kubernetes clusters using Docker containers as nodes. It's designed for testing Kubernetes applications locally.
15
+
16
+ IMPORTANT: Before you proceed with installation, make sure you have docker installed locally.
17
+
18
+ ### Installation
19
+
20
+ To install KIND on a Debian/Ubuntu system:
21
+
22
+ ```bash
23
+ # Download KIND binary
24
+ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.22.0/kind-linux-amd64
25
+ # Make it executable
26
+ chmod +x ./kind
27
+ # Move to a directory in your PATH
28
+ sudo mv ./kind /usr/local/bin/
29
+ ```
30
+
31
+ To install kubectl:
32
+
33
+ ```bash
34
+ # Download kubectl
35
+ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
36
+ # Make it executable
37
+ chmod +x kubectl
38
+ # Move to a directory in your PATH
39
+ sudo mv ./kubectl /usr/local/bin/
40
+ ```
41
+
42
+ ### Creating a Cluster
43
+
44
+ Create a basic KIND cluster:
45
+
46
+ ```bash
47
+ kind create cluster
48
+ ```
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "learn-from-code-review",
3
+ "version": "1.0.0",
4
+ "description": "Distill code review feedback from GitHub PRs into reusable skills and guidelines. Use when users ask to learn from code reviews, extract review patterns, or generate coding standards from historica...",
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
+ "learning",
15
+ "skills",
16
+ "guidelines",
17
+ "pr-feedback"
18
+ ]
19
+ }
@@ -0,0 +1,64 @@
1
+ # Learn from Code Review
2
+
3
+ Distill code review feedback from GitHub pull requests into reusable skills and repository guidelines.
4
+
5
+ ## What It Does
6
+
7
+ This skill analyzes PR review comments from a repository and extracts recurring patterns of feedback. These patterns are then transformed into:
8
+
9
+ - **Repository-specific skills** (`.openhands/skills/`) for domain-specific patterns
10
+ - **AGENTS.md updates** for general coding conventions and best practices
11
+
12
+ ## When to Use
13
+
14
+ - "Learn from our code reviews"
15
+ - "Distill PR feedback into guidelines"
16
+ - "What patterns do reviewers keep pointing out?"
17
+ - "Generate coding standards from review history"
18
+ - Running `/learn-from-reviews`
19
+
20
+ ## Requirements
21
+
22
+ - `GITHUB_TOKEN` environment variable
23
+ - GitHub CLI (`gh`) available
24
+
25
+ ## Example
26
+
27
+ ```
28
+ User: Learn from our code reviews over the past month
29
+
30
+ Agent: I'll analyze recent PR review comments and distill them into actionable guidelines.
31
+
32
+ [Analyzes 25 merged PRs with 150 review comments]
33
+ [Filters out bot comments and low-signal responses]
34
+ [Identifies 4 recurring patterns]
35
+
36
+ Found the following patterns from code review feedback:
37
+
38
+ 1. Error Handling (12 comments)
39
+ - Always include context when logging errors
40
+ - Use structured error responses in APIs
41
+
42
+ 2. Testing (8 comments)
43
+ - Add edge case tests for validation logic
44
+ - Mock external services consistently
45
+
46
+ 3. Database Queries (6 comments)
47
+ - Use parameterized queries exclusively
48
+ - Add appropriate indexes for new queries
49
+
50
+ I'll create a draft PR with:
51
+ - New skill: `.openhands/skills/error-handling/SKILL.md`
52
+ - Updates to `AGENTS.md` with testing and database guidelines
53
+ ```
54
+
55
+ ## Output
56
+
57
+ The skill generates a draft PR containing proposed changes based on the analysis. Human review is expected before merging.
58
+
59
+ ## Related Skills
60
+
61
+ - `github-pr-review` - Post structured code reviews
62
+ - `code-review` - Perform code reviews
63
+ - `skill-creator` - Create new skills manually
64
+ - `agent-memory` - Persist repository knowledge
@@ -0,0 +1,186 @@
1
+ ---
2
+ name: learn-from-code-review
3
+ description: Distill code review feedback from GitHub PRs into reusable skills and guidelines. This skill should be used when users ask to "learn from code reviews", "distill PR feedback", "improve coding standards", "extract learnings from reviews", or want to generate skills/guidelines from historical review comments.
4
+ triggers:
5
+ - /learn-from-reviews
6
+ - learn from code review
7
+ - distill reviews
8
+ ---
9
+
10
+ # Learn from Code Review
11
+
12
+ Analyze code review comments from GitHub pull requests and distill them into reusable skills or repository guidelines that improve future code quality.
13
+
14
+ ## Overview
15
+
16
+ Code review feedback contains valuable institutional knowledge that often gets buried across hundreds of PRs. This skill extracts meaningful patterns from review comments and transforms them into:
17
+
18
+ 1. **Repository-specific skills** - Placed in `.openhands/skills/` for domain-specific patterns
19
+ 2. **AGENTS.md guidelines** - Overall repository conventions and best practices
20
+
21
+ ## Prerequisites
22
+
23
+ - `GITHUB_TOKEN` environment variable must be set
24
+ - GitHub CLI (`gh`) should be available
25
+
26
+ ## Workflow
27
+
28
+ ### Step 1: Identify Target Repository
29
+
30
+ Determine the repository to analyze:
31
+
32
+ ```bash
33
+ # Get current repo info
34
+ gh repo view --json nameWithOwner -q '.nameWithOwner'
35
+ ```
36
+
37
+ If not in a repository, ask the user which repository to analyze.
38
+
39
+ ### Step 2: Fetch Review Comments
40
+
41
+ Retrieve PR review comments from the repository:
42
+
43
+ ```bash
44
+ # Fetch merged PRs from the last 30 days (adjustable)
45
+ gh pr list --repo {owner}/{repo} \
46
+ --state merged \
47
+ --limit 50 \
48
+ --json number,title,mergedAt
49
+
50
+ # For each PR, fetch review comments
51
+ gh api repos/{owner}/{repo}/pulls/{pr_number}/comments \
52
+ --jq '.[] | {body: .body, path: .path, user: .user.login, created_at: .created_at}'
53
+
54
+ # Also fetch review-level comments (not tied to specific lines)
55
+ gh api repos/{owner}/{repo}/pulls/{pr_number}/reviews \
56
+ --jq '.[] | select(.body != "") | {body: .body, user: .user.login, state: .state}'
57
+ ```
58
+
59
+ ### Step 3: Filter and Categorize Comments
60
+
61
+ Apply noise filtering to keep only meaningful feedback:
62
+
63
+ **Exclude:**
64
+ - Bot comments (dependabot, copilot, github-actions, etc.)
65
+ - Low-signal responses ("LGTM", "+1", "looks good", "thanks", "nice")
66
+ - Comments shorter than 30 characters
67
+ - Auto-generated comments (CI status, coverage reports)
68
+
69
+ **Categorize remaining comments by:**
70
+ - Security concerns
71
+ - Performance patterns
72
+ - Code style/conventions
73
+ - Architecture/design patterns
74
+ - Error handling
75
+ - Testing requirements
76
+ - Documentation standards
77
+
78
+ ### Step 4: Distill Patterns
79
+
80
+ For each category with sufficient examples (3+ similar comments), identify:
81
+
82
+ 1. **The recurring issue** - What mistake or oversight keeps appearing
83
+ 2. **The desired pattern** - What reviewers consistently ask for
84
+ 3. **Example context** - Concrete before/after code snippets when available
85
+
86
+ ### Step 5: Generate Output
87
+
88
+ If clear, actionable patterns emerge, generate focused skill files. If no clear patterns emerge, report this to the user—it's fine to produce no output when the codebase already has strong conventions or when review comments don't cluster into recurring themes.
89
+
90
+ When creating skills, place them in `.openhands/skills/{domain-name}/SKILL.md`:
91
+
92
+ ```yaml
93
+ ---
94
+ name: database-queries
95
+ description: Database query patterns and best practices for this repository.
96
+ ---
97
+
98
+ # Database Query Guidelines
99
+
100
+ ### Always Use Parameterized Queries
101
+ [Pattern description with examples]
102
+
103
+ ### Connection Pool Management
104
+ [Pattern description with examples]
105
+ ```
106
+
107
+ Prefer skills over AGENTS.md updates, since AGENTS.md typically already contains general coding guidelines.
108
+
109
+ ### Step 6: Create Draft PR (if applicable)
110
+
111
+ Use the `create_pr` tool to open a draft PR with the proposed changes. The PR description should include:
112
+ - Number of PRs analyzed
113
+ - Number of comments processed
114
+ - Categories of patterns found
115
+ - List of proposed changes (new skills and/or AGENTS.md updates)
116
+
117
+ ## Example Output
118
+
119
+ ### Sample Skill: API Error Handling
120
+
121
+ ```yaml
122
+ ---
123
+ name: api-error-handling
124
+ description: API error handling patterns for this repository.
125
+ ---
126
+
127
+ # API Error Handling
128
+
129
+ ## Always Return Structured Errors
130
+
131
+ ❌ Avoid:
132
+ ```python
133
+ return {"error": str(e)}
134
+ ```
135
+
136
+ ✅ Prefer:
137
+ ```python
138
+ return {
139
+ "error": {
140
+ "code": "VALIDATION_ERROR",
141
+ "message": "Invalid input",
142
+ "details": {"field": "email", "reason": "Invalid format"}
143
+ }
144
+ }
145
+ ```
146
+
147
+ ## Log Before Returning Errors
148
+
149
+ ```python
150
+ logger.error(f"API error in {endpoint}: {e}", exc_info=True)
151
+ return error_response(e)
152
+ ```
153
+ ```
154
+
155
+ ## Defaults
156
+
157
+ This workflow analyzes PRs from the past 30 days by default.
158
+
159
+ ## Best Practices
160
+
161
+ 1. **Run periodically** - Schedule monthly or quarterly to capture evolving patterns
162
+ 2. **Review before merging** - Generated content is a draft; human review is essential
163
+ 3. **Iterate** - Refine patterns based on team feedback
164
+ 4. **Avoid duplication** - Check existing AGENTS.md and skills before adding
165
+ 5. **Cite sources** - Reference PR numbers when documenting patterns
166
+
167
+ ## Error Handling
168
+
169
+ Handle these common edge cases gracefully:
170
+
171
+ - **Repository has few PRs**: If fewer than 10 merged PRs exist in the timeframe, inform the user that there may not be enough data to identify patterns. Proceed with analysis but note the limited sample size.
172
+ - **No patterns emerge**: When comments don't cluster into recurring themes (common for well-established codebases), report this to the user and suggest either expanding the time range or that the codebase may already have strong conventions.
173
+ - **Token lacks repository access**: If the GitHub API returns 403/404, explain that the token may not have access to the repository and suggest checking token permissions.
174
+ - **`gh` CLI unavailable**: Fall back to direct GitHub API calls using `curl` with `$GITHUB_TOKEN`, or inform the user that `gh` needs to be installed.
175
+
176
+ ## Limitations
177
+
178
+ - Only analyzes accessible repositories (requires appropriate permissions)
179
+ - Cannot capture verbal feedback from pair programming or meetings
180
+ - Patterns may reflect individual reviewer preferences vs. team consensus
181
+ - Historical comments may reference outdated code patterns
182
+
183
+ ## Additional Resources
184
+
185
+ For posting structured code reviews, see the `github-pr-review` skill.
186
+ For creating new skills, see the `skill-creator` skill.
@@ -0,0 +1,8 @@
1
+ ---
2
+ # auto-generated by sync_extensions.py
3
+ description: Distill code review feedback from GitHub PRs into reusable skills and guidelines. This skill should be used when users ask to "learn from code reviews", "distill PR feedback", "improve coding standards", "extract learnings from reviews", or want to generate skills/guidelines from historical review comments.
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,19 @@
1
+ {
2
+ "name": "linear",
3
+ "version": "1.0.0",
4
+ "description": "Interact with Linear project management - query issues, update status, create tickets using the Linear GraphQL 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
+ "linear",
14
+ "ticket",
15
+ "issue",
16
+ "project-management",
17
+ "graphql"
18
+ ]
19
+ }
@@ -0,0 +1,58 @@
1
+ # Linear
2
+
3
+ Interact with Linear project management - query issues, update status, create tickets, and manage workflows using the Linear GraphQL API. Use when working with Linear tickets, sprints, or project tracking.
4
+
5
+ ## Triggers
6
+
7
+ This skill is activated by the following keywords:
8
+
9
+ - `linear`
10
+ - `ticket`
11
+ - `issue tracking`
12
+
13
+ ## Details
14
+
15
+ You need access to an environment variable, `LINEAR_API_KEY`, which allows you to interact with the Linear API.
16
+
17
+ <IMPORTANT>
18
+ You can use `curl` with the `LINEAR_API_KEY` to interact with Linear's GraphQL API.
19
+ ALWAYS use the Linear API for operations instead of a web browser.
20
+ Before performing any Linear operations, verify the API key is available by checking the environment variable.
21
+ </IMPORTANT>
22
+
23
+ ## Features
24
+
25
+ - **Query Issues**: Get assigned issues, filter by priority, search by identifier
26
+ - **Update State**: Change issue status with workflow state lookup
27
+ - **Comments**: Add comments to issues
28
+ - **Create Issues**: Create new tickets with proper team assignment
29
+ - **Reference**: Priority levels, state types, API documentation links
30
+
31
+ ## Important Concepts
32
+
33
+ ### Linear Identifiers
34
+
35
+ Linear uses two types of identifiers for issues:
36
+
37
+ - **Human-readable identifier** (e.g., `ALL-1234`): Displayed to users, used in search queries
38
+ - **UUID** (e.g., `a1b2c3d4-e5f6-7890-abcd-ef1234567890`): Required for all mutations
39
+
40
+ **Important workflow**: When updating issues:
41
+ 1. Search using the human-readable identifier
42
+ 2. Extract the UUID from the query result
43
+ 3. Use the UUID in mutation operations
44
+
45
+ ### Priority Levels
46
+
47
+ | Priority | Label | Description |
48
+ |----------|-------|-------------|
49
+ | 1 | Urgent | Work on immediately |
50
+ | 2 | High | Work on first |
51
+ | 3 | Medium | Normal priority |
52
+ | 4 | Low | When time permits |
53
+ | 0 | None | Backlog |
54
+
55
+ ## Documentation
56
+
57
+ - [Linear API Documentation](https://developers.linear.app/docs/graphql/working-with-the-graphql-api)
58
+ - [GraphQL Schema Reference](https://studio.apollographql.com/public/Linear-API/variant/current/schema/reference)