glab-repo
Skill49 starsChanged 3 days agoMITView on GitHub
Work with GitLab repositories and projects including clone, create, fork, archive, view, update, delete, search, transfer, and member management. Use when managing repo lifecycle, forking projects, cloning repositories, searching for projects, managing collaborators, or configuring repo settings. Triggers on repository, repo, project, clone, fork, create repo, search projects, collaborators.
- Commits and pushes
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 6 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 53
When --private, --internal, and --public are all omitted, GitLab uses the instance's default project visibility.
- Very specific: line 131
Use the sync script bundled with this skill under scripts/ for one-command fork updates (paths below are relative to the skill's own …
- Very specific: line 193
Prefer the default GitLab-backed mode for correctness: it queries merge requests for each local branch and handles squash/rebase merge …
- Very specific: line 246
Verify you have access: glab repo view group/project
- Distinctive: line 251
Check if fork already exists in your namespace
- Distinctive: line 252
Verify you have permission to fork (some repos disable forking)
- Distinctive: line 256
Verify you have owner/maintainer access
- Distinctive: line 257
Check target namespace exists and you have create permissions
- Distinctive: line 261
Verify group exists and you have access
- Distinctive: line 262
Check you have enough disk space
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
glab repo
Work with GitLab repositories and projects.
Repository URLs returned by the API are validated before glab passes them to Git. Supported URL schemes and scp-like SSH syntax are accepted; option-like strings, remote-helper transports, whitespace, and control characters are rejected. If a clone, fork, or remote operation fails with an invalid remote URL, inspect the exact trusted project/host metadata rather than bypassing validation or handing that string directly to Git.
Full clone URLs and host routing
A plain repo clone <full-URL> passes the URL to Git without requiring a GitLab API client or current-user lookup. Git still handles transport authentication; this does not make a private clone anonymous. Namespace/project shorthand and group cloning still use the selected GitLab host/API context.
A full-URL --wiki clone does use the API on the URL's own host, including a port, rather than the configured default host. It strips that host's configured subfolder before the project lookup and obtains the wiki URL from the project. Review the exact URL host before cloning: stored or environment credentials can be sent to it. A trusted authenticated host:port/group/project repository selector is recognized by --repo; use a full URL to make a nonstandard endpoint unambiguous.
repo view reads the README even when the default branch contains a slash. Fork creation waits between import-status polls; allow it to finish and inspect the existing fork before retrying. Clone writes locally and fork creation writes remotely, so approve the intended destinations and side effects first.
Quick start
# Clone a repository
glab repo clone group/project
# Clone the project's wiki repository
glab repo clone --wiki group/project
# Create new repository
glab repo create my-new-project --public
# Fork a repository
glab repo fork upstream/project
# View repository details
glab repo view
# Add a Git remote from a GitLab project reference
glab repo remote add group/project --name upstream
# Prune local branches whose MRs have been merged
glab repo prune --dry-run
glab repo prune --yes
# Search for repositories
glab repo search "keyword"Common workflows
Starting new project
When --private, --internal, and --public are all omitted, GitLab uses the instance's default project visibility. Specify the intended visibility explicitly when creating a project.
Create repository:
glab repo create my-project \ --public \ --description "My awesome project" # Create with README glab repo create my-project \ --public \ --readmeNote:
glab repo create --readmeclones the newly created repository instead of usinggit init, ensuring a clean local copy with the initial README.glab repo create --skipGitInitcreates the remote project without prompting to initialize a local directory. If the current directory is not already a Git repository, glab also skips adding a remote instead of emitting a misleadingfatal: not a git repositorywarning after successful remote creation.A path containing nested groups preserves the complete namespace. For example,
glab repo create group/subgroup/my-projectcreatesmy-projectundergroup/subgroup, not only the final subgroup.Clone locally (if not using --readme):
glab repo clone my-username/my-project cd my-projectTo clone only the GitLab wiki, pass
--wikiwith one project reference. It cannot be combined with group-wide--groupcloning, and it fails clearly when the project's wiki is disabled.glab repo clone --wiki group/projectSSH configurations that map
gitlab.comto the officialaltssh.gitlab.comendpoint are recognized as GitLab.com rather than as a separate self-managed host.For self-managed hosts that include a port, glab keys subfolder config lookup on the full host with port. If a repository resolves to the wrong API host or misses a configured subfolder, verify the exact host key in the config file at
glab config pathincludes the port.- Initialize with content:
echo "# My Project" > README.md git add README.md git commit -m "Initial commit" git push -u origin main
Forking workflow
- Fork upstream repository:
glab repo fork upstream-group/project - Clone your fork:
glab repo clone my-username/project cd project Add upstream remote:
glab repo remote add upstream-group/project --name upstreamglab repo remote add <namespace/project>resolves a GitLab project reference and adds the appropriate Git remote URL. The default remote name is the first path component (upstream-groupin the example); override it with--name/-n. Use--protocol ssh|https/-pto override thegit_protocolconfig.glab repo remote add alice/my-project glab repo remote add alice/my-project --name upstream glab repo remote add group/subgroup/my-project --protocol ssh- Keep fork in sync:
git fetch upstream git merge upstream/main
Automated sync:
Use the sync script bundled with this skill under scripts/ for one-command
fork updates (paths below are relative to the skill's own directory):
scripts/sync-fork.sh main
scripts/sync-fork.sh develop upstreamThis automatically: fetches → merges → pushes to origin.
Repository management
View repository info:
glab repo view
glab repo view group/project # Specific repo
glab repo view --web # Open in browserUpdate repository settings:
glab repo update \
--description "Updated description" \
--default-branch developArchive repository:
glab repo archive download main # Downloads .tar.gz
glab repo archive download main --format zipTransfer to new namespace:
glab repo transfer my-project --target-namespace new-groupDelete repository:
glab repo delete group/projectLocal branch pruning
glab repo prune deletes local Git branches whose GitLab merge requests have been merged. It never deletes remote branches on GitLab, and it skips protected branches, the default branch, and the branch currently checked out.
# Preview branches that would be deleted
glab repo prune --dry-run
# Delete branches after confirmation
glab repo prune
# Delete without confirmation after reviewing the dry run
glab repo prune --yes
# Exclude additional branches by exact name or glob; comma-separate or repeat
glab repo prune --exclude wip-*,demo-branch
# Faster local-Git detection; misses squash/rebase merges that are not fast-forward ancestry
glab repo prune --mergedPrefer the default GitLab-backed mode for correctness: it queries merge requests for each local branch and handles squash/rebase merge cases better than plain git branch --merged. Use --merged only when the faster fast-forward-only check is acceptable.
Member management
List collaborators:
glab repo members listAdd member:
glab repo members add @username --access-level maintainerRemove member:
glab repo members remove @usernameUpdate member access:
glab repo members update @username --access-level developerBulk operations
Clone all repos in a group:
glab repo clone -g my-group
# Skip selected subgroups and their descendants across every page
glab repo clone -g my-group --exclude-subgroup domain/backend,archived --paginate--exclude-subgroup accepts subgroup paths relative to --group, not numeric subgroup IDs. Repeat the flag or comma-separate paths. Matching is case-insensitive, trims leading/trailing slashes, accepts paths prefixed with the full group path, and respects path boundaries (team does not exclude team-other). A numeric --group ID is resolved to its full path before filtering. Projects shared from other namespaces are unaffected. Subgroups are included by default; exclusions filter the fetched projects before cloning. If every fetched project is excluded, the command fails with a “No projects left to clone” message.
Search and clone:
glab repo search "api" --per-page 10
# Then clone specific result
glab repo clone group/api-projectList your repositories:
glab repo list
glab repo list --member # Only where you're a member
glab repo list --mine # Only repos you ownTroubleshooting
Clone fails with permission error:
- Verify you have access:
glab repo view group/project - Check authentication:
glab auth status - For private repos, ensure you're logged in with correct account
Fork operation fails:
- Check if fork already exists in your namespace
- Verify you have permission to fork (some repos disable forking)
- Try with explicit namespace:
glab repo fork --fork-path username/new-name
Transfer fails:
- Verify you have owner/maintainer access
- Check target namespace exists and you have create permissions
- Some projects may have transfer protections enabled
Group clone fails:
- Verify group exists and you have access
- Check you have enough disk space
- Large groups may time out - clone specific repos instead
Related Skills
Authentication and access:
- See
glab-authfor login and authentication setup - See
glab-ssh-keyfor SSH key management - See
glab-deploy-keyfor deployment authentication
Project configuration:
- See
glab-configfor CLI defaults and settings - See
glab-variablefor CI/CD variables
Fork synchronization:
- Script:
scripts/sync-fork.shautomates upstream sync
Structured output
glab repo contributors supports --output json / -F json for structured output, which is useful for agent automation.
# List contributors with JSON output
glab repo contributors --output json
glab repo contributors -F jsonCommand reference
For complete command documentation and all flags, see references/commands.md.
Available commands:
clone- Clone repository or groupcreate- Create new projectfork- Fork repositoryview- View project detailsupdate- Update project settingsdelete- Delete projectsearch- Search for projectslist- List repositoriestransfer- Transfer to new namespacearchive- Download repository archivecontributors- List contributorsmembers- Manage project membersmirror- Configure repository mirroringremote- Manage Git remotes using GitLab project referencesprune- Delete local branches whose GitLab merge requests are mergedpublish- Publish project resources
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- a-ng-d/claude-ui-color-palette★ 188% same
- cormacc/dotagents★ 198% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository49 other files it gives its agents.
- gitlab-cli-skillsSkill
- glab-aliasSkill
- glab-apiSkill
- glab-artifact-registrySkill
- glab-attestationSkill
- glab-authSkill
- glab-changelogSkill
- glab-check-updateSkill
- glab-ciSkill
- glab-clusterSkill
- glab-completionSkill
- glab-configSkill
- glab-container-registrySkill
- glab-dependency-firewallSkill
- glab-deploy-keySkill
- glab-deploy-tokenSkill
- glab-duoSkill
- glab-governSkill
- glab-gpg-keySkill
- glab-helpSkill
- glab-incidentSkill
- glab-issueSkill
- glab-iterationSkill
- glab-jobSkill
- glab-labelSkill
- glab-mcpSkill
- glab-milestoneSkill
- glab-mrSkill
- glab-opentofuSkill
- glab-orbitSkill
- glab-packagesSkill
- glab-quick-actionsSkill
- glab-releaseSkill
- glab-runner-controllerSkill
- glab-runnerSkill
- glab-scheduleSkill
- glab-securefileSkill
- glab-securitySkill
- glab-skillsSkill
- glab-snippetSkill
- glab-ssh-keySkill
- glab-stackSkill
- glab-todoSkill
- glab-tokenSkill
- glab-userSkill
- glab-variableSkill
- glab-versionSkill
- glab-whatsnewSkill
- glab-workitemsSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

