From vibekit
Diagnoses vibekit installation health—skill file integrity, registration parity, directory structure. Reports verdict; `--fix` auto-repairs safe items.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vibekit:vibekit-doctorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A read-mostly health check for the vibekit plugin and the repo it lives in. Answers one question: **does vibekit actually work here, end to end?**
A read-mostly health check for the vibekit plugin and the repo it lives in. Answers one question: does vibekit actually work here, end to end?
The doctor does not install, upgrade, or migrate. It diagnoses. It writes only when the user passes --fix, and even then only to safe, deterministic targets (rebuild an index, recreate a docs/ subdir).
skills/, .vibekit/, or a runtime registration file.Do NOT invoke for:
checkRun every check below in order. Output a single YAML report. Read-only.
verdict: ok | warn | critical
checks:
- name: <check name>
status: ok | info | warn | critical
detail: <one-line, verbatim>
evidence: <path / line / command output, optional>
summary:
ok: <int>
info: <int>
warn: <int>
critical: <int>
verdict is the worst status across all checks. Any critical → critical. Any warn and no critical → warn. Otherwise ok. info rows are recorded but never escalate the verdict — they exist for optional/gitignored files (CLAUDE.md, GEMINI.md) that may legitimately be absent.
check --fixRun all checks, then auto-repair the items below. Other findings remain in the report; only the safe set is touched.
| Finding | Auto-fix |
|---|---|
| `docs/specs | plans |
.vibekit/memory/INDEX.md drifted from disk | rebuild INDEX from existing files |
.vibekit/wiki/index.md drifted from disk | rebuild from existing pages |
.vibekit/wiki/log.md missing | create empty log |
Stale .vibekit/notepad.md Working entries (>7d) | prune (delegate to memory-dual audit) |
Anything else — registration mismatches, missing skills, broken [[links]], contract drift — is reported but never auto-fixed. Those changes touch user intent (which skills exist, what AGENTS.md should say) and require human judgment.
check --strictSame as check, but treats warn as critical for the verdict. Useful in CI.
Each check produces one row in the report.
For each directory under skills/ (excluding _authoring/):
SKILL.md exists.SKILL.md has YAML frontmatter with name: and description: keys.name: matches the directory name.critical if any skill directory lacks a parseable SKILL.md. warn if name mismatches dir.
For every skill directory under skills/ (excluding _authoring/):
@./skills/<name>/SKILL.md line — only if GEMINI.md exists. GEMINI.md is gitignored as a per-user local context file (parity with CLAUDE.md); a missing GEMINI.md is not a defect.Reverse: every skill referenced in AGENTS.md (and GEMINI.md when present) exists on disk.
Claude Code (.claude-plugin/plugin.json) and Codex (.codex-plugin/plugin.json) declare "skills": "./skills/" directory globs; they auto-discover by scan and need no per-skill row. opencode (.opencode/plugins/vibekit.js) adds the skills directory to config.skills.paths; same auto-discovery.
warn on any one-sided registration; critical if a required runtime entry doc is missing (see C3).
Existence check.
Required (committed to the repo):
.claude-plugin/plugin.json.claude-plugin/marketplace.json.codex-plugin/plugin.json.pi-plugin/plugin.jsongemini-extension.jsonAGENTS.md.opencode/plugins/vibekit.jsOptional (gitignored, per-user local context):
CLAUDE.md — Claude Code project-level context.GEMINI.md — Gemini CLI context file (declared as contextFileName in gemini-extension.json). Users running on Gemini author this locally; the C2 GEMINI.md parity check only fires when this file exists.critical for any missing required file. info (not warn) when an optional file is absent. The doctor does not parse contents beyond what C2 needs; deeper schema validation is the runtime's job.
docs/ subdirectory presenceThe pipeline writes to docs/specs/, docs/plans/, docs/reviews/, docs/verifications/. Each must exist as a directory.
warn for any missing dir (not critical — fresh repos won't have them yet, and --fix creates them).
.vibekit/ directory health (if present)If .vibekit/ does not exist, status is ok (clean repo, no memory yet).
If .vibekit/memory/ exists:
INDEX.md exists; every <key>.md is in INDEX; every INDEX row has a file. warn on drift; --fix rebuilds.<key>.md parses with required frontmatter (key, type, scope, created, updated, confidence). warn on malformed entries.If .vibekit/wiki/ exists:
index.md and log.md exist. warn if missing; --fix rebuilds.title, slug, category, tags, created, updated, status). warn on malformed.[[slug]] cross-link resolves. warn per broken link, listing source page + target.If .vibekit/notepad.md exists:
## Priority Context, ## Working Memory, ## Manual). warn on missing section.warn on overflow.skills/_authoring/peg-cheatsheet.md and skills/_authoring/karpathy-principles.md exist. critical if either is missing — they are the source of truth for skill authoring.
The Karpathy principles file declares an injection map (which principles are enforced by which skills). For each principle row, every named enforcing skill must exist on disk. warn on mismatch.
external/ integrityexternal/ is the read-only references dir.
warn if missing; the references inform skill authoring.warn if not (would commit a large external tree by accident).warn per missing sub-tree.AGENTS.md opens with a skill count ("vibekit is an N-skill plugin"). The number must match the count of skill directories under skills/ (excluding _authoring/).
warn on mismatch. The doctor does NOT auto-edit AGENTS.md prose; the user edits it.
If hooks/ directory contains any files, they exist as committed code (not stray artifacts). The vibekit hooks/ is reserved but currently empty; any unexpected file is warn.
critical if not (vibekit assumes git for isolate, finish-branch, commit-based plan resolution).Existence and shape:
.pi-plugin/plugin.json exists, parses as JSON, and contains keys name, description, version.package.json contains a top-level pi key (an object with at least skills, prompts, extensions arrays).critical if either file is missing or malformed. warn if package.json's pi key is missing required sub-keys.
Drift guard for the pi priming extension:
.pi-plugin/extensions/vibekit-prime.ts exists.skills/using-vibekit/SKILL.md (the canonical priming source path).critical if the file is missing. warn if the file exists but the literal is absent — a sign the extension has been refactored to read from a different (potentially stale) source.
Stage-list parity between the Claude/OpenCode /vibe command and the pi /vibe prompt:
[N/7] token (e.g., [1/7], [2/7] … [7/7]) from commands/vibe.md.[N/7] token from .pi-plugin/prompts/vibe.md.{[1/7], [2/7], [3/7], [4/7], [5/7], [6/7], [7/7]}.critical if either file is missing. warn on any set mismatch (drift in pipeline-stage labeling between runtimes).
check never writes. check --fix writes only to the auto-fix table above.ok row carries evidence — the path, the line, the command output. No "trust me."--fix touches only the safe set; it never reorganizes. Any non-safe finding requires user action.ls / cat / git.check defaults to read-only; the user must opt into --fix. The doctor never assumes its judgment beats the user's.| Region | Policy |
|---|---|
| Check names + statuses | Verbatim |
detail strings | Terse one-liners, compressed narration OK |
evidence strings | Verbatim — paths, line numbers, command output |
verdict and summary | Verbatim |
| Auto-fix announcements | Compress |
The full report is YAML for parseability. Every finding is one row; no nested prose.
vibekit-doctor is utility, not pipeline. vibe does NOT call it; verify-gate does NOT call it. It runs only when the user invokes it.
The doctor MAY be invoked by:
--strict health gate.All operations are file I/O and git shell-outs. Verified portable to:
.claude-plugin/plugin.json..codex-plugin/plugin.json.GEMINI.md via @./skills/vibekit-doctor/SKILL.md..opencode/plugins/vibekit.js (skills directory scan)..pi-plugin/plugin.json and the pi key in package.json.No runtime-specific logic. The doctor does not introspect the runtime it is running under.
check --fix without first running check. The user should see what would change before opting in.warn as critical outside --strict. Inflated severity erodes trust in the report.check is independent; the cost is small and freshness matters.For check and check --strict: the YAML report exactly as specified above, then exit.
For check --fix: the YAML report, then a fixes_applied: block listing each safe-set repair, then exit.
No conversational narration around the report. The skill is a diagnostic, not a chat partner.
npx claudepluginhub rizukirr/vibekit --plugin vibekitActivates vibekit's pipeline discipline so brainstorm, plan, exec, verify, review, finish and memory skills auto-fire at their trigger points.
Runs 11 categories of environment diagnostics for Claude Octopus — checks providers, auth, config, hooks, and scheduler to find misconfigurations before they cause workflow failures.
Audits Claude Code plugins for structure validation, frontmatter quality, deprecations, feature adoption, security patterns, and documentation. Ensures changelog compatibility and best practices for releases.