Files
openclaude/web/src/data/cliFlags.ts
T
d08593de92 feat(web): rebuild landing as Astro static site with gitlawb theme and full docs (#1606)
* feat(web): rebuild landing as Astro static site with gitlawb theme and full docs

Replaces the Vite+React SPA in web/ with a fully static Astro 6 site:

- gitlawb-aligned design system: dark-default monochrome surface tokens,
  Geist Mono, hairline grids, [light]/[dark] toggle — keeping the orange
  #ff7a1a openclaude accent (#e85d00 in light mode for AA contrast)
- 9-page docs section: installation, quickstart, providers, slash
  commands (all 69 user-facing commands with argument hints), CLI
  reference (every non-hidden flag), configuration, keybindings, skills —
  rendered from typed data files seeded from the CLI source
- SEO: per-page canonicals/OG/Twitter, JSON-LD (SoftwareApplication,
  TechArticle, BreadcrumbList), @astrojs/sitemap, robots.txt, and
  generated 1200x630 OG cards, all on https://openclaude.gitlawb.com
- zero framework JS: theme toggle, copy buttons, mobile nav, and TOC
  highlighting are small vanilla scripts
- CI-compatible: same typecheck/build script names, bun.lock regenerated

Co-Authored-By: OpenClaude <openclaude@gitlawb.com>

* feat(web): redesign logo as gitlawb-aligned circuit mark

White terminal face (hollow node eyes, >_ prompt mouth) on a black
square with an orange git-fork trace descending to two commit nodes —
same stroke language as the gitlawb mark. Adds the SVG source as the
favicon and regenerates all three OG cards with the new logo.

Co-Authored-By: OpenClaude <openclaude@gitlawb.com>

* fix(web): address review feedback on copy button a11y and css lint

- CopyCommand: generic aria-label (component is reusable, not
  install-specific) and a visually-hidden role="status" live region so
  screen readers announce the copied state
- global.css: lowercase text-rendering keyword, blank line before
  color-scheme, kebab-case fade-up keyframe name

Co-Authored-By: OpenClaude <openclaude@gitlawb.com>

---------

Co-authored-by: OpenClaude <openclaude@gitlawb.com>
2026-06-12 23:54:24 +08:00

137 lines
7.5 KiB
TypeScript

// Seeded from the commander option definitions in src/main.tsx.
// Hidden/internal flags (hideHelp) are intentionally excluded.
export interface CliFlag {
flag: string
arg?: string
description: string
}
export interface FlagGroup {
id: string
label: string
intro?: string
flags: CliFlag[]
}
export interface Subcommand {
name: string
usage: string
description: string
}
export const flagGroups: FlagGroup[] = [
{
id: 'core',
label: 'core',
flags: [
{ flag: '-v, --version', description: 'Show the installed version and exit.' },
{ flag: '-h, --help', description: 'Display help for the command.' },
{ flag: '-p, --print', description: 'Print the response and exit (useful for pipes and scripts). The workspace trust dialog is skipped — only use in directories you trust.' },
{ flag: '--bare', description: 'Minimal mode: skip hooks, LSP, plugin sync, attribution, auto-memory, keychain reads, and CLAUDE.md auto-discovery. Provide context explicitly via --system-prompt, --add-dir, --mcp-config, --settings, --agents, or --plugin-dir.' },
{ flag: '-d, --debug', arg: '[filter]', description: 'Enable debug mode with optional category filtering (e.g. "api,hooks" or "!file").' },
{ flag: '--debug-file', arg: '<path>', description: 'Write debug logs to a specific file path (implicitly enables debug mode).' },
{ flag: '--verbose', description: 'Override the verbose mode setting from config.' },
],
},
{
id: 'io',
label: 'input & output formats',
intro: 'These flags shape non-interactive runs with --print, e.g. in scripts and CI.',
flags: [
{ flag: '--output-format', arg: '<format>', description: 'Output format (with --print): "text" (default), "json" (single result), or "stream-json" (realtime streaming).' },
{ flag: '--input-format', arg: '<format>', description: 'Input format (with --print): "text" (default) or "stream-json" (realtime streaming input).' },
{ flag: '--json-schema', arg: '<schema>', description: 'JSON Schema for structured output validation of the final result.' },
{ flag: '--include-hook-events', description: 'Include hook lifecycle events in the output stream (stream-json only).' },
{ flag: '--include-partial-messages', description: 'Include partial message chunks as they arrive (stream-json only).' },
{ flag: '--replay-user-messages', description: 'Re-emit user messages from stdin back on stdout for acknowledgment (stream-json in and out).' },
],
},
{
id: 'model',
label: 'model & provider',
flags: [
{ flag: '--model', arg: '<model>', description: "Model for the session: an alias like 'sonnet' or 'opus', or a full model name." },
{ flag: '--provider', arg: '<provider>', description: 'AI provider to use (anthropic, openai, gemini, github, bedrock, vertex, ollama, …).' },
{ flag: '--effort', arg: '<level>', description: 'Effort level for model usage: low, medium, high, xhigh, or max.' },
{ flag: '--fallback-model', arg: '<model>', description: 'Automatic fallback model when the default model is overloaded.' },
{ flag: '--agent', arg: '<agent>', description: "Agent for the current session. Overrides the 'agent' setting." },
{ flag: '--betas', arg: '<betas...>', description: 'Beta headers to include in API requests (API key users only).' },
],
},
{
id: 'session',
label: 'sessions',
flags: [
{ flag: '-c, --continue', description: 'Continue the most recent conversation in the current directory.' },
{ flag: '-r, --resume', arg: '[id]', description: 'Resume a conversation by session ID, or open the interactive picker with an optional search term.' },
{ flag: '--fork-session', description: 'When resuming, create a new session ID instead of reusing the original.' },
{ flag: '--from-pr', arg: '[pr]', description: 'Resume a session linked to a PR by number/URL, or open the interactive picker.' },
{ flag: '--session-id', arg: '<uuid>', description: 'Use a specific session ID for the conversation (must be a valid UUID).' },
{ flag: '-n, --name', arg: '<name>', description: 'Set a display name for this session (shown in /resume and the terminal title).' },
{ flag: '--no-session-persistence', description: 'Disable session persistence — sessions are not saved to disk and cannot be resumed (--print only).' },
{ flag: '-w, --worktree', arg: '[name]', description: 'Run the session in an isolated git worktree, optionally named.' },
],
},
{
id: 'permissions',
label: 'permissions & tools',
flags: [
{ flag: '--permission-mode', arg: '<mode>', description: 'Permission mode for the session (e.g. auto, plan, acceptEdits, bypassPermissions).' },
{ flag: '--allowed-tools', arg: '<tools...>', description: 'Comma or space-separated list of tool rules to allow (e.g. "Bash(git:*) Edit").' },
{ flag: '--disallowed-tools', arg: '<tools...>', description: 'Comma or space-separated list of tool rules to deny.' },
{ flag: '--tools', arg: '<tools...>', description: 'Restrict the built-in tool set: "" disables all tools, "default" enables all, or list names like "Bash,Edit,Read".' },
{ flag: '--dangerously-skip-permissions', description: 'Bypass all permission checks. Recommended only for sandboxes with no internet access.' },
{ flag: '--allow-dangerously-skip-permissions', description: 'Make permission bypass available as an option without enabling it by default.' },
{ flag: '--add-dir', arg: '<dirs...>', description: 'Additional directories to allow tool access to.' },
],
},
{
id: 'prompt',
label: 'system prompt',
flags: [
{ flag: '--system-prompt', arg: '<prompt>', description: 'Replace the default system prompt for the session.' },
{ flag: '--append-system-prompt', arg: '<prompt>', description: 'Append to the default system prompt instead of replacing it.' },
],
},
{
id: 'mcp',
label: 'mcp',
flags: [
{ flag: '--mcp-config', arg: '<configs...>', description: 'Load MCP servers from JSON files or strings (space-separated).' },
{ flag: '--strict-mcp-config', description: 'Only use MCP servers from --mcp-config, ignoring all other MCP configurations.' },
],
},
{
id: 'config',
label: 'configuration',
flags: [
{ flag: '--settings', arg: '<file-or-json>', description: 'Path to a settings JSON file, or a JSON string, with additional settings.' },
{ flag: '--setting-sources', arg: '<sources>', description: 'Comma-separated list of setting sources to load: user, project, local.' },
{ flag: '--agents', arg: '<json>', description: 'JSON object defining custom agents for the session.' },
{ flag: '--plugin-dir', arg: '<path>', description: 'Load plugins from a directory (repeatable).' },
{ flag: '--ide', description: 'Automatically connect to your IDE on startup if exactly one valid IDE is available.' },
],
},
{
id: 'limits',
label: 'limits & budgets',
flags: [
{ flag: '--max-budget-usd', arg: '<amount>', description: 'Maximum dollar amount to spend on API calls (--print only).' },
],
},
]
export const subcommands: Subcommand[] = [
{
name: 'mcp',
usage: 'openclaude mcp [add|remove|list|doctor]',
description: 'Manage MCP server configuration from the command line.',
},
{
name: 'ssh',
usage: 'openclaude ssh <host> [dir]',
description: 'Run OpenClaude on a remote host over SSH. Deploys the binary and tunnels API auth back through your local machine — no remote setup needed.',
},
]