wenerme/ai

glab-cli

Use when interacting with GitLab via the glab CLI: creating/reviewing merge requests, managing issues, monitoring CI/CD pipelines, making API calls, or performing any GitLab operation from the terminal.

First seen Mar 1, 2026

Installation

$ npx skills add wenerme/ai --skill glab-cli

Summary

  • Use when interacting with GitLab via the glab CLI: creating/reviewing merge requests, managing issues, monitoring CI/CD pipelines, making API calls, or performing any GitLab operation from the terminal.
  • Triggers on glab, gitlab cli, merge request, MR create, pipeline status, ci lint.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from wenerme/ai · top by installs.

npx skills add wenerme/ai

Browse all from wenerme/ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Also listed on

Alternate registries and mirrors of this skill.

Repository health

Stars 7
License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,174 B
  • docs SUMMARY.md 300 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 38 installs

SKILL.md

GitLab CLI (glab)

Rules

  • ALWAYS verify auth before first command: glab auth status
  • ALWAYS use -R owner/repo when not inside the target git repo
  • For self-hosted GitLab, set GITLAB_HOST in the command environment when this installed glab does not support a global --hostname flag. Check glab <command> --help before using --hostname; some versions accept --hostname for auth but not for MR commands.
  • Use --output=json when parsing output programmatically
  • NEVER hardcode tokens in commands — use glab auth login or GITLAB_TOKEN env var
  • Pagination params go in URL, not flags: glab api "projects/:id/jobs?per_page=100" (NOT --per-page)
  • When creating MRs, ALWAYS add --remove-source-branch --squash-before-merge unless the user explicitly says otherwise.
  • Some glab versions do not support --hostname on MR commands. For self-hosted GitLab operations, prefer running inside the target repo with the correct remote, or set GITLAB_HOST=<host> and use -R owner/repo.

Auth

glab auth login                                    # Interactive
glab auth login --hostname gitlab.example.org      # Self-hosted
glab auth status                                   # Verify

MR Workflow

git push -u origin feature-branch
GITLAB_HOST=gitlab.paigod.work glab mr create -R owner/repo \
  --source-branch feature-branch --target-branch main \
  --title "Fix bug" --description "Closes #123" \
  --remove-source-branch --squash-before-merge --yes
GITLAB_HOST=gitlab.paigod.work glab mr view 42 -R owner/repo --output=json
glab mr list --reviewer=@me                        # MRs to review
glab mr checkout 42                                # Test locally
glab mr approve 42
glab mr merge 42 --remove-source-branch

Notes:

  • Some glab versions do not have --description-file on mr create; use --description "$(cat /tmp/body.md)" if help confirms only --description is available.
  • After creating an MR, verify weburl, headpipeline.status, conflicts, squash, and source-branch removal settings with glab mr view --output=json.

Issue Workflow

glab issue create --title "Bug" --label=bug --assignee=@me
glab issue list --assignee=@me
glab issue close 123 -m "Fixed in MR !42"

CI/CD

glab ci status                    # Current pipeline status
glab ci status --live             # Watch until pipeline completes
glab pipeline ci view             # Watch pipeline (interactive)
glab ci trace                     # View job logs
glab ci lint                      # Validate .gitlab-ci.yml
glab ci run                       # Trigger pipeline
glab ci retry                     # Retry failed pipeline

Wait for pipeline in scripts (glab has no built-in blocking wait):

while true; do
  status=$(glab api "projects/:id/pipelines?ref=$(git branch --show-current)&per_page=1" \
    | jq -r '.[0].status')
  case "$status" in
    success) echo "Pipeline passed"; break ;;
    failed|canceled) echo "Pipeline $status"; exit 1 ;;
    *) echo "Status: $status, waiting..."; sleep 15 ;;
  esac
done

Auto-merge when pipeline succeeds:

glab mr merge <MR_ID> --when-pipeline-succeeds

API

glab api projects/:id/merge_requests
glab api --paginate "projects/:id/pipelines/123/jobs?per_page=100"
glab api --method POST projects/:id/issues --field title="Bug"

Quick Fixes

Error Fix
401 Unauthorized glab auth login
404 Project Not Found Check repo name + access permissions
not a git repository cd to repo or use -R owner/repo
source branch already has MR glab mr list to find existing
Multiple config files found and the first config lacks the self-hosted token Retry with GLABCONFIGDIR='<authenticated-config-dir>' GITLAB_HOST=<host> glab auth status; do not read or print token files just to diagnose config precedence.
Direct local glab returns EOF/timeout for self-hosted GitLab but another trusted host can reach it Do not conclude MR is impossible. Push using SSH ProxyCommand through the reachable host when appropriate, or run GitLab REST API/glab from that host. Still verify MR URL, pipeline, mergeability, and discussions before marking complete.

References

  • [references/commands.md](references/commands.md) — Full command reference (MR, Issue, CI/CD, Repo, API, Labels, Releases, Variables, etc.)
  • [references/pipeline-debug.md](references/pipeline-debug.md) — Pipeline 排查流程、Job 日志、重试/取消、Artifacts、批量清理
  • [references/config.md](references/config.md) — 认证管理、多实例、环境变量、配置文件、Shell 补全、Aliases
  • [references/troubleshooting.md](references/troubleshooting.md) — Auth, network, SSL, config 常见错误和解决方案