{"record":{"id":"7cce196240ec3a41","repo":"zeroclaw-labs/zeroclaw","slug":"skill-skill-name-not-found-in-registry-regis-7cce19","errorCode":null,"errorMessage":"skill '{skill_name}' not found in registry '{registry_name}'.\nAvailable skills: {}","messagePattern":"skill '(.+?)' not found in registry '(.+?)'\\.\nAvailable skills: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-runtime/src/skills/mod.rs","lineNumber":2640,"sourceCode":"\n    if registry.kind != zeroclaw_config::schema::ExternalRegistryKind::Git {\n        anyhow::bail!(\n            \"registry '{registry_name}' uses unsupported kind '{}'; only 'git' is supported\",\n            registry.kind\n        );\n    }\n\n    let registry_dir = ensure_extra_registry(workspace_dir, &registry_name, &registry.url)?;\n    let skill_dir = registry_dir.join(\"skills\").join(&skill_name);\n\n    if !skill_dir.is_dir() {\n        let available = list_registry_skill_names(&registry_dir);\n        if available.is_empty() {\n            anyhow::bail!(\n                \"skill '{skill_name}' not found in registry '{registry_name}' and no skills are available\"\n            );\n        }\n        anyhow::bail!(\n            \"skill '{skill_name}' not found in registry '{registry_name}'.\\nAvailable skills: {}\",\n            available.join(\", \")\n        );\n    }\n\n    if !suppress_tier_banner {\n        let (tier, version) = lookup_registry_skill_tier(&registry_dir, &skill_name);\n        print_install_tier_banner(&skill_name, version.as_deref(), tier);\n    }\n\n    install_local_skill_source(\n        skill_dir.to_str().with_context(|| {\n            format!(\n                \"registry path is not valid UTF-8: {}\",\n                skill_dir.display().to_string()\n            )\n        })?,\n        skills_path,","sourceCodeStart":2622,"sourceCodeEnd":2658,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/skills/mod.rs#L2622-L2658","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"# before\nzeroclaw skills install registry:extra/Deploy\n# error: ...Available skills: rollout, status\n\n# after\nzeroclaw skills install registry:extra/rollout","handlingStrategy":"validation","validationCode":"fn skill_in_extra_registry(registry_dir: &std::path::Path, skill: &str) -> bool {\n    registry_dir.join(\"skills\").join(skill).is_dir()\n}","typeGuard":null,"tryCatchPattern":"match install_from_registry(registry_name, skill) {\n    Err(e) if e.to_string().contains(\"Available skills:\") => {\n        eprintln!(\"{skill} not in {registry_name}; available: {e}\");\n    }\n    rest => rest?,\n}","preventionTips":["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."],"tags":["skills","registry","not-found","typo"],"backgroundTag":"resource-not-found","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}