zeroclaw-labs/zeroclaw · error · anyhow::Error
skill '{skill_name}' not found in registry '{registry_name}'
Error message
skill '{skill_name}' not found in registry '{registry_name}'.
Available skills: {} What it means
Installing a skill from a named extra registry: skills/<skill_name> is not a directory, but the registry does contain other skills whose names are listed in the message. The requested name does not match any skill directory in that registry.
Source
Thrown at crates/zeroclaw-runtime/src/skills/mod.rs:2640
if registry.kind != zeroclaw_config::schema::ExternalRegistryKind::Git {
anyhow::bail!(
"registry '{registry_name}' uses unsupported kind '{}'; only 'git' is supported",
registry.kind
);
}
let registry_dir = ensure_extra_registry(workspace_dir, ®istry_name, ®istry.url)?;
let skill_dir = registry_dir.join("skills").join(&skill_name);
if !skill_dir.is_dir() {
let available = list_registry_skill_names(®istry_dir);
if available.is_empty() {
anyhow::bail!(
"skill '{skill_name}' not found in registry '{registry_name}' and no skills are available"
);
}
anyhow::bail!(
"skill '{skill_name}' not found in registry '{registry_name}'.\nAvailable skills: {}",
available.join(", ")
);
}
if !suppress_tier_banner {
let (tier, version) = lookup_registry_skill_tier(®istry_dir, &skill_name);
print_install_tier_banner(&skill_name, 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
- Use the exact name from the 'Available skills:' list in the error message.
- Update the local registry clone (delete and let it re-clone) so new skills appear.
- Confirm the registry name qualifier — the skill may exist in the default registry or another extra registry, not this one.
- Check the registry repo for renames if this broke after an update.
Example fix
# before zeroclaw skills install registry:extra/Deploy # error: ...Available skills: rollout, status # after zeroclaw skills install registry:extra/rollout
Defensive patterns
Strategy: validation
Validate before calling
fn skill_in_extra_registry(registry_dir: &std::path::Path, skill: &str) -> bool {
registry_dir.join("skills").join(skill).is_dir()
} Try / catch
match install_from_registry(registry_name, skill) {
Err(e) if e.to_string().contains("Available skills:") => {
eprintln!("{skill} not in {registry_name}; available: {e}");
}
rest => rest?,
} Prevention
- List the registry's skills before prompting or scripting a name.
- Pin automation to registry revisions; revalidate skill lists after pulls.
- Namespace checks: confirm the skill exists in the registry you are naming, not another.
When it happens
Trigger: Registry-qualified install where `registry_dir/skills/<skill_name>` is missing and the listing is non-empty — e.g. `registry:extra/deploy` when the registry has skills/rollout and skills/status.
Common situations: Typo or wrong casing in the skill name; expecting a public-registry skill inside a private extra registry; skill renamed upstream; stale local registry clone.
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 '{source}' not found in the registry. Available skills
- 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/7cce196240ec3a41.
Report an issue: GitHub.