{"record":{"id":"17ca100e6bd007f2","repo":"zeroclaw-labs/zeroclaw","slug":"skill-source-not-found-in-the-registry-availa","errorCode":null,"errorMessage":"skill '{source}' not found in the registry.\nAvailable skills: {}","messagePattern":"skill '(.+?)' not found in the registry\\.\nAvailable skills: (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-runtime/src/skills/mod.rs","lineNumber":2527,"sourceCode":"}\n\npub fn install_registry_skill_source(\n    source: &str,\n    skills_path: &Path,\n    allow_scripts: bool,\n    workspace_dir: &Path,\n    registry_url: Option<&str>,\n    suppress_tier_banner: bool,\n) -> Result<(PathBuf, usize)> {\n    let registry_dir = ensure_skills_registry(workspace_dir, registry_url)?;\n    let skill_dir = registry_dir.join(\"skills\").join(source);\n\n    if !skill_dir.is_dir() {\n        let available = list_registry_skill_names(&registry_dir);\n        if available.is_empty() {\n            anyhow::bail!(\"skill '{source}' not found in the registry and no skills are available\");\n        }\n        anyhow::bail!(\n            \"skill '{source}' not found in the registry.\\nAvailable skills: {}\",\n            available.join(\", \")\n        );\n    }\n\n    if !suppress_tier_banner {\n        let (tier, version) = lookup_registry_skill_tier(&registry_dir, source);\n        print_install_tier_banner(source, 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":2509,"sourceCodeEnd":2545,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-runtime/src/skills/mod.rs#L2509-L2545","documentation":"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.","triggerScenarios":"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`.","commonSituations":"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.","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."],"exampleFix":"# before\nzeroclaw skills install from-registry:deploy-skills\n# error: ...Available skills: deploy_skill, rollback_skill\n\n# after\nzeroclaw skills install from-registry:deploy_skill","handlingStrategy":"validation","validationCode":"fn skill_in_registry(registry_dir: &std::path::Path, source: &str) -> bool {\n    registry_dir.join(\"skills\").join(source).is_dir()\n}","typeGuard":null,"tryCatchPattern":"match install_registry_skill(source) {\n    Err(e) if e.to_string().contains(\"Available skills:\") => {\n        eprintln!(\"{source} not in registry; pick from: {}\", e);\n        // suggest closest match or fail gracefully\n    }\n    rest => rest?,\n}","preventionTips":["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."],"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"}