pbakaus/impeccable · error
"init" is not a CLI command. Type /impeccable init in your A
Error message
"init" is not a CLI command. Type /impeccable init in your AI coding agent's chat (Claude Code, Cursor, Codex, ...), not in this terminal.
What it means
The impeccable CLI does not implement 'init' as a terminal command; initialization is an agent-chat skill verb. Running `impeccable init` in a shell hits this arm of run() in main.rs, prints the INIT_MESSAGE telling the user to type `/impeccable init` inside their AI coding agent (Claude Code, Cursor, Codex, ...), and exits with code 1.
Source
Thrown at crates/cli/src/main.rs:97
let organic = |html: &str| -> Vec<(Option<String>, String)> {
impeccable_core::checks::css_scan::scan_css_text_for_organic_clip_path(html)
.into_iter()
.map(|f| (f.selector, f.snippet))
.collect()
};
impeccable_comp_verbs::run_build_phase(rest, io, &organic)
}
"hook" => impeccable_hook::run_hook(rest, io, engines().html),
"hook-before-edit" => impeccable_hook::run_hook_before_edit(rest, io, engines().html),
"hooks" | "hook-admin" => impeccable_hook::run_hook_admin(rest, io),
v if v.starts_with("live") => impeccable_live::run(v, rest, io),
// `npx impeccable src/` shorthand: a path-shaped, flag, URL, or existing
// first arg is a detect target (cli.js looksLikeDetectTarget).
v if impeccable_detect::looks_like_detect_target(v, &io.cwd.to_string_lossy()) => {
impeccable_detect::run_detect(args, io, &engines())
}
"init" => {
io.err(impeccable_detect::INIT_MESSAGE);
1
}
other => {
io.err(&format!(
"Unknown command: \"{other}\"\n\nTo see a list of supported commands, run:\n impeccable --help\n"
));
1
}
}
}
/// The npm `impeccable` package version `cli.js --version` prints (its
/// `package.json`), tracked separately from the crate version.
pub const CLI_VERSION: &str = "4.0.0";
/// The engines wired into `impeccable detect`: the static HTML engine
/// (crates/html). The browser engine (crates/browser) plugs in here once it
/// lands; until then URL scans report the puppeteer message.View on GitHub (pinned to 2bc2879276)
Solutions
- Run `/impeccable init` in your AI coding agent's chat (Claude Code, Cursor, Codex, ...) instead of the terminal
- Run `impeccable --help` to see the commands the terminal CLI actually supports
- If you meant project setup, open your agent chat and invoke the impeccable skill's init verb there
Example fix
// before (terminal) $ impeccable init // after (agent chat) /impeccable init
Defensive patterns
Strategy: validation
Validate before calling
if [ "$1" = "init" ]; then echo 'Run /impeccable init in your AI coding agent chat, not the terminal'; exit 1; fi
Try / catch
if impeccable init; then :; else echo 'init is an agent-chat verb; use /impeccable init in Claude Code/Cursor/Codex'; fi
Prevention
- Remember the terminal CLI and agent-chat skill verbs are separate surfaces
- Use --help to discover valid terminal commands
- Never strip the leading slash from /impeccable init
When it happens
Trigger: Executing `impeccable init` (or any argv where the first arg is literally "init") in a terminal; the match in run() routes "init" to io.err(INIT_MESSAGE) and returns 1.
Common situations: Users migrating from other CLIs where `init` is a normal setup subcommand; copy-pasting the agent-chat instruction `/impeccable init` as a shell command but dropping the slash; skimming docs and assuming init configures the terminal tool.
Related errors
- Unknown command: "{other}" To see a list of supported comma
- usage: build-phase.mjs start --comp <png> [--breakpoint WxH]
- build-phase: start needs --comp <approved comp png> (comp al
- build-phase: record hero --build <png>
- build-phase: finish --disposition ship|fix|rebuild|recapture
AI-assisted analysis of pbakaus/impeccable@2bc2879276 (2026-09-08).
Data as JSON: /api/errors/e3342b361b85368a.
Report an issue: GitHub.