zeroclaw-labs/zeroclaw · error · anyhow::Error
skill '{source}' not found in the registry. Available skills
Error message
skill '{source}' not found in the registry.
Available skills: {} What it means
Registry-based skill install: skills/<source> is not a directory in the cloned registry, and the registry does contain skills — their names are listed in the message. The source name is misspelled, wrongly cased, or absent from this registry.
Source
Thrown at crates/zeroclaw-runtime/src/skills/mod.rs:2527
}
pub fn install_registry_skill_source(
source: &str,
skills_path: &Path,
allow_scripts: bool,
workspace_dir: &Path,
registry_url: Option<&str>,
suppress_tier_banner: bool,
) -> Result<(PathBuf, usize)> {
let registry_dir = ensure_skills_registry(workspace_dir, registry_url)?;
let skill_dir = registry_dir.join("skills").join(source);
if !skill_dir.is_dir() {
let available = list_registry_skill_names(®istry_dir);
if available.is_empty() {
anyhow::bail!("skill '{source}' not found in the registry and no skills are available");
}
anyhow::bail!(
"skill '{source}' not found in the registry.\nAvailable skills: {}",
available.join(", ")
);
}
if !suppress_tier_banner {
let (tier, version) = lookup_registry_skill_tier(®istry_dir, source);
print_install_tier_banner(source, version.as_deref(), tier);
}
install_local_skill_source(
skill_dir.to_str().with_context(|| {
format!(
"registry path is not valid UTF-8: {}",
skill_dir.display().to_string()
)
})?,
skills_path,View on GitHub (pinned to 88bb9c8533)
Solutions
- Pick the exact name from the 'Available skills:' list in the error and retry.
- Force a registry update (re-clone or pull) in case the local copy predates the skill being added.
- Confirm which registry is configured — the skill may live in another registry that must be named explicitly.
- Check for renames in the registry's changelog if this started failing after an update.
Example fix
# before zeroclaw skills install from-registry:deploy-skills # error: ...Available skills: deploy_skill, rollback_skill # after zeroclaw skills install from-registry:deploy_skill
Defensive patterns
Strategy: validation
Validate before calling
fn skill_in_registry(registry_dir: &std::path::Path, source: &str) -> bool {
registry_dir.join("skills").join(source).is_dir()
} Try / catch
match install_registry_skill(source) {
Err(e) if e.to_string().contains("Available skills:") => {
eprintln!("{source} not in registry; pick from: {}", e);
// suggest closest match or fail gracefully
}
rest => rest?,
} Prevention
- Keep a pinned list of registry skill names used by automation and validate it after registry updates.
- Check the registry's changelog when upgrading; skill renames are the usual cause.
- Use exact directory names — treat skill ids as case-sensitive.
When it happens
Trigger: Calling the default-registry install path when `registry_dir/skills/<source>` is missing and `list_registry_skill_names` returns names — e.g. installing `from-registry:git-sync` when the registry only has `git_sync`.
Common situations: Name typo or case mismatch; skill renamed/removed in a newer registry revision while the script still uses the old name; wrong registry configured; using a private registry that lacks a skill that exists in the public one.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- skill '{$skill}' not found in {$url}. Available skills: {$av
- skill '{skill_name}' not found in registry '{registry_name}'
- skill '{$skill}' not found in {$url}: no skills/ directory,
- skill '{source}' not found in the registry and no skills are
- skill '{skill_name}' not found in registry '{registry_name}'
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/17ca100e6bd007f2.
Report an issue: GitHub.