skills/smoke-test/SKILL.md
Post-restart smoke tests + auto-fix for gbrain and OpenClaw environments. Tests critical services, auto-fixes known issues, extensible via user-defined test scripts in ~/.gbrain/smoke-tests.d/*.sh.
npx skillsauth add garrytan/gbrain smoke-testInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run
gbrain smoke-testorbash scripts/smoke-test.shafter any container restart.
This skill guarantees:
~/.gbrain/smoke-tests.d/*.sh drop-in scripts/tmp/gbrain-smoke-test.log| # | Test | Auto-Fix |
|---|------|----------|
| 1 | Bun runtime | Install from bun.sh |
| 2 | GBrain CLI loads | Reinstall deps |
| 3 | GBrain database (doctor) | — |
| 4 | GBrain worker process | Start worker |
| 5 | OpenClaw Codex plugin (Zod CJS) | npm install zod@4 --force |
| 6 | OpenClaw gateway | — (may not be started yet) |
| 7 | Embedding API key | — (check .env) |
| 8 | Brain repo exists | — |
gbrain smoke-test
bash scripts/smoke-test.sh
Add to your ensure-services.sh or equivalent:
bash /path/to/gbrain/scripts/smoke-test.sh >> /tmp/bootstrap.log 2>&1
exec: bash /data/gbrain/scripts/smoke-test.sh
Create executable scripts in ~/.gbrain/smoke-tests.d/:
# ~/.gbrain/smoke-tests.d/check-redis.sh
#!/bin/bash
redis-cli ping | grep -q PONG
Rules:
check-redis from check-redis.sh)Edit scripts/smoke-test.sh. Follow this pattern:
# ── N. [Service Name] ──────────────────────────────────────
if [test condition]; then
pass "[Service Name]"
else
# Auto-fix attempt
[fix command]
if [re-test condition]; then
fixed "[What was fixed]"
pass "[Service Name] (after fix)"
else
fail "[Service Name] — [error detail]"
fi
fi
timeout N on any command that could hangpass(), fail(), fixed(), skip()skip() when a prerequisite is missing, don't fail| Var | Default | Description |
|-----|---------|-------------|
| GBRAIN_SMOKE_LOG | /tmp/gbrain-smoke-test.log | Log file path |
| GBRAIN_DIR_OVERRIDE | (auto-detect) | Force gbrain install path |
| GBRAIN_DATABASE_URL | (from .env) | Database connection URL |
| OPENCLAW_GATEWAY_PORT | 18789 | Gateway port to test |
| GBRAIN_BRAIN_PATH | /data/brain | Brain repo path |
Cannot find module './core.cjs' → all Codex ACP sessions failcore.cjs in some installsnpm install zod@4 --force in the codex extension's zod dirGBRAIN_DATABASE_URL not propagated to worker subprocessDATABASE_URL and GBRAIN_DATABASE_URLtimeout N around any command that
could hang. A single hung drop-in stalls every subsequent run.pass → fail-detected → fix → re-test loop is the contract; fixes
that skip the re-test can report success on a still-broken state.skip as fail. Missing prerequisites (no OpenClaw installed,
no brain repo configured) are skips, not failures. Exit code = count of
real failures, not skipped checks.GBRAIN_DATABASE_URL, HOME, etc.) so the script travels across
container rebuilds.The script writes a one-line status per check to stdout (✅/❌/🔧/⏭️) plus a
final summary line: Results: N/M passed, F auto-fixed, S skipped. A
structured timestamped log appends to $GBRAIN_SMOKE_LOG
(default /tmp/gbrain-smoke-test.log) for post-run forensics. Exit code
equals the count of unfixed failures (0 = all pass, positive integer =
count of remaining failures).
tools
Validate and auto-repair YAML frontmatter on brain pages. Catches malformed pages before they enter the brain (missing closing ---, nested quotes, slug mismatches, null bytes, empty frontmatter, YAML parse failures). Wraps the `gbrain frontmatter` CLI for agent-driven workflows.
data-ai
Trace one idea's evolution through the brain: first mention, best articulation, related concepts, reversals, contradictions, abandoned branches, and the current live version. Use for single-idea conceptual lineage, not broad concept-map synthesis or structured entity metrics.
data-ai
Route to Venus (sharp executive-assistant voice persona). Used for logistics — calendar, tasks, recent messages, brain lookups — at sub-second phone-call latency. The default voice persona unless DEFAULT_PERSONA=mars is set.
tools
Route to Mars (introspective thought partner / demo showman voice persona). Used when the operator wants depth, meaning, or impressive social demos rather than logistics. Mars handles SOLO mode (philosophy, presence, patterns) and DEMO mode (tool-driven showmanship) automatically.