jdx/mise · error
packslip plugin sources currently require a GitHub repositor
Error message
packslip plugin sources currently require a GitHub repository
What it means
Packslip source parsing (`PackslipSource::parse` in src/plugins/packslip.rs) only supports sources of the form `packslip:github.com/owner/repo[#version]` where the project is a GitHub repository known to the packslip model. If the string after `packslip:` is not a `github.com/...` path or is not a recognized repository, parsing fails with this message.
Source
Thrown at src/plugins/packslip.rs:33
use crate::toolset::{ResolveOptions, ToolRequest, ToolSource, Toolset};
use crate::ui::progress_report::{QuietReport, SingleReport};
const STATE_FILE: &str = ".mise-packslip-plugin.json";
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(crate) struct Source {
project: String,
request: String,
}
impl Source {
pub(crate) fn parse(value: &str) -> Result<Option<Self>> {
let Some(value) = value.strip_prefix("packslip:") else {
return Ok(None);
};
let (project, request) = value.split_once('#').unwrap_or((value, "latest"));
let project = project_name(project)?;
ensure!(
project.starts_with("github.com/") && packslip::model::repository(&project).is_some(),
"packslip plugin sources currently require a GitHub repository"
);
ensure!(
!request.is_empty(),
"packslip plugin version must not be empty"
);
Ok(Some(Self {
project,
request: request.to_owned(),
}))
}
pub(crate) fn url(&self) -> String {
format!("packslip:{}#{}", self.project, self.request)
}
pub(crate) fn with_version(mut self, version: Option<String>) -> Self {View on GitHub (pinned to afd2eddd3a)
Solutions
- Use the full GitHub repository path: `mise use packslip:github.com/owner/repo`.
- Verify the repository actually publishes packslip release manifests (`mise ls-remote packslip:github.com/owner/repo`); if not, use `mise use github:owner/repo` or `aqua:owner/repo` instead.
- Check for typos or org/rename changes in the repository path.
Example fix
// before [tools] mytool = "packslip:mytool" // after [tools] mytool = "packslip:github.com/owner/mytool"
Defensive patterns
Strategy: validation
Validate before calling
// validate before writing the spec case "$src" in packslip:github.com/*/*) mise ls-remote "$src" >/dev/null || echo "unknown packslip repo: $src" ;; packslip:*) echo "packslip sources must be github.com/owner/repo: $src"; exit 1 ;; esac
Type guard
fn is_packslip_github_repo(src: &str) -> bool {
src.strip_prefix("packslip:")
.map(|p| p.starts_with("github.com/") && !p.starts_with("github.com//"))
.unwrap_or(false)
} Prevention
- Always use the full `packslip:github.com/owner/repo` form in tool configs.
- Run `mise ls-remote` on the source before pinning it in mise.toml.
- Remember packslip only covers repos publishing signed release manifests; use github:/aqua: for others.
When it happens
Trigger: A tool source string like `packslip:mytool`, `packslip:gitlab.com/owner/repo`, `packslip:github.com/owner/nonexistent`, or a typo'd/renamed repo passed via `mise use packslip:...`, a mise.toml `[tools]` entry, or the registry.
Common situations: Typing a bare tool name instead of the full github.com path; pointing at a repo that does not publish signed packslip manifests; vendor renamed/transferred the repository; confusing packslip with aqua/github source prefixes.
Understand the failure class
Background: "Invalid URL" errors: why new URL(), URI.parse, and reqwest::Url reject your string — missing scheme, whitespace, and bad path format — this error's family across 39 libraries.
Related errors
- packslip:{tool_name} is not a project name; use github.com/o
- packslip: list_identity_prefix must be a non-empty string
- packslip: list_identity_prefix cannot be combined with pubke
- packslip: list_identity_prefix requires an issuer
- the release list at {url} is for {}, not {project}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/796cdc12a97fa847.
Report an issue: GitHub.