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.

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)

Solutions

  1. Re-run only the failing skill with detail: `zeroclaw skills test --name <skill> --verbose`
  2. Read the failures list printed before the error and fix the TEST.sh or the skill behavior
  3. Ensure every tool the tests invoke is installed and on PATH
  4. 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

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


AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23). Data as JSON: /api/errors/717012d465994030. Report an issue: GitHub.