

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# src/cli/doctor/ — Health Diagnostics (25 Check Files)23**Generated:** 2026-08-10 / 38d26899545## OVERVIEW67`bunx oh-my-opencode doctor` — parallel diagnostic checks. `getAllCheckDefinitions()` registers **8** checks; a second function `getCodexCheckDefinitions()` registers **3** Codex-only checks. Four of the eight are category aggregators (System, Config, Tools, Models); the rest register standalone. Catches broken installs, config typos, missing dependencies, provider misconfigurations before they become runtime errors.89## COMMAND FLAGS1011```bash12bunx oh-my-opencode doctor # Full diagnostics13bunx oh-my-opencode doctor --status # Compact dashboard (status only)14bunx oh-my-opencode doctor --verbose # Deep details (model resolution traces)15bunx oh-my-opencode doctor --json # Machine-readable output16```1718## CHECK CATEGORIES1920Registered by `getAllCheckDefinitions()` (8):2122| Check | File | Validates |23|----------|------|-----------|24| **SYSTEM** | `checks/system.ts` | OpenCode binary found + version >= `MIN_OPENCODE_VERSION` (`1.4.0`), plugin registered in opencode.json, loaded plugin version matches installed |25| **CONFIG** | `checks/config.ts` | JSONC validity, Zod schema passes, no unknown keys, model override syntax correct |26| **TUI_PLUGIN** | `checks/tui-plugin-config.ts` | TUI sidebar plugin entry resolvable |27| `deprecated-reasoning-keys` | `checks/deprecated-reasoning-keys.ts` | Scans `~/.omo/omo.json[c]` for deprecated `variant` / `reasoningEffort` / `thinking` / `textVerbosity` / `fallback_models` keys, reporting file + dotted path and a `config migrate` hint. Skips the `[opencode]` block and passthrough containers (`provider_options`). Registered with a literal id, NOT in `CHECK_IDS`. |28| **TOOLS** | `checks/tools.ts` | AST-Grep CLI + NAPI, comment-checker binary, LSP servers reachable, GitHub CLI auth, built-in MCP reachability |29| **MODELS** | `checks/model-resolution.ts` | models.json cache exists, per-agent fallback resolution, category overrides valid, provider availability |30| **TELEMETRY** | `checks/telemetry.ts` | Telemetry configuration state |31| **TEAM_MODE** | `checks/team-mode.ts` | Team-mode dependencies |3233Registered by `getCodexCheckDefinitions()` (3): **CODEX** (critical, `checks/codex.ts`), **CODEX_COMPONENTS** (`checks/codex-components.ts`), `codex-runtime-wrapper` (literal id, `checks/codex-runtime-wrapper.ts`).3435`checks/legacy-config-leftovers.ts` is not registered standalone; the Config aggregator invokes it.3637## SUPPORTING CHECK FILES (25 total)3839```40checks/41├── index.ts # Registration42├── system.ts # Main System aggregator43├── system-binary.ts # OpenCode binary discovery (PATH + desktop app)44├── system-plugin.ts # opencode.json plugin entry detection45├── system-loaded-version.ts # Cache vs npm latest46├── config.ts # Main Config aggregator47├── tools.ts # Main Tools aggregator48├── dependencies.ts # AST-Grep CLI/NAPI + comment-checker presence49├── tools-gh.ts # gh cli install + auth status50├── tools-lsp.ts # LSP server enumeration51├── tools-mcp.ts # Built-in + user MCP reachability52├── model-resolution.ts # Main Models aggregator53├── model-resolution-cache.ts # models.json presence + freshness54├── model-resolution-config.ts # unified OMO config resolution55├── model-resolution-effective-model.ts # Per-agent fallback chain trace56├── model-resolution-variant.ts # Model variant (max, high, medium) handling57├── model-resolution-details.ts # Verbose output formatter58├── model-resolution-types.ts # Shared types59├── tui-plugin-config.ts # TUI sidebar plugin entry60├── deprecated-reasoning-keys.ts # Deprecated ~/.omo config keys61├── telemetry.ts # Telemetry state62├── team-mode.ts # Team-mode dependencies63├── legacy-config-leftovers.ts # Invoked by the Config aggregator, not registered64├── codex.ts # Codex install (critical)65├── codex-components.ts # Codex plugin components66└── codex-runtime-wrapper.ts # Codex runtime wrapper bins67```6869## EXECUTION FLOW7071```72doctor command73 → runner.ts: parallel check execution with 30s per-check timeout74 → checks/index.ts: getAllCheckDefinitions() (8) + getCodexCheckDefinitions() (3)75 → each check returns CheckResult: { name, status, message, details?, issues, duration? }76 → formatter.ts: render to stdout (text/status/json)77 → exit code: EXIT_CODES.SUCCESS (0) | EXIT_CODES.FAILURE (1)78```7980`CheckStatus` is `pass` / `warn` (`STATUS_COLORS` also carries `fail` / `skip`). There is no `"ok"` or `"error"` status and no `detail` string field.8182## KEY FILES8384| File | Purpose |85|------|---------|86| `index.ts` | CLI command entry, flag parsing |87| `runner.ts` | Parallel `Promise.allSettled()` orchestration, 30s timeout per check |88| `formatter.ts` | Pretty printing: colored status, hierarchical output |89| `types.ts` | `DoctorCheck`, `CheckResult`, `DoctorReport` types |9091## HOW TO ADD A CHECK92931. Create `src/cli/doctor/checks/{name}.ts` exporting check function matching `DoctorCheck`942. Register in `checks/index.ts` — either standalone in `getAllCheckDefinitions()`, or have a category aggregator (system/config/tools/model-resolution) invoke it953. Return a `CheckResult` (`{ name, status, message, issues }`) — no throws, all errors caught by runner964. Add the id/name to `framework/constants.ts` `CHECK_IDS`/`CHECK_NAMES` unless registering with a literal id9798## EXIT CODES99100`framework/constants.ts` `EXIT_CODES` defines only:101102- `SUCCESS: 0` — all checks passed103- `FAILURE: 1` — one or more failures104
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| code-yeongyu/oh-my-openagentpackages/omo-opencode/src/tools/look-at/AGENTS.md · 68k | AGENTS.md | arch | 68/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentassets/AGENTS.md · 68k | AGENTS.md | buildteststylearch | 88/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/AGENTS.md · 68k | AGENTS.md | buildtestlint-formatstyle+3 | 83/100 | today | |
| code-yeongyu/oh-my-openagentpackages/omo-codex/plugin/components/ultrawork/AGENTS.md · 68k | AGENTS.md | buildteststylearch+1 | 77/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/omo-opencode/src/tools/background-task/AGENTS.md · 68k | AGENTS.md | arch | 70/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/omo-opencode/src/agents/sisyphus/AGENTS.md · 68k | AGENTS.md | arch | 56/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/omo-opencode/src/hooks/ralph-loop/AGENTS.md · 68k | AGENTS.md | arch | 62/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/omo-opencode/src/hooks/rules-injector/AGENTS.md · 68k | AGENTS.md | archdo-not | 69/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/omo-opencode/src/hooks/runtime-fallback/AGENTS.md · 68k | AGENTS.md | stylearchtypes | 70/100 | 13 days ago | |
| code-yeongyu/oh-my-openagent.agents/AGENTS.md · 68k | AGENTS.md | stylearchtesting-strategydatabase | 64/100 | 13 days ago | |
| code-yeongyu/oh-my-openagent.opencode/AGENTS.md · 68k | AGENTS.md | stylearchdo-not | 71/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentAGENTS.md · 68k | AGENTS.md | setupbuildtestlint-format+11 | 84/100 | today | |
| code-yeongyu/oh-my-openagentpackages/agents-md-core/AGENTS.md · 68k | AGENTS.md | archdependenciesapi | 48/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/ast-grep-mcp/AGENTS.md · 68k | AGENTS.md | buildstylearchdependencies+1 | 78/100 | 7 days ago | |
| code-yeongyu/oh-my-openagentpackages/boulder-state/AGENTS.md · 68k | AGENTS.md | archapi | 48/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/claude-code-compat-core/AGENTS.md · 68k | AGENTS.md | archagent-behaviour | 56/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/comment-checker-core/AGENTS.md · 68k | AGENTS.md | archdependenciesapi | 48/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/delegate-core/AGENTS.md · 68k | AGENTS.md | stylearchdependenciesapi | 60/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/git-bash-mcp/AGENTS.md · 68k | AGENTS.md | buildtestlint-formatarch+1 | 82/100 | 13 days ago | |
| code-yeongyu/oh-my-openagentpackages/hashline-core/AGENTS.md · 68k | AGENTS.md | archtypesdependenciesapi | 48/100 | 13 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| code-yeongyu/oh-my-openagentpackages/web/AGENTS.md · 68k | AGENTS.md | setupbuildtestlint-format+6 | 100/100 | 13 days ago | |
| mui/material-uiAGENTS.md · 99k | AGENTS.md | setupbuildtestlint-format+9 | 100/100 | 14 days ago | |
| aaif-goose/gooseAGENTS.md · 53k | AGENTS.md | setupbuildtestlint-format+7 | 100/100 | 8 days ago | |
| duckduckgo/content-scope-scriptsspecial-pages/AGENTS.md · 70 | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| deepseek-ai/deepseek-harnessnative/landlock-run/AGENTS.md · 104k | AGENTS.md | setupteststylearch+3 | 100/100 | today | |
| TryGhost/Ghoste2e/AGENTS.md · 55k | AGENTS.md | setupteststylearch+2 | 100/100 | today | |
| n8n-io/n8npackages/@n8n/agents/AGENTS.md · 201k | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| elastic/elasticsearchx-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/AGENTS.md · 78k | AGENTS.md | buildtestlint-formatstyle+2 | 100/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/code-yeongyu-oh-my-openagent-packages-omo-opencode-src-cli-doctor-agents)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.