---
name: gitlab-branches
description: "Manages GitLab branches. Use for listing, creating, deleting, or querying branches in projects. Triggers: branch operations, git branching."
tags: [branches]
---

### Overview
This skill handles branch-related tasks in GitLab via MCP tools. Focus on one operation per call for efficiency.

### Available Tools
- `get_branches`: Get branches in a GitLab project, optionally filtered.
  - **Parameters**:
    - `project_id` (str): Optional. - Project ID or path
    - `search` (Optional[str]): Optional. - Filter branches by name containing this term
    - `regex` (Optional[str]): Optional. - Filter branches by regex pattern on name
    - `branch` (Optional[str]): Optional. - Branch name
- `create_branch`: Create a new branch in a GitLab project from a reference.
  - **Parameters**:
    - `project_id` (str): Optional. - Project ID or path
    - `branch` (str): Optional. - New branch name
    - `ref` (str): Optional. - Reference to create from (branch/tag/commit SHA)
- `delete_branch`: Delete a branch or all merged branches in a GitLab project.
  - **Parameters**:
    - `project_id` (str): Optional. - Project ID or path
    - `branch` (Optional[str]): Optional. - Branch name to delete
    - `delete_merged_branches` (Optional[bool]): Optional. - Delete all merged branches (excluding protected)
    - `ctx` (Optional[Context]): Optional. - MCP context for progress

### Usage Instructions
1. Identify the project_id (e.g., from query or prior context).
2. Call the appropriate tool with minimal params.
3. Handle pagination if results exceed limits (use MCP's built-in support).

### Examples
- List branches: Call `get_branches` with project_id="my/project" and search="feature".
- Create: `create_branch` with project_id="123", branch="new-feature", ref="main".
- Delete merged: `delete_branch` with project_id="123", delete_merged_branches=true.

### Error Handling
- Missing params: Retry with required fields.
- 404: Branch/project not found—verify IDs.
- Rate limits: Wait and retry.
