Skill Doctor | OpenClaw Skill
Scans workspace/skills (or a given folder) to detect missing and unused Python dependencies, can fix requirements.txt (add missing, optionally remove unused), and can test a skill using the skill-tester in sandbox (default) or no-sandbox mode.
Description
- Scan: For each skill, finds all Python files under the skill and its
scripts/folder, extracts top-level imports, and compares them torequirements.txt. Reports:- Missing: Imported but not listed in requirements (suggests adding).
- Unused: Listed in requirements but not imported (suggests removing).
- Fix: Adds missing packages to
requirements.txtand/or removes unused ones (--fix-unused). - Test: Runs the skill-tester for the given skill. Use
--no-sandboxto run tests with full environment (e.g. network); default runs in sandbox.
Stdlib modules and local modules (same skill’s .py files) are excluded from “missing”.
Installation
clawhub install skill-doctor
Or clone into your skills directory:
git clone https://github.com/Org/skill-doctor.git workspace/skills/skill-doctor
Usage
# Scan all skills (or default: scan)
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py
# Scan one skill
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py --skill SUBAGENT-DASHBOARD --scan
# Fix: add missing deps to requirements.txt
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py --skill MY-SKILL --fix
# Fix: add missing and remove unused
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py --skill MY-SKILL --fix --fix-unused
# Dry-run fix (report only)
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py --skill MY-SKILL --fix --fix-unused --dry-run
# Test skill (sandbox)
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py --skill gateway-guard --test
# Test skill (no sandbox: full env)
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py --skill gateway-guard --test --no-sandbox
# JSON output
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py --scan --json
python3 workspace/skills/skill-doctor/scripts/skill_doctor.py --skill X --test --json
Commands
| Command / flags | Description |
|---|---|
--scan | Scan skills and report missing/unused dependencies (default if no --fix/--test) |
--skill SLUG | Limit to one skill |
--fix | Add missing packages to requirements.txt |
--fix-unused | With --fix, also remove unused packages |
--dry-run | With --fix: only report what would be done |
--test | Run skill-tester for the skill |
--no-sandbox | Run tests with full env (no sandbox) |
--timeout N | Test timeout in seconds (default 60) |
--json | Output JSON |
--skills-dir PATH | Override skills root (default: workspace/skills) |
What this skill does
- Discover skills — Finds dirs with
SKILL.mdor_meta.jsonunder the skills folder. - Parse Python — Uses
astto collect top-levelimport/import fromnames from all.pyfiles in the skill andscripts/. - Exclude stdlib and local — Ignores standard library modules and local modules (same skill’s file names).
- Map to pip — Maps import names to pip package names (e.g.
bs4→beautifulsoup4,yaml→PyYAML). - Compare — Compares required (from
requirements.txt) vs needed (from imports); reports missing and unused. - Fix — Writes
requirements.txt: append missing packages; optionally remove unused lines. - Test — Invokes
skill-tester/scripts/skill_tester.py --skill SLUG --json. Sandbox vs no-sandbox is controlled by--no-sandboxand theOPENCLAW_DOCTOR_NO_SANDBOXenv var for the test run.
Requirements
- Python 3.7+
- Optional: skill-tester for
--test(must be present underworkspace/skills/skill-tester).
Security & privacy
- Reads: Skill directories and their
.pyandrequirements.txtfiles. - Writes: Only
requirements.txtwhen using--fix(and--fix-unused). - Test: Runs skill-tester in a subprocess;
--no-sandboxmeans tests run with the current environment (e.g. network allowed).