glab

SKILL.md

GitLab CLI (glab)

Manage GitLab projects entirely from the terminal using glab. This skill covers creating merge requests, triaging issues, running pipelines, cutting releases, and making raw API calls — all without leaving your shell.

When to Use

  • Creating, reviewing, approving, or merging merge requests
  • Creating, listing, updating, or closing issues and incidents
  • Running, retrying, canceling, or viewing CI/CD pipelines and jobs
  • Creating releases with assets and changelogs
  • Cloning, forking, or managing repositories
  • Managing CI/CD variables, schedules, and snippets
  • Making raw REST or GraphQL API calls to GitLab
  • Working with stacked diffs (experimental)
  • Managing labels, milestones, deploy keys, SSH/GPG keys
  • Authenticating to GitLab instances

Prerequisites

  • glab installed (brew install glab, apt install glab, or see https://gitlab.com/gitlab-org/cli)
  • Authenticated via glab auth login (minimum scopes: api, write_repository)
  • Inside a Git repository with a GitLab remote (or use -R OWNER/REPO to target another project)

Command Structure

glab <command> <subcommand> [flags]

All commands support -h/--help and -R/--repo OWNER/REPO (to target a different project).

Reference Guides

Topic File Load when...
Merge requests references/merge-requests.md Creating, reviewing, approving, merging, or listing MRs
Issues references/issues.md Creating, listing, updating, closing, or triaging issues/incidents
CI/CD pipelines & jobs references/ci-cd.md Running, viewing, retrying, canceling pipelines or jobs; linting CI config
Releases references/releases.md Creating releases, uploading assets, managing changelogs
Repo, auth & config references/repo-and-config.md Cloning, forking, creating repos; authenticating; configuring glab
API, variables & advanced references/api-and-advanced.md Making raw API calls; managing variables, snippets, schedules, stacks, labels, milestones, aliases
Writing issues & MRs references/writing-issues-and-mrs.md REQUIRED before creating or updating any issue or MR title/description

Core Workflows

Create a Merge Request

REQUIRED: Read references/writing-issues-and-mrs.md for full guidelines before writing titles/descriptions.

Title format: <type>[scope]: <imperative description> (closes #N) Types: feat, fix, docs, refactor, test, chore, perf, ci Max 72 chars. Imperative mood ("Add", not "Added").

# Interactive — prompts for title, description, target branch
glab mr create

# Non-interactive with conventional title, reviewers, and labels
glab mr create -t "feat(auth): add OAuth2 login (closes #123)" --yes -a assignee --reviewer reviewer1 --label "ready for review" -b main

# Draft MR for early feedback
glab mr create -f --draft

Review and Merge

glab mr list --reviewer=@me          # MRs awaiting your review
glab mr diff 42                       # View changes
glab mr approve 42                    # Approve
glab mr merge 42                      # Merge (prompts for method)

Create an Issue

REQUIRED: Read references/writing-issues-and-mrs.md for full guidelines before writing titles/descriptions.

Title format: [Type]: <specific problem/action> <context> Types: [Bug], [Feature], [Docs], [Task] 50-70 chars. Sentence case. Include location + symptom.

glab issue create -t "[Bug]: Login fails on iOS Safari 17 after timeout" -l bug,P1 -m v2.0
glab issue list --label bug --assignee=@me
glab issue close 99

Run and Monitor CI/CD

glab ci run -b main                   # Trigger pipeline on branch
glab ci status                        # Current pipeline status
glab ci view                          # Interactive pipeline viewer
glab ci retry lint                    # Retry a specific job by name
glab ci lint                          # Validate .gitlab-ci.yml

Create a Release

glab release create v1.2.0 ./dist/*.tar.gz \
  --notes "Bugfix release" \
  --milestone v1.2.0

Raw API Calls

# REST
glab api projects/:fullpath/members

# GraphQL
glab api graphql -f query='{ currentUser { username } }'

# With pagination
glab api issues --paginate --output ndjson

Manage Variables

glab variable list
glab variable set MY_SECRET "s3cret"
glab variable get MY_SECRET
glab variable delete MY_SECRET

All Top-Level Commands

Command Purpose
glab alias Create command shortcuts
glab api Make authenticated REST/GraphQL API calls
glab attestation Manage attestations
glab auth Authenticate to GitLab instances
glab changelog Generate changelogs
glab check-update Check for glab updates
glab ci Manage CI/CD pipelines and jobs
glab cluster Manage cluster agents
glab completion Generate shell completions (bash/zsh/fish/PowerShell)
glab config Set and get glab configuration
glab deploy-key Manage deploy keys
glab duo Interact with GitLab Duo AI
glab gpg-key Manage GPG keys
glab incident Manage incidents
glab issue Manage issues
glab iteration Manage iterations
glab job Manage CI/CD jobs
glab label Manage labels
glab mcp Model Context Protocol server
glab milestone Manage milestones
glab mr Manage merge requests
glab opentofu OpenTofu integration
glab release Manage releases
glab repo Manage repositories
glab schedule Manage pipeline schedules
glab securefile Manage secure files
glab snippet Manage snippets
glab ssh-key Manage SSH keys
glab stack Stacked diffs (experimental)
glab token Manage personal access tokens
glab user Interact with user accounts
glab variable Manage CI/CD variables
glab version Show glab version

Global Flags

Flag Description
-h, --help Show help for any command
-R, --repo OWNER/REPO Target a different repository (also accepts GROUP/NAMESPACE/REPO or full URL)
-v, --version Show glab version

Tips

  • Title conventions: Always use conventional commit prefixes for MR titles (feat:, fix:, docs:, etc.) and descriptive problem-statement titles for issues. See references/writing-issues-and-mrs.md.
  • Auto-detection: glab reads your Git remotes to determine the GitLab project. No need to specify --repo when inside the project directory.
  • Multiple instances: Use glab auth login for each GitLab host. glab picks the right credentials based on your remote URL.
  • Output formats: Many list commands accept -F json for machine-readable output.
  • Aliases: Create shortcuts with glab alias set mrc 'mr create --fill --yes' then use glab mrc.
  • Editor: Set EDITOR or VISUAL env vars to control which editor opens for descriptions.
  • Recover: Use --recover on mr create and issue create to save progress if creation fails.
Weekly Installs
11
Repository
beeltec/skills
First Seen
Feb 18, 2026
Installed on
gemini-cli11
github-copilot11
codex11
amp11
kimi-cli11
opencode11