{"record":{"id":"c543565c5efd7b9b","repo":"zeroclaw-labs/zeroclaw","slug":"plugin-name-must-not-be-empty","errorCode":null,"errorMessage":"plugin name must not be empty","messagePattern":"plugin name must not be empty","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/zeroclaw-plugins/src/registry.rs","lineNumber":110,"sourceCode":"\npub fn install_source(entry: &PluginRegistryEntry) -> String {\n    format!(\"{}@{}\", entry.name, entry.version)\n}\n\npub fn install_command(entry: &PluginRegistryEntry, registry_url: Option<&str>) -> String {\n    let source = install_source(entry);\n    match registry_url {\n        Some(registry_url) if !registry_url.trim().is_empty() => {\n            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,","sourceCodeStart":92,"sourceCodeEnd":128,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/crates/zeroclaw-plugins/src/registry.rs#L92-L128","documentation":"Error \"plugin name must not be empty\" thrown in zeroclaw-labs/zeroclaw.","triggerScenarios":"Thrown at crates/zeroclaw-plugins/src/registry.rs:110 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a non-empty plugin name."],"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"}