jdx/mise · error
skill asset {name} is not an archive mise can unpack
Error message
skill asset {name} is not an archive mise can unpack What it means
Thrown by unpack_skill when a skill asset shipped as its own archive has a file name whose format mise cannot recognize as an archive (via ExtractionFormat::from_file_name). mise only unpacks archives with extensions it knows (.tar.gz, .zip, etc.); anything else cannot be safely extracted.
Source
Thrown at src/packslip.rs:411
/// An executable of the install, by the name the packslip gave it.
fn installed_bin(install_path: &Path, program: &str) -> Option<PathBuf> {
if !is_safe_relative(program) {
return None;
}
let linked = install_path.join(MISE_BINS_DIR).join(program);
if linked.exists() {
return Some(linked);
}
locate_in_install(install_path, program)
}
/// Unpack a skill shipped as its own archive, dropping a lone top-level
/// directory the way artifacts are unpacked.
fn unpack_skill(archive: &Path, dir: &Path, pr: &dyn SingleReport) -> Result<()> {
let name = archive.file_name().unwrap_or_default().to_string_lossy();
let format = file::ExtractionFormat::from_file_name(&name);
if !format.is_archive() {
bail!("skill asset {name} is not an archive mise can unpack");
}
let strip_components = usize::from(file::should_strip_components(archive, format)?);
let staging = staging_dir(dir)?;
let unpacked = file::extract_archive(
archive,
&staging,
format,
&file::ExtractOptions {
strip_components,
pr: Some(pr),
..Default::default()
},
);
into_place(&staging, dir, unpacked)
}
/// A fresh sibling directory to build a skill in, so `dir` only ever
/// exists once it is complete and an interrupted attempt cannot pass forView on GitHub (pinned to afd2eddd3a)
Solutions
- Check the asset's actual file name/extension; ensure the packslip points at the archive variant of the skill
- If the upstream changed extension to a supported one (.tar.gz, .zip, ...), update the packslip reference
- If it's a genuinely new archive format, extract manually and adjust the packslip, or request support for the format in mise
- Verify the release assets weren't renamed in a recent upstream release
Example fix
// packslip before: skill points at a raw asset "skill": "myskill" // after: point at the archive asset mise can unpack "skill": "myskill-1.0.0.tar.gz"
Defensive patterns
Strategy: validation
Validate before calling
// pre-flight: check the skill asset name has a supported archive extension
const SUPPORTED: [&str; 4] = [".tar.gz", ".tgz", ".zip", ".tar.xz"];
if !SUPPORTED.iter().any(|ext| asset_name.ends_with(ext)) {
bail!("skill asset {asset_name} has an unsupported archive extension; update the packslip to point at an archive");
} Try / catch
match result {
Err(e) if e.to_string().contains("is not an archive mise can unpack") => {
eprintln!("skill asset is not a recognized archive; check upstream release naming");
Err(e)
}
other => other,
} Prevention
- Verify skill assets are published as .tar.gz/.zip archives before adding them to a packslip
- Watch upstream releases for asset-naming changes
- Don't list checksum files or raw binaries as skill assets
- Prefer widely-used archive formats when publishing your own skills
When it happens
Trigger: fetch_files downloads a skill asset whose filename has no recognized archive extension — e.g. a raw binary, a .sha256 file mistakenly listed, an unusual extension like .txz/.tgz variants mise doesn't map, or an extensionless release asset declared as a skill.
Common situations: Upstream project changed its release asset naming; packslip lists a non-archive asset as the skill; typo'd or new extension not covered by ExtractionFormat; skill published as a single-file script rather than an archive.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- brew-cask:{}: unsupported archive type for {}
- {} is not a tar archive
- the packslip lists executable {} in {}, but the archive hold
- {format} format not supported
- extract_archive does not support compressed single-file form
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/80c20377b2a689c2.
Report an issue: GitHub.