doctorlisted
Install: claude install-skill vzhukovs/podman-desktop-kit
Report what is present, what is missing, and what degrades as a result. Never
report a capability as available without checking it.
```
pdkit doctor # required tools, config layers, $PDKIT_HOME, hooks, MCP
pdkit doctor --gate-selftest # plus: drive the real hooks the manifest registers
pdkit doctor --repo <path> # act on a repository other than the current one
```
## Reading the report
Three levels — `required`, `optional`, `later` — and four results. The
distinction that matters is between the last two:
| | Meaning |
|---|---|
| ✔ | checked and satisfied |
| ! | a warning: it works, and something is worse than it could be |
| ✘ | broken. Only `required` failures make the exit code non-zero |
| · | not checked, and the line says why |
A warning is not a failure and must not be reported as one. A doctor that exits
non-zero on every optional gap stops being run, and a check nobody runs is worse
than no check.
## The self-test
`--gate-selftest` is not part of the routine run: it spawns the hook once per
probe and takes a few seconds. Run it **after installing, after upgrading, and
after touching anything under `lib/hooks/`**.
It is the only check that answers "is the protection actually on". Every unit
test in the suite stays green while a plugin with a broken manifest gates
nothing at all, so this one drives real commands through the binary the manifest
names: seventeen for the push gate, two for the ownership hook.
If it reports a miss, nothing el