{
  "schemaVersion": "1.0",
  "generatedAt": "2026-04-16T05:35:04.6689563Z",
  "generator": "clidoc",
  "commands": [
    {
      "id": "clidoc",
      "name": "clidoc",
      "fullName": "clidoc",
      "description": "A .NET global tool that generates beautiful static documentation websites for CLI tools built with System.CommandLine",
      "isGroup": true,
      "isRoot": true,
      "depth": 0,
      "arguments": [],
      "options": [
        {
          "name": "--help",
          "description": "Show help and usage information",
          "shortName": "-h",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--version",
          "description": "Show version information",
          "valueType": "string",
          "isRequired": false
        }
      ],
      "examples": [],
      "sections": [
        {
          "title": "Features",
          "body": "- **Beautiful UI**\n  Dark and light theme support with automatic persistence\n- **Multiple Views**\n  Column, tree, and list layouts for browsing commands\n- **Search**\n  Filter commands by name and description\n- **Copy-to-Clipboard**\n  Easily copy example commands for quick pasting into a terminal\n- **Responsive**\n  Works on mobile and desktop\n- **llms.txt**\n  Plain-text reference for LLM consumption\n- **Metadata Enrichment**\n  Add examples, sections, and custom descriptions via YAML\n- **System.CommandLine integration**\n  Drop-in NuGet for .NET CLIs \u2014 emit commands.json from inside your app, DI and all\n"
        }
      ],
      "children": [
        "clidoc-init",
        "clidoc-generate"
      ]
    },
    {
      "id": "clidoc-init",
      "name": "init",
      "fullName": "clidoc init",
      "description": "Generate a cli-docs.yaml scaffold from an assembly",
      "isGroup": false,
      "isRoot": false,
      "depth": 1,
      "parentId": "clidoc",
      "arguments": [],
      "options": [
        {
          "name": "--commands-json",
          "description": "Path to commands.json. Defaults to ./commands.json if it exists.",
          "shortName": "-c",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--output",
          "description": "Output file path.",
          "shortName": "-o",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--root-name",
          "description": "Override the root command\u0027s name used as the YAML map key.",
          "valueType": "string",
          "isRequired": false
        }
      ],
      "examples": [
        {
          "description": "Generate metadata file for a CLI tool",
          "command": "clidoc init --assembly MyApp.dll"
        },
        {
          "description": "Specify output file location",
          "command": "clidoc init --assembly MyApp.dll --output docs/cli-docs.yaml"
        },
        {
          "description": "Specify entry point type explicitly",
          "command": "clidoc init --assembly MyApp.dll --entry-type MyApp.Program"
        },
        {
          "description": "Override root command name",
          "command": "clidoc init --assembly MyApp.dll --root-name myapp"
        }
      ],
      "sections": [
        {
          "title": "Entry Point Discovery",
          "body": "clidoc automatically discovers your command entry point using the following strategies:\n\n1. If --entry-type is specified, looks for a static method in that type\n2. Scans for well-known method names: GetRootCommand, CreateRootCommand, BuildCommandLine\n3. Searches all public types for static methods returning RootCommand or Command\n\nIf discovery fails, use --entry-type to point to the class with your command builder method.\n"
        }
      ],
      "children": []
    },
    {
      "id": "clidoc-generate",
      "name": "generate",
      "fullName": "clidoc generate",
      "description": "Generate static documentation site from an assembly and optional metadata",
      "isGroup": true,
      "isRoot": false,
      "depth": 1,
      "parentId": "clidoc",
      "arguments": [],
      "options": [],
      "examples": [
        {
          "description": "Generate site with default settings",
          "command": "clidoc generate --assembly MyApp.dll"
        },
        {
          "description": "Specify metadata file and output directory",
          "command": "clidoc generate --assembly MyApp.dll --metadata cli-docs.yaml --output docs"
        },
        {
          "description": "Override site title",
          "command": "clidoc generate --assembly MyApp.dll --title \u0022My CLI Tool\u0022"
        },
        {
          "description": "Specify entry point and base URL",
          "command": "clidoc generate --assembly MyApp.dll --entry-type MyApp.Program --base-url https://docs.example.com"
        },
        {
          "description": "Skip llms.txt generation",
          "command": "clidoc generate --assembly MyApp.dll --no-llms-txt"
        }
      ],
      "sections": [
        {
          "title": "Output Structure",
          "body": "The generated site includes:\n\n- **commands.html** - Main documentation browser with sidebar and detail views\n- **commands.json** - Machine-readable command reference\n- **commands.js** - JavaScript bundle with data\n- **style.css** - Stylesheet with theme support\n- **index.html** - Landing page (if site config exists in metadata)\n- **llms.txt** - Plain-text reference (unless --no-llms-txt is used)\n"
        },
        {
          "title": "Metadata File",
          "body": "The cli-docs.yaml file allows you to enrich auto-discovered command structure:\n\n- **tagline** - Override command descriptions\n- **examples** - Add usage examples with copy-to-clipboard\n- **sections** - Add markdown content (installation, guides, etc.)\n- **site** - Configure title, tagline, logo, favicon, base URL, theme\n\nStructure from the assembly (commands, options, arguments) is always preserved.\nMetadata can only add documentation, not modify command structure.\n"
        },
        {
          "title": "Theming",
          "body": "The generated site includes:\n\n- Automatic dark/light theme with localStorage persistence\n- Theme toggle button in the header\n- CSS variables for easy customization\n- Optional accent color override via metadata\n"
        }
      ],
      "children": [
        "clidoc-generate-commands",
        "clidoc-generate-docs"
      ]
    },
    {
      "id": "clidoc-generate-commands",
      "name": "commands",
      "fullName": "clidoc generate commands",
      "description": "Extract commands.json from a System.CommandLine assembly or project.",
      "isGroup": false,
      "isRoot": false,
      "depth": 2,
      "parentId": "clidoc-generate",
      "arguments": [],
      "options": [
        {
          "name": "--assembly",
          "description": "Path to the compiled CLI assembly (.dll) to reflect over.",
          "shortName": "-a",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--project",
          "description": "Path to a .csproj file; clidoc will build it and reflect over the output.",
          "shortName": "-p",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--entry-type",
          "description": "Fully-qualified type name with a static method returning RootCommand.",
          "shortName": "-t",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--root-name",
          "description": "Override the root command\u0027s name in the emitted JSON. Defaults to the csproj\u0027s \u003CToolCommandName\u003E (via --project).",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--output",
          "description": "Output path for the generated commands.json.",
          "shortName": "-o",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--pretty",
          "description": "Pretty-print the JSON (default: true).",
          "valueType": "boolean",
          "isRequired": false
        }
      ],
      "examples": [],
      "sections": [],
      "children": []
    },
    {
      "id": "clidoc-generate-docs",
      "name": "docs",
      "fullName": "clidoc generate docs",
      "description": "Render a static documentation site from commands.json.",
      "isGroup": false,
      "isRoot": false,
      "depth": 2,
      "parentId": "clidoc-generate",
      "arguments": [],
      "options": [
        {
          "name": "--commands-json",
          "description": "Path to commands.json. Defaults to ./commands.json if it exists.",
          "shortName": "-c",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--metadata",
          "description": "Path to cli-docs.yaml metadata file. Defaults to ./cli-docs.yaml if it exists.",
          "shortName": "-m",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--output",
          "description": "Output directory for generated site.",
          "shortName": "-o",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--title",
          "description": "Site title (overrides metadata).",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--root-name",
          "description": "Override the root command\u0027s name (affects breadcrumbs, tree root, and subcommand full names).",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--base-url",
          "description": "Base URL for canonical links.",
          "valueType": "string",
          "isRequired": false
        },
        {
          "name": "--no-llms-txt",
          "description": "Skip llms.txt generation.",
          "valueType": "boolean",
          "isRequired": false
        },
        {
          "name": "--no-commands-json",
          "description": "Don\u0027t copy commands.json into the output directory (and hide its nav link).",
          "valueType": "boolean",
          "isRequired": false
        }
      ],
      "examples": [],
      "sections": [],
      "children": []
    }
  ]
}