pbakaus/impeccable · error
Unknown skills command: {other}
Error message
Unknown skills command: {other}
What it means
The `impeccable skills` subcommand only accepts no argument, help/--help/-h, or the stub verbs install/link/update/check (which print a not-implemented notice). Any other first argument falls into the catch-all arm, which prints "Unknown skills command: <arg>" plus a pointer to `impeccable --help`, and exits 1.
Source
Thrown at crates/detect/src/skills.rs:18
//! `impeccable help|install|link|update|check` and the legacy
//! `impeccable skills <verb>` namespace (`cli/bin/commands/skills.mjs`).
//!
//! Only the dispatch surface is ported for now: the contract's exact
//! unknown-command text, and a clear not-implemented message for the verbs
//! that need the network or a bundle (help fetches the command list from
//! impeccable.style; install/update/link/check read or download bundles).
use impeccable_common::Io;
/// JS: skills.mjs#run
pub fn run(args: &[String], io: &mut Io) -> i32 {
let sub = args.first().map(String::as_str).unwrap_or("");
match sub {
"" | "help" | "--help" | "-h" => not_implemented("help", io),
"install" | "link" | "update" | "check" => not_implemented(sub, io),
other => {
io.err(&format!("Unknown skills command: {other}\n"));
io.err("Run 'impeccable --help' for available commands.\n");
1
}
}
}
fn not_implemented(verb: &str, io: &mut Io) -> i32 {
io.err(&format!(
"impeccable {verb}: not implemented yet in this build. Use `npx impeccable {verb}` (the Node CLI) for now.\n"
));
1
}
View on GitHub (pinned to 2bc2879276)
Solutions
- Run `impeccable --help` to see the actual top-level command surface
- Use only install, link, update, or check with `impeccable skills` — other verbs are not implemented in this build
- Use `npx impeccable <verb>` (Node CLI) for skills operations not yet ported to this binary
Example fix
// before $ impeccable skills list Unknown skills command: list // after $ impeccable skills check
Defensive patterns
Strategy: validation
Validate before calling
const SKILLS_VERBS = ['install','link','update','check','help','--help','-h'];
if (sub && !SKILLS_VERBS.includes(sub)) {
throw new Error(`unknown skills command: ${sub}`);
} Try / catch
const res = spawnSync('impeccable', ['skills', sub]);
if (res.status !== 0 && res.stderr.toString().startsWith('Unknown skills command')) {
console.error('unsupported skills verb — use install/link/update/check');
} Prevention
- Only use install/link/update/check with `impeccable skills` in this build
- Run `impeccable --help` to confirm the command surface before scripting
- Do not pass top-level flags after `skills`
When it happens
Trigger: Running `impeccable skills <anything>` where <anything> is not install, link, update, check, help, --help, or -h — e.g. `impeccable skills list`, `impeccable skills uninstall`, or a stray flag like `--verbose`.
Common situations: Assuming the skills subcommand has a full surface (list/remove) when only install/link/update/check stubs exist; passing flags intended for the top-level command after `skills`; typo'd subcommand names in scripts.
Related errors
- Unknown command: {}
- concept-seed: --candidate-count must be an integer from 5 to
- Unknown ignore-rule flag: ${arg}
- Pass a rule id, e.g. ${IMPECCABLE_COMMAND} hooks ignore-rule
- overused-font is value-specific by default. Use ${IMPECCABLE
AI-assisted analysis of pbakaus/impeccable@2bc2879276 (2026-09-08).
Data as JSON: /api/errors/928a3fe5159187e8.
Report an issue: GitHub.