pbakaus/impeccable · error
Pass providers explicitly, e.g. --providers=claude,cursor
Error message
Pass providers explicitly, e.g. --providers=claude,cursor
What it means
Recovery hint in install's plan-selection error arm: choose_install_plan returned Flow::Throw (e.g. no providers could be determined interactively or from flags), and this line suggests passing --providers explicitly to bypass the prompt/autodetection.
Source
Thrown at crates/skills/src/commands.rs:545
/// 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
- Add an explicit `--providers=claude,cursor` argument
- Verify the flag spelling and value
Example fix
// before impeccable install --providers=foo // after impeccable install --providers=claude,cursor
Defensive patterns
Strategy: validation
Validate before calling
if (!args.includes('--providers')) throw new Error('install requires --providers=claude,cursor'); Try / catch
try { await install(); } catch (e) { if (/--providers/.test(String(e))) console.error('Pass explicit providers'); } Prevention
- Always pass --providers in non-interactive runs
- Pin provider choices in CI configuration
When it happens
Trigger: Any install invocation where provider selection fails validation (unknown providers or none resolvable).
Common situations: Users omitting `--providers` in environments where auto-detection returns nothing or invalid names.
Understand the failure class
Background: "--flag is required" and "must specify" CLI errors: how missing-required-flag validation works and how to fix it — this error's family across 20 libraries.
Related errors
- Pass one explicitly, e.g. --providers=.claude,.cursor
- Pass one explicitly, e.g. --providers=claude,cursor
- Existing skills were left untouched. Re-run with --force to
- {msg} (dynamic Flow::Throw message, e.g. 'Unknown provider(s
- Nothing was installed: the bundle had no variants for {}.
AI-assisted analysis of pbakaus/impeccable@2bc2879276 (2026-09-08).
Data as JSON: /api/errors/dffc037a576aa1e3.
Report an issue: GitHub.