| name | gitlab-group |
| description | GitLab group operations via API. ALWAYS use this skill when user wants to: (1) list/view groups, (2) create/update/delete groups, (3) manage group members, (4) list subgroups or group projects, (5) share projects with groups. |
| version | 1.0.0 |
| author | GitLab-Assistant-Skills |
| license | MIT |
| allowed-tools | ["Bash","Read","Glob","Grep"] |
Group Skill
Group management operations for GitLab using glab api raw endpoint calls.
Quick Reference
| Operation | Command Pattern | Risk |
|---|
| List groups | glab api groups | - |
| Get group | glab api groups/:id | - |
| Create group | glab api groups -X POST -f ... | ⚠️ |
| Update group | glab api groups/:id -X PUT -f ... | ⚠️ |
| Delete group | glab api groups/:id -X DELETE | ⚠️⚠️⚠️ |
| List members | glab api groups/:id/members | - |
| Add member | glab api groups/:id/members -X POST -f ... | ⚠️ |
| Update member | glab api groups/:id/members/:uid -X PUT -f ... | ⚠️ |
| Remove member | glab api groups/:id/members/:uid -X DELETE | ⚠️⚠️ |
| List subgroups | glab api groups/:id/subgroups | - |
| List projects | glab api groups/:id/projects | - |
| Share with group | glab api projects/:id/share -X POST -f ... | ⚠️ |
Risk Legend: - Safe | ⚠️ Caution | ⚠️⚠️ Warning | ⚠️⚠️⚠️ Danger
When to Use This Skill
ALWAYS use when:
- User mentions "group", "team", "organization", "namespace"
- User wants to manage group membership
- User asks about subgroups or group projects
- User wants to share a project with another group
NEVER use when:
- User wants project-level settings (use gitlab-repo)
- User wants to manage CI/CD group variables (use gitlab-variable with -g flag)
API Prerequisites
Required Token Scopes: api
Permissions:
- List/view groups: Any authenticated user (for visible groups)
- Create groups: Depends on instance settings
- Manage members: Owner or Maintainer role
- Delete groups: Owner role
Access Levels
| Level | Value | Description |
|---|
| Guest | 10 | View issues and comments |
| Reporter | 20 | View code, create issues |
| Developer | 30 | Push code, create MRs |
| Maintainer | 40 | Manage project settings |
| Owner | 50 | Full control |
Available Commands
List Groups
glab api groups --method GET
glab api groups --paginate
glab api "groups?search=devops" --method GET
glab api "groups?owned=true" --method GET
glab api "groups?top_level_only=true" --method GET
Get Group Details
glab api groups/123 --method GET
glab api "groups/$(echo 'my-group' | jq -Rr @uri)" --method GET
glab api "groups/$(echo 'parent/child' | jq -Rr @uri)" --method GET
glab api "groups/123?with_projects=true" --method GET
Create Group
glab api groups --method POST \
-f name="My Team" \
-f path="my-team" \
-f visibility="private"
glab api groups --method POST \
-f name="Backend Team" \
-f path="backend" \
-f parent_id=123 \
-f visibility="internal"
glab api groups --method POST \
-f name="Dev Group" \
-f path="dev-group" \
-f description="Development team" \
-f visibility="private" \
-f request_access_enabled=true
Visibility Options:
private - Only members can see
internal - Any authenticated user
public - Anyone can see
Update Group
glab api groups/123 --method PUT \
-f name="New Name"
glab api groups/123 --method PUT \
-f visibility="internal"
glab api groups/123 --method PUT \
-f name="Updated Team" \
-f description="New description" \
-f request_access_enabled=false
Delete Group
Warning: This permanently deletes the group and all its projects!
glab api groups/123 --method DELETE
glab api "groups/123?permanently_remove=true" --method DELETE
List Group Members
glab api groups/123/members --method GET
glab api groups/123/members/all --method GET
glab api "groups/123/members?query=john" --method GET
Add Group Member
glab api groups/123/members --method POST \
-f user_id=456 \
-f access_level=30
glab api groups/123/members --method POST \
-f user_id=456 \
-f access_level=40 \
-f expires_at="2025-12-31"
Update Group Member
glab api groups/123/members/456 --method PUT \
-f access_level=40
glab api groups/123/members/456 --method PUT \
-f expires_at="2025-06-30"
Remove Group Member
glab api groups/123/members/456 --method DELETE
List Subgroups
glab api groups/123/subgroups --method GET
glab api groups/123/descendant_groups --method GET
glab api groups/123/subgroups --paginate
List Group Projects
glab api groups/123/projects --method GET
glab api "groups/123/projects?include_subgroups=true" --method GET
glab api "groups/123/projects?archived=false" --method GET
glab api groups/123/projects --paginate
Share Project with Group
glab api projects/789/share --method POST \
-f group_id=123 \
-f group_access=30
glab api projects/789/share --method POST \
-f group_id=123 \
-f group_access=30 \
-f expires_at="2025-12-31"
glab api projects/789/share/123 --method DELETE
Common Workflows
Workflow 1: Create Team Structure
glab api groups --method POST \
-f name="Engineering" \
-f path="engineering" \
-f visibility="internal"
parent_id=$(glab api "groups/$(echo 'engineering' | jq -Rr @uri)" | jq -r '.id')
glab api groups --method POST \
-f name="Backend" \
-f path="backend" \
-f parent_id=$parent_id
glab api groups --method POST \
-f name="Frontend" \
-f path="frontend" \
-f parent_id=$parent_id
Workflow 2: Onboard Team Member
user_id=$(glab api "users?search=john.doe" | jq -r '.[0].id')
glab api groups/123/members --method POST \
-f user_id=$user_id \
-f access_level=30
glab api groups/123/members/$user_id
Workflow 3: Audit Group Access
glab api groups/123/members/all --paginate | \
jq -r '.[] | [.username, .access_level_description] | @tsv'
Workflow 4: Transfer Project Between Groups
project_id=$(glab api "projects/$(echo 'old-group/my-project' | jq -Rr @uri)" | jq -r '.id')
glab api "projects/$project_id/transfer" --method PUT \
-f namespace=456
Troubleshooting
| Issue | Cause | Solution |
|---|
| 403 on create group | Group creation disabled | Check instance settings or contact admin |
| 404 on group | Path not found | Verify group exists, check URL encoding |
| Cannot add member | User not found | Search users first with glab api users?search=... |
| Cannot delete group | Not owner | Need Owner role or admin access |
| Subgroup creation fails | Parent not found | Verify parent_id is correct |
Related Documentation