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}' and no skills are available What it means
Installing a skill from a named extra registry: after that registry is cloned, skills/<skill_name> is not a directory and the registry listing is empty. The named registry's clone contains no skills at all, so nothing can be installed from it.
Source
Thrown at crates/zeroclaw-runtime/src/skills/mod.rs:2636
configured.join(", ")
)
}
})?;
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: {}",View on GitHub (pinned to 88bb9c8533)
Solutions
- Verify the registry URL configured for that name is a skills registry with a top-level skills/ directory.
- Delete the local clone of that registry under the workspace and retry for a fresh full clone.
- If submodules are used in the registry, make sure they resolve over your credentials.
- Populate the registry repo with at least one skill directory under skills/ if you own it.
Example fix
# before zeroclaw skills install registry:extra/my-skill # error: skill 'my-skill' not found in registry 'extra' and no skills are available # after: fix the registry URL to a real catalog, then clear cache # config: [[skills.registries]] name="extra" kind="git" url="https://github.com/org/skills" rm -rf .zeroclaw/registries/extra && zeroclaw skills install registry:extra/my-skill
Defensive patterns
Strategy: validation
Validate before calling
fn extra_registry_ready(registry_dir: &std::path::Path) -> bool {
registry_dir
.join("skills")
.read_dir()
.map(|mut it| it.any(|e| e.map(|e| e.path().is_dir()).unwrap_or(false)))
.unwrap_or(false)
} Try / catch
match install_from_registry(registry_name, skill) {
Err(e) if e.to_string().contains("and no skills are available") => {
clear_registry_cache(registry_name)?; // rm -rf local clone
install_from_registry(registry_name, skill)?
}
rest => rest?,
} Prevention
- Validate each extra registry once at setup: `git ls-remote` works and the repo has skills/ with directories.
- Clear the per-registry cache after any interrupted clone or credential failure.
- Prefer registry names/URLs pinned in reviewed config, not ad-hoc flags.
When it happens
Trigger: Registry-qualified install (`registry:<name>/<skill>`) where `registry_dir/skills/<skill_name>` is missing and `list_registry_skill_names` returns nothing — the cloned registry repo has no skills/ directory or an empty one.
Common situations: Registry URL points at a non-catalog repo; wrong default branch without skills/; interrupted first clone left an empty dir; private registry not yet populated; submodules not initialized during 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 '{source}' not found in the registry and no skills are
- skills.extra_registries[{i}].name '{}' is invalid; use only
- skills.extra_registries[{}].url is not a valid URL: {e}
- skill '{$skill}' not found in {$url}: no skills/ directory,
- skill '{$skill}' not found in {$url}. Available skills: {$av
AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23).
Data as JSON: /api/errors/d1ebd2d281ca00c8.
Report an issue: GitHub.