Skill v1.0.1
currentAutomated scan100/1002 files
version: "1.0.1" name: gitlab description: "Create and manage GitLab projects, merge requests, pipelines, issues, branches, and more using the orbit CLI. Use this skill whenever the user asks about GitLab repositories, MRs (merge requests), CI/CD pipelines, branches, tags, commits, issues, groups, or project members. Trigger on phrases like 'list MRs', 'check the pipeline', 'create a branch', 'open a merge request', 'view the latest commits', 'list projects in group X', 'retry the CI', 'close the issue', 'who are the members', or any GitLab-related task — even casual references like 'what's running in CI', 'show me the MRs', 'tag a release', 'check if it merged', or 'list repos'. Also trigger when the user mentions PR/pull request in a GitLab context (GitLab calls them merge requests). The orbit CLI alias is gl."
GitLab with orbit CLI
Manage GitLab projects, merge requests, pipelines, pipeline schedules, issues, branches, tags, commits, members, and users through the orbit CLI. Works with both GitLab Cloud and self-hosted instances via REST API v4, with multi-profile support and 1Password secret resolution.
Prerequisites
orbitCLI installed — ifwhich orbitfails, install with:
- macOS/Linux (Homebrew):
brew install jorgemuza/tap/orbit - macOS/Linux (script):
curl -sSfL https://raw.githubusercontent.com/jorgemuza/orbit/main/install.sh | sh - Windows (Scoop):
scoop bucket add jorgemuza https://github.com/jorgemuza/scoop-bucket && scoop install orbit
- A profile with a
gitlabservice configured in~/.config/orbit/config.yaml - Valid credentials (Personal Access Token or Bearer token) — can be stored in 1Password with
op://prefix
Quick Reference
All commands follow the pattern: orbit -p <profile> gitlab <command> [flags]
Alias: orbit -p <profile> gl <command> [flags]
All commands support -o json for JSON output. For full command details and all flags, see references/commands.md.
For self-hosted instances with self-signed certificates, add tls_skip_verify: true to the service config. For proxy access, add proxy: socks5://host:port (also supports http:// and https://).
Project Identification
Projects can be referenced by numeric ID or full path:
orbit -p myprofile gl project 595orbit -p myprofile gl project schools/frontend/my-app
Groups also accept ID or full path: schools/frontend
Core Workflows
Exploring Projects and Groups
# View project detailsorbit -p myprofile gl project schools/frontend/my-app# List your projects (membership-based)orbit -p myprofile gl project list --search frontend# Edit project settings (default branch, visibility, description)orbit -p myprofile gl project edit 595 --default-branch mainorbit -p myprofile gl project edit 595 --visibility privateorbit -p myprofile gl project edit 595 --archived# List all projects in a group (includes subgroups)orbit -p myprofile gl project list --group schools/frontend# Projects with activity today (shows branches)orbit -p myprofile gl project activity# Activity in the last 7 days, filtered by branchorbit -p myprofile gl project activity --days 7 --branch development,master# View group infoorbit -p myprofile gl group view schools/frontend# List subgroupsorbit -p myprofile gl group subgroups schools
Working with Merge Requests
GitLab calls them "merge requests" (MR), equivalent to GitHub's "pull requests" (PR).
# List open MRsorbit -p myprofile gl mr list 595# List merged MRsorbit -p myprofile gl mr list 595 --state merged# View MR details (shows source/target branch, conflicts, review status)orbit -p myprofile gl mr view 595 42# Create an MRorbit -p myprofile gl mr create 595 \--source feature/login --target main --title "Add login page"# Merge an MR (with optional squash)orbit -p myprofile gl mr merge 595 42 --squash# Approve / unapproveorbit -p myprofile gl mr approve 595 42orbit -p myprofile gl mr unapprove 595 42# Check approval statusorbit -p myprofile gl mr approvals 595 42# Rebase onto target branchorbit -p myprofile gl mr rebase 595 42# Close / reopenorbit -p myprofile gl mr close 595 42orbit -p myprofile gl mr reopen 595 42# Edit MR (title, description, assignee, labels, draft)orbit -p myprofile gl mr edit 595 42 --title "Updated title"orbit -p myprofile gl mr edit 595 42 --assignee 15 --labels "bug,urgent"# Add a commentorbit -p myprofile gl mr comment 595 42 --body "LGTM!"# List discussion comments (excludes system notes)orbit -p myprofile gl mr notes 595 42
CI/CD Pipelines
# List recent pipelinesorbit -p myprofile gl pipeline list 595# Filter by branch and statusorbit -p myprofile gl pipeline list 595 --ref main --status failed# View pipeline detailsorbit -p myprofile gl pipeline view 595 12345# List jobs in a pipeline (shows stage, status, duration)orbit -p myprofile gl pipeline jobs 595 12345# Retry a failed pipelineorbit -p myprofile gl pipeline retry 595 12345# Cancel a running pipelineorbit -p myprofile gl pipeline cancel 595 12345
Pipeline aliases: pipeline, pipe, ci — so orbit gl ci list 595 works too.
List pipeline schedules
orbit -p myprofile gl schedule list 595
Create a nightly schedule
orbit -p myprofile gl schedule create 595 --desc "Nightly build" --ref main --cron "0 2 *"
Trigger a schedule immediately
orbit -p myprofile gl schedule run 595 42
Update schedule cron or disable it
orbit -p myprofile gl schedule update 595 42 --cron "0 3 *" orbit -p myprofile gl schedule update 595 42 --active=false
Add/remove schedule variables
orbit -p myprofile gl schedule var 595 42 DEPLOY_ENV production orbit -p myprofile gl schedule var-delete 595 42 DEPLOY_ENV
Delete a schedule
orbit -p myprofile gl schedule delete 595 42
Schedule aliases: schedule, sched.
Branches and Tags
# List branchesorbit -p myprofile gl branch list 595 --search feature# View branch details (includes latest commit)orbit -p myprofile gl branch view 595 main# Create a branch from a reforbit -p myprofile gl branch create 595 feature/new-thing main# Delete a branchorbit -p myprofile gl branch delete 595 feature/old-thing# Protect a branch (only maintainers can merge, no direct push)orbit -p myprofile gl branch protect 650 main --push no-access --merge maintainer# List protected branchesorbit -p myprofile gl branch protections 650# Remove protectionorbit -p myprofile gl branch unprotect 650 main# List tagsorbit -p myprofile gl tag list 595# Create an annotated tagorbit -p myprofile gl tag create 595 v1.0.0 main -m "Release v1.0.0"
Commits
# List recent commits (default branch)orbit -p myprofile gl commit list 595# List commits on a specific branchorbit -p myprofile gl commit list 595 --ref feature/login# View commit detailsorbit -p myprofile gl commit view 595 abc1234
Issues
# List open issuesorbit -p myprofile gl issue list 595 --state opened# Filter by labelsorbit -p myprofile gl issue list 595 --labels bug,urgent# View issue detailsorbit -p myprofile gl issue view 595 1# Create an issueorbit -p myprofile gl issue create 595 --title "Fix login bug" --labels bug,urgent# Close an issueorbit -p myprofile gl issue close 595 1
Members and Users
# List project members (shows access level: Guest/Reporter/Developer/Maintainer/Owner)orbit -p myprofile gl member list 595# Show current authenticated userorbit -p myprofile gl user me# Search usersorbit -p myprofile gl user list --search john
Common Patterns
Get JSON for scripting: Any command supports -o json for machine-readable output:
orbit -p myprofile gl mr list 595 -o json | jq '.[].title'
Check CI status for a branch:
orbit -p myprofile gl pipeline list 595 --ref main --limit 1
Find who's working on a project:
orbit -p myprofile gl member list 595
Review an MR end-to-end:
# View MR detailsorbit -p myprofile gl mr view 595 42# Check its pipelineorbit -p myprofile gl pipeline list 595 --ref feature/login --limit 1# Read discussionorbit -p myprofile gl mr notes 595 42# Approve with commentorbit -p myprofile gl mr comment 595 42 --body "Approved, looks good"
Important Notes
- Profile required — Always pass
-p <profile>to select the GitLab connection. The profile must have a service of typegitlabconfigured. - Service flag — If a profile has multiple GitLab services, use
--service <name>to disambiguate. - Cloud vs Self-hosted — Works with both. The base URL in your profile config determines the GitLab instance.
- 1Password integration — Auth tokens in config can use
op://vault/item/fieldand are resolved at runtime. Runorbit authonce to resolve and cache all secrets for 8 hours (single biometric prompt). Useorbit auth clearto wipe the cache. - MR = PR — If a user says "pull request" or "PR" in a GitLab context, they mean merge request.
- Pagination — Most list commands default to 20-50 results. Use
--limit Nto adjust.