MR
Mayur Rathi
@mayurrathi
⭐ 5 GitHub stars

Gitlab Automation

Automate GitLab project management, issues, merge requests, pipelines, branches, and user operations via Rube MCP (Composio). Always search tools first for current schemas.

mkdir -p ./skills/gitlab-automation && curl -sfL https://raw.githubusercontent.com/mayurrathi/awesome-agent-skills/main/skills/gitlab-automation/SKILL.md -o ./skills/gitlab-automation/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# GitLab Automation via Rube MCP


Automate GitLab operations including project management, issue tracking, merge request workflows, CI/CD pipeline monitoring, branch management, and user administration through Composio's GitLab toolkit.


Prerequisites


- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)

- Active GitLab connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `gitlab`

- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas


Setup


**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.



1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds

2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `gitlab`

3. If connection is not ACTIVE, follow the returned auth link to complete GitLab OAuth

4. Confirm connection status shows ACTIVE before running any workflows


Core Workflows


1. Manage Issues


**When to use**: User wants to create, update, list, or search issues in a GitLab project


**Tool sequence**:

1. `GITLAB_GET_PROJECTS` - Find the target project and get its ID [Prerequisite]

2. `GITLAB_LIST_PROJECT_ISSUES` - List and filter issues for a project [Required]

3. `GITLAB_CREATE_PROJECT_ISSUE` - Create a new issue [Required for create]

4. `GITLAB_UPDATE_PROJECT_ISSUE` - Update an existing issue (title, labels, state, assignees) [Required for update]

5. `GITLAB_LIST_PROJECT_USERS` - Find user IDs for assignment [Optional]


**Key parameters**:

- `id`: Project ID (integer) or URL-encoded path (e.g., `"my-group/my-project"`)

- `title`: Issue title (required for creation)

- `description`: Issue body text (max 1,048,576 characters)

- `labels`: Comma-separated label names (e.g., `"bug,critical"`)

- `add_labels` / `remove_labels`: Add or remove labels without replacing all

- `state`: Filter by `"all"`, `"opened"`, or `"closed"`

- `state_event`: `"close"` or `"reopen"` to change issue state

- `assignee_ids`: Array of user IDs; use `[0]` to unassign all

- `issue_iid`: Internal issue ID within the project (required for updates)

- `milestone`: Filter by milestone title

- `search`: Search in title and description

- `scope`: `"created_by_me"`, `"assigned_to_me"`, or `"all"`

- `page` / `per_page`: Pagination (default per_page: 20)


**Pitfalls**:

- `id` accepts either integer project ID or URL-encoded path; wrong IDs yield 4xx errors

- `issue_iid` is the project-internal ID (shown as #42), different from the global issue ID

- Labels in `labels` field replace ALL existing labels; use `add_labels`/`remove_labels` for incremental changes

- Setting `assignee_ids` to empty array does NOT unassign; use `[0]` instead

- `updated_at` field requires administrator or project/group owner rights


2. Manage Merge Requests


**When to use**: User wants to list, filter, or review merge requests in a project


**Tool sequence**:

1. `GITLAB_GET_PROJECT` - Get project details and verify access [Prerequisite]

2. `GITLAB_GET_PROJECT_MERGE_REQUESTS` - List and filter merge requests [Required]

3. `GITLAB_GET_REPOSITORY_BRANCHES` - Verify source/target branches [Optional]

4. `GITLAB_LIST_ALL_PROJECT_MEMBERS` - Find reviewers/assignees [Optional]


**Key parameters**:

- `id`: Project ID or URL-encoded path

- `state`: `"opened"`, `"closed"`, `"locked"`, `"merged"`, or `"all"`

- `scope`: `"created_by_me"` (default), `"assigned_to_me"`, or `"all"`

- `source_branch` / `target_branch`: Filter by branch names

- `author_id` / `author_username`: Filter by MR author

- `assignee_id`: Filter by assignee (use `None` for unassigned, `Any` for assigned)

- `reviewer_id` / `reviewer_username`: Filter by reviewer

- `labels`: Comma-separated label filter

- `search`: Search in title and description

- `wip`: `"yes"` for draft MRs, `"no"` for non-draft

- `order_by`: `"created_at"` (default), `"title"`, `"merged_at"`, `"updated_at"`

- `view`: `"simple"` for minimal fields

- `iids[]`: Filter by specific MR internal IDs


**Pitfalls**:

- Defau

🎯 Best For

  • Claude users
  • Knowledge workers
  • Remote teams
  • Professionals

💡 Use Cases

  • Using Gitlab Automation in daily workflow
  • Automating repetitive productivity tasks

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Gitlab Automation to Your Work

    Provide context for your task — paste source material, describe your audience, or share existing work to guide the AI.

  4. 4

    Review and Refine

    Edit the AI output for accuracy, tone, and completeness. Add human insight where the AI lacks context.

❓ Frequently Asked Questions

How do I install Gitlab Automation?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/gitlab-automation/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Not reading the full skill

Skills contain important context and edge cases beyond the quick start.

🔗 Related Skills