{"data":{"skill":{"slug":"sickn33-gitlab-automation","name":"gitlab-automation","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/gitlab-automation","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"61c4cf8a-9700-445c-8318-2ca5d5bb8cea","skill_id":"06a38204-8b00-4bc5-a322-e7e06e010b3d","version":6,"content_hash":"v3:88a8e9a07f4c54ab105c1c41b6267c287146b07b:290e8caba3c1025fcf3301a7009f5bae64a75b4ea9183e1ba6d5d8c7b19a8a4c:b5b5e47a1142c517966e4d56ab66b8d13b972688a988b909dfcd90e28cb2d302:736b696c6c732f7369636b6e33332f6769746c61622d6175746f6d6174696f6e:6a3e74a38453fc1f45bc71d7654850ea","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"The 145 external-command detections are false positives caused by Markdown backticks, and both reconnaissance detections describe normal GitLab validation or filtering. The skill intentionally connects to Rube MCP, delegates GitLab OAuth access, and permits remote mutations without an explicit confirmation step.","remediation":[{"issue":"The setup delegates GitLab access to an external MCP service.","severity":"medium","suggestion":"Document the requested OAuth scopes, data handling, revocation process, and verified Rube endpoint before users authorize access."},{"issue":"State-changing GitLab workflows do not require explicit confirmation.","severity":"medium","suggestion":"Require a preview and user confirmation before creating projects or branches, or before changing issue state, labels, or assignees."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":35,"line_start":35},{"file":"SKILL.md","line_end":36,"line_start":36},{"file":"SKILL.md","line_end":37,"line_start":37},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":39,"line_start":39},{"file":"SKILL.md","line_end":42,"line_start":42},{"file":"SKILL.md","line_end":43,"line_start":43},{"file":"SKILL.md","line_end":44,"line_start":44},{"file":"SKILL.md","line_end":45,"line_start":45},{"file":"SKILL.md","line_end":46,"line_start":46},{"file":"SKILL.md","line_end":47,"line_start":47},{"file":"SKILL.md","line_end":48,"line_start":48},{"file":"SKILL.md","line_end":49,"line_start":49},{"file":"SKILL.md","line_end":50,"line_start":50},{"file":"SKILL.md","line_end":51,"line_start":51},{"file":"SKILL.md","line_end":52,"line_start":52},{"file":"SKILL.md","line_end":53,"line_start":53},{"file":"SKILL.md","line_end":54,"line_start":54},{"file":"SKILL.md","line_end":57,"line_start":57},{"file":"SKILL.md","line_end":58,"line_start":58},{"file":"SKILL.md","line_end":59,"line_start":59},{"file":"SKILL.md","line_end":60,"line_start":60},{"file":"SKILL.md","line_end":61,"line_start":61},{"file":"SKILL.md","line_end":68,"line_start":68},{"file":"SKILL.md","line_end":69,"line_start":69},{"file":"SKILL.md","line_end":70,"line_start":70},{"file":"SKILL.md","line_end":71,"line_start":71},{"file":"SKILL.md","line_end":74,"line_start":74},{"file":"SKILL.md","line_end":75,"line_start":75},{"file":"SKILL.md","line_end":76,"line_start":76},{"file":"SKILL.md","line_end":77,"line_start":77},{"file":"SKILL.md","line_end":78,"line_start":78},{"file":"SKILL.md","line_end":79,"line_start":79},{"file":"SKILL.md","line_end":80,"line_start":80},{"file":"SKILL.md","line_end":81,"line_start":81},{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":83,"line_start":83},{"file":"SKILL.md","line_end":84,"line_start":84},{"file":"SKILL.md","line_end":85,"line_start":85},{"file":"SKILL.md","line_end":86,"line_start":86},{"file":"SKILL.md","line_end":89,"line_start":89},{"file":"SKILL.md","line_end":90,"line_start":90},{"file":"SKILL.md","line_end":91,"line_start":91},{"file":"SKILL.md","line_end":92,"line_start":92},{"file":"SKILL.md","line_end":93,"line_start":93}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":21,"line_start":21}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Third-Party GitLab OAuth Delegation","locations":[{"file":"SKILL.md","line_end":25,"line_start":21}],"confidence":0.97,"description":"Setup directs users to add Rube MCP and complete GitLab OAuth through its returned link, granting a third-party service GitLab data and action access.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"Lines 21-25 explicitly require the external MCP endpoint, a GitLab connection, and OAuth through a returned authorization link."},{"title":"Remote Mutations Lack Explicit Confirmation","locations":[{"file":"SKILL.md","line_end":38,"line_start":35},{"file":"SKILL.md","line_end":106,"line_start":100}],"confidence":0.96,"description":"The workflows create or update issues, projects, and branches without requiring confirmation before state changes. Agent errors could alter shared GitLab resources.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The cited workflow steps explicitly invoke issue updates, project creation, and branch creation, while no nearby step requires user confirmation."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":21,"line_start":21}],"confidence":0.98,"description":"**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API k","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"Line 21 directs users to configure the external Rube MCP endpoint, creating an intentional network and third-party trust dependency. This expected integration remains a real data-access boundary."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":263,"audit_model":"codex","audited_at":"2026-07-24T00:08:58.579+00:00","created_at":"2026-07-26T13:23:57.826258+00:00","static_findings":[{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Active GitLab connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `gitlab`","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas","category":"external_commands","line_end":17,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API k","category":"external_commands","line_end":21,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `gitlab`","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `GITLAB_GET_PROJECTS` - Find the target project and get its ID [Prerequisite]","category":"external_commands","line_end":35,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `GITLAB_LIST_PROJECT_ISSUES` - List and filter issues for a project [Required]","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `GITLAB_CREATE_PROJECT_ISSUE` - Create a new issue [Required for create]","category":"external_commands","line_end":37,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `GITLAB_UPDATE_PROJECT_ISSUE` - Update an existing issue (title, labels, state, assignees) [Requi","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. `GITLAB_LIST_PROJECT_USERS` - Find user IDs for assignment [Optional]","category":"external_commands","line_end":39,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `id`: Project ID (integer) or URL-encoded path (e.g., `\"my-group/my-project\"`)","category":"external_commands","line_end":42,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `title`: Issue title (required for creation)","category":"external_commands","line_end":43,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `description`: Issue body text (max 1,048,576 characters)","category":"external_commands","line_end":44,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `labels`: Comma-separated label names (e.g., `\"bug,critical\"`)","category":"external_commands","line_end":45,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `add_labels` / `remove_labels`: Add or remove labels without replacing all","category":"external_commands","line_end":46,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `state`: Filter by `\"all\"`, `\"opened\"`, or `\"closed\"`","category":"external_commands","line_end":47,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `state_event`: `\"close\"` or `\"reopen\"` to change issue state","category":"external_commands","line_end":48,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `assignee_ids`: Array of user IDs; use `[0]` to unassign all","category":"external_commands","line_end":49,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `issue_iid`: Internal issue ID within the project (required for updates)","category":"external_commands","line_end":50,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `milestone`: Filter by milestone title","category":"external_commands","line_end":51,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `search`: Search in title and description","category":"external_commands","line_end":52,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `scope`: `\"created_by_me\"`, `\"assigned_to_me\"`, or `\"all\"`","category":"external_commands","line_end":53,"severity":"medium","line_start":53},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `page` / `per_page`: Pagination (default per_page: 20)","category":"external_commands","line_end":54,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `id` accepts either integer project ID or URL-encoded path; wrong IDs yield 4xx errors","category":"external_commands","line_end":57,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `issue_iid` is the project-internal ID (shown as #42), different from the global issue ID","category":"external_commands","line_end":58,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Labels in `labels` field replace ALL existing labels; use `add_labels`/`remove_labels` for increme","category":"external_commands","line_end":59,"severity":"medium","line_start":59},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Setting `assignee_ids` to empty array does NOT unassign; use `[0]` instead","category":"external_commands","line_end":60,"severity":"medium","line_start":60},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `updated_at` field requires administrator or project/group owner rights","category":"external_commands","line_end":61,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `GITLAB_GET_PROJECT` - Get project details and verify access [Prerequisite]","category":"external_commands","line_end":68,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `GITLAB_GET_PROJECT_MERGE_REQUESTS` - List and filter merge requests [Required]","category":"external_commands","line_end":69,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `GITLAB_GET_REPOSITORY_BRANCHES` - Verify source/target branches [Optional]","category":"external_commands","line_end":70,"severity":"medium","line_start":70},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `GITLAB_LIST_ALL_PROJECT_MEMBERS` - Find reviewers/assignees [Optional]","category":"external_commands","line_end":71,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `id`: Project ID or URL-encoded path","category":"external_commands","line_end":74,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `state`: `\"opened\"`, `\"closed\"`, `\"locked\"`, `\"merged\"`, or `\"all\"`","category":"external_commands","line_end":75,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `scope`: `\"created_by_me\"` (default), `\"assigned_to_me\"`, or `\"all\"`","category":"external_commands","line_end":76,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `source_branch` / `target_branch`: Filter by branch names","category":"external_commands","line_end":77,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `author_id` / `author_username`: Filter by MR author","category":"external_commands","line_end":78,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `assignee_id`: Filter by assignee (use `None` for unassigned, `Any` for assigned)","category":"external_commands","line_end":79,"severity":"medium","line_start":79},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `reviewer_id` / `reviewer_username`: Filter by reviewer","category":"external_commands","line_end":80,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `labels`: Comma-separated label filter","category":"external_commands","line_end":81,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `search`: Search in title and description","category":"external_commands","line_end":82,"severity":"medium","line_start":82},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `wip`: `\"yes\"` for draft MRs, `\"no\"` for non-draft","category":"external_commands","line_end":83,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `order_by`: `\"created_at\"` (default), `\"title\"`, `\"merged_at\"`, `\"updated_at\"`","category":"external_commands","line_end":84,"severity":"medium","line_start":84},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `view`: `\"simple\"` for minimal fields","category":"external_commands","line_end":85,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `iids[]`: Filter by specific MR internal IDs","category":"external_commands","line_end":86,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Default `scope` is `\"created_by_me\"` which limits results; use `\"all\"` for complete listings","category":"external_commands","line_end":89,"severity":"medium","line_start":89},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `author_id` and `author_username` are mutually exclusive","category":"external_commands","line_end":90,"severity":"medium","line_start":90},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `reviewer_id` and `reviewer_username` are mutually exclusive","category":"external_commands","line_end":91,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `approved` filter requires the `mr_approved_filter` feature flag (disabled by default)","category":"external_commands","line_end":92,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Large MR histories can be noisy; use filters and moderate `per_page` values","category":"external_commands","line_end":93,"severity":"medium","line_start":93},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `GITLAB_GET_PROJECTS` - List all accessible projects with filters [Required]","category":"external_commands","line_end":100,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `GITLAB_GET_PROJECT` - Get detailed info for a specific project [Optional]","category":"external_commands","line_end":101,"severity":"medium","line_start":101},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `GITLAB_LIST_USER_PROJECTS` - List projects owned by a specific user [Optional]","category":"external_commands","line_end":102,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `GITLAB_CREATE_PROJECT` - Create a new project [Required for create]","category":"external_commands","line_end":103,"severity":"medium","line_start":103},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. `GITLAB_GET_REPOSITORY_BRANCHES` - List branches in a project [Required for branch ops]","category":"external_commands","line_end":104,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"6. `GITLAB_CREATE_REPOSITORY_BRANCH` - Create a new branch [Optional]","category":"external_commands","line_end":105,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"7. `GITLAB_GET_REPOSITORY_BRANCH` - Get details of a specific branch [Optional]","category":"external_commands","line_end":106,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"8. `GITLAB_LIST_REPOSITORY_COMMITS` - View commit history [Optional]","category":"external_commands","line_end":107,"severity":"medium","line_start":107},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"9. `GITLAB_GET_PROJECT_LANGUAGES` - Get language breakdown [Optional]","category":"external_commands","line_end":108,"severity":"medium","line_start":108},{"id":"external_commands:SKILL.md:111:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `name` / `path`: Project name and URL-friendly path (both required for creation)","category":"external_commands","line_end":111,"severity":"medium","line_start":111},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `visibility`: `\"private\"`, `\"internal\"`, or `\"public\"`","category":"external_commands","line_end":112,"severity":"medium","line_start":112},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `namespace_id`: Group or user ID for project placement","category":"external_commands","line_end":113,"severity":"medium","line_start":113},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `search`: Case-insensitive substring search for projects","category":"external_commands","line_end":114,"severity":"medium","line_start":114},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `membership`: `true` to limit to projects user is a member of","category":"external_commands","line_end":115,"severity":"medium","line_start":115},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `owned`: `true` to limit to user-owned projects","category":"external_commands","line_end":116,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `project_id`: Project ID for branch operations","category":"external_commands","line_end":117,"severity":"medium","line_start":117},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `branch_name`: Name for new branch","category":"external_commands","line_end":118,"severity":"medium","line_start":118},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `ref`: Source branch or commit SHA for new branch creation","category":"external_commands","line_end":119,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `order_by`: `\"id\"`, `\"name\"`, `\"path\"`, `\"created_at\"`, `\"updated_at\"`, `\"star_count\"`, `\"last_act","category":"external_commands","line_end":120,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `GITLAB_GET_PROJECTS` pagination is required for complete coverage; stopping at first page misses ","category":"external_commands","line_end":123,"severity":"medium","line_start":123},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Some responses place items under `data.details`; parse the actual returned list structure","category":"external_commands","line_end":124,"severity":"medium","line_start":124},{"id":"external_commands:SKILL.md:125:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Most follow-up calls depend on correct `project_id`; verify with `GITLAB_GET_PROJECT` first","category":"external_commands","line_end":125,"severity":"medium","line_start":125},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Invalid `branch_name`/`ref`/`sha` causes client errors; verify branch existence via `GITLAB_GET_RE","category":"external_commands","line_end":126,"severity":"medium","line_start":126},{"id":"external_commands:SKILL.md:127:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Both `name` and `path` are required for `GITLAB_CREATE_PROJECT`","category":"external_commands","line_end":127,"severity":"medium","line_start":127},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `GITLAB_GET_PROJECT` - Verify project access [Prerequisite]","category":"external_commands","line_end":134,"severity":"medium","line_start":134},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `GITLAB_LIST_PROJECT_PIPELINES` - List pipelines with filters [Required]","category":"external_commands","line_end":135,"severity":"medium","line_start":135},{"id":"external_commands:SKILL.md:136:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `GITLAB_GET_SINGLE_PIPELINE` - Get detailed info for a specific pipeline [Optional]","category":"external_commands","line_end":136,"severity":"medium","line_start":136},{"id":"external_commands:SKILL.md:137:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `GITLAB_LIST_PIPELINE_JOBS` - List jobs within a pipeline [Optional]","category":"external_commands","line_end":137,"severity":"medium","line_start":137},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `id`: Project ID or URL-encoded path","category":"external_commands","line_end":140,"severity":"medium","line_start":140},{"id":"external_commands:SKILL.md:141:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `status`: Filter by `\"created\"`, `\"waiting_for_resource\"`, `\"preparing\"`, `\"pending\"`, `\"running\"`","category":"external_commands","line_end":141,"severity":"medium","line_start":141},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `scope`: `\"running\"`, `\"pending\"`, `\"finished\"`, `\"branches\"`, `\"tags\"`","category":"external_commands","line_end":142,"severity":"medium","line_start":142},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `ref`: Branch or tag name","category":"external_commands","line_end":143,"severity":"medium","line_start":143},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `sha`: Specific commit SHA","category":"external_commands","line_end":144,"severity":"medium","line_start":144},{"id":"external_commands:SKILL.md:145:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `source`: Pipeline source (use `\"parent_pipeline\"` for child pipelines)","category":"external_commands","line_end":145,"severity":"medium","line_start":145},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `order_by`: `\"id\"` (default), `\"status\"`, `\"ref\"`, `\"updated_at\"`, `\"user_id\"`","category":"external_commands","line_end":146,"severity":"medium","line_start":146},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `created_after` / `created_before`: ISO 8601 date filters","category":"external_commands","line_end":147,"severity":"medium","line_start":147},{"id":"external_commands:SKILL.md:148:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `pipeline_id`: Specific pipeline ID for job listing","category":"external_commands","line_end":148,"severity":"medium","line_start":148},{"id":"external_commands:SKILL.md:149:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `include_retried`: `true` to include retried jobs (default `false`)","category":"external_commands","line_end":149,"severity":"medium","line_start":149},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Large pipeline histories can be noisy; use `status`, `ref`, and date filters to narrow results","category":"external_commands","line_end":152,"severity":"medium","line_start":152},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use moderate `per_page` values to keep output manageable","category":"external_commands","line_end":153,"severity":"medium","line_start":153},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Pipeline job `scope` accepts single status string or array of statuses","category":"external_commands","line_end":154,"severity":"medium","line_start":154},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `yaml_errors: true` returns only pipelines with invalid configurations","category":"external_commands","line_end":155,"severity":"medium","line_start":155},{"id":"external_commands:SKILL.md:162:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. `GITLAB_GET_USERS` - Search and list GitLab users [Required]","category":"external_commands","line_end":162,"severity":"medium","line_start":162},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. `GITLAB_GET_USER` - Get details for a specific user by ID [Optional]","category":"external_commands","line_end":163,"severity":"medium","line_start":163},{"id":"external_commands:SKILL.md:164:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. `GITLAB_GET_USERS_ID_STATUS` - Get user status message and availability [Optional]","category":"external_commands","line_end":164,"severity":"medium","line_start":164},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. `GITLAB_LIST_ALL_PROJECT_MEMBERS` - List all project members (direct + inherited) [Required for m","category":"external_commands","line_end":165,"severity":"medium","line_start":165},{"id":"external_commands:SKILL.md:166:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"5. `GITLAB_LIST_PROJECT_USERS` - List project users with search filter [Optional]","category":"external_commands","line_end":166,"severity":"medium","line_start":166},{"id":"external_commands:SKILL.md:169:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `search`: Search by name, username, or public email","category":"external_commands","line_end":169,"severity":"medium","line_start":169},{"id":"external_commands:SKILL.md:170:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `username`: Get specific user by username","category":"external_commands","line_end":170,"severity":"medium","line_start":170},{"id":"external_commands:SKILL.md:171:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `active` / `blocked`: Filter by user state","category":"external_commands","line_end":171,"severity":"medium","line_start":171},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `id`: Project ID for member listing","category":"external_commands","line_end":172,"severity":"medium","line_start":172},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `query`: Filter members by name, email, or username","category":"external_commands","line_end":173,"severity":"medium","line_start":173},{"id":"external_commands:SKILL.md:174:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `state`: Filter members by `\"awaiting\"` or `\"active\"` (Premium/Ultimate)","category":"external_commands","line_end":174,"severity":"medium","line_start":174},{"id":"external_commands:SKILL.md:175:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `user_ids`: Filter by specific user IDs","category":"external_commands","line_end":175,"severity":"medium","line_start":175},{"id":"external_commands:SKILL.md:179:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `GITLAB_LIST_ALL_PROJECT_MEMBERS` includes direct, inherited, and invited members","category":"external_commands","line_end":179,"severity":"medium","line_start":179},{"id":"external_commands:SKILL.md:187:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Numeric ID**: Integer project ID (e.g., `123`)","category":"external_commands","line_end":187,"severity":"medium","line_start":187},{"id":"external_commands:SKILL.md:188:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **URL-encoded path**: Namespace/project format (e.g., `\"my-group%2Fmy-project\"` or `\"my-group/my-p","category":"external_commands","line_end":188,"severity":"medium","line_start":188},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Issue IID vs ID**: `issue_iid` is the project-internal number (#42); the global `id` is differen","category":"external_commands","line_end":189,"severity":"medium","line_start":189},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **User ID**: Numeric; resolve via `GITLAB_GET_USERS` with `search` or `username`","category":"external_commands","line_end":190,"severity":"medium","line_start":190},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Set `page` (starting at 1) and `per_page` (1-100, default 20)","category":"external_commands","line_end":194,"severity":"medium","line_start":194},{"id":"external_commands:SKILL.md:195:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Continue incrementing `page` until response returns fewer items than `per_page` or is empty","category":"external_commands","line_end":195,"severity":"medium","line_start":195},{"id":"external_commands:SKILL.md:196:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Total count may be available in response headers (`X-Total`, `X-Total-Pages`)","category":"external_commands","line_end":196,"severity":"medium","line_start":196},{"id":"external_commands:SKILL.md:201:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Forward slashes must be URL-encoded: `my-group/my-project` becomes `my-group%2Fmy-project`","category":"external_commands","line_end":201,"severity":"medium","line_start":201},{"id":"external_commands:SKILL.md:208:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Project `id` field accepts both integer and string (URL-encoded path)","category":"external_commands","line_end":208,"severity":"medium","line_start":208},{"id":"external_commands:SKILL.md:209:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Issue `issue_iid` is project-scoped; do not confuse with global issue ID","category":"external_commands","line_end":209,"severity":"medium","line_start":209},{"id":"external_commands:SKILL.md:216:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Paginate responsibly with moderate `per_page` values","category":"external_commands","line_end":216,"severity":"medium","line_start":216},{"id":"external_commands:SKILL.md:219:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `labels` field replaces ALL labels; use `add_labels`/`remove_labels` for incremental changes","category":"external_commands","line_end":219,"severity":"medium","line_start":219},{"id":"external_commands:SKILL.md:220:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `assignee_ids: [0]` unassigns all; empty array does nothing","category":"external_commands","line_end":220,"severity":"medium","line_start":220},{"id":"external_commands:SKILL.md:221:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `scope` defaults vary: `\"created_by_me\"` for MRs, `\"all\"` for issues","category":"external_commands","line_end":221,"severity":"medium","line_start":221},{"id":"external_commands:SKILL.md:222:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `author_id` and `author_username` are mutually exclusive in MR filters","category":"external_commands","line_end":222,"severity":"medium","line_start":222},{"id":"external_commands:SKILL.md:223:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Date parameters use ISO 8601 format: `\"2024-01-15T10:30:00Z\"`","category":"external_commands","line_end":223,"severity":"medium","line_start":223},{"id":"external_commands:SKILL.md:226:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Some features require Premium/Ultimate: `epic_id`, `weight`, `iteration_id`, `approved_by_ids`, me","category":"external_commands","line_end":226,"severity":"medium","line_start":226},{"id":"external_commands:SKILL.md:227:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Admin-only features: user management filters, `updated_at` override, custom attributes","category":"external_commands","line_end":227,"severity":"medium","line_start":227},{"id":"external_commands:SKILL.md:228:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- The `mr_approved_filter` feature flag is disabled by default","category":"external_commands","line_end":228,"severity":"medium","line_start":228},{"id":"external_commands:SKILL.md:234:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List projects | `GITLAB_GET_PROJECTS` | `search`, `membership`, `visibility` |","category":"external_commands","line_end":234,"severity":"medium","line_start":234},{"id":"external_commands:SKILL.md:235:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Get project details | `GITLAB_GET_PROJECT` | `id` |","category":"external_commands","line_end":235,"severity":"medium","line_start":235},{"id":"external_commands:SKILL.md:236:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| User's projects | `GITLAB_LIST_USER_PROJECTS` | `id`, `search`, `owned` |","category":"external_commands","line_end":236,"severity":"medium","line_start":236},{"id":"external_commands:SKILL.md:237:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Create project | `GITLAB_CREATE_PROJECT` | `name`, `path`, `visibility` |","category":"external_commands","line_end":237,"severity":"medium","line_start":237},{"id":"external_commands:SKILL.md:238:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List issues | `GITLAB_LIST_PROJECT_ISSUES` | `id`, `state`, `labels`, `search` |","category":"external_commands","line_end":238,"severity":"medium","line_start":238},{"id":"external_commands:SKILL.md:239:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Create issue | `GITLAB_CREATE_PROJECT_ISSUE` | `id`, `title`, `description`, `labels` |","category":"external_commands","line_end":239,"severity":"medium","line_start":239},{"id":"external_commands:SKILL.md:240:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Update issue | `GITLAB_UPDATE_PROJECT_ISSUE` | `id`, `issue_iid`, `state_event` |","category":"external_commands","line_end":240,"severity":"medium","line_start":240},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List merge requests | `GITLAB_GET_PROJECT_MERGE_REQUESTS` | `id`, `state`, `scope`, `labels` |","category":"external_commands","line_end":241,"severity":"medium","line_start":241},{"id":"external_commands:SKILL.md:242:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List branches | `GITLAB_GET_REPOSITORY_BRANCHES` | `project_id`, `search` |","category":"external_commands","line_end":242,"severity":"medium","line_start":242},{"id":"external_commands:SKILL.md:243:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Get branch | `GITLAB_GET_REPOSITORY_BRANCH` | `project_id`, `branch_name` |","category":"external_commands","line_end":243,"severity":"medium","line_start":243},{"id":"external_commands:SKILL.md:244:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Create branch | `GITLAB_CREATE_REPOSITORY_BRANCH` | `project_id`, `branch_name`, `ref` |","category":"external_commands","line_end":244,"severity":"medium","line_start":244},{"id":"external_commands:SKILL.md:245:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List commits | `GITLAB_LIST_REPOSITORY_COMMITS` | project ID, branch ref |","category":"external_commands","line_end":245,"severity":"medium","line_start":245},{"id":"external_commands:SKILL.md:246:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Project languages | `GITLAB_GET_PROJECT_LANGUAGES` | project ID |","category":"external_commands","line_end":246,"severity":"medium","line_start":246},{"id":"external_commands:SKILL.md:247:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List pipelines | `GITLAB_LIST_PROJECT_PIPELINES` | `id`, `status`, `ref` |","category":"external_commands","line_end":247,"severity":"medium","line_start":247},{"id":"external_commands:SKILL.md:248:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Get pipeline | `GITLAB_GET_SINGLE_PIPELINE` | `project_id`, `pipeline_id` |","category":"external_commands","line_end":248,"severity":"medium","line_start":248},{"id":"external_commands:SKILL.md:249:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List pipeline jobs | `GITLAB_LIST_PIPELINE_JOBS` | `id`, `pipeline_id`, `scope` |","category":"external_commands","line_end":249,"severity":"medium","line_start":249},{"id":"external_commands:SKILL.md:250:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Search users | `GITLAB_GET_USERS` | `search`, `username`, `active` |","category":"external_commands","line_end":250,"severity":"medium","line_start":250},{"id":"external_commands:SKILL.md:251:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Get user | `GITLAB_GET_USER` | user ID |","category":"external_commands","line_end":251,"severity":"medium","line_start":251},{"id":"external_commands:SKILL.md:252:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| User status | `GITLAB_GET_USERS_ID_STATUS` | user ID |","category":"external_commands","line_end":252,"severity":"medium","line_start":252},{"id":"external_commands:SKILL.md:253:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List project members | `GITLAB_LIST_ALL_PROJECT_MEMBERS` | `id`, `query`, `state` |","category":"external_commands","line_end":253,"severity":"medium","line_start":253},{"id":"external_commands:SKILL.md:254:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| List project users | `GITLAB_LIST_PROJECT_USERS` | `id`, `search` |","category":"external_commands","line_end":254,"severity":"medium","line_start":254},{"id":"network:SKILL.md:21:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API k","category":"network","line_end":21,"severity":"low","line_start":21},{"id":"blocker:SKILL.md:126:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Invalid `branch_name`/`ref`/`sha` causes client errors; verify branch existence via `GITLAB_GET_RE","category":"blocker","line_end":126,"severity":"low","line_start":126},{"id":"blocker:SKILL.md:155:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- `yaml_errors: true` returns only pipelines with invalid configurations","category":"blocker","line_end":155,"severity":"low","line_start":155}],"finding_verdicts":[{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 16 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 17 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 21 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 23 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 24 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 35 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 36 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 37 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 38 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 39 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 42 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 43 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 44 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 45 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 46 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 47 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 48 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 49 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 50 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 51 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 52 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 53 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 54 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 57 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 58 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 59 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 60 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 61 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 68 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 69 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 70 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 71 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 74 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 75 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 76 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 77 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 78 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 79 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 80 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 81 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 82 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 83 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 84 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 85 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 86 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 89 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 90 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 91 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 92 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 93 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 100 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 101 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 102 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 103 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 104 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 105 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 106 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 107 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 108 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:111:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 111 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 112 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 113 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 114 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 115 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 116 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 117 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 118 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 119 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 120 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 123 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 124 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:125:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 125 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 126 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:127:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 127 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 134 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 135 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:136:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 136 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:137:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 137 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 140 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:141:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 141 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 142 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 143 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 144 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:145:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 145 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 146 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 147 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:148:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 148 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:149:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 149 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 152 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 153 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 154 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 155 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:162:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 162 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 163 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:164:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 164 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 165 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:166:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 166 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:169:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 169 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:170:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 170 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:171:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 171 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 172 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 173 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:174:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 174 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:175:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 175 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:179:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 179 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:187:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 187 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:188:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 188 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 189 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 190 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 194 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:195:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 195 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:196:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 196 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:201:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 201 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:208:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 208 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:209:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 209 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:216:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 216 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:219:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 219 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:220:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 220 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:221:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 221 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:222:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 222 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:223:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 223 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:226:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 226 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:227:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 227 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:228:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 228 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:234:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 234 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:235:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 235 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:236:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 236 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:237:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 237 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:238:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 238 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:239:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 239 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:240:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 240 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 241 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:242:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 242 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:243:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 243 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:244:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 244 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:245:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 245 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:246:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 246 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:247:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 247 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:248:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 248 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:249:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 249 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:250:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 250 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:251:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 251 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:252:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 252 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:253:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 253 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:254:ruby-shell-backtick-execution","reason":"The backticks on SKILL.md line 254 delimit Markdown identifiers or example values; they are not executable Ruby or shell syntax. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:21:hardcoded-url","reason":"Line 21 directs users to configure the external Rube MCP endpoint, creating an intentional network and third-party trust dependency. This expected integration remains a real data-access boundary.","verdict":"confirmed","severity":"low","confidence":0.98},{"id":"blocker:SKILL.md:126:system-reconnaissance","reason":"Line 126 recommends verifying a GitLab branch before using its name or commit reference. This is normal remote resource validation, not host-system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:155:system-reconnaissance","reason":"Line 155 documents a GitLab pipeline filter for invalid YAML configurations. It does not inspect the local host or collect system information.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Third-Party GitLab OAuth Delegation","severity":"medium","locations":[{"file":"SKILL.md","line_end":25,"line_start":21}],"confidence":0.97,"description":"Setup directs users to add Rube MCP and complete GitLab OAuth through its returned link, granting a third-party service GitLab data and action access.","confidence_reasoning":"Lines 21-25 explicitly require the external MCP endpoint, a GitLab connection, and OAuth through a returned authorization link."},{"title":"Remote Mutations Lack Explicit Confirmation","severity":"medium","locations":[{"file":"SKILL.md","line_end":38,"line_start":35},{"file":"SKILL.md","line_end":106,"line_start":100}],"confidence":0.96,"description":"The workflows create or update issues, projects, and branches without requiring confirmation before state changes. Agent errors could alter shared GitLab resources.","confidence_reasoning":"The cited workflow steps explicitly invoke issue updates, project creation, and branch creation, while no nearby step requires user confirmation."}],"subject_marketplace_commit_sha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","subject_content_hash":"290e8caba3c1025fcf3301a7009f5bae64a75b4ea9183e1ba6d5d8c7b19a8a4c","subject_tree_hash":"b5b5e47a1142c517966e4d56ab66b8d13b972688a988b909dfcd90e28cb2d302","subject_plugin_path":"skills/sickn33/gitlab-automation","audit_payload_hash":"6a3e74a38453fc1f45bc71d7654850ea","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","contentHash":"290e8caba3c1025fcf3301a7009f5bae64a75b4ea9183e1ba6d5d8c7b19a8a4c","treeHash":"b5b5e47a1142c517966e4d56ab66b8d13b972688a988b909dfcd90e28cb2d302","pluginPath":"skills/sickn33/gitlab-automation","auditPayloadHash":"6a3e74a38453fc1f45bc71d7654850ea"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/sickn33-gitlab-automation/audits/6/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":1,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}