installlisted
Install: claude install-skill hazarsozer/ren-os
# install
First-time setup, or resuming a partial one. `skills.install.lib.install_state()` is read at the start of EVERY stage below — a stage that's already done (per real on-disk state) is skipped, never redone or asked about twice. Exit criterion 6: a friend can install → onboard (within the question budget) → see the first-session artifact → work a week → update — without the founder present. This flow is that path.
## Stages (idempotent — check `install_state()` before each)
1. **Doctor quick-pass.** A fast environment sanity check (framework version reachable, wiki root resolvable). Not a full `/ren:doctor` run — just enough to know setup can proceed. Also calls `skills.install.lib.warm_environment()`, which runs `uv sync --frozen` and records the venv's real interpreter path to `state_dir()/interpreter.json` (issue #11 §4). This is what lets the wake-up hook's self-heal re-exec directly under that interpreter instead of paying `uv run`'s cold resolution cost (~7s on a fresh machine) — without it, a friend's very first session can trip the hook's timeout and run degraded ("memory injection DISABLED"). If `uv` isn't available or the sync/resolve fails, don't block the rest of install on it — log/report the failure and continue (the wake-up hook still falls back to its existing `uv run` self-heal path).
2. **Stamp wiki** — `skills.install.lib.stamp_wiki()`. Additive-only (per `lib.skeleton`'s contract): if `install_state().wiki_stamped` is already `True`, this is a no