@openhands/extensions 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,113 @@
1
+ ---
2
+ name: cobol-modernization
3
+ description: End-to-end COBOL to Java migration workflow. Handles build setup, mainframe dependency removal, and code migration with test validation.
4
+ license: MIT
5
+ compatibility: Requires GnuCOBOL, Java 11+, Maven/Gradle, Python 3.13 with uv
6
+ triggers:
7
+ - cobol modernization
8
+ - cobol to java
9
+ - cobol migration
10
+ - mainframe migration
11
+ ---
12
+
13
+ End-to-end workflow for migrating COBOL codebases to Java.
14
+
15
+ ## Overview
16
+
17
+ This plugin orchestrates a multi-phase COBOL modernization project:
18
+
19
+ 1. **Build Setup** — Configure compilation for both COBOL and Java, create test fixtures
20
+ 2. **Mainframe Planning** — Document transformations needed to remove mainframe dependencies
21
+ 3. **Mainframe Removal** — Convert CICS/VSAM code to standard COBOL
22
+ 4. **Java Migration** — Translate standardized COBOL to idiomatic Java
23
+
24
+ ## Prerequisites
25
+
26
+ - GnuCOBOL compiler (`cobc`)
27
+ - Java 11+ with Maven or Gradle
28
+ - Python 3.13 with `uv`
29
+ - LLM API key (Anthropic or OpenAI)
30
+
31
+ ## Quick Start
32
+
33
+ ```bash
34
+ export LLM_API_KEY="your-api-key"
35
+ export LLM_MODEL="anthropic/claude-3-5-sonnet-20241022"
36
+
37
+ uv run python -m lc_sdk_examples.cobol_modernization --src-path /path/to/cobol/project
38
+ ```
39
+
40
+ ## Workflow Phases
41
+
42
+ ### Phase 1: Build Setup
43
+
44
+ See [../build-setup/SKILL.md](../build-setup/SKILL.md)
45
+
46
+ Creates the foundation for the migration:
47
+ - COBOL compilation environment (GnuCOBOL)
48
+ - Java project structure (Maven/Gradle + JUnit 5)
49
+ - Test fixtures with golden outputs from COBOL execution
50
+
51
+ **Outputs:**
52
+ - `build_notes.md` — Build instructions
53
+ - `test-fixtures/` — Input/output test data
54
+ - `test_manifest.json` — Test case mapping
55
+
56
+ ### Phase 2: Mainframe Planning
57
+
58
+ See [../mainframe-planning/SKILL.md](../mainframe-planning/SKILL.md)
59
+
60
+ Creates a transformation guide without modifying code:
61
+ - Maps CICS/VSAM constructs to standard COBOL equivalents
62
+ - Documents error handling replacements
63
+ - Identifies UI operations to stub
64
+
65
+ **Output:**
66
+ - `mainframe_dependency_removal_plan.md`
67
+
68
+ ### Phase 3: Mainframe Removal
69
+
70
+ See [../mainfraime-removal/SKILL.md](../mainfraime-removal/SKILL.md)
71
+
72
+ Applies the transformation guide:
73
+ - Replaces EXEC CICS commands with file I/O
74
+ - Adds FILE STATUS checking
75
+ - Stubs BMS/screen operations
76
+
77
+ **Verification:**
78
+ - Code compiles with GnuCOBOL
79
+ - Runs with test fixtures
80
+
81
+ ### Phase 4: Java Migration
82
+
83
+ See [../to-java-migration/SKILL.md](../to-java-migration/SKILL.md)
84
+
85
+ Translates to idiomatic Java:
86
+ - Proper Java conventions (not literal translations)
87
+ - JUnit tests using golden outputs
88
+ - COBOL references in comments
89
+
90
+ **Done when:**
91
+ - All code compiles
92
+ - All JUnit tests pass
93
+ - No TODOs or stubs remain
94
+
95
+ ## Output Structure
96
+
97
+ ```
98
+ your-project/
99
+ ├── .lc-sdk/
100
+ │ ├── initial_batch_graph.json
101
+ │ ├── fixed_batch_graph.json
102
+ │ └── mainframe_dependency_removal_plan.md
103
+ ├── test-fixtures/
104
+ │ ├── inputs/
105
+ │ └── expected_outputs/
106
+ ├── test_manifest.json
107
+ ├── src/main/java/
108
+ └── src/test/java/
109
+ ```
110
+
111
+ ## Troubleshooting
112
+
113
+ See [../../references/troubleshooting.md](../../references/troubleshooting.md) for common issues and solutions.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: mainframe-removal
3
+ description: Apply mainframe dependency transformations to COBOL code using a pre-generated transformation guide. Converts CICS/VSAM constructs to standard COBOL.
4
+ license: MIT
5
+ compatibility: Requires GnuCOBOL (cobc) for verification
6
+ triggers:
7
+ - remove mainframe
8
+ - cobol transformation
9
+ - cics removal
10
+ - standard cobol
11
+ ---
12
+
13
+ Apply the transformations from a transformation guide to convert mainframe-specific COBOL to standard COBOL.
14
+
15
+ **Prerequisite**: A transformation guide must exist (see `cobol-mainframe-planning` skill).
16
+
17
+ ## Transformation Requirements
18
+
19
+ ### Data Operations
20
+
21
+ - Replace each CICS/VSAM construct with its standard COBOL equivalent per the plan
22
+ - Add FILE STATUS checks after EVERY file operation:
23
+ - Check for success (00) before proceeding
24
+ - Handle "not found" (23) distinctly from I/O errors (3x)
25
+ - Handle "file not exists" (35) at OPEN time
26
+ - Add explicit CLOSE statements in all code paths (including error paths)
27
+
28
+ ### UI/Terminal Operations (BMS maps, SEND/RECEIVE)
29
+
30
+ - Replace with simple stubs or ACCEPT/DISPLAY statements
31
+ - Do NOT spend time replicating screen layouts
32
+ - Focus on preserving data flow, not UI fidelity
33
+
34
+ ### Error Handling
35
+
36
+ - Replace CICS RESP/RESP2 checks with equivalent FILE STATUS logic
37
+ - Replace HANDLE CONDITION with explicit status checking after operations
38
+ - Ensure error paths don't leave files open
39
+
40
+ See [references/cics-transformation-examples.md](references/cics-transformation-examples.md) for before/after code examples.
41
+
42
+ ## Verification
43
+
44
+ After transformation:
45
+ - Code MUST compile without errors
46
+ - Test with valid input → should execute core business logic
47
+ - Test with missing/invalid files → should fail gracefully, not crash
48
+
49
+ ## Preserve
50
+
51
+ - All original business logic
52
+ - Data transformations and calculations
53
+ - Validation rules
54
+
55
+ ## Checklist
56
+
57
+ - [ ] All EXEC CICS commands replaced
58
+ - [ ] FILE STATUS declared for all files
59
+ - [ ] FILE STATUS checked after every I/O operation
60
+ - [ ] CLOSE statements in all code paths
61
+ - [ ] Code compiles successfully
62
+ - [ ] Basic test execution passes
@@ -0,0 +1,45 @@
1
+ # CICS Transformation Examples
2
+
3
+ ## UI/Terminal Operations
4
+
5
+ ### Before (CICS)
6
+ ```cobol
7
+ EXEC CICS SEND MAP('CUSTMAP') MAPSET('CUSTSET') END-EXEC
8
+ ```
9
+
10
+ ### After (Standard COBOL)
11
+ ```cobol
12
+ DISPLAY "Customer Screen Output"
13
+ DISPLAY WS-CUSTOMER-NAME
14
+ DISPLAY WS-CUSTOMER-ADDRESS
15
+ ```
16
+
17
+ ---
18
+
19
+ ## Error Handling
20
+
21
+ ### Before (CICS with RESP/RESP2)
22
+ ```cobol
23
+ EXEC CICS READ FILE('CUSTFILE')
24
+ INTO(WS-CUSTOMER-REC)
25
+ RIDFLD(WS-CUST-KEY)
26
+ RESP(WS-RESP)
27
+ RESP2(WS-RESP2)
28
+ END-EXEC
29
+ IF WS-RESP = DFHRESP(NOTFND)
30
+ PERFORM CUSTOMER-NOT-FOUND
31
+ END-IF
32
+ ```
33
+
34
+ ### After (Standard COBOL with FILE STATUS)
35
+ ```cobol
36
+ READ CUSTFILE INTO WS-CUSTOMER-REC
37
+ KEY IS WS-CUST-KEY
38
+ IF FILE-STATUS NOT = '00'
39
+ IF FILE-STATUS = '23'
40
+ PERFORM CUSTOMER-NOT-FOUND
41
+ ELSE
42
+ PERFORM FILE-ERROR-HANDLER
43
+ END-IF
44
+ END-IF
45
+ ```
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: mainframe-planning
3
+ description: Create a transformation guide for replacing mainframe-specific COBOL constructs with standard COBOL equivalents. Use when preparing COBOL code for local execution or migration.
4
+ license: MIT
5
+ compatibility: Requires knowledge of CICS/VSAM mainframe constructs
6
+ triggers:
7
+ - mainframe planning
8
+ - cics replacement
9
+ - cobol transformation guide
10
+ - mainframe dependency
11
+ ---
12
+
13
+ Create a comprehensive transformation guide that maps each mainframe dependency to its standard COBOL replacement.
14
+
15
+ This guide is a prerequisite for the actual transformation — DO NOT modify any code, only create the guide.
16
+
17
+ ## Output Format
18
+
19
+ Document each mainframe-specific construct with:
20
+
21
+ 1. **Pattern**: The mainframe construct (e.g., `EXEC CICS READ FILE(...)`)
22
+ 2. **Replacement**: The standard COBOL equivalent
23
+ 3. **Error Handling**: How to replicate the mainframe's error behavior
24
+ - Map CICS RESP/RESP2 codes to FILE STATUS equivalents
25
+ - Specify which FILE STATUS values to check (e.g., 00=success, 23=not found, 35=file not exists)
26
+ 4. **Resource Cleanup**: Any cleanup the replacement requires (CICS auto-manages resources; file I/O does not)
27
+ 5. **Edge Cases**: Behavior differences between mainframe and standard COBOL
28
+
29
+ ## Constructs to Address
30
+
31
+ ### Data Operations (CICS/IMS/VSAM)
32
+
33
+ - READ, WRITE, REWRITE, DELETE operations
34
+ - STARTBR, READNEXT, READPREV (browse operations)
35
+ - CICS error handling: HANDLE CONDITION, RESP/RESP2 options
36
+ - VSAM → sequential or indexed file I/O
37
+
38
+ ### UI/Terminal Operations (BMS maps, screens)
39
+
40
+ - SEND MAP, RECEIVE MAP → these can be MOCKED or stubbed
41
+ - Screen I/O is not needed for business logic validation
42
+ - Document how to replace with simple ACCEPT/DISPLAY or test harness stubs
43
+ - Focus on preserving the data flow, not the UI interaction
44
+
45
+ ### Other Mainframe Constructs
46
+
47
+ - Mainframe data types (COMP-3 packed decimal, etc.)
48
+ - JCL-embedded constructs
49
+ - IMS calls (if present)
50
+
51
+ ## Critical Requirements
52
+
53
+ - Every CICS command that can fail MUST have an error handling replacement documented
54
+ - UI operations should be clearly marked as "mock/stub" so the agent doesn't get stuck on them
55
+ - Prefer: file-based I/O over mainframe I/O, standard data types over mainframe types
56
+
57
+ ## Common Mappings Reference
58
+
59
+ ### FILE STATUS Codes
60
+
61
+ | Code | Meaning | CICS Equivalent |
62
+ |------|---------|-----------------|
63
+ | 00 | Success | Normal completion |
64
+ | 23 | Record not found | NOTFND condition |
65
+ | 35 | File does not exist | NOTOPEN condition |
66
+ | 22 | Duplicate key | DUPREC condition |
67
+ | 3x | I/O errors | Various IOERR conditions |
68
+
69
+ ### CICS to Standard COBOL
70
+
71
+ | CICS Command | Standard COBOL |
72
+ |--------------|----------------|
73
+ | `EXEC CICS READ FILE(...)` | `READ filename INTO...` |
74
+ | `EXEC CICS WRITE FILE(...)` | `WRITE record-name FROM...` |
75
+ | `EXEC CICS REWRITE FILE(...)` | `REWRITE record-name FROM...` |
76
+ | `EXEC CICS DELETE FILE(...)` | `DELETE filename RECORD` |
77
+ | `EXEC CICS STARTBR FILE(...)` | `START filename KEY...` |
78
+ | `EXEC CICS READNEXT FILE(...)` | `READ filename NEXT INTO...` |
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: to-java-migration
3
+ description: Migrate COBOL code to idiomatic Java, preserving business logic while following Java best practices. Use for COBOL modernization projects.
4
+ license: MIT
5
+ compatibility: Requires Java 11+, Maven or Gradle
6
+ triggers:
7
+ - cobol to java
8
+ - cobol migration
9
+ - cobol modernization
10
+ - migrate cobol
11
+ ---
12
+
13
+ Migrate COBOL code to idiomatic Java, preserving all business logic.
14
+
15
+ ## Code Style Requirements
16
+
17
+ Write idiomatic Java, NOT literal COBOL translations:
18
+ - Use Java conventions: camelCase names, standard collections (List, Map)
19
+ - Use Java standard library instead of rolling your own
20
+ - No god classes — split into cohesive, single-responsibility classes
21
+ - No TODO comments or stub implementations — fully implement everything
22
+
23
+ ## Robustness Requirements
24
+
25
+ - Validate inputs at method entry (null checks, range validation)
26
+ - Use try-catch for all I/O and external operations
27
+ - Use try-with-resources for files, streams, connections
28
+ - Handle errors gracefully with meaningful messages
29
+
30
+ ## Configuration Requirements
31
+
32
+ - No hardcoded file paths or credentials — use environment variables
33
+ - No magic numbers — use named constants
34
+ - Make limits and timeouts configurable
35
+
36
+ ## Documentation Requirements
37
+
38
+ - Add COBOL references: `// COBOL equivalent: BNK1CRA.cbl 145-167`
39
+ - Document assumptions made during conversion
40
+ - Add Javadoc to public methods
41
+
42
+ ## Testing Requirements
43
+
44
+ If test fixtures exist (see `cobol-build-setup` skill):
45
+ - Create a JUnit test class for each migrated program
46
+ - Load inputs from fixtures, assert output matches expected (golden) output
47
+ - All tests must pass before migration is complete
48
+
49
+ ## References
50
+
51
+ - See [references/cobol-to-java-example.md](references/cobol-to-java-example.md) for a complete transformation example
52
+ - See [references/datatype-mappings.md](references/datatype-mappings.md) for COBOL→Java type mappings
53
+
54
+ ## Done When
55
+
56
+ ✓ Code compiles without errors
57
+ ✓ All JUnit tests pass (Java output matches COBOL golden output)
58
+ ✓ No TODO or stub implementations remain
59
+ ✓ COBOL references documented in comments
@@ -0,0 +1,58 @@
1
+ # COBOL to Java Transformation Example
2
+
3
+ ## COBOL (Before)
4
+
5
+ ```cobol
6
+ IDENTIFICATION DIVISION.
7
+ PROGRAM-ID. CALC-TAX.
8
+ DATA DIVISION.
9
+ WORKING-STORAGE SECTION.
10
+ 01 WS-SUBTOTAL PIC 9(7)V99.
11
+ 01 WS-TAX-RATE PIC V999 VALUE 0.085.
12
+ 01 WS-TAX-AMOUNT PIC 9(7)V99.
13
+
14
+ PROCEDURE DIVISION.
15
+ MULTIPLY WS-SUBTOTAL BY WS-TAX-RATE
16
+ GIVING WS-TAX-AMOUNT.
17
+ STOP RUN.
18
+ ```
19
+
20
+ ## Java (After)
21
+
22
+ ```java
23
+ /**
24
+ * Tax calculation service.
25
+ * COBOL equivalent: CALC-TAX.cbl
26
+ */
27
+ public class TaxCalculator {
28
+ private static final BigDecimal DEFAULT_TAX_RATE = new BigDecimal("0.085");
29
+
30
+ private final BigDecimal taxRate;
31
+
32
+ public TaxCalculator() {
33
+ this(DEFAULT_TAX_RATE);
34
+ }
35
+
36
+ public TaxCalculator(BigDecimal taxRate) {
37
+ this.taxRate = Objects.requireNonNull(taxRate, "Tax rate cannot be null");
38
+ }
39
+
40
+ /**
41
+ * Calculate tax for a given subtotal.
42
+ * COBOL equivalent: CALC-TAX.cbl lines 10-12
43
+ *
44
+ * @param subtotal The pre-tax amount
45
+ * @return The calculated tax amount
46
+ * @throws IllegalArgumentException if subtotal is null or negative
47
+ */
48
+ public BigDecimal calculateTax(BigDecimal subtotal) {
49
+ if (subtotal == null) {
50
+ throw new IllegalArgumentException("Subtotal cannot be null");
51
+ }
52
+ if (subtotal.compareTo(BigDecimal.ZERO) < 0) {
53
+ throw new IllegalArgumentException("Subtotal cannot be negative");
54
+ }
55
+ return subtotal.multiply(taxRate).setScale(2, RoundingMode.HALF_UP);
56
+ }
57
+ }
58
+ ```
@@ -0,0 +1,19 @@
1
+ # COBOL to Java Data Type Mappings
2
+
3
+ | COBOL | Java | Notes |
4
+ |-------|------|-------|
5
+ | `PIC 9(n)V99` | `BigDecimal` | Decimal with implied decimal point |
6
+ | `PIC X(n)` | `String` | Alphanumeric |
7
+ | `PIC 9(n)` | `int` or `long` | Use `long` for n > 9 |
8
+ | `COMP-3` (packed decimal) | `BigDecimal` | Preserve precision |
9
+ | `OCCURS n TIMES` | `List<T>` or array | Prefer `List` for flexibility |
10
+
11
+ ## Control Flow Mappings
12
+
13
+ | COBOL | Java |
14
+ |-------|------|
15
+ | `PERFORM` | method call |
16
+ | `EVALUATE/WHEN` | `switch` |
17
+ | `IF/ELSE` | `if/else` |
18
+ | `PERFORM UNTIL` | `while` loop |
19
+ | `PERFORM VARYING` | `for` loop |
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "issue-duplicate-checker",
3
+ "version": "0.1.0",
4
+ "description": "Detect duplicate GitHub issues with OpenHands Cloud and manage duplicate-candidate lifecycle automation.",
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": ["issues", "duplicates", "github", "automation"]
13
+ }
@@ -0,0 +1,51 @@
1
+ # OpenHands Issue Duplicate Checker
2
+
3
+ Reusable GitHub Action for detecting duplicate issues with an OpenHands Cloud conversation, posting a duplicate/overlap notice, labeling high-confidence duplicates as `duplicate-candidate`, and auto-closing aged candidates.
4
+
5
+ ## Usage
6
+
7
+ ```yaml
8
+ - uses: OpenHands/extensions/plugins/issue-duplicate-checker@main
9
+ with:
10
+ mode: issue-check
11
+ repository: ${{ github.repository }}
12
+ issue-number: ${{ github.event.issue.number }}
13
+ openhands-api-key: ${{ secrets.OPENHANDS_API_KEY }}
14
+ github-token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC || github.token }}
15
+ # Optional OpenHands polling controls. Each polling phase can wait up to
16
+ # max-wait-seconds, so total runtime can approach twice this value when a
17
+ # start task must be awaited before the conversation run.
18
+ poll-interval-seconds: '5'
19
+ max-wait-seconds: '900'
20
+ ```
21
+
22
+ For scheduled auto-close:
23
+
24
+ ```yaml
25
+ - uses: OpenHands/extensions/plugins/issue-duplicate-checker@main
26
+ with:
27
+ mode: auto-close
28
+ repository: ${{ github.repository }}
29
+ github-token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC || github.token }}
30
+ close-after-days: '3'
31
+ # Optional: preview without mutating issues.
32
+ dry-run: 'false'
33
+ ```
34
+
35
+ For removing the `duplicate-candidate` label after a human comments, run the action from an `issue_comment` event:
36
+
37
+ ```yaml
38
+ on:
39
+ issue_comment:
40
+ types: [created]
41
+
42
+ jobs:
43
+ remove-duplicate-candidate:
44
+ steps:
45
+ - uses: OpenHands/extensions/plugins/issue-duplicate-checker@main
46
+ with:
47
+ mode: remove-label
48
+ github-token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC || github.token }}
49
+ ```
50
+
51
+ The action requires `issues: write` permission. `issue-check` also requires an `OPENHANDS_API_KEY` secret.