zeroclaw-labs/zeroclaw · error · anyhow::Error
Some skill tests failed.
Error message
Some skill tests failed.
What it means
`skills test` runs the TEST.sh suites of one skill (--name, or a path) or of every installed skill across all bundles plus the global dir, prints per-skill results, and then bails with this generic message if any result recorded failures. The specifics are in the printed results above the error, never in the message itself.
Solutions
- Re-run only the failing skill with detail: `zeroclaw skills test --name <skill> --verbose`
- Read the failures list printed before the error and fix the TEST.sh or the skill behavior
- Ensure every tool the tests invoke is installed and on PATH
- Treat the non-zero exit code as the gate in CI; do not suppress it
Example fix
# before zeroclaw skills test # 'Some skill tests failed.' # after zeroclaw skills test --name pdf-tools --verbose
Defensive patterns
Strategy: try-catch
Validate before calling
// Narrow the blast radius: test one skill before the full sweep // zeroclaw skills test --name <skill> --verbose
Try / catch
let out = Command::new("zeroclaw").args(["skills", "test"]).output()?;
let stdout = String::from_utf8_lossy(&out.stdout);
let failed: Vec<&str> = stdout.lines().filter(|l| /* match your results-format marker */ false).collect();
if !out.status.success() {
// report `failed`, exit with the same code to keep the CI gate honest
} Prevention
- Run per-skill tests with --verbose before the full suite when iterating
- Pin the tools your TEST.sh scripts invoke (versions on PATH) in CI images
- Treat the exit code, not the message, as the CI signal
When it happens
Trigger: A skill's TEST.sh exits non-zero or its assertions fail; the full sweep in CI where one skill out of many is broken; tests that depend on tools or fixtures absent from the current environment.
Common situations: CI gating on skill repos; third-party skills whose tests assume binaries not on PATH; environment drift between the dev machine and the CI runner.
Related errors
- cli-skills-multiple-locations-path
- cli-bundle-not-configured
- cli-skills-agent-multiple-bundles
- cli-skills-agent-not-configured
- cli-skills-audit-failed
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/717012d465994030.
Report an issue: GitHub.
Appendix: source
Thrown at src/skills/mod.rs:550
// Test all skills across every bundle plus the global dir.
let install_root = config.install_root_dir();
let mut dirs: Vec<PathBuf> = config
.skill_bundles
.keys()
.filter_map(|a| {
zeroclaw_config::skill_bundles::resolve_directory(config, &install_root, a)
.ok()
})
.collect();
dirs.push(skills_dir(&config.data_dir));
testing::test_all_skills(&dirs, verbose)?
};
testing::print_results(&results);
let any_failed = results.iter().any(|r| !r.failures.is_empty());
if any_failed {
anyhow::bail!("Some skill tests failed.");
}
Ok(())
}
}
}
enum SkillLocation {
Bundle { alias: String, dir: PathBuf },
Global { dir: PathBuf },
}
impl SkillLocation {
fn dir(&self) -> &Path {
match self {
SkillLocation::Bundle { dir, .. } | SkillLocation::Global { dir } => dir,
}
}
}View on GitHub (pinned to 88bb9c8533)