/testing
Skill validation framework PLUS daily test-suite health and regression intelligence. Validates skill conformance (frontmatter, manifest coverage, resolver coverage). Runs the project test suite in tiered phases (unit / evals / integration / system health), classifies failures,
$ npx -y skills add garrytan/gbrain --skill testing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/testing
Context preview
The summary Claude sees to decide when to auto-load this skill.
Skill validation framework PLUS daily test-suite health and regression intelligence. Validates skill conformance (frontmatter, manifest coverage, resolver coverage). Runs the project test suite in tiered phases (unit / evals / integration / system health), classifies failures,
SKILL.md
testing.SKILL.mdname: testing
version: 1.1.0
description: |
Skill validation framework PLUS daily test-suite health and regression
intelligence. Validates skill conformance (frontmatter, manifest coverage,
resolver coverage). Runs the project test suite in tiered phases (unit /
evals / integration / system health), classifies failures, and produces
a regression-aware report.
triggers:
- "validate skills"
- "test skills"
- "skill health check"
- "run conformance tests"
- "run the tests"
- "how are the tests"
- "what's broken"
- "daily test run"
tools:
- search
- list_pages
mutating: false
Testing Skill — Validation + Daily Health & Regression Intelligence
> **Convention:** see [conventions/quality.md](../conventions/quality.md) for > the test-before-bulk pattern; this skill enforces it across the project's > own test suite.
Two modes
This skill has two related but distinct modes:
1. **Skill conformance validation** — gbrain's own conformance bar (the original 1.0 scope). Validates every skill has SKILL.md with frontmatter, every reference exists, manifest + resolver coverage round-trips.
2. **Project test-suite health (v0.25.1 extension)** — runs the project's tiered test suite and produces a regression-classified report. Used by daily cron, container-restart bootstrap, and "how are the tests" prompts.
Pick the mode by trigger.
Mode 1: Skill conformance validation
Contract
This mode guarantees:
- Every skill directory has a `SKILL.md` file
- Every `SKILL.md` has valid YAML frontmatter (`name`, `description`)
- Every `SKILL.md` has required sections per
`test/skills-conformance.test.ts`
- `skills/manifest.json` lists every skill directory
- `skills/RESOLVER.md` references every skill in the manifest
- `openclaw.plugin.json` `skills[]` round-trips with both
- `openclaw.plugin.json` keeps OpenClaw install-required native plugin fields
(`id`, object `configSchema`, and `contracts.contextEngines` when applicable)
- No MECE violations (duplicate triggers across skills)
Phases
1. **Walk skills directory.** List all subdirs containing `SKILL.md`. 2. **Validate frontmatter.** Parse YAML, check required fields. 3. **Validate sections.** Check for the required headings. 4. **Check manifest.** Every skill dir must be in `manifest.json`. 5. **Check resolver.** Every manifest skill must have a RESOLVER row. 6. **Check round-trip.** RESOLVER trigger ↔ frontmatter triggers. 7. **Report results.**
Automation
bun test test/skills-conformance.test.ts test/resolver.test.ts test/openclaw-plugin-manifest.test.ts
The CI-gated check is the package.json `test` script.
Output format
Skill Validation Report
========================
Skills found: N
Conformance: N/N pass
Manifest coverage: N/N
Resolver coverage: N/N
Round-trip: N/N
MECE violations: N
Issues:
- <skill>: <issue>
Mode 2: Project test-suite health (v0.25.1)
When to use
- Daily test cron fires
- User asks "run the tests" / "how are the tests" / "what's broken"
- After significant code changes (often via cross-modal-review)
- After container restart (bootstrap)
- When something seems off and you want to verify system health
Test tiers
| Tier | What it runs | Wall time | Gates | |------|--------------|-----------|-------| | **Unit** | `bun test` (deterministic, zero external calls) | <2s | Every commit | | **Evals** | LLM-judge or quality evals | ~60s | Daily | | **Integration** | E2E tests against real Postgres | ~5m | Pre-ship + nightly | | **System health** | Disk / memory / CPU / service liveness | <10s | Daily |
Daily run protocol
When the cron fires (or the user asks), do ALL of this:
1. Run unit tests
bun test 2>&1
Parse: total passed, total failed, total skipped, file-level results.
2. Run evals (if the project has an evals config)
# Adapt to the project's eval config
bun test --filter eval 2>&1
Parse: same format. Note any flakes (tests that fail due to API timeouts, not code bugs).
3. Run system health checks
- Disk / memory / CPU
- gbrain: `gbrain doctor --fast --json`
- Database connection (if applicable)
- Critical files exist (CLAUDE.md, AGENTS.md, etc.)
4. Git diff analysis (CRITICAL — regression intelligence)
# What changed since last test run?
git log --oneline --since="24 hours ago"
For each failing test:
1. Check if the test itself was modified recently (test change, not regression). 2. Check if the code it tests was modified recently (possible regression). 3. Check if it's a known flake (API timeout, service down). 4. Check if a dependency was updated (gbrain, bun, etc.).
5. Classify each failure
| Classification | Marker | Action | |---------------|--------|--------| | **REGRESSION** — code changed, test broke | 🔴 | Flag with the commit that broke it | | **STALE** — test expects old behavior; code is correct | 🟡 | Fix the test, not the code | | **FLAKE** — API timeout, service down, LLM variance | ⚠️ | Note, don't alarm; retry once | | **NEW** — test was just added and isn't passing yet | 🟢 | Check if intentional | | **INFRA** — container restart wiped state | 🛠 | Run bootstrap, retest |
6. Report format
🧪 Daily Tests — YYYY-MM-DD
Unit: X/Y passed (Z skipped)
Evals: X/Y passed
System: [health summary]
REGRESSIONS:
🔴 <test-name>: broke by commit <sha> "<commit message>"
STALE TESTS:
🟡 <test-name>: expects X but code now does Y (commit <sha>)
FLAKES:
⚠️ <test-name>: timeout (retry passed)
✅ ALL CLEAR (when applicable)
7. Auto-fix protocol
**DO auto-fix:**
- Test expects an old file path after a rename → update the test
- Test expects an old version string → update
- Test expects a file that was intentionally deleted → remove the test
- Import path broke because file moved → fix the import
**DO NOT auto-fix:**
- Test expects behavior A but code now does B
Read more
name: testing version: 1.1.0 description: | Skill validation framework PLUS daily test-suite health and regression intelligence. Validates skill conformance (frontmatter, manifest coverage, resolver coverage). Runs the project test suite in tiered phases (unit / evals / integration / system health), classifies failures, and produces a regression-aware report. triggers: - "validate skills" - "test skills" - "skill health check" - "run conformance tests" - "run the tests" - "how are the tests" - "what's broken" - "daily test run" tools: - search - list_pages mutating: false
Testing Skill — Validation + Daily Health & Regression Intelligence
> **Convention:** see [conventions/quality.md](../conventions/quality.md) for > the test-before-bulk pattern; this skill enforces it across the project's > own test suite.
Two modes
This skill has two related but distinct modes:
1. **Skill conformance validation** — gbrain's own conformance bar (the original 1.0 scope). Validates every skill has SKILL.md with frontmatter, every reference exists, manifest + resolver coverage round-trips.
2. **Project test-suite health (v0.25.1 extension)** — runs the project's tiered test suite and produces a regression-classified report. Used by daily cron, container-restart bootstrap, and "how are the tests" prompts.
Pick the mode by trigger.
Mode 1: Skill conformance validation
Contract
This mode guarantees:
- Every skill directory has a `SKILL.md` file
- Every `SKILL.md` has valid YAML frontmatter (`name`, `description`)
- Every `SKILL.md` has required sections per
`test/skills-conformance.test.ts`
- `skills/manifest.json` lists every skill directory
- `skills/RESOLVER.md` references every skill in the manifest
- `openclaw.plugin.json` `skills[]` round-trips with both
- `openclaw.plugin.json` keeps OpenClaw install-required native plugin fields
(`id`, object `configSchema`, and `contracts.contextEngines` when applicable)
- No MECE violations (duplicate triggers across skills)
Phases
1. **Walk skills directory.** List all subdirs containing `SKILL.md`. 2. **Validate frontmatter.** Parse YAML, check required fields. 3. **Validate sections.** Check for the required headings. 4. **Check manifest.** Every skill dir must be in `manifest.json`. 5. **Check resolver.** Every manifest skill must have a RESOLVER row. 6. **Check round-trip.** RESOLVER trigger ↔ frontmatter triggers. 7. **Report results.**
Automation
bun test test/skills-conformance.test.ts test/resolver.test.ts test/openclaw-plugin-manifest.test.ts
The CI-gated check is the package.json `test` script.
Output format
Skill Validation Report ======================== Skills found: N Conformance: N/N pass Manifest coverage: N/N Resolver coverage: N/N Round-trip: N/N MECE violations: N Issues: - <skill>: <issue>
Mode 2: Project test-suite health (v0.25.1)
When to use
- Daily test cron fires
- User asks "run the tests" / "how are the tests" / "what's broken"
- After significant code changes (often via cross-modal-review)
- After container restart (bootstrap)
- When something seems off and you want to verify system health
Test tiers
| Tier | What it runs | Wall time | Gates | |------|--------------|-----------|-------| | **Unit** | `bun test` (deterministic, zero external calls) | <2s | Every commit | | **Evals** | LLM-judge or quality evals | ~60s | Daily | | **Integration** | E2E tests against real Postgres | ~5m | Pre-ship + nightly | | **System health** | Disk / memory / CPU / service liveness | <10s | Daily |
Daily run protocol
When the cron fires (or the user asks), do ALL of this:
1. Run unit tests
bun test 2>&1
Parse: total passed, total failed, total skipped, file-level results.
2. Run evals (if the project has an evals config)
# Adapt to the project's eval config bun test --filter eval 2>&1
Parse: same format. Note any flakes (tests that fail due to API timeouts, not code bugs).
3. Run system health checks
- Disk / memory / CPU
- gbrain: `gbrain doctor --fast --json`
- Database connection (if applicable)
- Critical files exist (CLAUDE.md, AGENTS.md, etc.)
4. Git diff analysis (CRITICAL — regression intelligence)
# What changed since last test run? git log --oneline --since="24 hours ago"
For each failing test:
1. Check if the test itself was modified recently (test change, not regression). 2. Check if the code it tests was modified recently (possible regression). 3. Check if it's a known flake (API timeout, service down). 4. Check if a dependency was updated (gbrain, bun, etc.).
5. Classify each failure
| Classification | Marker | Action | |---------------|--------|--------| | **REGRESSION** — code changed, test broke | 🔴 | Flag with the commit that broke it | | **STALE** — test expects old behavior; code is correct | 🟡 | Fix the test, not the code | | **FLAKE** — API timeout, service down, LLM variance | ⚠️ | Note, don't alarm; retry once | | **NEW** — test was just added and isn't passing yet | 🟢 | Check if intentional | | **INFRA** — container restart wiped state | 🛠 | Run bootstrap, retest |
6. Report format
🧪 Daily Tests — YYYY-MM-DD Unit: X/Y passed (Z skipped) Evals: X/Y passed System: [health summary] REGRESSIONS: 🔴 <test-name>: broke by commit <sha> "<commit message>" STALE TESTS: 🟡 <test-name>: expects X but code now does Y (commit <sha>) FLAKES: ⚠️ <test-name>: timeout (retry passed) ✅ ALL CLEAR (when applicable)
7. Auto-fix protocol
**DO auto-fix:**
- Test expects an old file path after a rename → update the test
- Test expects an old version string → update
- Test expects a file that was intentionally deleted → remove the test
- Import path broke because file moved → fix the import
**DO NOT auto-fix:**
- Test expects behavior A but code now does B
Search gives you raw pages. GBrain gives you the answer. It's the brain layer your AI agent has been missing — the only one that does synthesis, graph traversal, and gap analysis in one box.
Repo: garrytan/gbrain
Other skills on gbrain.
- /voice-persona-mars
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)
Open skill - /voice-persona-venus
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.
Open skill - /voice-post-call
Post-call handling for a voice session — turn the transcript into a brain page, post the summary to the operator's messaging surface, archive the audio. Belt-and-suspenders: fires both from a tool the voice persona can call mid-call AND from the automatic call-end handler in
Open skill - /retrieval-reflex
When/what to retrieve — open the brain page for a salient entity before answering from memory.
Open skill - /academic-verify
Verify a research claim or academic citation by tracing it through publication → methodology → raw data → independent replication. Routes through perplexity-research for the actual web lookup, then formats results as a citation-checked brain page. Use when a
Open skill - /archive-crawler
Universal archivist for personal file archives (Dropbox/B2/Gmail-takeout/local-mount/hard-drive-dump). Filters for high-value content (the user's own writing, ideas, relationships) and surfaces it interactively. REFUSES TO RUN without an explicit gbrain.yml
Open skill

