{
  "id": "glab",
  "name": "GitLab CLI",
  "homepage": "https://gitlab.com/gitlab-org/cli",
  "description": "A command line tool bringing GitLab to your terminal.",
  "icon": "theSVG:gitlab",
  "executables": [
    "glab"
  ],
  "dotfiles": {
    "paths": [
      "~/.config/glab-cli/config.yml",
      "[appData]/glab-cli/config.yml",
      "%LOCALAPPDATA%/glab-cli/config.yml"
    ],
    "secret": [],
    "side_effect": false,
    "secret_paths": [
      {
        "file": [
          "~/.config/glab-cli/config.yml",
          "[appData]/glab-cli/config.yml",
          "%LOCALAPPDATA%/glab-cli/config.yml"
        ],
        "match": {
          "key_path": [
            "hosts.*.token"
          ]
        }
      }
    ]
  },
  "commands": {
    "format": 1,
    "label": "GitLab CLI",
    "description": "Work with GitLab from the terminal. Pick a subcommand: create a merge request, create an issue, or check pipeline status. Other subcommands are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": true
    },
    "subcommand": [
      {
        "path": [
          "mr",
          "create"
        ],
        "label": "Create a merge request",
        "description": "Create a merge request from the current branch (or another source branch). Templates, attachments and recovery are left out.",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://docs.gitlab.com/cli/mr/create/",
            "revision": "main 2026-10-27",
            "evidence": "glab mr create [flags]\n  -a, --assignee usernames        Assign merge request to people by their usernames.\n  -d, --description string        Supply a description for the merge request. Set to \"-\" to open an editor.\n      --draft                     Mark merge request as a draft.\n  -f, --fill                      Do not prompt for title or description, and just use commit info. Pushes the branch unless --push=false is set.\n  -l, --label strings             Add label by name. Multiple labels can be comma-separated or specified by repeating the flag.\n  -m, --milestone string          The global ID or title of a milestone to assign.\n      --remove-source-branch      Remove source branch on merge.\n      --reviewer usernames        Request review from users by their usernames.\n  -s, --source-branch string      Create a merge request from this branch. Default is the current branch.\n  -b, --target-branch string      The target or base branch into which you want your code merged into.\n  -t, --title string              Supply a title for the merge request.\n  -w, --web                       Continue merge request creation in a browser.\n  -y, --yes                       Skip submission confirmation prompt. Use --fill to skip all optional prompts.\n"
          }
        ],
        "field": [
          {
            "id": "title",
            "label": "Title",
            "type": "string",
            "option": [
              "--title",
              "-t"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "description",
            "label": "Description",
            "type": "string",
            "option": [
              "--description",
              "-d"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "fill",
            "label": "Fill from commits",
            "type": "boolean",
            "option": [
              "--fill",
              "-f"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "draft",
            "label": "Draft",
            "type": "boolean",
            "option": [
              "--draft"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "target_branch",
            "label": "Target branch",
            "type": "string",
            "option": [
              "--target-branch",
              "-b"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "source_branch",
            "label": "Source branch",
            "type": "string",
            "option": [
              "--source-branch",
              "-s"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "assignee",
            "label": "Assignees",
            "description": "Comma-separated usernames.",
            "type": "string",
            "option": [
              "--assignee",
              "-a"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "reviewer",
            "label": "Reviewers",
            "description": "Comma-separated usernames.",
            "type": "string",
            "option": [
              "--reviewer"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "label",
            "label": "Labels",
            "description": "Comma-separated label names.",
            "type": "string",
            "option": [
              "--label",
              "-l"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "milestone",
            "label": "Milestone",
            "type": "string",
            "option": [
              "--milestone",
              "-m"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "remove_source_branch",
            "label": "Remove source branch on merge",
            "type": "boolean",
            "option": [
              "--remove-source-branch"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "web",
            "label": "Continue in browser",
            "type": "boolean",
            "option": [
              "--web",
              "-w"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "yes",
            "label": "Skip confirmation",
            "type": "boolean",
            "option": [
              "--yes",
              "-y"
            ],
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "fill",
            "label": "Create from commits",
            "fields": [
              "fill",
              "draft",
              "label",
              "yes"
            ],
            "required": [
              "fill"
            ],
            "set": {
              "fill": [
                true
              ]
            }
          },
          {
            "id": "explicit",
            "label": "Create with title",
            "fields": [
              "title",
              "description",
              "target_branch",
              "assignee"
            ],
            "required": [
              "title"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "title",
              "description",
              "fill",
              "draft",
              "target_branch",
              "source_branch",
              "yes"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "assignee",
              "reviewer",
              "label",
              "milestone",
              "remove_source_branch",
              "web"
            ]
          }
        ]
      },
      {
        "path": [
          "issue",
          "create"
        ],
        "label": "Create an issue",
        "description": "Create an issue in the current project. Templates, attachments, linking and time tracking are left out.",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://docs.gitlab.com/cli/issue/create/",
            "revision": "main 2026-10-27",
            "evidence": "glab issue create [flags]\n  -a, --assignee usernames        Assign issue to people by their usernames.\n  -c, --confidential              Set an issue to be confidential.\n  -d, --description string        Issue description. Set to \"-\" to open an editor.\n      --due-date string           A date in 'YYYY-MM-DD' format.\n  -l, --label strings             Add label by name. Multiple labels can be comma-separated or specified by repeating the flag.\n  -m, --milestone string          The global ID or title of a milestone to assign.\n  -t, --title string              Issue title.\n      --web                       Continue issue creation with web interface.\n  -w, --weight int                Issue weight. Valid values are greater than or equal to 0.\n  -y, --yes                       Don't prompt for confirmation to submit the issue.\n"
          }
        ],
        "field": [
          {
            "id": "title",
            "label": "Title",
            "type": "string",
            "option": [
              "--title",
              "-t"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "description",
            "label": "Description",
            "type": "string",
            "option": [
              "--description",
              "-d"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "label",
            "label": "Labels",
            "description": "Comma-separated label names.",
            "type": "string",
            "option": [
              "--label",
              "-l"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "assignee",
            "label": "Assignees",
            "description": "Comma-separated usernames.",
            "type": "string",
            "option": [
              "--assignee",
              "-a"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "milestone",
            "label": "Milestone",
            "type": "string",
            "option": [
              "--milestone",
              "-m"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "confidential",
            "label": "Confidential",
            "type": "boolean",
            "option": [
              "--confidential",
              "-c"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "due_date",
            "label": "Due date",
            "description": "YYYY-MM-DD.",
            "type": "string",
            "option": [
              "--due-date"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "weight",
            "label": "Weight",
            "type": "integer",
            "option": [
              "--weight",
              "-w"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "web",
            "label": "Continue in browser",
            "type": "boolean",
            "option": [
              "--web"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "yes",
            "label": "Skip confirmation",
            "type": "boolean",
            "option": [
              "--yes",
              "-y"
            ],
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "create",
            "label": "Create issue",
            "fields": [
              "title",
              "description",
              "label",
              "yes"
            ],
            "required": [
              "title"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "title",
              "description",
              "label",
              "assignee",
              "milestone",
              "yes"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "confidential",
              "due_date",
              "weight",
              "web"
            ]
          }
        ]
      },
      {
        "path": [
          "ci",
          "status"
        ],
        "label": "Pipeline status",
        "description": "View the status of the pipeline for a branch.",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://docs.gitlab.com/cli/ci/status/",
            "revision": "main 2026-10-27",
            "evidence": "glab ci status [flags]\n  -b, --branch string   Check pipeline status for a branch. Defaults to the current branch.\n  -c, --compact         Show status in compact format.\n  -l, --live            Show status in real time until the pipeline ends.\n  -F, --output string   Format output as: text, json.\n  -w, --wait            Wait to return until the pipeline is finished, and provide output without a prompt.\n"
          }
        ],
        "field": [
          {
            "id": "branch",
            "label": "Branch",
            "type": "string",
            "option": [
              "--branch",
              "-b"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "live",
            "label": "Live updates",
            "type": "boolean",
            "option": [
              "--live",
              "-l"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "wait",
            "label": "Wait for pipeline to finish",
            "type": "boolean",
            "option": [
              "--wait",
              "-w"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "compact",
            "label": "Compact view",
            "type": "boolean",
            "option": [
              "--compact",
              "-c"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "output",
            "label": "Output format",
            "type": "enum",
            "option": [
              "--output",
              "-F"
            ],
            "choices": [
              {
                "value": "text",
                "label": "Text"
              },
              {
                "value": "json",
                "label": "JSON"
              }
            ],
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "live",
            "label": "Watch live",
            "fields": [
              "branch",
              "live"
            ],
            "required": [
              "live"
            ],
            "set": {
              "live": [
                true
              ]
            }
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "branch",
              "live",
              "wait",
              "compact",
              "output"
            ]
          }
        ]
      }
    ]
  }
}
