pbakaus/impeccable · error
{msg} (dynamic Flow::Throw message, e.g. 'Unknown provider(s
Error message
{msg} (dynamic Flow::Throw message, e.g. 'Unknown provider(s): {}' or 'Unknown install scope: {v}. Use --scope=project or --scope=global.') What it means
In `install`, `choose_install_plan` can return `Flow::Throw(msg)` with dynamic messages such as 'Unknown provider(s): {}' or 'Unknown install scope: {v}. Use --scope=project or --scope=global.' These are printed and the command exits 1 with a hint to pass providers explicitly.
Source
Thrown at crates/skills/src/commands.rs:544
/// Sentinel for the JS `process.exit(1)` inside install's already-installed
/// `try` block (an exit, not an error, so no "Install check failed" line).
const EXIT_1: &str = "\u{0}exit1";
/// JS: install(flags)
fn install(flags: &[String], io: &mut Io) -> R<()> {
let (sys, mut prompt) = ctx(io);
let force = has_flag(flags, "--force");
let yes = has_flag(flags, "-y") || has_flag(flags, "--yes");
let install_hooks = !has_flag(flags, "--no-hooks");
let project_root = sys.find_project_root();
if !yes {
print_install_intro(&prompt, io);
}
let plan = match choose_install_plan(&sys, &mut prompt, io, &project_root, flags, yes) {
Ok(p) => p,
Err(Flow::Throw(msg)) => {
err(io, &msg);
err(io, "Pass providers explicitly, e.g. --providers=claude,cursor");
return Err(Flow::Exit(1));
}
Err(other) => return Err(other),
};
let InstallPlan { targets, scope, install_root, hook_root, explicit } = plan;
let scope_opt = Some(scope);
let existing = sys.is_already_installed(&install_root, scope_opt);
let installed_targets: Vec<&'static str> = if existing.is_some() {
sys.find_installed_providers(&install_root, scope_opt)
} else {
Vec::new()
};
let missing_selected_targets: Vec<&'static str> = if existing.is_some() && !force && explicit {
targets.iter().copied().filter(|p| !installed_targets.contains(p)).collect()
} else {
Vec::new()
};View on GitHub (pinned to 2bc2879276)
Solutions
- Use valid provider names, e.g. `--providers=claude,cursor`
- Use `--scope=project` or `--scope=global` exactly
- List available providers via help/docs and correct the value
Example fix
// before impeccable install --scope=local // after impeccable install --scope=project
Defensive patterns
Strategy: validation
Validate before calling
const VALID_PROVIDERS = ['claude','cursor'];
if (!providers.split(',').every(p => VALID_PROVIDERS.includes(p))) throw new Error('Unknown provider');
if (!['project','global'].includes(scope)) throw new Error('Unknown scope'); Try / catch
try { await install(); } catch (e) { if (/Unknown (provider|install scope)/.test(String(e))) console.error('Fix --providers/--scope values'); } Prevention
- Validate --providers and --scope values in wrapper scripts
- Use documented enum values exactly
- Keep provider list in sync with CLI releases
When it happens
Trigger: Running `impeccable install` with an unrecognized `--providers` value or an invalid `--scope` value.
Common situations: Typos like `--providers=Cluad`, unsupported scope strings like `--scope=local`, or provider names not in the supported set.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- build-phase: record hero --build <png>
- usage: latest <slug-or-target> [--json]
- usage: close <resolved-target> <snapshot-file>
- usage: impeccable critique-storage <slug|write|latest|trend|
- Unknown action: {}. Use 'pin' or 'unpin'.
AI-assisted analysis of pbakaus/impeccable@2bc2879276 (2026-09-08).
Data as JSON: /api/errors/aa49d9cc0124369a.
Report an issue: GitHub.