omc-doctor
Diagnoses and resolves installation issues for oh-my-claudecode, ensuring smooth operation and plugin management.
Install this skill
Security score
The omc-doctor skill was audited on May 16, 2026 and we found 27 security issues across 2 threat categories, including 6 high-severity. Review the findings below before installing.
Categories Tested
Security Issues
Template literal with variable interpolation in command context
| 30 | Read both `${CLAUDE_CONFIG_DIR:-~/.claude}/settings.json` (profile-level) and `./.claude/settings.json` (project-level) and check if there's a `"hooks"` key with entries like: |
Template literal with variable interpolation in command context
| 31 | - `bash ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hooks/keyword-detector.sh` |
Template literal with variable interpolation in command context
| 32 | - `bash ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hooks/persistent-mode.sh` |
Template literal with variable interpolation in command context
| 33 | - `bash ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hooks/session-start.sh` |
Template literal with variable interpolation in command context
| 40 | ```bash |
Template literal with variable interpolation in command context
| 49 | ```bash |
Template literal with variable interpolation in command context
| 110 | ```bash |
Template literal with variable interpolation in command context
| 179 | Remove the `"hooks"` section from `${CLAUDE_CONFIG_DIR:-~/.claude}/settings.json` (keep other settings intact) |
Template literal with variable interpolation in command context
| 182 | ```bash |
Template literal with variable interpolation in command context
| 202 | Fetch latest from GitHub and write to `${CLAUDE_CONFIG_DIR:-~/.claude}/CLAUDE.md`: |
Template literal with variable interpolation in command context
| 211 | ```bash |
Access to hidden dotfiles in home directory
| 9 | Note: All `~/.claude/...` paths in this guide respect `CLAUDE_CONFIG_DIR` when that environment variable is set. |
Access to hidden dotfiles in home directory
| 30 | Read both `${CLAUDE_CONFIG_DIR:-~/.claude}/settings.json` (profile-level) and `./.claude/settings.json` (project-level) and check if there's a `"hooks"` key with entries like: |
Access to hidden dotfiles in home directory
| 122 | - If `~/.claude/agents/` exists with files matching plugin agent names: WARN - legacy agents (now provided by plugin) |
Access to hidden dotfiles in home directory
| 123 | - If `~/.claude/commands/` exists with files matching plugin command names: WARN - legacy commands (now provided by plugin) |
Access to hidden dotfiles in home directory
| 124 | - If `~/.claude/skills/` exists with files matching plugin skill names: WARN - legacy skills (now provided by plugin) |
Access to hidden dotfiles in home directory
| 154 | | Legacy Scripts (~/.claude/hooks/) | OK/WARN | ... | |
Access to hidden dotfiles in home directory
| 158 | | Legacy Agents (~/.claude/agents/) | OK/WARN | ... | |
Access to hidden dotfiles in home directory
| 159 | | Legacy Commands (~/.claude/commands/) | OK/WARN | ... | |
Access to hidden dotfiles in home directory
| 160 | | Legacy Skills (~/.claude/skills/) | OK/WARN | ... | |
Access to hidden dotfiles in home directory
| 179 | Remove the `"hooks"` section from `${CLAUDE_CONFIG_DIR:-~/.claude}/settings.json` (keep other settings intact) |
Access to hidden dotfiles in home directory
| 202 | Fetch latest from GitHub and write to `${CLAUDE_CONFIG_DIR:-~/.claude}/CLAUDE.md`: |
Access to .env file
| 19 | node -e "const p=require('path'),f=require('fs'),h=require('os').homedir(),d=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{const v=f.rea |
Access to .env file
| 57 | node -e "const p=require('path'),f=require('fs'),h=require('os').homedir(),d=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude');const base=p.join(d,'CLAUDE.md');let baseContent='';try{baseContent=f.re |
Access to .env file
| 99 | node -e "const p=require('path'),f=require('fs'),h=require('os').homedir(),d=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{const v=f.rea |
Access to .env file
| 192 | node -e "const p=require('path'),f=require('fs'),d=process.env.CLAUDE_CONFIG_DIR||p.join(require('os').homedir(),'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{f.rmSync(b,{recur |
Access to .env file
| 198 | node -e "const p=require('path'),f=require('fs'),h=require('os').homedir(),d=process.env.CLAUDE_CONFIG_DIR||p.join(h,'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{const v=f.rea |