unioss-doctorlisted
Install: claude install-skill ttncode/unioss-plugins
# UNIOSS Doctor
Check the pipeline's environment on this machine, and repair what can be repaired without asking.
## Input
None.
## Workflow
1. **Ensure the config exists, then run the doctor.** `init` is a no-op when the file is already there:
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/config.mjs" init
node "${CLAUDE_PLUGIN_ROOT}/scripts/doctor.mjs"
```
2. **Keep the script's stdout.** It has two parts: the pre-rendered box (the payload — paste it verbatim) and the machine-readable lines after it (`DOCTOR_STATUS`, `ISSUE=<name>|<problem>|<fix>`, `WARN=<name>|<problem>|<fix>`, `BAD_COMMON_SOURCES`, `PLAYWRIGHT_PERMS`), which you render as the markdown status below the box. Never paste those raw lines into your reply.
An `ISSUE` blocks the pipeline; a `WARN` does not. The `GITLAB_TOKEN` check is live — the script calls GitLab, so an expired, revoked, or under-scoped token fails here instead of at the investigator's first fetch or (worse) at MR creation. An unreachable GitLab is **never** a failure: it downgrades to a `WARN` and the run proceeds.
3. **Light deps.** For a missing `node` / `jq` the `ISSUE` line carries an install command — offer to run it (ask first). For Docker, the containers, and `GITLAB_TOKEN`, relay the printed fix; never auto-install Docker or set secrets.
4. **`BAD_COMMON_SOURCES=<keys>` printed?** The configured module paths do not match this machine. Auto-fix, no confirmation — the target is a local, gitignored file:
```bash