Install
openclaw skills install @voronindenis5/cat-litter-box-doctorUse when a cat pees outside the litter box, refuses the box, or fights housemates over it — veterinary-rule-based diagnosis ladder (medical first), box-count formula cats+1, litter-type transition protocol, location rules, and soiled-area decontamination with the enzyme-vs-ammonia trap.
openclaw skills install @voronindenis5/cat-litter-box-doctorInappropriate elimination — peeing or spraying outside the box — is a leading cause of cat surrender and euthanasia, and most cases are solvable without a behaviorist. The discipline that saves cats is order of operations: medical causes first (FLUTD, crystals, UTI, constipation, arthritis — pain gets associated with the box, and a blocked male cat is a hours-to-death emergency), then box management (count, cleanliness, litter type, location), then territory/soiling-conflict analysis (spraying vs squatting, vertical vs horizontal, marking vs toileting).
This skill encodes the veterinary consensus ladder as an interactive diagnostic: 20 questions with red-flag routing (blocked-cat emergency, hematuria, polyuria/polydipsia cluster), a box-configuration audit against the cats+1 rule and size/hood/entrance doctrine, a 7-day litter-transition protocol (abrupt switches cause refusals), and a decontamination protocol that explains why ammonia-based cleaners re-invite the cat back to the same spot.
Don't use for: dogs or rabbits (different systems), post-op cats still on meds (follow the surgeon's protocol), or a cat currently straining without producing urine — that is GO TO THE EMERGENCY VET NOW, not a diagnostic session (see Red Flags).
# Interactive diagnostic (20 questions -> ranked causes + action plan)
python3 scripts/litter_doctor.py diagnose
# Box-setup audit for a 2-cat household, 1 box, hooded, in the laundry room
python3 scripts/litter_doctor.py boxes --cats 2 --boxes 1 --hooded yes \
--location "laundry room (washer spin)" --scooped weekly
# Transition from clay to wood-pellet litter without a refusal strike
python3 scripts/litter_doctor.py transition --from clay --to wood-pellet --days 7
# The couch corner got hit: clean it so the cat doesn't return
python3 scripts/litter_doctor.py decon --surface "fabric couch" --severity fresh
boxes encodes)| Parameter | Rule | Why |
|---|---|---|
| Count | cats + 1 (minimum 2 for 1 cat) | one cat's guard shouldn't lock out another |
| Scoop | daily; box wash weekly (mild soap, no ammonia/bleach perfumes) | cats' nose is 14× human; a "fine" box is a latrine to them |
| Size | ≥1.5× cat nose-to-tail-base | tiny boxes force hanging-out urination |
| Hood | off for anxious/ambushed/senior cats | hood traps odor inside and blocks escape sightlines |
| Liners/deodorizers | skip liners; unscented only | liners tear under claws; perfume = different box |
| Location | quiet, lit at night, two exits' worth of open sightline, away from appliances | ambush fear and washer-spin terror are real |
| Depth | 2–3 in (clumping) | too deep wastes litter; too shallow invites digging out |
| One per social zone in multicat | spread, not clustered in one room | a single room = a single guardable gate |
Cat urine is urea+uric acid; dried residue re-activates with humidity and keeps smelling like a toilet to the cat for years. Ammonia-based cleaners add ammonia — the signature of cat territorial marking — literally advertising the spot; bleach doesn't touch uric acid crystals. The protocol: blot (never rub) fresh urine; rinse; enzymatic cleaner (nature's-miracle class) saturated to the same depth the urine reached, kept wet per label, air-dry; repeat once. Carpet = lift and treat pad/underlay; a 2-week-old accident needs a urine-specific blacklight pass to find every crystal site. Untreated sites teach "this room is the latrine".
$ python3 scripts/litter_doctor.py boxes --cats 2 --boxes 1 --hooded yes \
--location "laundry room (washer spin)" --scooped weekly
BOX AUDIT — 2 cats, 1 box
[FAIL] count: 1 box for 2 cats (rule: cats+1 = 3)
[FAIL] hood: hooded box + any ambush/anxiety history = trap; remove or offer
one open box alongside
[FAIL] location: appliance noise zone; move to quiet corridor w/ sightline
[FAIL] scooped weekly: daily minimum, 2x/day during resolution
Verdict: 4/4 management failures — fix ALL before any behavior conclusion.