From vmkteam-developer
Reviews GitLab Merge Requests: fetches MR diffs/commits/discussions via API, reads full code context, analyzes with /go-review (6 reviewers), posts summary and inline threads. Use --focus for security/performance.
npx claudepluginhub vmkteam/claude-plugins --plugin vmkteam-developerThis skill uses the workspace's default tool permissions.
Полный цикл code review для MR в GitLab: получить diff, проанализировать код, опубликовать замечания как inline threads.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Полный цикл code review для MR в GitLab: получить diff, проанализировать код, опубликовать замечания как inline threads.
Подключения из .claude/memory/project-index.md и ~/.claude/memory/infra-{group}.md.
/mr-review 42
/mr-review 42 --focus security
/mr-review 42 --focus performance
FETCH MR → READ CODE → REVIEW → SUMMARY → ⏸ HITL → PUBLISH
# Детали MR (title, description, author, source/target branch, diff_refs)
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}' -s
# Diff (список изменённых файлов с содержимым)
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/changes' -s
# Коммиты MR
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/commits' -s
# Существующие discussions (чтобы не дублировать замечания)
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/discussions?per_page=100' -s
Извлечь:
diff_refs (base_sha, start_sha, head_sha) — нужны для inline commentsДля каждого изменённого файла:
git fetch origin && git checkout {source_branch}Дополнительно:
Запустить /go-review на изменения MR — 6 ревьюеров:
Если указан --focus — дать повышенный приоритет этому аспекту.
Дополнительные проверки (сверх /go-review):
*_zenrpc.go, *_colgen.go, *_mfd.go) — пропустить, но убедиться что они обновленыmake generate consistency — если менялись структуры/аннотации, обновлены ли сгенерированные файлы?Сформировать два артефакта:
## Code Review Summary
**MR:** !{mr_iid} — {title}
**Reviewed by:** Claude (/go-review — 6 perspectives)
### Verdict: {Approve / Request Changes / Comment}
### Findings
| # | Severity | File | Line | Issue |
|---|----------|------|------|-------|
| 1 | blocker | {file} | {line} | {description} |
| 2 | major | {file} | {line} | {description} |
| 3 | minor | {file} | {line} | {description} |
### What's good
- {positive finding 1}
- {positive finding 2}
### Recommendations
- {recommendation 1}
Для каждого замечания severity blocker/major/minor — подготовить inline comment с:
**[blocker]**, **[major]**, **[minor]**Замечания nit — включить только в summary, не создавать отдельные threads.
Показать пользователю:
Пользователь решает:
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/notes' -s -X POST \
-H 'Content-Type: application/json' \
-d '{"body": "{summary_markdown}"}'
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/discussions' -s -X POST \
-H 'Content-Type: application/json' \
-d '{
"body": "{comment_text}",
"position": {
"base_sha": "{base_sha}",
"start_sha": "{start_sha}",
"head_sha": "{head_sha}",
"position_type": "text",
"old_path": "{file_path}",
"new_path": "{file_path}",
"new_line": {line_number}
}
}'
base_sha,start_sha,head_shaизdiff_refs(шаг 1).new_line— номер строки в новой версии файла. Для удалённых строк использоватьold_lineвместоnew_line.
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/approve' -s -X POST