[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FSKB9FHA7S7KR4W2XBYC97":3,"skill-same:01M6FSKB9FHA7S7KR4W2XBYC97":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":14,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6FSKB9FHA7S7KR4W2XBYC97","gitlab-automation",null,"Automate GitLab project management, issues, merge requests, pipelines, branches, and user operations via Rube MCP (Composio). Always search tools first for current schemas.","reikiplanet\u002Fdaoskills","reikiplanet","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96377599?v=4","01M6CVWCMD740YHQDK7E9QYBW4","Reiki Planet","01M6CVWCS4KXVA2CWFVJ43EAXK",0,"MIT","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fautomation\u002Fgitlab-automation\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"automation","gitlab","gitlab automation","requests","MCP","via","project","branches","gitlab project management","composio","community","pipelines","merge requests","operations","management","first","Tools","search","issues","merge","2026-11-10 10:12:30",false,"---\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.\"\nrequires:\n  mcp: [rube]\nrisk: unknown\nsource: community\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\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","# 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\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",{"name":5,"risk":49,"source":34,"requires":50,"description":7},"unknown",{"mcp":51},[52],"rube","master","dff58085da947e81e8418c922055644bf0082b1b","automation\u002Fgitlab-automation","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills","https:\u002F\u002Fgithub.com\u002Freikiplanet","https:\u002F\u002Fwww.reiki-planet.com","Reiki Planet Game","2026-03-29 06:02:29",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add reikiplanet\u002Fdaoskills --skill gitlab-automation",{"tool":67,"command":68},"bunx","bunx skills add reikiplanet\u002Fdaoskills --skill gitlab-automation",{"tool":70,"command":71},"pnpm","pnpm dlx skills add reikiplanet\u002Fdaoskills --skill gitlab-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fautomation\u002Fgitlab-automation\u002FSKILL.md",true,[],[76,102,114,128,148,171],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":44},"01M6G614JTEQJHPT8AKK3YQ18S","web-games","Web browser game development principles. Framework selection, WebGPU, optimization, PWA.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fweb-games\u002FSKILL.md",[],[83,84,85,86,87,88,34,89,90,91,92,93,94,95,96,97,98,99,100,101],"games","web games","web","grep","principles","selection","framework selection","edit","write","read","pwa","game","web browser","game development","Optimization","framework","browser","development","webgpu",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":44},"01M6G611H2YGV0GZFP90D38ZMJ","vr-ar","VR\u002FAR development principles. Comfort, interaction, performance requirements.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fvr-ar\u002FSKILL.md",[],[109,110,100,111,112,34,90,91,92,86,113,87],"ar","vr ar","interaction","requirements","performance",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":44},"01M6G60XNMHAMV1SV0EJ1CX0AY","templates","Project scaffolding templates for new applications. Use when creating new projects from scratch. Contains 12 templates for various tech stacks.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Ftemplates\u002FSKILL.md",[],[116,121,122,123,30,124,34,125,92,126,127,86],"project scaffolding","From Scratch","tech","scaffolding","use","projects","applications",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":44},"01M6G60T0GATMK3Q5H8GDC1Z8S","wcag-audit-patterns","Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance. Use when auditing websites for accessibility, fixing WCAG violations, or implementing ac...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fwcag-audit-patterns\u002FSKILL.md",[],[135,136,137,138,139,34,140,141,142,143,125,144,145,146,147],"wcag audit patterns","wcag audit","patterns","WCAG","audit","manual","with","automated testing","guidance","remediation","verification","accessibility","testing",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":44},"01M6G60PMCHW1FRZ63F931QK3R","vulnerability-scanner","Advanced vulnerability analysis principles. OWASP 2025, Supply Chain Security, attack surface mapping, risk prioritization.","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fvulnerability-scanner\u002FSKILL.md",[],[155,156,157,158,159,160,161,162,34,92,86,163,87,164,165,166,167,168,169,170],"scanner","vulnerability scanner","vulnerability","prioritization","2025","mapping","chain","supply chain","Bash","analysis","risk","owasp","supply chain security","security","supply","advanced",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":44},"01M6G60JZBB8DK0W3DSG1WNMZK","threat-modeling-expert","Expert in threat modeling methodologies, security architecture review, and risk assessment. Masters STRIDE, PASTA, attack trees, and security requirement extraction. Use for security architecture r...","https:\u002F\u002Fgithub.com\u002Freikiplanet\u002Fdaoskills\u002Fblob\u002Fmaster\u002Fskills\u002Fsecurity\u002Fthreat-modeling-expert\u002FSKILL.md",[],[178,179,180,181,182,183,184,185,168,125,186,187,188,34,189,190,191,165,192,193],"modeling","threat modeling expert","threat modeling","expert","threat","risk assessment","architecture review","architecture","security architecture review","trees","security architecture","security requirement extraction","assessment","extraction","review","stride"]