@wavespeed/cli 0.4.7 → 0.4.9

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.
package/README.md CHANGED
@@ -115,15 +115,19 @@ MiniMax H3 is the open-weights default: cheap, fast, and native stereo audio —
115
115
  No MCP server, no daemon. The CLI **is** the interface — agents already know how to run shell commands.
116
116
 
117
117
  ```bash
118
- wavespeed skill install # writes .claude/skills/wavespeed/SKILL.md
118
+ wavespeed skill install # writes .claude/skills/wavespeed/SKILL.md and .agents/skills/wavespeed/SKILL.md
119
119
  ```
120
120
 
121
121
  The skill teaches the agent the three-step pattern: `models` to find, `run <id> -h` to discover params, `run <id> -p "…" --json` to execute. Every command supports `--json` for clean piping.
122
122
 
123
123
  **OpenCode** loads the same file with no extra steps — `.claude/skills/` is on its skill search path.
124
124
 
125
+ **Codex** reads `.agents/skills/`, which the same command writes. For a one-line install that also wires up the MCP server: `codex plugin marketplace add WaveSpeedAI/codex-plugin-wavespeed-cli` ([WaveSpeedAI/codex-plugin-wavespeed-cli](https://github.com/WaveSpeedAI/codex-plugin-wavespeed-cli)).
126
+
125
127
  **DeepSeek Harness (dsh)**: the same skill is packaged for dsh's `.dsh/skills` layout at [WaveSpeedAI/wavespeed-dsh-skill](https://github.com/WaveSpeedAI/wavespeed-dsh-skill).
126
128
 
129
+ **Kimi Code CLI** reads `.claude/skills/` too, so `wavespeed skill install` is enough. For a one-line install that also wires up the MCP server, use the plugin: `/plugins install https://github.com/WaveSpeedAI/wavespeed-kimi-plugin` ([WaveSpeedAI/wavespeed-kimi-plugin](https://github.com/WaveSpeedAI/wavespeed-kimi-plugin)).
130
+
127
131
  ## Commands
128
132
 
129
133
  ```
@@ -28,9 +28,8 @@ export function registerBalance(program) {
28
28
  process.stdout.write(JSON.stringify({ balance, currency: 'USD', top_up_url: TOPUP_URL }, null, 2) + '\n');
29
29
  return;
30
30
  }
31
- const display = balance.toFixed(balance < 10 ? 3 : 2);
32
31
  console.log();
33
- console.log(chalk.bold('Balance: ') + chalk.green(`$${display}`));
32
+ console.log(chalk.bold('Balance: ') + chalk.green(`$${balance}`));
34
33
  console.log(chalk.gray('Top up: ') + chalk.cyan(TOPUP_URL));
35
34
  console.log();
36
35
  if (opts.topUp) {
@@ -7,11 +7,22 @@ function skillSourcePath() {
7
7
  // dist/commands/skill.js -> ../../skills/SKILL.md
8
8
  return path.resolve(here, '..', '..', 'skills', 'SKILL.md');
9
9
  }
10
+ // Two discovery roots cover every agent we target: Claude Code, Cursor and
11
+ // OpenCode read `.claude/skills/`; Codex, Kimi Code and the wider agents.md
12
+ // ecosystem read `.agents/skills/`. Writing both keeps a single install
13
+ // command working everywhere.
14
+ export const SKILL_ROOTS = ['.claude', '.agents'];
15
+ export function writeSkills(cwd = process.cwd()) {
16
+ return SKILL_ROOTS.map((root) => {
17
+ const dest = path.join(cwd, root, 'skills', 'wavespeed', 'SKILL.md');
18
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
19
+ fs.copyFileSync(skillSourcePath(), dest);
20
+ return dest;
21
+ });
22
+ }
23
+ /** @deprecated use writeSkills — kept for callers that expect the Claude path. */
10
24
  export function writeSkill(cwd = process.cwd()) {
11
- const dest = path.join(cwd, '.claude', 'skills', 'wavespeed', 'SKILL.md');
12
- fs.mkdirSync(path.dirname(dest), { recursive: true });
13
- fs.copyFileSync(skillSourcePath(), dest);
14
- return dest;
25
+ return writeSkills(cwd)[0];
15
26
  }
16
27
  export function registerSkill(program) {
17
28
  const skill = program
@@ -19,19 +30,21 @@ export function registerSkill(program) {
19
30
  .description('Install a Wavespeed skill for Claude Code, Cursor, Codex, and other coding agents');
20
31
  skill
21
32
  .command('install', { isDefault: true })
22
- .description('Drop a SKILL.md into .claude/skills/wavespeed/ so Claude Code, Cursor, and Codex know how to call the CLI')
33
+ .description('Drop a SKILL.md into .claude/skills/ and .agents/skills/ so Claude Code, Cursor, Codex, Kimi Code and other agents know how to call the CLI')
23
34
  .option('--print', 'Print the skill body to stdout instead of writing a file')
24
35
  .action((opts) => {
25
36
  if (opts.print) {
26
37
  process.stdout.write(fs.readFileSync(skillSourcePath(), 'utf8'));
27
38
  return;
28
39
  }
29
- const dest = writeSkill();
40
+ const dests = writeSkills();
30
41
  console.log();
31
- console.log(chalk.green('Installed skill: ') + chalk.cyan(path.relative(process.cwd(), dest)));
42
+ for (const dest of dests) {
43
+ console.log(chalk.green('Installed skill: ') + chalk.cyan(path.relative(process.cwd(), dest)));
44
+ }
32
45
  console.log();
33
46
  console.log(chalk.bold('You\'re set.'));
34
- console.log(chalk.gray(' Claude Code, Cursor, and other agents auto-discover .claude/skills/*.'));
47
+ console.log(chalk.gray(' Claude Code, Cursor and OpenCode read .claude/skills/*; Codex, Kimi Code and other agents read .agents/skills/*.'));
35
48
  console.log(chalk.gray(' Agents will call the CLI directly — no MCP server, no extra config.'));
36
49
  console.log();
37
50
  console.log(chalk.gray(' Quick check: ask the agent to run ') + chalk.cyan('wavespeed models') + chalk.gray('.'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wavespeed/cli",
3
- "version": "0.4.7",
3
+ "version": "0.4.9",
4
4
  "description": "WaveSpeed CLI — one command to run any WaveSpeed AI model from your terminal.",
5
5
  "publishConfig": {
6
6
  "access": "public"