Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问clear审计提醒

gitlabGitLab 代码协作

Agent Skill

用于围绕 GitLab 项目、Merge Request、Issue、分支、流水线和代码审查流程提供辅助能力。它适合让 Agent 查询项目状态、整理提交差异、辅助检查合并请求或汇总 CI 结果。使用时需要确认项目权限、访问 token 和目标分支范围;涉及合并、推送、改工单或触发流水线时,应先预览影响并核对团队流程。

总安装

1,697

周安装

70

GitHub Stars

56

下载量

554
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:gitlab(GitLab 代码协作)
来源仓库:https://github.com/vm0-ai/vm0-skills
仓库路径:skills/gitlab
安装命令:
npx skills add https://github.com/vm0-ai/vm0-skills --skill gitlab
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/vm0-ai/vm0-skills --skill gitlab

简介

gitlab 用于围绕 GitLab 项目、Merge Request、Issue 等提供辅助能力。

  • 适合查询项目状态、整理提交差异、检查合并请求或汇总 CI 结果。
  • 通过 npx skills add 命令从 GitHub 仓库安装并使用。
  • 涉及合并或推送时需确认权限并核对团队流程,避免误操作。
  • 可结合原始 README 进一步核验具体用法和功能细节。

SKILL.md

Troubleshooting

If requests fail, run zero doctor check-connector --env-name GITLAB_TOKEN or zero doctor check-connector --url https://gitlab.com/api/v4/user --method GET

How to Use

All examples below assume GITLAB_HOST and GITLAB_TOKEN are set.

Base URL: https://${GITLAB_HOST}/api/v4

Note: Project IDs can be numeric (e.g., 123) or URL-encoded paths (e.g., mygroup%2Fmyproject).

1. Get Current User

Verify your authentication:

curl -s "https://$GITLAB_HOST/api/v4/user" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '{id, username, name, email, state}'

2. List Projects

Get projects accessible to you:

curl -s "https://$GITLAB_HOST/api/v4/projects?membership=true&per_page=20" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '.[] | {id, path_with_namespace, visibility, default_branch}'

Filter options:

  • membership=true - Only projects you're a member of
  • owned=true - Only projects you own
  • search=keyword - Search by name
  • visibility=public|internal|private - Filter by visibility

3. Get Project Details

Get details for a specific project. Replace <project-id> with the numeric project ID or URL-encoded path (e.g., mygroup%2Fmyproject):

curl -s "https://$GITLAB_HOST/api/v4/projects/<project-id>" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '{id, name, path_with_namespace, default_branch, visibility, web_url}

4. List Project Issues

Get issues for a project. Replace <project-id> with the numeric project ID or URL-encoded path:

curl -s "https://$GITLAB_HOST/api/v4/projects/<project-id>/issues?state=opened&per_page=20" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '.[] | {iid, title, state, author: .author.username, labels, web_url}'

Filter options:

  • state=opened|closed|all - Filter by state
  • labels=bug,urgent - Filter by labels
  • assignee_id=123 - Filter by assignee
  • search=keyword - Search in title/description

5. Get Issue Details

Get a specific issue. Replace <project-id> and <issue-iid> with actual values:

curl -s "https://$GITLAB_HOST/api/v4/projects/<project-id>/issues/<issue-iid>" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '{iid, title, description, state, author: .author.username, assignees: [.assignees[].username], labels, created_at, web_url}'

6. Create Issue

Create a new issue in a project. Replace <project-id> with the actual project ID:

Write to /tmp/gitlab_request.json:

{
  "title": "Bug: Login page not loading",
  "description": "The login page shows a blank screen on mobile devices.",
  "labels": "bug,frontend"
}

Then run:

curl -s -X POST "https://$GITLAB_HOST/api/v4/projects/<project-id>/issues" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --header "Content-Type: application/json" -d @/tmp/gitlab_request.json | jq '{iid, title, web_url}'

7. Create Issue with Assignee and Milestone

Create issue with additional fields. Replace <project-id>, <assignee-id>, and <milestone-id> with actual IDs:

Write to /tmp/gitlab_request.json:

{
  "title": "Implement user profile page",
  "description": "Create a user profile page with avatar and bio.",
  "assignee_ids": [<assignee-id>],
  "milestone_id": <milestone-id>,
  "labels": "feature,frontend"
}

Then run:

curl -s -X POST "https://$GITLAB_HOST/api/v4/projects/<project-id>/issues" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --header "Content-Type: application/json" -d @/tmp/gitlab_request.json | jq '{iid, title, web_url}'

8. Update Issue

Update an existing issue. Replace <project-id> and <issue-iid> with actual values:

Write to /tmp/gitlab_request.json:

{
  "title": "Updated: Bug fix for login page",
  "labels": "bug,frontend,in-progress"
}

Then run:

curl -s -X PUT "https://$GITLAB_HOST/api/v4/projects/<project-id>/issues/<issue-iid>" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --header "Content-Type: application/json" -d @/tmp/gitlab_request.json | jq '{iid, title, labels, updated_at}'

9. Close Issue

Close an issue. Replace <project-id> and <issue-iid> with actual values:

Write to /tmp/gitlab_request.json:

{
  "state_event": "close"
}

Then run:

curl -s -X PUT "https://$GITLAB_HOST/api/v4/projects/<project-id>/issues/<issue-iid>" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --header "Content-Type: application/json" -d @/tmp/gitlab_request.json | jq '{iid, title, state}'

Use "state_event": "reopen" to reopen a closed issue.

10. Add Comment to Issue

Add a note/comment to an issue. Replace <project-id> and <issue-iid> with actual values:

Write to /tmp/gitlab_request.json:

{
  "body": "Investigating this issue. Will update soon."
}

Then run:

curl -s -X POST "https://$GITLAB_HOST/api/v4/projects/<project-id>/issues/<issue-iid>/notes" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --header "Content-Type: application/json" -d @/tmp/gitlab_request.json | jq '{id, body, author: .author.username, created_at}'

11. List Merge Requests

Get merge requests for a project. Replace <project-id> with the actual project ID:

curl -s "https://$GITLAB_HOST/api/v4/projects/<project-id>/merge_requests?state=opened&per_page=20" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '.[] | {iid, title, state, source_branch, target_branch, author: .author.username, web_url}'

Filter options:

  • state=opened|closed|merged|all - Filter by state
  • scope=created_by_me|assigned_to_me|all - Filter by involvement
  • labels=review-needed - Filter by labels

12. Get Merge Request Details

Get a specific merge request. Replace <project-id> and <mr-iid> with actual values:

curl -s "https://$GITLAB_HOST/api/v4/projects/<project-id>/merge_requests/<mr-iid>" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '{iid, title, state, source_branch, target_branch, author: .author.username, merge_status, has_conflicts, web_url}'

13. Create Merge Request

Create a new merge request. Replace <project-id> with the actual project ID:

Write to /tmp/gitlab_request.json:

{
  "source_branch": "feature/user-profile",
  "target_branch": "main",
  "title": "Add user profile page",
  "description": "This MR adds a new user profile page with avatar support."
}

Then run:

curl -s -X POST "https://$GITLAB_HOST/api/v4/projects/<project-id>/merge_requests" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --header "Content-Type: application/json" -d @/tmp/gitlab_request.json | jq '{iid, title, web_url}'

14. Merge a Merge Request

Merge an MR (if it's ready). Replace <project-id> and <mr-iid> with actual values:

Write to /tmp/gitlab_request.json:

{
  "merge_when_pipeline_succeeds": true
}

Then run:

curl -s -X PUT "https://$GITLAB_HOST/api/v4/projects/<project-id>/merge_requests/<mr-iid>/merge" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --header "Content-Type: application/json" -d @/tmp/gitlab_request.json | jq '{iid, title, state, merged_by: .merged_by.username}'

Options:

  • merge_when_pipeline_succeeds=true - Auto-merge when pipeline passes
  • squash=true - Squash commits before merging
  • should_remove_source_branch=true - Delete source branch after merge

15. List Pipelines

Get pipelines for a project. Replace <project-id> with the actual project ID:

curl -s "https://$GITLAB_HOST/api/v4/projects/<project-id>/pipelines?per_page=10" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '.[] | {id, status, ref, sha: .sha[0:8], created_at, web_url}'

16. Get Pipeline Details

Get details of a specific pipeline. Replace <project-id> and <pipeline-id> with actual values:

curl -s "https://$GITLAB_HOST/api/v4/projects/<project-id>/pipelines/<pipeline-id>" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '{id, status, ref, duration, finished_at, web_url}'

17. List Pipeline Jobs

Get jobs in a pipeline. Replace <project-id> and <pipeline-id> with actual values:

curl -s "https://$GITLAB_HOST/api/v4/projects/<project-id>/pipelines/<pipeline-id>/jobs" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" | jq '.[] | {id, name, stage, status, duration}'

18. Search Users

Search for users:

Write to /tmp/gitlab_search.txt:

john
curl -s -G "https://$GITLAB_HOST/api/v4/users" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --data-urlencode "search@/tmp/gitlab_search.txt" | jq '.[] | {id, username, name, state}'

19. Create Project

Create a new project:

Write to /tmp/gitlab_request.json:

{
  "name": "my-new-project",
  "visibility": "private",
  "initialize_with_readme": true
}

Then run:

curl -s -X POST "https://$GITLAB_HOST/api/v4/projects" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" --header "Content-Type: application/json" -d @/tmp/gitlab_request.json | jq '{id, path_with_namespace, web_url}'

20. Delete Issue

Delete an issue (requires admin or owner permissions). Replace <project-id> and <issue-iid> with actual values:

curl -s -X DELETE "https://$GITLAB_HOST/api/v4/projects/<project-id>/issues/<issue-iid>" --header "PRIVATE-TOKEN: $GITLAB_TOKEN" -w "\nHTTP Status: %{http_code}"

Returns 204 No Content on success.

Project ID Encoding

When using project paths instead of numeric IDs, URL-encode the path:

  • mygroup/myprojectmygroup%2Fmyproject
  • mygroup/subgroup/myprojectmygroup%2Fsubgroup%2Fmyproject
# Using numeric ID
PROJECT_ID="123"

# Using encoded path
PROJECT_ID="mygroup%2Fmyproject"

Guidelines

  1. Use IID for issues/MRs: Within a project, use iid (internal ID like #1, #2) not the global id
  2. URL-encode project paths: If using paths instead of numeric IDs, encode slashes as %2F
  3. Handle pagination: Use per_page and page params for large result sets
  4. Check merge status: Before merging, verify merge_status is can_be_merged
  5. Rate limiting: Implement backoff if you receive 429 responses
  6. Self-hosted GitLab: Set GITLAB_HOST to your instance domain (without https://)

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Antigravity

29.6%
按下载量换算164

Claude Code

20.97%
按下载量换算116

Gemini CLI

16.74%
按下载量换算93

OpenCode

12.01%
按下载量换算67

Codex

7.48%
按下载量换算41

openclaw

3.43%
按下载量换算19

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills