{"record":{"id":"0710d7c0b601c3d7","repo":"zeroclaw-labs/zeroclaw","slug":"plugin-registry-source-must-be-name-or-name-versio","errorCode":null,"errorMessage":"plugin registry source must be name or name@version","messagePattern":"plugin registry source must be name or name@version","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-plugins/src/registry.rs","lineNumber":119,"sourceCode":"            format!(\"zeroclaw plugin install {source} --registry {registry_url}\")\n        }\n        _ => format!(\"zeroclaw plugin install {source}\"),\n    }\n}\n\npub fn parse_plugin_spec(source: &str) -> Result<PluginSpec> {\n    let source = source.trim();\n    if source.is_empty() {\n        bail!(\"plugin name must not be empty\");\n    }\n    let Some((name, version)) = source.rsplit_once('@') else {\n        return Ok(PluginSpec {\n            name: source.to_string(),\n            version: None,\n        });\n    };\n    if name.is_empty() || version.is_empty() {\n        bail!(\"plugin registry source must be name or name@version\");\n    }\n    Ok(PluginSpec {\n        name: name.to_string(),\n        version: Some(version.to_string()),\n    })\n}\n\npub fn resolve_entry<'a>(\n    index: &'a PluginRegistryIndex,\n    spec: &PluginSpec,\n) -> Result<&'a PluginRegistryEntry> {\n    let mut matches = index\n        .plugins\n        .iter()\n        .filter(|entry| entry.name == spec.name)\n        .filter(|entry| {\n            spec.version\n                .as_ref()","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-plugins/src/registry.rs#L101-L137","documentation":"Error \"plugin registry source must be name or name@version\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-plugins/src/registry.rs:119 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use the form 'name' or 'name@version' for the plugin registry source."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}