Persona Check
SkillFiles & storageHealth-check the LifeOS persona layer (files load, /chat matches the Telegram bots per persona, no personal values leak into committed persona files, frontmatter valid) and open every persona doc in Sublime for editing.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Persona Check skill
What this skill tells your AI
The instructions your AI receives, as published by nbramia/lifeos in .claude/skills/persona-check/SKILL.md and read by ahel’s review.
Arguments: $ARGUMENTS
A fast, on-demand checkup of the persona layer — and a one-command way to pull every persona doc up in Sublime to edit. Lighter than /routing-health (which exercises the full model × surface × persona matrix): this needs only settings + one HTTP call, no app load, so it's quick.
Pass --no-open to run the checks without launching Sublime (e.g. headless / over SSH).
What it checks
- File health — every bot's
persona_fileexists, is readable, and resolves to a non-empty preamble (primarylegitimately has none today). - /chat ⇄ Telegram equivalence —
/api/personasmatches the bot registry;resolve_persona(id)equals the matching Telegrambot.persona; advertisedcapabilitiesmatch each bot'sorchestratesflag. (So messaging a persona in/chatbehaves identically to messaging its bot.) - Privacy guard — none of the configured personal values (
LIFEOS_PARTNER_NAME,LIFEOS_THERAPIST_PATTERNS,LIFEOS_PERSONAL_RELATIONSHIP_PATTERNS,user_name, andpeople_dictionary.jsonnames) — nor absolute home paths — appear in the committed persona files. Catches a real name or personal path leaking into the open-source repo. - Frontmatter validation (forward-compatible) — if a persona file carries YAML frontmatter,
idmust match the filename,voicemust be a list,modela string. Silent when there's no frontmatter yet.
Instructions
Step 0: Pre-flight
!curl -s -m4 http://localhost:8000/health >/dev/null 2>&1 && echo "lifeos-api: up" || echo "lifeos-api: DOWN (the equivalence check will WARN, the rest still runs)"; [ -x "$HOME/.venvs/lifeos/bin/python" ] && echo "venv: ok" || echo "venv: MISSING"
Step 1: Run the check
From the repo root, with the project venv:
~/.venvs/lifeos/bin/python .claude/skills/persona-check/scripts/persona_check.py
It prints a [PASS]/[FAIL]/[WARN]/[INFO] line per check, a PERSONA-CHECK-VERDICT: line, and a PERSONA-CHECK-JSON: summary. Read-only — it touches no files and loads no model.
Step 2: Open the persona docs for editing
Unless $ARGUMENTS contains --no-open, open every persona doc in Sublime so they're ready to edit:
subl config/personas/*.md
(If subl isn't on PATH or you're headless, note it and skip — the checks still stand.)
Step 3: Report
Interpret the script output (don't re-run the checks yourself):
- Overall — 🟢 HEALTHY / 🟡 DEGRADED (any WARN) / 🔴 FAILING (any FAIL), from the verdict line.
- Findings — list any FAIL/WARN with its detail and where to look (table below). Mention that the docs are open in Sublime (or why they aren't).
- If everything passes, say so in a line and note how many personas/files were checked.
Failure → where to look
| Failing check | Look at |
|---|---|
file/<persona> | config/telegram_bots.json (persona_file path) and config/personas/<persona>.md |
equivalence/* | config/settings.py (resolve_persona, list_http_personas, telegram_bots) — a registry/loader drift |
privacy/no-personal-values | the named committed persona file — move the real name/path out into config (.env / relationship_overrides.json) and refer to it by role |
schema/frontmatter | the named persona file's YAML frontmatter (id must equal the filename; voice a list; model a string) |
Notes
- Read-only and cheap. Settings + one HTTP call; no app/TestClient, no model load, no probe conversations. Safe to run anytime.
- Requires
lifeos-apirunning only for the equivalence check (degrades to WARN otherwise). - For the deeper guarantee — that every model routes correctly across text and voice for every persona — use
/routing-health(or/routing-health --live).
Signals
- GitHub stars
- 30
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
persona-check- Source
- github.com/nbramia/lifeos