Show the per-persona sync state across all nodes. This skill should be used when the user asks "are my personas in sync", "show mesh status", "personas-mesh status", "is the mesh healthy", "which personas are drifting", or just wants a one-screen dashboard of the mesh. Reads from the local node directly and optionally SSHes to cloud for the Hetzner column.
Scanned 5/27/2026
Install via CLI
openskills install kickinrad/personas---
name: status
description: Show the per-persona sync state across all nodes. This skill should be used when the user asks "are my personas in sync", "show mesh status", "personas-mesh status", "is the mesh healthy", "which personas are drifting", or just wants a one-screen dashboard of the mesh. Reads from the local node directly and optionally SSHes to cloud for the Hetzner column.
---
# personas-mesh:status
One-screen dashboard of per-persona sync health.
## What to show
For each of the 10 personas (Archer, Bob, Julia, Kai, Mila, Nara, Piper, Reed, Urza, Warren), a row with:
- **Persona** — name
- **WSL** — last commit ts (relative), `✓` clean or `●` dirty-count
- **Windows** — same for `/mnt/c/…` copy (or `—` if still symlinked)
- **Hetzner** — last commit ts from `ssh wils@cloud git -C /srv/personas-work/{p} log -1 --format=%ct` (or `—` if persona not deployed there)
- **Hub** — last commit ts from `ssh wils@cloud git -C /srv/personas/{p}.git log -1 --format=%ct`
- **Status** — `in sync` / `N ahead` / `N behind` / `DIVERGED` / `CONFLICT`
## Source of truth per column
| Column | Source |
|---|---|
| WSL | `git -C ~/.personas/{p} log -1 --format=%ct`; `git status --porcelain` |
| Windows | `git -C /mnt/c/Users/wilst/.personas/{p} ...` (or symlink-resolved) |
| Hetzner | `ssh wils@cloud git -C /srv/personas-work/{p} ...` |
| Hub | `ssh wils@cloud git -C /srv/personas/{p}.git ...` |
## Bot-only check (laptop-only personas skip)
Archer, Kai, Piper, Reed, Urza are not deployed on Hetzner — mark their Hetzner column `—`.
## Conflict badge
If `git branch --list 'sync-conflict/*'` returns anything on any node for that persona, mark Status as `CONFLICT` and point the user at `personas-mesh:mesh-doctor`.
## Output style
```
Persona WSL Windows Hetzner Hub Status
archer 2m ago ✓ — — 2m ago in sync
bob 12m ago ✓ — 4m ago 3m ago 1 behind
julia ●3 dirty — 1m ago ✓ 1m ago CONFLICT
…
```
## Fast path
Run `ssh wils@cloud 'for r in /srv/personas/*.git; do echo "$(basename "$r") $(git -C "$r" log -1 --format=%ct 2>/dev/null)"; done'` once, parse, combine with local reads — one ssh round trip for all personas.
## When sync is red
`status` is the runner — it tells you which personas are unhealthy, but it does not diagnose root cause or apply fixes. As soon as the dashboard shows any of the following, hand off to `Skill('personas-mesh:mesh-doctor')`:
- Status column reads `CONFLICT`, `DIVERGED`, or persistent `N behind` / `N ahead` that doesn't resolve on its own
- A node column shows `●` (dirty) for more than one cycle
- Hetzner or Hub column reports a stale timestamp relative to WSL/Windows on a persona that should be deployed there
`mesh-doctor` owns the diagnosis-and-repair flow (sync-conflict branch resolution, hub re-push, rsync reconciliation between WSL and Windows). Don't try to repair from inside `status` — keep the runner read-only and let the doctor write.
No comments yet. Be the first to comment!