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.
69
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
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-testbash scripts/smoke-test.shAdd to your ensure-services.sh or equivalent:
bash /path/to/gbrain/scripts/smoke-test.sh >> /tmp/bootstrap.log 2>&1exec: bash /data/gbrain/scripts/smoke-test.shCreate executable scripts in ~/.gbrain/smoke-tests.d/:
# ~/.gbrain/smoke-tests.d/check-redis.sh
#!/bin/bash
redis-cli ping | grep -q PONGRules:
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
fitimeout 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).
3fafb69
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.