{"record":{"id":"c199e1df0a4fa650","repo":"pbakaus/impeccable","slug":"run-impeccable-help-for-available-commands","errorCode":null,"errorMessage":"Run 'impeccable --help' for available commands.\n","messagePattern":"Run 'impeccable --help' for available commands\\.\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"crates/detect/src/skills.rs","lineNumber":19,"sourceCode":"//! `impeccable help|install|link|update|check` and the legacy\n//! `impeccable skills <verb>` namespace (`cli/bin/commands/skills.mjs`).\n//!\n//! Only the dispatch surface is ported for now: the contract's exact\n//! unknown-command text, and a clear not-implemented message for the verbs\n//! that need the network or a bundle (help fetches the command list from\n//! impeccable.style; install/update/link/check read or download bundles).\n\nuse impeccable_common::Io;\n\n/// JS: skills.mjs#run\npub fn run(args: &[String], io: &mut Io) -> i32 {\n    let sub = args.first().map(String::as_str).unwrap_or(\"\");\n    match sub {\n        \"\" | \"help\" | \"--help\" | \"-h\" => not_implemented(\"help\", io),\n        \"install\" | \"link\" | \"update\" | \"check\" => not_implemented(sub, io),\n        other => {\n            io.err(&format!(\"Unknown skills command: {other}\\n\"));\n            io.err(\"Run 'impeccable --help' for available commands.\\n\");\n            1\n        }\n    }\n}\n\nfn not_implemented(verb: &str, io: &mut Io) -> i32 {\n    io.err(&format!(\n        \"impeccable {verb}: not implemented yet in this build. Use `npx impeccable {verb}` (the Node CLI) for now.\\n\"\n    ));\n    1\n}\n","sourceCodeStart":1,"sourceCodeEnd":31,"githubUrl":"https://github.com/pbakaus/impeccable/blob/2bc2879276c1f321a53c4ca99d3371e411329b52/crates/detect/src/skills.rs#L1-L31","documentation":"Companion message to the unknown-skills-command error: when skills::run hits its catch-all arm it prints a second stderr line, \"Run 'impeccable --help' for available commands.\", to direct the user to the valid command surface, then exits 1. It is emitted together with \"Unknown skills command: <arg>\" and never appears alone.","triggerScenarios":"Always co-emitted with error 125: `impeccable skills <arg>` where <arg> is outside {install, link, update, check, help, --help, -h, \"\"}.","commonSituations":"Same as the unknown skills command case — invalid subcommand guesses, typo'd verbs, stale scripts referencing removed subcommands.","solutions":["Run `impeccable --help` as the message instructs and pick a supported top-level command","Restrict `impeccable skills` usage to install/link/update/check","Fall back to `npx impeccable <verb>` for verbs this build does not implement"],"exampleFix":"// before\n$ impeccable skills foo\nUnknown skills command: foo\nRun 'impeccable --help' for available commands.\n\n// after\n$ impeccable --help   # then choose a valid command","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// This line is advisory, printed alongside 'Unknown skills command'\nconst res = spawnSync('impeccable', ['skills', sub]);\nif (res.status !== 0) {\n  // parse both stderr lines; follow the --help pointer programmatically if needed\n}","preventionTips":["Treat any `impeccable skills` non-zero exit as a signal to consult `impeccable --help`","Keep scripts limited to the documented skills verbs"],"tags":["cli","help"],"backgroundTag":"command-not-found","analyzedSha":"2bc2879276c1f321a53c4ca99d3371e411329b52","analyzedAt":"2026-09-08T04:51:14.109Z","contentChangedAt":"2026-09-08T04:51:14.109Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}