{
  "id": "pinact",
  "name": "pinact",
  "homepage": "https://github.com/suzuki-shunsuke/pinact",
  "executables": [
    "pinact"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/pinact/pinact.yaml",
      "%APPDATA%/pinact/pinact.yaml"
    ],
    "exclude": [],
    "secret": []
  },
  "commands": {
    "format": 1,
    "label": "Pin GitHub Actions",
    "description": "Pin GitHub Actions and reusable workflows to commit SHAs, or check that they are pinned. Token handling and SARIF output are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": false,
      "short_bundles": false
    },
    "subcommand": [
      {
        "path": [
          "run"
        ],
        "label": "Pin actions in workflows",
        "source": [
          {
            "id": "docs",
            "kind": "manual",
            "url": "https://github.com/suzuki-shunsuke/pinact/blob/main/docs/usage.md",
            "revision": "2026-10-27",
            "evidence": "pinact run [<workflow file>...]\npinact run README.md\npinact run --check\n- [Check without editing files](check.md): `--check`, `--fix=false`, `--no-api`\n- [Update actions](update.md): `--update`, `--min-age`, `--verify-min-age`\n- [Verify version comments](codes/001.md): `--verify-comment`\n- [Pin branches](branch_to_tag.md): `--branch-to-tag`\n- [Include and exclude specific actions](include_exclude.md): `--include`, `--exclude`\n"
          }
        ],
        "field": [
          {
            "id": "files",
            "label": "Workflow files",
            "description": "Defaults to the repository's workflow and action files when empty.",
            "type": "path",
            "position": 0,
            "multiple": true,
            "path": {
              "kind": "file",
              "role": "input"
            },
            "effect": "overwrite",
            "sources": [
              "docs"
            ]
          },
          {
            "id": "check",
            "label": "Check only",
            "description": "Report unpinned actions without editing files.",
            "type": "boolean",
            "option": [
              "--check"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "update",
            "label": "Update actions",
            "type": "boolean",
            "option": [
              "--update"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "verify_comment",
            "label": "Verify version comments",
            "type": "boolean",
            "option": [
              "--verify-comment"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "branch_to_tag",
            "label": "Pin branches",
            "type": "boolean",
            "option": [
              "--branch-to-tag"
            ],
            "sources": [
              "docs"
            ]
          },
          {
            "id": "no_api",
            "label": "Offline check",
            "type": "boolean",
            "option": [
              "--no-api"
            ],
            "sources": [
              "docs"
            ]
          }
        ],
        "task": [
          {
            "id": "pin",
            "label": "Pin all actions",
            "fields": [
              "files",
              "update"
            ]
          },
          {
            "id": "check",
            "label": "Check in CI",
            "set": {
              "check": [
                true
              ]
            },
            "lock": [
              "check"
            ],
            "fields": [
              "files",
              "check",
              "no_api"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "files",
              "check",
              "update"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "verify_comment",
              "branch_to_tag",
              "no_api"
            ]
          }
        ]
      }
    ]
  }
}
