{"id":"75eac606-0b3f-4587-9f30-51e70682c59c","shortId":"aN9bMq","kind":"skill","title":"gitlab","tagline":"GitLab issues, merge requests, repositories, CI pipelines, and code search via the glab CLI. Use when the user mentions GitLab, an MR/issue number, a project on gitlab.com, or a self-hosted GitLab instance.","description":"Use the `glab` CLI for everything. The user's OAuth access token is\nexported as `$GITLAB_TOKEN`; `glab` reads it automatically (the token\nis also accepted via `GITLAB_ACCESS_TOKEN` and `OAUTH_TOKEN` for tooling\ncompatibility). Default host is `gitlab.com` — for self-hosted set\n`GITLAB_HOST` or pass `--hostname <host>` per command.\n\n`glab --help` and `glab <subcommand> --help` are always current.\n\n## Two ways to call glab — prefer subcommands\n\n### Style A: First-class subcommands — START HERE\n\n`glab issue`, `glab mr`, `glab repo`, `glab ci`, `glab job`, `glab pipeline`,\n`glab release`, `glab snippet`, `glab variable`, `glab label`,\n`glab milestone`, `glab schedule`. These print formatted text by default\nand JSON via `--output json`.\n\n### Style B: Raw REST / GraphQL via `glab api`\n\n`glab api <path>` for REST, `glab api graphql -f query='…'` for GraphQL.\nNotable flags:\n\n- `-X POST|PATCH|PUT|DELETE` — override method (default `GET`, becomes\n  `POST` when `--field` / `--raw-field` is set).\n- `-f key=value` — magic-typed (literals `true` / `false` / `null` /\n  integers become JSON types, leading `@filename` reads from a file).\n- `-F key=value` — same as `-f` but always treats the value as a string.\n- `--paginate` — auto-walk `Link: rel=\"next\"`.\n- `--hostname <host>` — target a different GitLab host than default.\n- Path placeholders: when run inside a git checkout, `:fullpath` /\n  `:branch` / `:user` are auto-populated from the repo. From a generic\n  shell, encode the path manually (see recipes).\n\n## Recipes\n\n### List open issues on a project\n\n```sh\nglab issue list --repo OWNER/PROJECT --opened --output json\nglab issue list --repo OWNER/PROJECT --assignee=@me --output json\n```\n\n### View an issue with comments\n\n```sh\nglab issue view 42 --repo OWNER/PROJECT --comments\nglab issue view 42 --repo OWNER/PROJECT --output json\n```\n\n### Create / comment / close an issue\n\n```sh\nglab issue create --repo OWNER/PROJECT --title \"Bug: foo\" --description \"Repro steps…\" --label bug\nglab issue note 42 --repo OWNER/PROJECT --message \"Acknowledged.\"\nglab issue close 42 --repo OWNER/PROJECT\n```\n\n### List MRs assigned to / authored by me\n\n```sh\nglab mr list --repo OWNER/PROJECT --assignee=@me --opened --output json\nglab mr list --repo OWNER/PROJECT --author=@me --opened\n```\n\n### View an MR with diff and CI pipeline\n\n```sh\nglab mr view 99 --repo OWNER/PROJECT\nglab mr diff 99 --repo OWNER/PROJECT\nglab ci view --repo OWNER/PROJECT --branch <BRANCH>\n```\n\n### Approve / merge / leave a note on an MR\n\n```sh\nglab mr approve 99 --repo OWNER/PROJECT\nglab mr note 99 --repo OWNER/PROJECT --message \"Looks good — ready when CI is green.\"\nglab mr merge 99 --repo OWNER/PROJECT --squash --remove-source-branch\n```\n\n### Read a file from the default branch (raw bytes)\n\n```sh\n# URL-encode the project path AND the file path because both contain '/'.\nPROJECT=$(printf '%s' 'OWNER/PROJECT' | jq -sRr @uri)\nFILE=$(printf '%s' 'src/main.go' | jq -sRr @uri)\nglab api \"projects/${PROJECT}/repository/files/${FILE}/raw?ref=main\"\n```\n\n### List the latest pipelines on a branch\n\n```sh\nglab ci list --repo OWNER/PROJECT --status running,success,failed\nglab ci view --repo OWNER/PROJECT --branch main\nglab ci trace --repo OWNER/PROJECT <JOB_ID>     # stream a job log\n```\n\n### Search across a group's issues\n\n```sh\nglab api \"groups/GROUP_PATH_OR_ID/issues?state=opened&search=keyword\" \\\n  --paginate \\\n  | jq '.[] | {iid, title, project: .references.full, web_url}'\n```\n\n### GraphQL example: project metadata + open MR count\n\n```sh\nglab api graphql -f query='\n  query($path: ID!) {\n    project(fullPath: $path) {\n      name webUrl\n      mergeRequests(state: opened) { count }\n    }\n  }' -f path=OWNER/PROJECT\n```\n\n## Notes\n\n- `--repo OWNER/PROJECT` accepts `OWNER/PROJECT`, `GROUP/SUBGROUP/PROJECT`,\n  full HTTPS URL, or git URL. The project path goes verbatim (no URL\n  encoding) for `--repo`, but does need `jq @uri` encoding when used\n  inside a `glab api` path.\n- For self-hosted GitLab the user must have authorized the connection\n  with the right `host`. A 404 on a project you know exists usually\n  means the connection is pointing at gitlab.com when the project lives\n  elsewhere — surface that hint to the user.\n- Many `glab` commands have an `--output` flag that takes `text` (default)\n  or `json`. `glab issue list` and `glab mr list` additionally have\n  `--output-format` (`details` / `ids` / `urls`) which is a separate,\n  list-only formatter. Pass the long flag `--output json` to avoid the\n  short-flag confusion (`-O` vs `-F`).","tags":["gitlab","skills","acedatacloud","acedata-cloud","agent-skills","agentskills","ai-image","ai-music","ai-tools","ai-video","claude-code","cursor"],"capabilities":["skill","source-acedatacloud","skill-gitlab","topic-acedata-cloud","topic-agent-skills","topic-agentskills","topic-ai-image","topic-ai-music","topic-ai-tools","topic-ai-video","topic-claude-code","topic-cursor","topic-gemini-cli","topic-github-copilot","topic-mcp"],"categories":["Skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/AceDataCloud/Skills/gitlab","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add AceDataCloud/Skills","source_repo":"https://github.com/AceDataCloud/Skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (4,533 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:02.103Z","embedding":null,"createdAt":"2026-05-18T13:21:32.462Z","updatedAt":"2026-05-18T19:14:02.103Z","lastSeenAt":"2026-05-18T19:14:02.103Z","tsv":"'/raw':477 '/repository/files':475 '404':615 '42':296,303,330,338 '99':379,385,406,412,426 'accept':61,566 'access':46,64 'acknowledg':334 'across':514 'addit':661 'also':60 'alway':94,212 'api':153,155,159,472,521,544,596 'approv':394,405 'assign':343 'assigne':283,354 'author':345,364,607 'auto':221,247 'auto-popul':246 'auto-walk':220 'automat':56 'avoid':684 'b':147 'becom':176,196 'branch':243,393,433,440,486,502 'bug':320,326 'byte':442 'call':99 'checkout':241 'ci':7,118,373,389,420,489,498,505 'class':107 'cli':15,39 'close':310,337 'code':10 'command':87,643 'comment':291,299,309 'compat':71 'confus':689 'connect':609,625 'contain':456 'count':541,559 'creat':308,316 'current':95 'default':72,140,174,233,439,651 'delet':171 'descript':322 'detail':666 'diff':371,384 'differ':229 'elsewher':634 'encod':256,446,582,590 'everyth':41 'exampl':536 'exist':621 'export':49 'f':161,185,205,210,546,560,692 'fail':496 'fals':193 'field':179,182 'file':204,436,452,464,476 'filenam':200 'first':106 'first-class':105 'flag':166,647,680,688 'foo':321 'format':137,665 'formatt':676 'full':569 'fullpath':242,552 'generic':254 'get':175 'git':240,573 'gitlab':1,2,21,34,51,63,81,230,602 'gitlab.com':28,75,629 'glab':14,38,53,88,91,100,111,113,115,117,119,121,123,125,127,129,131,133,152,154,158,270,278,293,300,314,327,335,349,359,376,382,388,403,409,423,471,488,497,504,520,543,595,642,654,658 'goe':578 'good':417 'graphql':150,160,164,535,545 'green':422 'group':516 'group/subgroup/project':568 'groups/group_path_or_id/issues':522 'help':89,92 'hint':637 'host':33,73,79,82,231,601,613 'hostnam':85,226 'https':570 'id':550,667 'iid':529 'insid':238,593 'instanc':35 'integ':195 'issu':3,112,265,271,279,289,294,301,312,315,328,336,518,655 'job':120,511 'jq':461,468,528,588 'json':142,145,197,277,286,307,358,653,682 'key':186,206 'keyword':526 'know':620 'label':130,325 'latest':482 'lead':199 'leav':396 'link':223 'list':263,272,280,341,351,361,480,490,656,660,674 'list-on':673 'liter':191 'live':633 'log':512 'long':679 'look':416 'magic':189 'magic-typ':188 'main':479,503 'mani':641 'manual':259 'mean':623 'mention':20 'merg':4,395,425 'mergerequest':556 'messag':333,415 'metadata':538 'method':173 'mileston':132 'mr':114,350,360,369,377,383,401,404,410,424,540,659 'mr/issue':23 'mrs':342 'must':605 'name':554 'need':587 'next':225 'notabl':165 'note':329,398,411,563 'null':194 'number':24 'o':690 'oauth':45,67 'open':264,275,356,366,524,539,558 'output':144,276,285,306,357,646,664,681 'output-format':663 'overrid':172 'owner/project':274,282,298,305,318,332,340,353,363,381,387,392,408,414,428,460,492,501,508,562,565,567 'pagin':219,527 'pass':84,677 'patch':169 'path':234,258,449,453,549,553,561,577,597 'per':86 'pipelin':8,122,374,483 'placehold':235 'point':627 'popul':248 'post':168,177 'prefer':101 'print':136 'printf':458,465 'project':26,268,448,457,473,474,531,537,551,576,618,632 'put':170 'queri':162,547,548 'raw':148,181,441 'raw-field':180 'read':54,201,434 'readi':418 'recip':261,262 'ref':478 'references.full':532 'rel':224 'releas':124 'remov':431 'remove-source-branch':430 'repo':116,251,273,281,297,304,317,331,339,352,362,380,386,391,407,413,427,491,500,507,564,584 'repositori':6 'repro':323 'request':5 'rest':149,157 'right':612 'run':237,494 'schedul':134 'search':11,513,525 'see':260 'self':32,78,600 'self-host':31,77,599 'separ':672 'set':80,184 'sh':269,292,313,348,375,402,443,487,519,542 'shell':255 'short':687 'short-flag':686 'skill' 'skill-gitlab' 'snippet':126 'sourc':432 'source-acedatacloud' 'squash':429 'src/main.go':467 'srr':462,469 'start':109 'state':523,557 'status':493 'step':324 'stream':509 'string':218 'style':103,146 'subcommand':102,108 'success':495 'surfac':635 'take':649 'target':227 'text':138,650 'titl':319,530 'token':47,52,58,65,68 'tool':70 'topic-acedata-cloud' 'topic-agent-skills' 'topic-agentskills' 'topic-ai-image' 'topic-ai-music' 'topic-ai-tools' 'topic-ai-video' 'topic-claude-code' 'topic-cursor' 'topic-gemini-cli' 'topic-github-copilot' 'topic-mcp' 'trace':506 'treat':213 'true':192 'two':96 'type':190,198 'uri':463,470,589 'url':445,534,571,574,581,668 'url-encod':444 'use':16,36,592 'user':19,43,244,604,640 'usual':622 'valu':187,207,215 'variabl':128 'verbatim':579 'via':12,62,143,151 'view':287,295,302,367,378,390,499 'vs':691 'walk':222 'way':97 'web':533 'weburl':555 'x':167","prices":[{"id":"1caee622-752b-461c-b668-73a0cc38aefe","listingId":"75eac606-0b3f-4587-9f30-51e70682c59c","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"AceDataCloud","category":"Skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:32.462Z"}],"sources":[{"listingId":"75eac606-0b3f-4587-9f30-51e70682c59c","source":"github","sourceId":"AceDataCloud/Skills/gitlab","sourceUrl":"https://github.com/AceDataCloud/Skills/tree/main/skills/gitlab","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:32.462Z","lastSeenAt":"2026-05-18T19:14:02.103Z"}],"details":{"listingId":"75eac606-0b3f-4587-9f30-51e70682c59c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"AceDataCloud","slug":"gitlab","github":{"repo":"AceDataCloud/Skills","stars":7,"topics":["acedata-cloud","agent-skills","agentskills","ai-image","ai-music","ai-tools","ai-video","claude-code","cursor","gemini-cli","github-copilot","mcp","npm","openai-codex","roo-code"],"license":"other","html_url":"https://github.com/AceDataCloud/Skills","pushed_at":"2026-05-18T07:35:03Z","description":"Agent Skills for AceDataCloud AI services — music, image, video generation, web search, and more. Compatible with Claude Code, GitHub Copilot, Gemini CLI, and all agentskills.io-compatible agents.","skill_md_sha":"c04a5d3d36d12cea2cce671ea8db4d01901c8d25","skill_md_path":"skills/gitlab/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/AceDataCloud/Skills/tree/main/skills/gitlab"},"layout":"multi","source":"github","category":"Skills","frontmatter":{"name":"gitlab","license":"Apache-2.0","description":"GitLab issues, merge requests, repositories, CI pipelines, and code search via the glab CLI. Use when the user mentions GitLab, an MR/issue number, a project on gitlab.com, or a self-hosted GitLab instance."},"skills_sh_url":"https://skills.sh/AceDataCloud/Skills/gitlab"},"updatedAt":"2026-05-18T19:14:02.103Z"}}