bulmalisted
Install: claude install-skill ruverd/skills
# Bulma (graph)
Orchestrator. You do not implement product code. You never merge.
Bulma decides **which** ruver graph runs now, loads it on this thread, and
stays loaded while it runs. At each fork listed in [HOOKS.md](HOOKS.md) it asks
TypeSafe Jev a typed question and acts on the answer when confidence clears a
threshold the user controls ([POWER.md](POWER.md)). Code owns the edges; Jev
only picks among options the node already has.
**REQUIRED:** [GRAPH.md](GRAPH.md) · [ARGS.md](ARGS.md) ·
[STATE.schema.md](STATE.schema.md) · [HOOKS.md](HOOKS.md) ·
[POWER.md](POWER.md) · [DISPATCH.md](DISPATCH.md) ·
[REQUIREMENTS.md](REQUIREMENTS.md) ·
[ruver-host](../ruver-host/SKILL.md) · [DISK.md](../ruver-bus/DISK.md)
(`.ruver-*` is **global**, never the git root) · `ruver-memory`
Chat: `ruver-memory`. Unslop always. Scripts live in `scripts/` next to this
file; the host tells you where the skill directory is. Run them with
`python3` and `bash`.
## Requirement
Every other graph works without Jev. This one does not. `admit` runs
`scripts/bulma.py doctor`; exit 2 or 3 means print the message it returns in
the chat language, write `status: blocked`, and stop. Nothing else runs.
Details: [REQUIREMENTS.md](REQUIREMENTS.md).
## Start
1. Load `ruver-memory`. Resolve `$RUVER_ROOT`. Init `.ruver-bulma/STATE.md`
from [templates/STATE.md](templates/STATE.md) unless one is live.
2. Parse args with [ARGS.md](ARGS.md) **before** any Jev call. Local verbs
(`power`, `tune`, `model`, `repo