{
  "id": "goku",
  "name": "Goku",
  "homepage": "https://github.com/yqrashawn/GokuRakuJoudo",
  "description": "Goku is a tool that lets you manage your Karabiner configuration with ease.",
  "executables": [
    "goku",
    "gokuw"
  ],
  "platforms": [
    "macos"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/karabiner.edn"
    ],
    "exclude": [],
    "secret": [],
    "side_effect": false
  },
  "commands": {
    "format": 1,
    "label": "Generate Karabiner config",
    "description": "Compile karabiner.edn into Karabiner-Elements' karabiner.json once, or preview the result. The gokuw watcher and the -l log option are left out.",
    "quality": "ai-draft",
    "parser": {
      "end_of_options": "--",
      "interleave": "permute",
      "long_equals": true,
      "short_attached": true,
      "short_bundles": true
    },
    "source": [
      {
        "id": "source",
        "kind": "help",
        "url": "https://github.com/yqrashawn/GokuRakuJoudo/blob/HEAD/src/karabiner_configurator/core.clj",
        "revision": "2026-10-27",
        "evidence": "(def cli-opts\n  [[\"-h\" \"--help\"]\n   [\"-V\" \"--version\"]\n   [\"-l\" \"--log\"]\n   [nil \"--where-is-my-config\"]\n   [\"-c\" \"--config PATH\" \"Config PATH\"\n   [\"-d\" \"--dry-run\"]\n   [\"-A\" \"--dry-run-all\"]])\n`goku`: Will update karabiner.json once.\n"
      }
    ],
    "field": [
      {
        "id": "config",
        "label": "Config file",
        "description": "Use this karabiner.edn instead of the default (GOKU_EDN_CONFIG_FILE or ~/.config/karabiner.edn).",
        "type": "path",
        "option": [
          "--config",
          "-c"
        ],
        "path": {
          "kind": "file",
          "role": "input",
          "must_exist": true
        },
        "sources": [
          "source"
        ]
      },
      {
        "id": "dry_run",
        "label": "Dry run",
        "description": "Show what would be written without changing karabiner.json.",
        "type": "boolean",
        "option": [
          "--dry-run",
          "-d"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "dry_run_all",
        "label": "Dry run (all profiles)",
        "type": "boolean",
        "option": [
          "--dry-run-all",
          "-A"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "where",
        "label": "Show config location",
        "description": "Print which karabiner.edn goku would read.",
        "type": "boolean",
        "option": [
          "--where-is-my-config"
        ],
        "sources": [
          "source"
        ]
      },
      {
        "id": "version",
        "label": "Show version",
        "type": "boolean",
        "option": [
          "--version",
          "-V"
        ],
        "sources": [
          "source"
        ]
      }
    ],
    "task": [
      {
        "id": "apply",
        "label": "Apply karabiner.edn",
        "fields": [
          "config"
        ],
        "required": []
      },
      {
        "id": "preview",
        "label": "Preview without writing",
        "set": {
          "dry_run": [
            true
          ]
        },
        "lock": [
          "dry_run"
        ],
        "fields": [
          "config",
          "dry_run"
        ],
        "required": []
      }
    ],
    "group": [
      {
        "id": "basic",
        "label": "Basic",
        "fields": [
          "config",
          "dry_run",
          "dry_run_all",
          "where",
          "version"
        ]
      }
    ]
  }
}
