{
  "id": "multi-gitter",
  "name": "multi-gitter",
  "homepage": "https://github.com/lindell/multi-gitter",
  "description": "Update multiple repositories with one command.",
  "executables": [
    "multi-gitter"
  ],
  "dotfiles": {
    "paths": [
      "~/.multi-gitter/config"
    ],
    "secret": [],
    "secret_paths": [
      {
        "file": "~/.multi-gitter/config",
        "format": "yaml",
        "match": {
          "key_path": [
            "token"
          ]
        }
      }
    ]
  },
  "commands": {
    "format": 1,
    "label": "multi-gitter",
    "description": "Run a script across many repositories and open pull requests. Only the run subcommand is modelled; tokens and other platform flags are left out (use environment variables for tokens).",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "run"
        ],
        "label": "Run a script on repositories",
        "source": [
          {
            "id": "readme",
            "kind": "help",
            "url": "https://raw.githubusercontent.com/lindell/multi-gitter/HEAD/README.md",
            "revision": "2026-10",
            "evidence": "multi-gitter run [script path] [flags]\n-B, --branch string              The name of the branch where changes are committed. (default \"multi-gitter-branch\")\n-m, --commit-message string      The commit message. Will default to title + body if none is set.\n-d, --dry-run                    Run without pushing changes or creating pull requests.\n--draft                          Create pull request(s) as draft.\n-O, --org strings                The name of a GitHub organization. All repositories in that organization will be used.\n-R, --repo strings               The name of a GitHub repository in the format \"ownerName/repoName\".\n-U, --user strings               The name of a user. All repositories owned by that user will be used.\n-t, --pr-title string            The title of the PR.\n--skip-pr                        Skip pull request and directly push to the branch.\n"
          }
        ],
        "field": [
          {
            "id": "script",
            "label": "Script",
            "description": "Script path or command line to run in each repository.",
            "type": "string",
            "position": 0,
            "min": 1,
            "effect": "exec",
            "sources": [
              "readme"
            ]
          },
          {
            "id": "org",
            "label": "GitHub organization",
            "type": "string",
            "option": [
              "--org",
              "-O"
            ],
            "multiple": true,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "repo",
            "label": "Repository (owner/name)",
            "type": "string",
            "option": [
              "--repo",
              "-R"
            ],
            "multiple": true,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "user",
            "label": "User",
            "type": "string",
            "option": [
              "--user",
              "-U"
            ],
            "multiple": true,
            "sources": [
              "readme"
            ]
          },
          {
            "id": "branch",
            "label": "Branch name",
            "type": "string",
            "option": [
              "--branch",
              "-B"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "message",
            "label": "Commit message",
            "type": "string",
            "option": [
              "--commit-message",
              "-m"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "pr_title",
            "label": "Pull request title",
            "type": "string",
            "option": [
              "--pr-title",
              "-t"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "dry_run",
            "label": "Dry run",
            "type": "boolean",
            "option": [
              "--dry-run",
              "-d"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "draft",
            "label": "Draft pull requests",
            "type": "boolean",
            "option": [
              "--draft"
            ],
            "sources": [
              "readme"
            ]
          },
          {
            "id": "skip_pr",
            "label": "Push directly, no pull request",
            "type": "boolean",
            "option": [
              "--skip-pr"
            ],
            "effect": "overwrite",
            "sources": [
              "readme"
            ]
          }
        ],
        "task": [
          {
            "id": "dry",
            "label": "Dry run over an organization",
            "fields": [
              "script",
              "org",
              "branch",
              "message"
            ],
            "required": [
              "script",
              "org",
              "branch",
              "message"
            ],
            "set": {
              "dry_run": [
                true
              ]
            }
          },
          {
            "id": "open_prs",
            "label": "Open pull requests",
            "fields": [
              "script",
              "org",
              "repo",
              "branch",
              "message",
              "pr_title",
              "draft"
            ],
            "required": [
              "script",
              "branch",
              "message"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "script",
              "org",
              "repo",
              "user",
              "branch",
              "message"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "pr_title",
              "dry_run",
              "draft",
              "skip_pr"
            ]
          }
        ]
      }
    ]
  }
}
