
smoke-test
Health smoke tests + auto-fix for gbrain installs (and OpenClaw services when present). Run after machine/container restarts or whenever something seems broken. Tests critical services, auto-fixes bounded local issues, and reports worker topology without starting daemons. Extensible via user-defined test scripts in /.gbrain/smoke-tests.d/.sh.
- Installs
- 216
- Last 24h
- +8
- Trending rank
- #9546
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/garrytan/gbrain --skill smoke-test- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads smoke-test automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Smoke Test Skillpack
Run
gbrain smoke-testafter any machine or container restart, or whenever something seems broken.
Contract
This skill guarantees:
- 8 core tests verify gbrain health after restart (plus OpenClaw services when present; skipped otherwise)
- Bounded local failures are auto-fixed before reporting; worker repair is explicit because process topology and shell-job policy are operator choices
- User-extensible via
~/.gbrain/smoke-tests.d/*.shdrop-in scripts - Results logged to
/tmp/gbrain-smoke-test.log - Exit code = number of unfixed failures (0 = all pass)
Built-in Tests
| # | Test | Auto-Fix |
|---|---|---|
| 1 | Bun runtime | Install from bun.sh |
| 2 | GBrain CLI loads | Reinstall deps |
| 3 | GBrain database (engine identity via gbrain engine status --json, then doctor --json's connection check) | gbrain db-repair --yes, re-test |
| 4 | GBrain worker process | — (native supervisor status + duplicate detection) |
| 5 | OpenClaw Codex plugin (Zod CJS); skips if OpenClaw absent | npm install zod@4 --force |
| 6 | OpenClaw gateway; skips if OpenClaw absent | — (may not be started yet) |
| 7 | Embedding API key | — (check .env) |
| 8 | Brain repo exists | — |
Usage
CLI
gbrain smoke-test
This is the invocation for all installs; it resolves the test script from the installed package.
From any startup script or login hook
gbrain smoke-test >> /tmp/bootstrap.log 2>&1
From OpenClaw bootstrap (OpenClaw deployments only)
Add to your ensure-services.sh or equivalent:
bash /path/to/gbrain/scripts/smoke-test.sh >> /tmp/bootstrap.log 2>&1
From an agent
exec: gbrain smoke-test
Contributor note: inside a gbrain repo checkout you can also run the script
directly with bash scripts/smoke-test.sh.
Adding Custom Tests
Create executable scripts in ~/.gbrain/smoke-tests.d/:
# ~/.gbrain/smoke-tests.d/check-redis.sh
#!/bin/bash
redis-cli ping | grep -q PONG
Rules:
- Exit 0 = pass, non-zero = fail
- Filename becomes the test name (e.g.
check-redisfromcheck-redis.sh) - Keep tests fast (< 10s each)
- Tests run in alphabetical order
Adding Built-in Tests (gbrain contributors)
This section is for contributors working in the gbrain source repo. Plugin
installs ship the script read-only and upgrades overwrite it; if you just want
extra checks, use the ~/.gbrain/smoke-tests.d/ drop-in scripts above.
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
Design rules:
- Test first — never fix without confirming broken
- Re-test after fix — verify the fix worked
- Timeout everything —
timeout Non any command that could hang - Use helpers —
pass(),fail(),fixed(),skip() - Idempotent fixes — safe to run repeatedly
- Skip gracefully —
skip()when a prerequisite is missing, don't fail
Environment Variables
| Var | Default | Description |
|---|---|---|
GBRAIN_SMOKE_LOG | /tmp/gbrain-smoke-test.log | Log file path |
GBRAIN_DIR_OVERRIDE | (auto-detect) | Force gbrain install path |
GBRAIN_BUN_PATH | (auto-detect) | Force Bun binary path |
GBRAIN_DATABASE_URL | (from .env) | Database connection URL |
GBRAIN_SMOKE_WORKER_PID_FILE | /tmp/gbrain-worker.pid | Legacy bare-worker PID path |
OPENCLAW_GATEWAY_PORT | 18789 | Gateway port to test |
GBRAIN_BRAIN_PATH | (deployment-specific) | Brain repo path. Container deployments default to /data/brain; set it to your brain repo path otherwise. Test 8 skips (not fails) when unset. |
Known Issues & Their Auto-Fixes
Codex Zod core.cjs Missing (discovered 2026-04-23)
(OpenClaw gateway deployments only: this concerns OpenClaw's Codex ACP plugin, not the OpenAI Codex CLI.)
- Symptom:
Cannot find module './core.cjs'→ all Codex ACP sessions fail - Cause: Zod v4 npm package ships without
core.cjsin some installs - Auto-fix:
npm install zod@4 --forcein the codex extension's zod dir - Persistence: Does NOT survive container restart (gateway reinstalls deps)
- This is why smoke tests must run on every restart
GBrain Worker Auth Failure
- Symptom: Worker can't connect to DB
- Cause:
GBRAIN_DATABASE_URLnot propagated to worker subprocess - Auto-fix: Script explicitly passes both
DATABASE_URLandGBRAIN_DATABASE_URL
When it fails
Follow the agent operator protocol for any gbrain error code, exit code, [AGENT] block or notice block. Specific to this skill:
- Exit code = number of unfixed failures: report each by name and the attempted fix; never report all-green when a test was skipped.
- The database test fails with a
GBRAIN_DB_ACCESSmarker: rungbrain db-repairand re-test; the rewrite tier needs the user's agreement. - The embedding API key check fails: there is no auto-fix. Tell the user which key is missing and that search runs keyword-only until it is set.
Anti-Patterns
- ❌ Running smoke tests on every chat turn. Once per container restart (or on user request) is plenty. The script is cheap but it's not free.
- ❌ Writing a user drop-in without
timeout Naround any command that could hang. A single hung drop-in stalls every subsequent run. - ❌ Auto-fixing without confirming the check is actually broken first.
The
pass → fail-detected → fix → re-testloop is the contract; fixes that skip the re-test can report success on a still-broken state. - ❌ Treating
skipasfail. Missing prerequisites (no OpenClaw installed, no brain repo configured) are skips, not failures. Exit code = count of real failures, not skipped checks. - ❌ Hardcoding paths in a user drop-in. Read env vars
(
GBRAIN_DATABASE_URL,HOME, etc.) so the script travels across container rebuilds.
Output Format
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).
FAQ
What does the smoke-test skill do?
Health smoke tests + auto-fix for gbrain installs (and OpenClaw services when present). Run after machine/container restarts or whenever something seems broken. Tests critical services, auto-fixes bounded local issues, and reports worker topology without starting daemons. Extensible via user-defined test scripts in /.gbrain/smoke-tests.d/.sh.
How do I install smoke-test?
Run npx skills add https://github.com/garrytan/gbrain --skill smoke-test in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/smoke-test/ (personal) or .claude/skills/smoke-test/ (project).
Which AI agents can use smoke-test?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is smoke-test safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains smoke-test?
It is published by garrytan in garrytan/gbrain. It has 216 recorded installs.
More from garrytan/gbrain
brain-ops
garrytan/gbrain
Brain knowledge base operations. The core read/write cycle: brain-first lookup, read-enrich-write loop, source attribution, ambient enrichment, back-linking. Read this before any brain interaction.
query
garrytan/gbrain
Answer questions using the brain's knowledge with 3-layer search, synthesis, and citation propagation. Use when the user asks a question, wants a lookup, or needs information from the brain.
maintain
garrytan/gbrain
Brain health checks: back-link enforcement, citation audit, filing validation, stale info detection, orphan pages, and benchmarks. Use when asked to check brain health, run maintenance, or audit quality.
idea-ingest
garrytan/gbrain
Ingest links, articles, tweets, and ideas into the brain. Fetch content, save to brain with analysis, credit the author (people page only when they pass the notability gate), and cross-link. Use when the user shares a link or says "read this", "save this", "think about this".
enrich
garrytan/gbrain
Enrich brain pages with tiered enrichment protocol. Creates and updates person/company pages with compiled truth, timeline, and cross-links. Use when a new entity is mentioned or an existing page needs updating.
meeting-ingestion
garrytan/gbrain
Ingest meeting transcripts from ANY meeting recorder into brain pages with attendee enrichment, entity propagation, and timeline merge. One unified pipeline: normalize the source into a standard transcript record, split multi-meeting recordings, resolve speakers by evidence, create the page, pass every surprising claim through the consistency check (transcript + brain + plausibility), enrich every entity, then run the verification checklist — substance AND sequence. A meeting is NOT fully ingested until the enrich skill has processed every entity AND the verification checklist passes, including the sequence verify (PASS or explicit user waive).
Popular testing & qa skills
tdd
mattpocock/skills
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
grilling
mattpocock/skills
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
migrate-to-shoehorn
mattpocock/skills
Migrate test files from as type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace as in tests, or needs partial test data.
run-train
lllllllama/rigorpilot-skills
Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized trainoutputs/. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.
test-driven-development
obra/superpowers
Use when implementing any feature or bugfix, before writing implementation code
finishing-a-development-branch
obra/superpowers
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work