Hmbown/CodeWhale · error

SKILL.md `name` must be a single path-safe segment (got '{na

Error message

SKILL.md `name` must be a single path-safe segment (got '{name}')

What it means

parse_frontmatter_name extracted a name: value from SKILL.md frontmatter that is not a single path-safe segment (it contains '/', '\\', '.' or '..' or spans multiple components). The name is used to build the on-disk package directory name, so a non-segment name would create unsafe or nested paths; the frontmatter name is the input at fault.

Source

Thrown at crates/tui/src/skills/install.rs:1625

            continue;
        }
        if let Some((key, value)) = line.split_once(':') {
            let key = key.trim().to_ascii_lowercase();
            let value = value.trim().to_string();
            match key.as_str() {
                "name" if !value.is_empty() => name = Some(value),
                "description" if !value.is_empty() => has_description = true,
                _ => {}
            }
        }
    }

    let name = name.ok_or(InstallError::MissingFrontmatterField("name"))?;
    if !has_description {
        return Err(InstallError::MissingFrontmatterField("description").into());
    }
    if validate_skill_name_segment(&name).is_err() {
        bail!("SKILL.md `name` must be a single path-safe segment (got '{name}')");
    }
    Ok(name)
}

fn reject_unmarked_update(final_path: &Path, name: &str) -> std::result::Result<(), InstallError> {
    if final_path.join(INSTALLED_FROM_MARKER).exists() {
        Ok(())
    } else {
        Err(InstallError::NotInstalledHere(name.to_string()))
    }
}

pub(crate) fn source_spec_string(source: &InstallSource) -> String {
    match source {
        InstallSource::GitHubRepo(repo) => format!("github:{repo}"),
        InstallSource::DirectUrl(url) => url.clone(),
        InstallSource::Registry(name) => name.clone(),
    }

View on GitHub (pinned to 0c42157ee5)

Solutions

  1. Edit the SKILL.md frontmatter name: to a single path-safe segment (letters, digits, hyphens)
  2. Remove any path separators or '..' from the frontmatter name
  3. Use the directory name or skill slug exactly, without nesting
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/tui/src/skills/install.rs:1625 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20). Data as JSON: /api/errors/c08390995477b67e. Report an issue: GitHub.