Add skills subcommand and fix npm metadata

New `impeccable skills` CLI with three subcommands:
- `skills help`: fetches and displays all 20 commands from the API
- `skills install`: delegates to `npx skills add pbakaus/impeccable`
- `skills update`: tries `npx skills update` first; if skills aren't
  managed by the skills CLI, downloads the universal bundle from
  impeccable.style and overwrites provider folders directly, with
  git-based modification detection and confirmation prompt

Also fixes npm metadata: homepage -> impeccable.style, license -> Apache-2.0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Paul Bakaus
2026-03-30 13:04:43 -07:00
co-authored by Claude Opus 4.6
parent 8d0e9de26d
commit da8a59e981
4 changed files with 302 additions and 5 deletions
+8 -3
View File
@@ -5,7 +5,7 @@
*
* Usage:
* npx impeccable detect [file-or-dir-or-url...]
* npx impeccable detect --fast --json src/
* npx impeccable skills help|install|update
* npx impeccable --help
*/
@@ -22,12 +22,15 @@ if (!command || command === '--help' || command === '-h') {
Commands:
detect [file-or-dir-or-url...] Scan for UI anti-patterns and design quality issues
skills help List all available skills and commands
skills install Install impeccable skills into your project
skills update Update skills to the latest version
Options:
--help Show this help message
--version Show version number
Run 'impeccable detect --help' for detection-specific options.`);
Run 'impeccable <command> --help' for command-specific options.`);
process.exit(0);
}
@@ -38,10 +41,12 @@ if (command === '--version' || command === '-v') {
}
if (command === 'detect') {
// Remove 'detect' from argv so the detection script sees the right args
process.argv = [process.argv[0], process.argv[1], ...args.slice(1)];
const { detectCli } = await import('../source/skills/critique/scripts/detect-antipatterns.mjs');
await detectCli();
} else if (command === 'skills') {
const { run } = await import('./commands/skills.mjs');
await run(args.slice(1));
} else {
console.error(`Unknown command: ${command}`);
console.error(`Run 'impeccable --help' for available commands.`);