[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-6ae8ae5f-af35-4915-a8d1-c3716916256e":3,"$fgH01lzgnBIJMjHJjCMTmIC5g5VN8cHAWvCur27NfkwE":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"6ae8ae5f-af35-4915-a8d1-c3716916256e","gitlab-automation","通过Rube MCP（Composio）自动化GitLab项目管理、问题、合并请求、流水线、分支和用户操作。始终首先搜索当前架构的工具。","cat_prod_automation","mod_productivity","sickn33,productivity","---\nname: gitlab-automation\ndescription: \"Automate GitLab project management, issues, merge requests, pipelines, branches, and user operations via Rube MCP (Composio). Always search tools first for current schemas.\"\nrisk: critical\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# GitLab Automation via Rube MCP\n\nAutomate GitLab operations including project management, issue tracking, merge request workflows, CI\u002FCD pipeline monitoring, branch management, and user administration through Composio's GitLab toolkit.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active GitLab connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `gitlab`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `gitlab`\n3. If connection is not ACTIVE, follow the returned auth link to complete GitLab OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Manage Issues\n\n**When to use**: User wants to create, update, list, or search issues in a GitLab project\n\n**Tool sequence**:\n1. `GITLAB_GET_PROJECTS` - Find the target project and get its ID [Prerequisite]\n2. `GITLAB_LIST_PROJECT_ISSUES` - List and filter issues for a project [Required]\n3. `GITLAB_CREATE_PROJECT_ISSUE` - Create a new issue [Required for create]\n4. `GITLAB_UPDATE_PROJECT_ISSUE` - Update an existing issue (title, labels, state, assignees) [Required for update]\n5. `GITLAB_LIST_PROJECT_USERS` - Find user IDs for assignment [Optional]\n\n**Key parameters**:\n- `id`: Project ID (integer) or URL-encoded path (e.g., `\"my-group\u002Fmy-project\"`)\n- `title`: Issue title (required for creation)\n- `description`: Issue body text (max 1,048,576 characters)\n- `labels`: Comma-separated label names (e.g., `\"bug,critical\"`)\n- `add_labels` \u002F `remove_labels`: Add or remove labels without replacing all\n- `state`: Filter by `\"all\"`, `\"opened\"`, or `\"closed\"`\n- `state_event`: `\"close\"` or `\"reopen\"` to change issue state\n- `assignee_ids`: Array of user IDs; use `[0]` to unassign all\n- `issue_iid`: Internal issue ID within the project (required for updates)\n- `milestone`: Filter by milestone title\n- `search`: Search in title and description\n- `scope`: `\"created_by_me\"`, `\"assigned_to_me\"`, or `\"all\"`\n- `page` \u002F `per_page`: Pagination (default per_page: 20)\n\n**Pitfalls**:\n- `id` accepts either integer project ID or URL-encoded path; wrong IDs yield 4xx errors\n- `issue_iid` is the project-internal ID (shown as #42), different from the global issue ID\n- Labels in `labels` field replace ALL existing labels; use `add_labels`\u002F`remove_labels` for incremental changes\n- Setting `assignee_ids` to empty array does NOT unassign; use `[0]` instead\n- `updated_at` field requires administrator or project\u002Fgroup owner rights\n\n### 2. Manage Merge Requests\n\n**When to use**: User wants to list, filter, or review merge requests in a project\n\n**Tool sequence**:\n1. `GITLAB_GET_PROJECT` - Get project details and verify access [Prerequisite]\n2. `GITLAB_GET_PROJECT_MERGE_REQUESTS` - List and filter merge requests [Required]\n3. `GITLAB_GET_REPOSITORY_BRANCHES` - Verify source\u002Ftarget branches [Optional]\n4. `GITLAB_LIST_ALL_PROJECT_MEMBERS` - Find reviewers\u002Fassignees [Optional]\n\n**Key parameters**:\n- `id`: Project ID or URL-encoded path\n- `state`: `\"opened\"`, `\"closed\"`, `\"locked\"`, `\"merged\"`, or `\"all\"`\n- `scope`: `\"created_by_me\"` (default), `\"assigned_to_me\"`, or `\"all\"`\n- `source_branch` \u002F `target_branch`: Filter by branch names\n- `author_id` \u002F `author_username`: Filter by MR author\n- `assignee_id`: Filter by assignee (use `None` for unassigned, `Any` for assigned)\n- `reviewer_id` \u002F `reviewer_username`: Filter by reviewer\n- `labels`: Comma-separated label filter\n- `search`: Search in title and description\n- `wip`: `\"yes\"` for draft MRs, `\"no\"` for non-draft\n- `order_by`: `\"created_at\"` (default), `\"title\"`, `\"merged_at\"`, `\"updated_at\"`\n- `view`: `\"simple\"` for minimal fields\n- `iids[]`: Filter by specific MR internal IDs\n\n**Pitfalls**:\n- Default `scope` is `\"created_by_me\"` which limits results; use `\"all\"` for complete listings\n- `author_id` and `author_username` are mutually exclusive\n- `reviewer_id` and `reviewer_username` are mutually exclusive\n- `approved` filter requires the `mr_approved_filter` feature flag (disabled by default)\n- Large MR histories can be noisy; use filters and moderate `per_page` values\n\n### 3. Manage Projects and Repositories\n\n**When to use**: User wants to list projects, create new projects, or manage branches\n\n**Tool sequence**:\n1. `GITLAB_GET_PROJECTS` - List all accessible projects with filters [Required]\n2. `GITLAB_GET_PROJECT` - Get detailed info for a specific project [Optional]\n3. `GITLAB_LIST_USER_PROJECTS` - List projects owned by a specific user [Optional]\n4. `GITLAB_CREATE_PROJECT` - Create a new project [Required for create]\n5. `GITLAB_GET_REPOSITORY_BRANCHES` - List branches in a project [Required for branch ops]\n6. `GITLAB_CREATE_REPOSITORY_BRANCH` - Create a new branch [Optional]\n7. `GITLAB_GET_REPOSITORY_BRANCH` - Get details of a specific branch [Optional]\n8. `GITLAB_LIST_REPOSITORY_COMMITS` - View commit history [Optional]\n9. `GITLAB_GET_PROJECT_LANGUAGES` - Get language breakdown [Optional]\n\n**Key parameters**:\n- `name` \u002F `path`: Project name and URL-friendly path (both required for creation)\n- `visibility`: `\"private\"`, `\"internal\"`, or `\"public\"`\n- `namespace_id`: Group or user ID for project placement\n- `search`: Case-insensitive substring search for projects\n- `membership`: `true` to limit to projects user is a member of\n- `owned`: `true` to limit to user-owned projects\n- `project_id`: Project ID for branch operations\n- `branch_name`: Name for new branch\n- `ref`: Source branch or commit SHA for new branch creation\n- `order_by`: `\"id\"`, `\"name\"`, `\"path\"`, `\"created_at\"`, `\"updated_at\"`, `\"star_count\"`, `\"last_activity_at\"`\n\n**Pitfalls**:\n- `GITLAB_GET_PROJECTS` pagination is required for complete coverage; stopping at first page misses projects\n- Some responses place items under `data.details`; parse the actual returned list structure\n- Most follow-up calls depend on correct `project_id`; verify with `GITLAB_GET_PROJECT` first\n- Invalid `branch_name`\u002F`ref`\u002F`sha` causes client errors; verify branch existence via `GITLAB_GET_REPOSITORY_BRANCHES` first\n- Both `name` and `path` are required for `GITLAB_CREATE_PROJECT`\n\n### 4. Monitor CI\u002FCD Pipelines\n\n**When to use**: User wants to check pipeline status, list jobs, or monitor CI\u002FCD runs\n\n**Tool sequence**:\n1. `GITLAB_GET_PROJECT` - Verify project access [Prerequisite]\n2. `GITLAB_LIST_PROJECT_PIPELINES` - List pipelines with filters [Required]\n3. `GITLAB_GET_SINGLE_PIPELINE` - Get detailed info for a specific pipeline [Optional]\n4. `GITLAB_LIST_PIPELINE_JOBS` - List jobs within a pipeline [Optional]\n\n**Key parameters**:\n- `id`: Project ID or URL-encoded path\n- `status`: Filter by `\"created\"`, `\"waiting_for_resource\"`, `\"preparing\"`, `\"pending\"`, `\"running\"`, `\"success\"`, `\"failed\"`, `\"canceled\"`, `\"skipped\"`, `\"manual\"`, `\"scheduled\"`\n- `scope`: `\"running\"`, `\"pending\"`, `\"finished\"`, `\"branches\"`, `\"tags\"`\n- `ref`: Branch or tag name\n- `sha`: Specific commit SHA\n- `source`: Pipeline source (use `\"parent_pipeline\"` for child pipelines)\n- `order_by`: `\"id\"` (default), `\"status\"`, `\"ref\"`, `\"updated_at\"`, `\"user_id\"`\n- `created_after` \u002F `created_before`: ISO 8601 date filters\n- `pipeline_id`: Specific pipeline ID for job listing\n- `include_retried`: `true` to include retried jobs (default `false`)\n\n**Pitfalls**:\n- Large pipeline histories can be noisy; use `status`, `ref`, and date filters to narrow results\n- Use moderate `per_page` values to keep output manageable\n- Pipeline job `scope` accepts single status string or array of statuses\n- `yaml_errors: true` returns only pipelines with invalid configurations\n\n### 5. Manage Users and Members\n\n**When to use**: User wants to find users, list project members, or check user status\n\n**Tool sequence**:\n1. `GITLAB_GET_USERS` - Search and list GitLab users [Required]\n2. `GITLAB_GET_USER` - Get details for a specific user by ID [Optional]\n3. `GITLAB_GET_USERS_ID_STATUS` - Get user status message and availability [Optional]\n4. `GITLAB_LIST_ALL_PROJECT_MEMBERS` - List all project members (direct + inherited) [Required for member listing]\n5. `GITLAB_LIST_PROJECT_USERS` - List project users with search filter [Optional]\n\n**Key parameters**:\n- `search`: Search by name, username, or public email\n- `username`: Get specific user by username\n- `active` \u002F `blocked`: Filter by user state\n- `id`: Project ID for member listing\n- `query`: Filter members by name, email, or username\n- `state`: Filter members by `\"awaiting\"` or `\"active\"` (Premium\u002FUltimate)\n- `user_ids`: Filter by specific user IDs\n\n**Pitfalls**:\n- Many user filters (admins, auditors, extern_uid, two_factor) are admin-only\n- `GITLAB_LIST_ALL_PROJECT_MEMBERS` includes direct, inherited, and invited members\n- User search is case-insensitive but may not match partial email domains\n- Premium\u002FUltimate features (state filter, seat info) are not available on free plans\n\n## Common Patterns\n\n### ID Resolution\nGitLab uses two identifier formats for projects:\n- **Numeric ID**: Integer project ID (e.g., `123`)\n- **URL-encoded path**: Namespace\u002Fproject format (e.g., `\"my-group%2Fmy-project\"` or `\"my-group\u002Fmy-project\"`)\n- **Issue IID vs ID**: `issue_iid` is the project-internal number (#42); the global `id` is different\n- **User ID**: Numeric; resolve via `GITLAB_GET_USERS` with `search` or `username`\n\n### Pagination\nGitLab uses offset-based pagination:\n- Set `page` (starting at 1) and `per_page` (1-100, default 20)\n- Continue incrementing `page` until response returns fewer items than `per_page` or is empty\n- Total count may be available in response headers (`X-Total`, `X-Total-Pages`)\n- Always paginate to completion for accurate results\n\n### URL-Encoded Paths\nWhen using project paths as identifiers:\n- Forward slashes must be URL-encoded: `my-group\u002Fmy-project` becomes `my-group%2Fmy-project`\n- Some tools accept unencoded paths; check schema for each tool\n- Prefer numeric IDs when available for reliability\n\n## Known Pitfalls\n\n### ID Formats\n- Project `id` field accepts both integer and string (URL-encoded path)\n- Issue `issue_iid` is project-scoped; do not confuse with global issue ID\n- Pipeline IDs are project-scoped integers\n- User IDs are global integers across the GitLab instance\n\n### Rate Limits\n- GitLab has per-user rate limits (typically 300-2000 requests\u002Fminute depending on plan)\n- Large pipeline\u002Fissue histories should use date and status filters to reduce result sets\n- Paginate responsibly with moderate `per_page` values\n\n### Parameter Quirks\n- `labels` field replaces ALL labels; use `add_labels`\u002F`remove_labels` for incremental changes\n- `assignee_ids: [0]` unassigns all; empty array does nothing\n- `scope` defaults vary: `\"created_by_me\"` for MRs, `\"all\"` for issues\n- `author_id` and `author_username` are mutually exclusive in MR filters\n- Date parameters use ISO 8601 format: `\"2024-01-15T10:30:00Z\"`\n\n### Plan Restrictions\n- Some features require Premium\u002FUltimate: `epic_id`, `weight`, `iteration_id`, `approved_by_ids`, member `state` filter\n- Admin-only features: user management filters, `updated_at` override, custom attributes\n- The `mr_approved_filter` feature flag is disabled by default\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| List projects | `GITLAB_GET_PROJECTS` | `search`, `membership`, `visibility` |\n| Get project details | `GITLAB_GET_PROJECT` | `id` |\n| User's projects | `GITLAB_LIST_USER_PROJECTS` | `id`, `search`, `owned` |\n| Create project | `GITLAB_CREATE_PROJECT` | `name`, `path`, `visibility` |\n| List issues | `GITLAB_LIST_PROJECT_ISSUES` | `id`, `state`, `labels`, `search` |\n| Create issue | `GITLAB_CREATE_PROJECT_ISSUE` | `id`, `title`, `description`, `labels` |\n| Update issue | `GITLAB_UPDATE_PROJECT_ISSUE` | `id`, `issue_iid`, `state_event` |\n| List merge requests | `GITLAB_GET_PROJECT_MERGE_REQUESTS` | `id`, `state`, `scope`, `labels` |\n| List branches | `GITLAB_GET_REPOSITORY_BRANCHES` | `project_id`, `search` |\n| Get branch | `GITLAB_GET_REPOSITORY_BRANCH` | `project_id`, `branch_name` |\n| Create branch | `GITLAB_CREATE_REPOSITORY_BRANCH` | `project_id`, `branch_name`, `ref` |\n| List commits | `GITLAB_LIST_REPOSITORY_COMMITS` | project ID, branch ref |\n| Project languages | `GITLAB_GET_PROJECT_LANGUAGES` | project ID |\n| List pipelines | `GITLAB_LIST_PROJECT_PIPELINES` | `id`, `status`, `ref` |\n| Get pipeline | `GITLAB_GET_SINGLE_PIPELINE` | `project_id`, `pipeline_id` |\n| List pipeline jobs | `GITLAB_LIST_PIPELINE_JOBS` | `id`, `pipeline_id`, `scope` |\n| Search users | `GITLAB_GET_USERS` | `search`, `username`, `active` |\n| Get user | `GITLAB_GET_USER` | user ID |\n| User status | `GITLAB_GET_USERS_ID_STATUS` | user ID |\n| List project members | `GITLAB_LIST_ALL_PROJECT_MEMBERS` | `id`, `query`, `state` |\n| List project users | `GITLAB_LIST_PROJECT_USERS` | `id`, `search` |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,245,858,"2026-05-16 13:20:38",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"效率工具","productivity","mdi-lightning-bolt-outline","文档处理、数据分析、自动化工作流",4,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"自动化","automation","mdi-robot-outline","工作流自动化、批处理",3,101,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"ed10177b-cb46-4c1c-9164-46266c5a4f71","1.0.0","gitlab-automation.zip",4911,"uploads\u002Fskills\u002F6ae8ae5f-af35-4915-a8d1-c3716916256e\u002Fgitlab-automation.zip","291752b9dce81b34dc22cf5d55ef1b0df9c38f6e83fd213d6c6958ae15ae0e47","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":13759}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]