← All skills
gitlab-issue-to-mr
84 / 100 · Low risk
Fine to try.
By OpenHands/extensions (GitHub) · other · 182 stars · scanned at commit b98ac06
Create an automation that implements GitLab issues when a configurable trigger label is applied. Polls one or more projects deterministically, clones the default branch, starts one OpenHands conversation per label event, then commits, pushes, and opens the merge request itself.
Works with any agent that supports SKILL.md skills.
What this skill can do
Sends data to these websites: gitlab.com
This is disclosed by the author in the skill's SKILL.md or README.
Found in 23 places.
Show 17 more
- skills/gitlab-issue-to-mr/SKILL.md, line 314
curl -s -X POST "${OPENHANDS_HOST}/api/automation/v1" \ - skills/gitlab-issue-to-mr/scripts/main.py, line 38
import urllib.request - skills/gitlab-issue-to-mr/scripts/main.py, line 263
req = urllib.request.Request(url, headers={"X-Session-API-Key": key}) - skills/gitlab-issue-to-mr/scripts/main.py, line 264
with urllib.request.urlopen(req) as r: - skills/gitlab-issue-to-mr/scripts/main.py, line 283
req = urllib.request.Request( - skills/gitlab-issue-to-mr/scripts/main.py, line 292
urllib.request.urlopen(req) - skills/gitlab-issue-to-mr/scripts/main.py, line 316
req = urllib.request.Request( - skills/gitlab-issue-to-mr/scripts/main.py, line 321
with urllib.request.urlopen(req) as r: - skills/gitlab-issue-to-mr/scripts/main.py, line 330
req = urllib.request.Request( - skills/gitlab-issue-to-mr/scripts/main.py, line 339
with urllib.request.urlopen(req) as r: - skills/gitlab-issue-to-mr/scripts/main.py, line 436
req = urllib.request.Request(url, data=data, headers=headers, method=method) - skills/gitlab-issue-to-mr/scripts/main.py, line 437
with urllib.request.urlopen(req) as r: - skills/gitlab-issue-to-mr/scripts/main.py, line 1127
req = urllib.request.Request(url, data=data, headers=headers, method=method) - skills/gitlab-issue-to-mr/scripts/main.py, line 1129
with urllib.request.urlopen(req) as r: - skills/gitlab-issue-to-mr/scripts/main.py, line 1138
req = urllib.request.Request( - skills/gitlab-issue-to-mr/scripts/main.py, line 1142
with urllib.request.urlopen(req) as r: - skills/gitlab-issue-to-mr/scripts/main.py, line 1211
req = urllib.request.Request(
and 3 more places
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README.
Found in 8 places.
Show 5 more
Reads your saved credentials, such as SSH keys or .env files
This is disclosed by the author in the skill's SKILL.md or README.
Found in 1 place.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'gitlab-issue-to-mr' ] || [ -L ~/.agents/skills/'gitlab-issue-to-mr' ]; then echo 'A skill folder named gitlab-issue-to-mr already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/OpenHands/extensions' "$d" && git -C "$d" checkout --quiet 'b98ac0671a51cc91bab3609bf4d334c7c832dd98' -- 'skills/gitlab-issue-to-mr' && mkdir -p ~/.agents/skills && cp -R "$d"/'skills/gitlab-issue-to-mr' ~/.agents/skills/'gitlab-issue-to-mr' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'gitlab-issue-to-mr' ~/.claude/skills/'gitlab-issue-to-mr' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for OpenHands/extensions shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/OpenHands/extensions/)
Score history
| Date | Version | Score |
|---|
| 2026-11-12 | b98ac06 | 84 |