@prave/cli 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +86 -16
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -27,11 +27,35 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
27
27
  const pkg = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf8'));
28
28
  const program = new Command()
29
29
  .name('prave')
30
- .description('Prave — Developer platform for Claude Skills')
31
- .version(pkg.version);
32
- program.command('login').description('Authenticate this machine').action(loginCommand);
33
- program.command('logout').description('Remove stored credentials').action(logoutCommand);
34
- program.command('whoami').description('Show the signed-in user').action(whoamiCommand);
30
+ .description([
31
+ 'Prave — Developer platform for Claude Skills.',
32
+ '',
33
+ ' Lifecycle: discover · install · author · sync · audit · ship.',
34
+ ' Targets ~/.claude/skills/ by default; multi-agent via `prave deploy`.',
35
+ '',
36
+ ' Quick start:',
37
+ ' prave login # device-code auth in your browser',
38
+ ' prave search <q> # discover community skills',
39
+ ' prave install <slug> # pull into ~/.claude/skills/',
40
+ ' prave usage hook install # real-time invocation tracking',
41
+ '',
42
+ ' Docs: https://prave.app/docs',
43
+ ' Issues: https://github.com/eppstudio/prave/issues',
44
+ ].join('\n'))
45
+ .version(pkg.version)
46
+ .addHelpText('after', '\nRun `prave <cmd> --help` for command-specific options.');
47
+ program
48
+ .command('login')
49
+ .description('Authenticate this machine via device-code (browser opens, no password is ever typed). Tokens are saved chmod-600 to ~/.prave/credentials.json and refresh automatically.')
50
+ .action(loginCommand);
51
+ program
52
+ .command('logout')
53
+ .description('Remove stored credentials from ~/.prave/credentials.json. Re-run `prave login` to authenticate again.')
54
+ .action(logoutCommand);
55
+ program
56
+ .command('whoami')
57
+ .description('Print the signed-in user, plan, and credentials path. Detects stale credentials predating the refresh-token flow.')
58
+ .action(whoamiCommand);
35
59
  program
36
60
  .command('import')
37
61
  .description('Scan ~/.claude/skills/ — optionally upload to Prave')
@@ -41,9 +65,9 @@ program
41
65
  .action(importCommand);
42
66
  program
43
67
  .command('install <slug>')
44
- .description('Install a Skill into ~/.claude/skills/ (resolves deps)')
45
- .option('--no-deps', 'skip transitive dependency resolution')
46
- .option('--force', 'install even if SKILL.md is empty')
68
+ .description('Install a Skill from the registry into ~/.claude/skills/<slug>/. Resolves and installs transitive dependencies by default. Free plan caps at 5 installs/month Pro and Max are unlimited.')
69
+ .option('--no-deps', 'skip transitive dependency resolution (don\'t pull deps the Skill declares)')
70
+ .option('--force', 'install even when the SKILL.md content is empty (rare; use for stub Skills)')
47
71
  .action(installCommand);
48
72
  program
49
73
  .command('uninstall <slug>')
@@ -61,11 +85,11 @@ program
61
85
  .action((slug, opts) => updateCommand(slug, opts));
62
86
  program
63
87
  .command('list')
64
- .description('List installed Skills (default) or remote ones')
65
- .option('--remote', 'list Skills from your Prave account')
66
- .option('--verbose', 'show enriched intelligence (tokens, tier, agents)')
67
- .option('--conflicts', 'only show skills involved in conflicts')
68
- .option('--heavy', 'only show skills with >5k estimated tokens')
88
+ .description('List Skills installed locally (default) or stored on your Prave account (--remote).')
89
+ .option('--remote', 'fetch Skills you own + have installed from the Prave API instead of disk')
90
+ .option('--verbose', 'show enriched intelligence: estimated tokens, token tier, target agents')
91
+ .option('--conflicts', 'narrow to Skills flagged as conflicting with another by trigger overlap')
92
+ .option('--heavy', 'narrow to Skills above the heavy-tier threshold (>5k estimated tokens)')
69
93
  .action(listCommand);
70
94
  program.command('search <query>').description('Search public Skills').action(searchCommand);
71
95
  program
@@ -136,10 +160,56 @@ program
136
160
  .action(findCommand);
137
161
  program
138
162
  .command('deploy <skillname>')
139
- .description('Deploy a skill to one or all configured agents')
140
- .option('--agent <agent>', 'target a single agent (default: all)')
141
- .option('--dry-run', 'log destinations but write no files')
163
+ .description('Deploy a Skill to every configured agent (Claude Code, Codex, Cursor, Gemini, Cline, Amp). Free plan deploys to Claude Code only; Pro and Max deploy across all six. The skill must already exist locally — use `prave install` first or point to a SKILL.md folder.')
164
+ .option('--agent <agent>', 'restrict deploy to a single agent (claude-code | codex | cursor | gemini | cline | amp)')
165
+ .option('--dry-run', 'log every destination path but write nothing — preview before committing')
142
166
  .action(deployCommand);
167
+ // ─── Help command — full quick-reference ───────────────────────────
168
+ program
169
+ .command('cheat')
170
+ .description('Print a one-page cheat sheet of every command.')
171
+ .action(() => {
172
+ console.log([
173
+ 'Prave CLI cheat sheet',
174
+ '',
175
+ 'Auth & account',
176
+ ' prave login # device-code browser auth',
177
+ ' prave logout # forget credentials',
178
+ ' prave whoami # signed-in user + plan',
179
+ '',
180
+ 'Discover & install',
181
+ ' prave search <q> # public skill search',
182
+ ' prave find <q> [--smart|--local] # smart cross-source search',
183
+ ' prave install <slug> [--no-deps] # install into ~/.claude/skills/',
184
+ ' prave uninstall <slug> # remove a local skill',
185
+ ' prave list [--remote] [--verbose] # what is installed (or remote)',
186
+ ' prave export <slug> -o file.md # dump SKILL.md without installing',
187
+ '',
188
+ 'Authoring & sync',
189
+ ' prave import [--upload --public] # publish ~/.claude/skills/ to Prave',
190
+ ' prave deploy <skill> [--agent x] # mirror to other agents',
191
+ ' prave sync # pull every installed update',
192
+ ' prave update [slug] [--dry-run] # diff + pull outdated skills',
193
+ ' prave diff <slug> # local vs registry diff',
194
+ '',
195
+ 'Intelligence',
196
+ ' prave overview [--json] # token cost summary',
197
+ ' prave whatdoes <skill> # triggers, tokens, conflicts',
198
+ ' prave conflicts # cross-skill collision check',
199
+ ' prave optimize # heavy / underused / mergeable',
200
+ '',
201
+ 'Usage tracking (Pro+)',
202
+ ' prave usage hook install # real-time PostToolUse hook',
203
+ ' prave usage hook uninstall',
204
+ ' prave usage scan [--since 7d] # transcript scanner',
205
+ ' prave usage status # hook health + recent counts',
206
+ '',
207
+ 'Settings',
208
+ ' prave settings # configure agents + paths',
209
+ '',
210
+ 'Docs: https://prave.app/docs',
211
+ ].join('\n'));
212
+ });
143
213
  program.parseAsync().catch((err) => {
144
214
  console.error(err.message);
145
215
  process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prave/cli",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Prave CLI — import, export, install, sync Claude Skills.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,7 @@
16
16
  "open": "^10.1.0",
17
17
  "ora": "^8.0.1",
18
18
  "undici": "^6.18.0",
19
- "@prave/shared": "1.0.2"
19
+ "@prave/shared": "1.0.3"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/node": "^20.12.7",