Verify Setup¶
After installation, verify that all components are correctly deployed.
Automated Verification¶
Run the integrity check:
This checks:
| Component | What's verified |
|---|---|
| Plugin symlink | ~/.claude/plugins/company-claude-toolkit exists and resolves |
| CLAUDE.md | Exists and matches golden copy |
| settings.json | Exists and matches golden copy |
| Plugin enablement | The toolkit plugin is actually enabled and resolvable — not merely deployed to disk. Three legs, all required (SPEC-171 SC-2): enabledPlugins["vt-base@visitrans"] is literally true; claude plugin list reports it enabled; claude plugin details exits 0 |
| Marketplace registry | known_marketplaces.json registers the toolkit marketplace, and the plugin cannot resolve without it — MEASURED: with the settings.json declaration alone the CLI reports "failed to load" and plugin details exits 1. The toolkit writes it on every --safe/--full; --verify asserts our entry is present, not merely that the file exists (BUG-050) |
| Plugin registry | installed_plugins.json likewise — --verify asserts it lists vt-base@visitrans. Both legs are filesystem-level, so they still report the truth on a machine with no claude CLI on PATH |
| Skill symlinks | All manifest entries resolve to valid directories |
| Hook symlinks | All manifest entries resolve to valid files |
| Command symlinks | All manifest entries resolve to valid files |
| Agent files | All agent .md files present |
| Output styles | All output style files present |
Reading the Output¶
[OK] Plugin symlink exists and resolves
[OK] Plugin enabled and resolvable: vt-base@visitrans
[OK] CLAUDE.md matches golden copy
[OK] settings.json matches golden copy
[OK] 100/100 skill symlinks valid
[OK] 8/8 hook symlinks valid
[OK] 36/36 command symlinks valid
Exact counts depend on installed plugins and toolkit version.
When the plugin is not enabled¶
[ERR] Plugin NOT enabled: vt-base@visitrans is absent from enabledPlugins in ~/.claude/settings.json
This is the check that matters most, because it is the one that was missing. Every enforcement hook — the secret scanner, the partition guard, the supply-chain guard — lives in the plugin and fires only while the plugin is enabled. A deployed-but-disabled toolkit looks completely healthy by every other line above, and ran that way for six months (BUG-036).
The verdict reflects the flag, never a file's existence, and never claude plugin details'
exit code on its own: that command keys on the presence of the enabledPlugins key rather than
its value, so a plugin you explicitly set to false still exits 0.
If claude is not on your PATH, legs 2 and 3 report [--] instead of [ERR]:
[--] Plugin enable flag is set for vt-base@visitrans; resolution not checked (no claude CLI on PATH)
That is not a failure — a missing CLI says something about the machine, not about the install.
- [OK] — Component is healthy
- [!!] — Warning, non-critical difference (e.g., config differs from golden copy)
- [ERR] — Error, component is missing or broken
Manual Verification¶
Check Skills Load in Claude Code¶
Start Claude Code in any project and run:
If the skill runs, your skills are loading correctly.
Check Symlinks Directly¶
Common Issues¶
Broken Symlinks¶
Symptom: [ERR] skill symlinks broken in verify output.
Cause: The toolkit repository was moved or the symlink targets no longer exist.
Fix: Re-run the setup:
Skills Not Loading in Claude Code¶
Symptom: /vt-d-0-start or other skills aren't recognized.
Possible causes:
- Symlinks not created — Run
scripts/setup.sh --verifyto check - Unrecognized frontmatter — A SKILL.md has an invalid field (e.g.,
argument-hintis not recognized and silently prevents loading) - Claude Code not restarted — Skills are loaded at session start; restart Claude Code after installation
Config Drift¶
Symptom: [!!] CLAUDE.md differs from golden copy in verify output.
Cause: Local changes were made to ~/.claude/CLAUDE.md or settings.
Options:
- Review the diff:
scripts/setup.sh --diff - Restore from golden copy:
scripts/setup.sh --safe - Keep local changes and back them up:
scripts/setup.sh --backup(writes~/.claude.backup-<timestamp>; the repository is not modified)
Windows: Junction/Symlink Permission Errors¶
Symptom: mklink commands fail with "You do not have sufficient privilege."
Fix:
- For directory junctions (
mklink /J): These should work without admin rights. Ensure you're using/J, not/D. - For file symlinks (
mklink): Enable Developer Mode in Windows Settings > System > For developers, or run the terminal as Administrator.