vercel-hygienelisted
Install: claude install-skill pivoshenko/pivoshenko.ai
# Vercel Hygiene
Read-only sweep -> per-site report (ok / attention / action) -> confirm -> apply -> verify. Use the Vercel MCP (`mcp__vercel__*`) for dashboard state; read on-disk files for code-side checks.
**Run every check; never report a finding this file predicts.** Each check below states the command and the optimal value - the verdict comes from the run, not from here. Baked-in findings are how an audit skill rots: the fix lands, the skill keeps reporting the gap, and the next sweep raises phantom actions against work already done.
## Sites
Team `pivoshenko`. Local repos are siblings under `~/Development/sources/`; each site's app lives in `<repo>/site/`.
| Project | Repo | Domain |
| --- | --- | --- |
| `pivoshenko.dev` | `pivoshenko.dev` | `pivoshenko.dev`, `www.pivoshenko.dev` |
| `pivoshenko.startpage` | `pivoshenko.startpage` | `startpage.pivoshenko.dev` |
| `pivoshenko.wallpapers` | `pivoshenko.wallpapers` | `wallpapers.pivoshenko.dev` |
| `pivoshenko.ai` | `pivoshenko.ai` | `ai.pivoshenko.dev` |
Shared foundation: `pivoshenko.ui` (git-tag-pinned per site). Config and chrome live there - `baseNextConfig`, `<SiteLayout>`, tokens - so a fix there propagates to all 4 on the next tag bump. Prefer shared fixes over per-site duplication.
Mind the two path shapes: sites *import* `pivoshenko.ui/next/config`, but on disk that file is `pivoshenko.ui/ui/next/config.ts` (the package export strips the leading `ui/`). Grep the disk path; a grep of the import path finds