From vmkteam-developer
Manages self-hosted GitLab merge requests, pipelines, code reviews, and discussions via REST API v4 using pcurl profiles.
npx claudepluginhub vmkteam/claude-plugins --plugin vmkteam-developerThis skill uses the workspace's default tool permissions.
Работа с self-hosted GitLab через REST API v4. Для доступа используй `pcurl @{gl_profile}`, где `{gl_profile}` — pcurl-профиль GitLab-инстанса (определяется при онбординге).
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.
Работа с self-hosted GitLab через REST API v4. Для доступа используй pcurl @{gl_profile}, где {gl_profile} — pcurl-профиль GitLab-инстанса (определяется при онбординге).
Profile: @{gl_profile}
Base URL: https://{gl_host}/api/v4
Project ID: {gl_project_id}
Проверка доступа:
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}?simple=true' -s
# Открытые MR проекта
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests?state=opened&order_by=updated_at&per_page=20' -s
# Мои MR
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests?state=opened&scope=created_by_me' -s
# MR на мой review
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests?state=opened&reviewer_username={username}' -s
# MR по ветке
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests?state=opened&source_branch={branch}' -s
# Полная информация
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
# Approve
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/approve' -s -X POST
# Unapprove
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/unapprove' -s -X POST
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/discussions?per_page=100' -s
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в деталях MR.
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}"}'
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/discussions/{discussion_id}/notes' -s -X POST \
-H 'Content-Type: application/json' \
-d '{"body": "{reply_text}"}'
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/discussions/{discussion_id}' -s -X PUT \
-H 'Content-Type: application/json' \
-d '{"resolved": true}'
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/pipelines' -s
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/pipelines?ref={branch}&per_page=1&order_by=id&sort=desc' -s
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/pipelines/{pipeline_id}' -s
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/pipelines/{pipeline_id}/jobs?per_page=50' -s
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/jobs/{job_id}/trace' -s
Лог возвращается plain text. Ищи ошибки ближе к концу вывода.
# Retry весь pipeline
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/pipelines/{pipeline_id}/retry' -s -X POST
# Retry конкретный job
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/jobs/{job_id}/retry' -s -X POST
Для ревью MR:
/changes)/go-review на изменения# Получить diff и diff_refs
pcurl @{gl_profile} 'https://{gl_host}/api/v4/projects/{gl_project_id}/merge_requests/{mr_iid}/changes' -s
# Для каждого замечания — создать inline тред (см. секцию Discussions)
| Параметр | Значения |
|---|---|
state | opened, closed, merged, all |
scope | created_by_me, assigned_to_me, all |
order_by | created_at, updated_at |
sort | asc, desc |
per_page | 1-100 (default 20) |
https://{gl_host}/{gl_project_path}/-/merge_requests/{mr_iid}
https://{gl_host}/{gl_project_path}/-/pipelines/{pipeline_id}
https://{gl_host}/{gl_project_path}/-/jobs/{job_id}