sxyazi/yazi · error

Package name `{name}` must be in kebab-case

Error message

Package name `{name}` must be in kebab-case

What it means

Dependency-URL parsing guard in `FromStr for Dependency`: the effective package name (the child segment after ':' if present, otherwise the repository name) failed the kebab-case check, which is required for valid crate/package names. The faulting input is the derived `name`.

Source

Thrown at yazi-cli/src/package/dependency.rs:110

	}
}

impl FromStr for Dependency {
	type Err = anyhow::Error;

	fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
		let mut parts = s.splitn(2, ':');

		let Some(parent) = parts.next() else { bail!("Package URL cannot be empty") };
		let child = parts.next().unwrap_or_default();

		let Some((_, repo)) = parent.split_once('/') else {
			bail!("Package URL `{parent}` must be in the format `owner/repository`")
		};

		let name = if child.is_empty() { repo } else { child };
		if !name.as_bytes().kebab_cased() {
			bail!("Package name `{name}` must be in kebab-case")
		}

		Ok(Self {
			r#use: s.to_owned(),
			name: format!("{name}.yazi"),
			parent: format!("{parent}{}", if child.is_empty() { ".yazi" } else { "" }),
			child: if child.is_empty() { String::new() } else { format!("{child}.yazi") },
			..Default::default()
		})
	}
}

impl<'de> Deserialize<'de> for Dependency {
	fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
	where
		D: Deserializer<'de>,
	{
		#[derive(Deserialize)]

View on GitHub (pinned to 5f901b886b)

Solutions

  1. Rename the package using kebab-case: lowercase letters, digits, and hyphens (e.g. `my-plugin`).
  2. If using a child name after ':', ensure it is also kebab-case.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at yazi-cli/src/package/dependency.rs:110 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of sxyazi/yazi@5f901b886b (2026-09-02). Data as JSON: /api/errors/6eca9b51e179fe02. Report an issue: GitHub.