zeroclaw-labs/zeroclaw · error · anyhow::Error
Skill source must be a directory: {}
Error message
Skill source must be a directory: {} What it means
Error "Skill source must be a directory: {}" thrown in zeroclaw-labs/zeroclaw.
Source
Thrown at crates/zeroclaw-runtime/src/skills/audit.rs:48
}
}
pub fn audit_skill_directory(skill_dir: &Path) -> Result<SkillAuditReport> {
audit_skill_directory_with_options(skill_dir, SkillAuditOptions::default())
}
pub fn audit_skill_directory_with_options(
skill_dir: &Path,
options: SkillAuditOptions,
) -> Result<SkillAuditReport> {
if !skill_dir.exists() {
bail!(
"Skill source does not exist: {}",
skill_dir.display().to_string()
);
}
if !skill_dir.is_dir() {
bail!(
"Skill source must be a directory: {}",
skill_dir.display().to_string()
);
}
let canonical_root = skill_dir
.canonicalize()
.with_context(|| format!("failed to canonicalize {}", skill_dir.display().to_string()))?;
let mut report = SkillAuditReport::default();
let has_canonical = canonical_root.join(SKILL_MANIFEST_FILENAME).is_file();
let has_deprecated = SKILL_DEPRECATED_MANIFESTS
.iter()
.any(|name| canonical_root.join(name).is_file());
if !has_canonical && !has_deprecated {
report.findings.push(format!(
"Skill root must include {SKILL_MANIFEST_FILENAME} (canonical) or one of {SKILL_DEPRECATED_MANIFESTS:?} (deprecated) for deterministic auditing.",
));View on GitHub (pinned to 88bb9c8533)
Solutions
- Point the skill source at a directory containing SKILL.md, not a file.
When it happens
Trigger: Thrown at crates/zeroclaw-runtime/src/skills/audit.rs:48 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/9e5283b7fe5768c4.
Report an issue: GitHub.