opencode/skills/gitlab-mr-author/SKILL.md
Respond to feedback on your own merge request. Fetches discussions, proposes replies and code changes, and asks for approval before posting anything. Use when addressing review comments on your MR.
npx skillsauth add msegoviadev/dotfiles gitlab-mr-authorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when:
glab auth loginbrew install hurl (for potential inline comments, though author usually only replies)brew install jq<SKILLS_DIR>: the root skills directory (e.g., ~/.config/opencode/skills/ for opencode, ~/.claude/skills/ for claude-code)User provides MR via:
https://gitlab.com/user/repo/-/merge_requests/123123Extract:
user%2Frepo)glab api projects/:id/merge_requests/:iid/discussions
Parse to identify:
resolved field)Filter discussions to show only unresolved, actionable ones:
# Get unresolved discussions
glab api projects/:id/merge_requests/:iid/discussions | jq '[.[] | select(any(.notes[]; .resolvable == true and .resolved == false))]'
For each discussion:
For each unresolved, actionable comment:
a) Explain the feedback:
💬 Discussion: "Error handling"
👤 @reviewer commented on src/api.ts:45:
> This error case isn't handled properly. What happens if the API returns 500?
Issue: Missing error handling for HTTP 500 responses.
b) Propose a solution:
c) Present for approval:
💬 Proposed Response
Thread: "Error handling" (discussion_id: abc123)
Original comment by @reviewer:
> This error case isn't handled properly.
Proposed reply:
> Good catch! I've added proper error handling for 500 responses.
Proposed code change:
📁 src/api.ts:45-50
- Add try-catch for HTTP errors
[Approve] [Reject] [Edit]
Present ALL proposed actions at once:
User reviews and approves/rejects each item.
For approved code changes:
For approved replies:
glab api -X POST "projects/:id/merge_requests/:iid/discussions/:discussion_id/notes" \
-f "body=Reply text here"
For each addressed discussion where you've made the changes/replied:
✓ Discussion "Error handling" addressed with reply and code change.
Resolve this discussion? [Yes] [No]
Only resolve with explicit user approval:
glab api -X PUT "projects/:id/merge_requests/:iid/discussions/:discussion_id" \
-f "resolved=true"
# All discussions
glab api projects/:id/merge_requests/:iid/discussions
# Unresolved discussions only
glab api projects/:id/merge_requests/:iid/discussions | jq '[.[] | select(any(.notes[]; .resolvable == true and .resolved == false))]'
# Get discussion ID and body
glab api projects/:id/merge_requests/:iid/discussions | jq '[.[] | {id: .id, notes: [.notes[] | {author: .author.username, body: .body, position: .position}]}]'
glab api -X POST "projects/:id/merge_requests/:iid/discussions/:discussion_id/notes" \
-f "body=Your reply here"
glab api -X PUT "projects/:id/merge_requests/:iid/discussions/:discussion_id" \
-f "resolved=true"
From MR URL https://gitlab.com/user/repo/-/merge_requests/123:
user/repo → URL-encode: user%2Frepo123For additional commands, filtering options, and error handling, see:
../gitlab-mr-shared/api-commands.md
User: "Check my MR for feedback: https://gitlab.com/user/repo/-/merge_requests/42"
Agent:
user%2Frepo) and MR IID (42)glab api projects/user%2Frepo/merge_requests/42/discussionsdevelopment
Best practices for Remotion - Video creation in React
tools
Interact with Jira using the jira CLI. View, create, transition, assign, and comment on issues. Use when the user mentions Jira, issue keys, sprints, or ticket work.
development
Review GitLab merge requests by analyzing code changes and posting inline comments. Always shows comments for approval before posting and checks for duplicates. Use when reviewing someone else's MR.
development
Read, write, and respond to comments on Confluence pages via the REST API v2. Use when the user wants to fetch page content, search pages, update a page, create a new page, or address comments and suggestions left by others.