GitLab CLI Skills
Comprehensive GitLab CLI (glab) command reference and workflows.
Quick start
# First time setup
glab auth login
# Common operations
glab mr create --fill # Create MR from current branch
glab issue create # Create issue
glab ci view # View pipeline status
glab repo view --web # Open repo in browser
Skill organization
This skill routes to specialized sub-skills by GitLab domain:
Core Workflows:
glab-mr - Merge requests: create, review, approve, merge
glab-issue - Issues: create, list, update, close, comment
glab-ci - CI/CD: pipelines, jobs, logs, artifacts
glab-repo - Repositories: clone, create, fork, manage
Project Management:
glab-milestone - Release planning and milestone tracking
glab-iteration - Sprint/iteration management
glab-label - Label management and organization
glab-release - Software releases and versioning
Authentication & Config:
glab-auth - Login, logout, Docker registry auth
glab-config - CLI configuration and defaults
glab-ssh-key - SSH key management
glab-gpg-key - GPG keys for commit signing
glab-token - Personal and project access tokens
CI/CD Management:
glab-job - Individual job operations
glab-schedule - Scheduled pipelines and cron jobs
glab-variable - CI/CD variables and secrets
glab-securefile - Secure files for pipelines
glab-runner - Runner management: list, pause, delete (added v1.87.0)
glab-runner-controller - Runner controller and token management (EXPERIMENTAL, admin-only)
Collaboration:
glab-user - User profiles and information
glab-snippet - Code snippets (GitLab gists)
glab-incident - Incident management
glab-workitems - Work items: tasks, OKRs, key results, next-gen epics (added v1.87.0)
Advanced:
glab-api - Direct REST API calls
glab-cluster - Kubernetes cluster integration
glab-deploy-key - Deploy keys for automation
glab-quick-actions - GitLab slash command quick actions for batching state changes
glab-stack - Stacked/dependent merge requests
glab-opentofu - Terraform/OpenTofu state management
Utilities:
glab-alias - Custom command aliases
glab-completion - Shell autocompletion
glab-help - Command help and documentation
glab-version - Version information
glab-check-update - Update checker
glab-changelog - Changelog generation
glab-attestation - Software supply chain security
glab-duo - GitLab Duo AI assistant
glab-mcp - Model Context Protocol server for AI assistant integration (EXPERIMENTAL)
v1.89.0 Updates
v1.89.0+: 18 commands across 12 sub-skills now support --output json / -F json for structured output — raw GitLab API responses ideal for agent/automation parsing. Affected sub-skills: glab-release, glab-ci, glab-milestone, glab-schedule, glab-mr, glab-repo, glab-label, glab-deploy-key, glab-ssh-key, glab-gpg-key, glab-cluster, glab-opentofu.
Other v1.89.0 changes:
glab-auth: glab auth login now prompts for SSH hostname separately from API hostname on self-hosted instances
glab-stack: glab stack sync --update-base flag added to rebase stack onto updated base branch
glab-release: --notes / --notes-file are now optional for glab release create and glab release update
When to use glab vs web UI
Use glab when:
- Automating GitLab operations in scripts
- Working in terminal-centric workflows
- Batch operations (multiple MRs/issues)
- Integration with other CLI tools
- CI/CD pipeline workflows
- Faster navigation without browser context switching
Use web UI when:
- Complex diff review with inline comments
- Visual merge conflict resolution
- Configuring repo settings and permissions
- Advanced search/filtering across projects
- Reviewing security scanning results
- Managing group/instance-level settings
Common workflows
Daily development
# Start work on issue
glab issue view 123
git checkout -b 123-feature-name
# Create MR when ready
glab mr create --fill --draft
# Mark ready for review
glab mr update --ready
# Merge after approval
glab mr merge --when-pipeline-succeeds --remove-source-branch
Code review
# List your review queue
glab mr list --reviewer=@me --state=opened
# Review an MR
glab mr checkout 456
glab mr diff
npm test
# Approve
glab mr approve 456
glab mr note 456 -m "LGTM! Nice work on the error handling."
CI/CD debugging
# Check pipeline status
glab ci status
# View failed jobs
glab ci view
# Get job logs
glab ci trace <job-id>
# Retry failed job
glab ci retry <job-id>
Decision Trees
"Should I create an MR or work on an issue first?"
Need to track work?
├─ Yes → Create issue first (glab issue create)
│ Then: glab mr for <issue-id>
└─ No → Direct MR (glab mr create --fill)
Use glab issue create + glab mr for when:
- Work needs discussion/approval before coding
- Tracking feature requests or bugs
- Sprint planning and assignment
- Want issue to auto-close when MR merges
Use glab mr create directly when:
- Quick fixes or typos
- Working from existing issue
- Hotfixes or urgent changes
"Which CI command should I use?"
What do you need?
├─ Overall pipeline status → glab ci status
├─ Visual pipeline view → glab ci view
├─ Specific job logs → glab ci trace <job-id>
├─ Download build artifacts → glab ci artifact <ref> <job-name>
├─ Validate config file → glab ci lint
├─ Trigger new run → glab ci run
└─ List all pipelines → glab ci list
Quick reference:
- Pipeline-level:
glab ci status, glab ci view, glab ci run
- Job-level:
glab ci trace, glab job retry, glab job view
- Artifacts:
glab ci artifact (by pipeline) or job artifacts via glab job
"Clone or fork?"
What's your relationship to the repo?
├─ You have write access → glab repo clone group/project
├─ Contributing to someone else's project:
│ ├─ One-time contribution → glab repo fork + work + MR
│ └─ Ongoing contributions → glab repo fork, then sync regularly
└─ Just reading/exploring → glab repo clone (or view --web)
Fork when:
- You don't have write access to the original repo
- Contributing to open source projects
- Experimenting without affecting the original
- Need your own copy for long-term work
Clone when:
- You're a project member with write access
- Working on organization/team repositories
- No need for a personal copy
"Project vs group labels?"
Where should the label live?
├─ Used across multiple projects → glab label create --group <group>
└─ Specific to one project → glab label create (in project directory)
Group-level labels:
- Consistent labeling across organization
- Examples: priority::high, type::bug, status::blocked
- Managed centrally, inherited by projects
Project-level labels:
- Project-specific workflows
- Examples: needs-ux-review, deploy-to-staging
- Managed by project maintainers
Related Skills
MR and Issue workflows:
- Start with
glab-issue to create/track work
- Use
glab-mr to create MR that closes issue
- Script:
scripts/create-mr-from-issue.sh automates this
CI/CD debugging:
- Use
glab-ci for pipeline-level operations
- Use
glab-job for individual job operations
- Script:
scripts/ci-debug.sh for quick failure diagnosis
Repository operations:
- Use
glab-repo for repository management
- Use
glab-auth for authentication setup
- Script:
scripts/sync-fork.sh for fork synchronization
Configuration:
- Use
glab-auth for initial authentication
- Use
glab-config to set defaults and preferences
- Use
glab-alias for custom shortcuts
1---2name: gitlab-cli-skills-23description: Comprehensive GitLab CLI (glab) command reference and workflows for all GitLab operations via terminal. Use when user mentions GitLab CLI, glab commands, GitLab automation, MR/issue management via CLI, CI/CD pipeline commands, repo operations, authentication setup, or any GitLab terminal operations. Routes to specialized sub-skills for auth, CI, MRs, issues, releases, repos, and 30+ other glab commands. Triggers on glab, GitLab CLI, GitLab commands, GitLab terminal, GitLab automation.4---5
6# GitLab CLI Skills
7
8Comprehensive GitLab CLI (glab) command reference and workflows.
9
10## Quick start
11
12```bash
13# First time setup
14glab auth login
15
16# Common operations
17glab mr create --fill # Create MR from current branch
18glab issue create # Create issue
19glab ci view # View pipeline status
20glab repo view --web # Open repo in browser
21```
22
23## Skill organization
24
25This skill routes to specialized sub-skills by GitLab domain:
26
27**Core Workflows:**
28- `glab-mr` - Merge requests: create, review, approve, merge
29- `glab-issue` - Issues: create, list, update, close, comment
30- `glab-ci` - CI/CD: pipelines, jobs, logs, artifacts
31- `glab-repo` - Repositories: clone, create, fork, manage
32
33**Project Management:**
34- `glab-milestone` - Release planning and milestone tracking
35- `glab-iteration` - Sprint/iteration management
36- `glab-label` - Label management and organization
37- `glab-release` - Software releases and versioning
38
39**Authentication & Config:**
40- `glab-auth` - Login, logout, Docker registry auth
41- `glab-config` - CLI configuration and defaults
42- `glab-ssh-key` - SSH key management
43- `glab-gpg-key` - GPG keys for commit signing
44- `glab-token` - Personal and project access tokens
45
46**CI/CD Management:**
47- `glab-job` - Individual job operations
48- `glab-schedule` - Scheduled pipelines and cron jobs
49- `glab-variable` - CI/CD variables and secrets
50- `glab-securefile` - Secure files for pipelines
51- `glab-runner` - Runner management: list, pause, delete (added v1.87.0)
52- `glab-runner-controller` - Runner controller and token management (EXPERIMENTAL, admin-only)
53
54**Collaboration:**
55- `glab-user` - User profiles and information
56- `glab-snippet` - Code snippets (GitLab gists)
57- `glab-incident` - Incident management
58- `glab-workitems` - Work items: tasks, OKRs, key results, next-gen epics (added v1.87.0)
59
60**Advanced:**
61- `glab-api` - Direct REST API calls
62- `glab-cluster` - Kubernetes cluster integration
63- `glab-deploy-key` - Deploy keys for automation
64- `glab-quick-actions` - GitLab slash command quick actions for batching state changes
65- `glab-stack` - Stacked/dependent merge requests
66- `glab-opentofu` - Terraform/OpenTofu state management
67
68**Utilities:**
69- `glab-alias` - Custom command aliases
70- `glab-completion` - Shell autocompletion
71- `glab-help` - Command help and documentation
72- `glab-version` - Version information
73- `glab-check-update` - Update checker
74- `glab-changelog` - Changelog generation
75- `glab-attestation` - Software supply chain security
76- `glab-duo` - GitLab Duo AI assistant
77- `glab-mcp` - Model Context Protocol server for AI assistant integration (EXPERIMENTAL)
78
79## v1.89.0 Updates
80
81> **v1.89.0+:** 18 commands across 12 sub-skills now support `--output json` / `-F json` for structured output — raw GitLab API responses ideal for agent/automation parsing. Affected sub-skills: `glab-release`, `glab-ci`, `glab-milestone`, `glab-schedule`, `glab-mr`, `glab-repo`, `glab-label`, `glab-deploy-key`, `glab-ssh-key`, `glab-gpg-key`, `glab-cluster`, `glab-opentofu`.
82
83Other v1.89.0 changes:
84- **`glab-auth`**: `glab auth login` now prompts for SSH hostname separately from API hostname on self-hosted instances
85- **`glab-stack`**: `glab stack sync --update-base` flag added to rebase stack onto updated base branch
86- **`glab-release`**: `--notes` / `--notes-file` are now optional for `glab release create` and `glab release update`
87
88## When to use glab vs web UI
89
90**Use glab when:**
91- Automating GitLab operations in scripts
92- Working in terminal-centric workflows
93- Batch operations (multiple MRs/issues)
94- Integration with other CLI tools
95- CI/CD pipeline workflows
96- Faster navigation without browser context switching
97
98**Use web UI when:**
99- Complex diff review with inline comments
100- Visual merge conflict resolution
101- Configuring repo settings and permissions
102- Advanced search/filtering across projects
103- Reviewing security scanning results
104- Managing group/instance-level settings
105
106## Common workflows
107
108### Daily development
109
110```bash
111# Start work on issue
112glab issue view 123
113git checkout -b 123-feature-name
114
115# Create MR when ready
116glab mr create --fill --draft
117
118# Mark ready for review
119glab mr update --ready
120
121# Merge after approval
122glab mr merge --when-pipeline-succeeds --remove-source-branch
123```
124
125### Code review
126
127```bash
128# List your review queue
129glab mr list --reviewer=@me --state=opened
130
131# Review an MR
132glab mr checkout 456
133glab mr diff
134npm test
135
136# Approve
137glab mr approve 456
138glab mr note 456 -m "LGTM! Nice work on the error handling."
139```
140
141### CI/CD debugging
142
143```bash
144# Check pipeline status
145glab ci status
146
147# View failed jobs
148glab ci view
149
150# Get job logs
151glab ci trace <job-id>
152
153# Retry failed job
154glab ci retry <job-id>
155```
156
157## Decision Trees
158
159### "Should I create an MR or work on an issue first?"
160
161```
162Need to track work?
163├─ Yes → Create issue first (glab issue create)
164│ Then: glab mr for <issue-id>
165└─ No → Direct MR (glab mr create --fill)
166```
167
168**Use `glab issue create` + `glab mr for` when:**
169- Work needs discussion/approval before coding
170- Tracking feature requests or bugs
171- Sprint planning and assignment
172- Want issue to auto-close when MR merges
173
174**Use `glab mr create` directly when:**
175- Quick fixes or typos
176- Working from existing issue
177- Hotfixes or urgent changes
178
179### "Which CI command should I use?"
180
181```
182What do you need?
183├─ Overall pipeline status → glab ci status
184├─ Visual pipeline view → glab ci view
185├─ Specific job logs → glab ci trace <job-id>
186├─ Download build artifacts → glab ci artifact <ref> <job-name>
187├─ Validate config file → glab ci lint
188├─ Trigger new run → glab ci run
189└─ List all pipelines → glab ci list
190```
191
192**Quick reference:**
193- Pipeline-level: `glab ci status`, `glab ci view`, `glab ci run`
194- Job-level: `glab ci trace`, `glab job retry`, `glab job view`
195- Artifacts: `glab ci artifact` (by pipeline) or job artifacts via `glab job`
196
197### "Clone or fork?"
198
199```
200What's your relationship to the repo?
201├─ You have write access → glab repo clone group/project
202├─ Contributing to someone else's project:
203│ ├─ One-time contribution → glab repo fork + work + MR
204│ └─ Ongoing contributions → glab repo fork, then sync regularly
205└─ Just reading/exploring → glab repo clone (or view --web)
206```
207
208**Fork when:**
209- You don't have write access to the original repo
210- Contributing to open source projects
211- Experimenting without affecting the original
212- Need your own copy for long-term work
213
214**Clone when:**
215- You're a project member with write access
216- Working on organization/team repositories
217- No need for a personal copy
218
219### "Project vs group labels?"
220
221```
222Where should the label live?
223├─ Used across multiple projects → glab label create --group <group>
224└─ Specific to one project → glab label create (in project directory)
225```
226
227**Group-level labels:**
228- Consistent labeling across organization
229- Examples: priority::high, type::bug, status::blocked
230- Managed centrally, inherited by projects
231
232**Project-level labels:**
233- Project-specific workflows
234- Examples: needs-ux-review, deploy-to-staging
235- Managed by project maintainers
236
237## Related Skills
238
239**MR and Issue workflows:**
240- Start with `glab-issue` to create/track work
241- Use `glab-mr` to create MR that closes issue
242- Script: `scripts/create-mr-from-issue.sh` automates this
243
244**CI/CD debugging:**
245- Use `glab-ci` for pipeline-level operations
246- Use `glab-job` for individual job operations
247- Script: `scripts/ci-debug.sh` for quick failure diagnosis
248
249**Repository operations:**
250- Use `glab-repo` for repository management
251- Use `glab-auth` for authentication setup
252- Script: `scripts/sync-fork.sh` for fork synchronization
253
254**Configuration:**
255- Use `glab-auth` for initial authentication
256- Use `glab-config` to set defaults and preferences
257- Use `glab-alias` for custom shortcuts
258