Hve-core gitlab

Manage GitLab merge requests and pipelines with a Python CLI - Brought to you by microsoft/hve-core

install
source · Clone the upstream repo
git clone https://github.com/microsoft/hve-core
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/microsoft/hve-core "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.github/skills/gitlab/gitlab" ~/.claude/skills/microsoft-hve-core-gitlab && rm -rf "$T"
manifest: .github/skills/gitlab/gitlab/SKILL.md
source content

GitLab Skill

Overview

Use this skill to inspect and update GitLab merge requests, notes, pipelines, and job logs against GitLab.com or self-managed GitLab instances.

This skill is the repository-local Python workflow for GitLab tasks. It is not the official GitLab MCP server integration surface.

This first hve-core implementation is Python-only. Run the CLI through

python scripts/gitlab.py
and prefer
--fields
for read operations to keep output concise.

Prerequisites

The skill requires Python 3.11 or later.

Set these environment variables before running any command:

VariableRequiredExamplePurpose
GITLAB_URL
Yes
https://gitlab.com
GitLab instance URL
GITLAB_TOKEN
Yes
glpat-...
Personal access token sent as
PRIVATE-TOKEN
GITLAB_PROJECT
No
group/project
Project path or numeric project ID

If

GITLAB_PROJECT
is not set, the script attempts to detect the project from
git remote get-url origin
. Set the variable explicitly when you are not in a git repository or when you want to target a different project.

Quick Start

Export your environment variables, then run a read command with

--fields
.

export GITLAB_URL="https://gitlab.com"
export GITLAB_TOKEN="glpat-..."
export GITLAB_PROJECT="group/project"

python scripts/gitlab.py mr-list opened --fields iid,title,author.name

Read pipeline jobs for a known pipeline:

python scripts/gitlab.py pipeline-jobs 12345 --fields id,name,status,stage

Parameters Reference

Common Option

ParameterApplies ToExampleDescription
--fields
mr-list
,
mr-get
,
mr-notes
,
pipeline-get
,
pipeline-jobs
--fields iid,title,state
Extract specific fields with dot notation and print concise tabular or key-value output

Commands

CommandArgumentsDescription
mr-list
[state] [max]
List merge requests, defaulting to all states and 20 results
mr-get
<mr-iid>
Get one merge request by project-scoped IID
mr-create
<json>
or stdin
Create a merge request from a JSON payload
mr-update
<mr-iid> <json>
or stdin
Update merge request fields from a JSON payload
mr-comment
<mr-iid> <body>
or stdin
Add a comment to a merge request
mr-notes
<mr-iid> [max]
List merge request notes, excluding system notes when using
--fields
pipeline-get
<pipeline-id>
Get one pipeline by numeric ID
pipeline-run
<branch-or-tag>
Trigger a pipeline for a branch or tag
pipeline-jobs
<pipeline-id>
List jobs for a pipeline
job-log
<job-id>
Print raw log output for a job

Script Reference

List recent open merge requests:

python scripts/gitlab.py mr-list opened --fields iid,title,author.name,user_notes_count

Get one merge request:

python scripts/gitlab.py mr-get 42 --fields iid,title,state,source_branch,target_branch

Create a merge request from inline JSON:

python scripts/gitlab.py mr-create '{
  "source_branch": "feature/add-auth",
  "target_branch": "main",
  "title": "feat(auth): add OAuth login"
}'

Add a merge request comment from standard input:

echo "CI passed. Ready for review." | python scripts/gitlab.py mr-comment 42

Inspect a failed pipeline:

python scripts/gitlab.py pipeline-get 12345 --fields id,status,web_url
python scripts/gitlab.py pipeline-jobs 12345 --fields id,name,status,stage
python scripts/gitlab.py job-log 67890

Troubleshooting

SymptomCauseResolution
GITLAB_URL is not set
Required environment variable missingExport
GITLAB_URL
before running the script
GITLAB_TOKEN is not set
Missing personal access tokenCreate a token with API access and export
GITLAB_TOKEN
cannot parse git remote URL
Project autodetection failedSet
GITLAB_PROJECT
explicitly
HTTP 401
or
HTTP 403
Token is invalid or lacks accessVerify token scope and project permissions
HTTP 404
Wrong project, MR IID, pipeline ID, or job IDVerify
GITLAB_PROJECT
and confirm the numeric identifiers
expected numeric ID
Non-numeric value passed to an ID argumentUse project MR IID values and numeric pipeline or job IDs
python3 is required
or syntax errors on launch
Unsupported interpreterRun the script with Python 3.11 or later

GitLab uses MR IIDs such as

!42
inside a project. This skill expects the numeric IID, not the global merge request ID.

🤖 Crafted with precision by ✨Copilot following brilliant human instruction, then carefully refined by our team of discerning human reviewers.