chore(cli): rename package to claudemesh-cli (unscoped) for npm publish
Some checks failed
CI / Tests / 🧪 Test (push) Has been cancelled

@claudemesh/cli was already taken on npm by an unrelated project
(claudemesh "domain packages", v1.0.7). PM picked option A: publish
unscoped as claudemesh-cli. Binary name stays "claudemesh" — users
type the natural thing on install:

  npm install -g claudemesh-cli
  claudemesh install
  claudemesh join ic://join/...

renamed references everywhere:
- apps/cli/package.json: name
- apps/cli/README.md: title + install command
- apps/cli/src/{index.ts, mcp/server.ts, commands/install.ts} headers
- docs/QUICKSTART.md: install command, version banner, npx hint
- docs/roadmap.md: package name

also (PM journey-friction #5): surface the "restart Claude Code" step
LOUDLY in install output. Added a yellow-bold warning line after the
✓ success lines so new users don't miss the restart step (MCP tools
only load on Claude Code restart).

  ⚠  RESTART CLAUDE CODE for MCP tools to appear.

ANSI colors gated on isTTY + NO_COLOR/TERM=dumb guards.

bundle rebuilt. ready for npm publish pending user's `npm adduser`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alejandro Gutiérrez
2026-04-05 14:41:59 +01:00
parent 6a198034a0
commit 64ca600195
7 changed files with 24 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
# @claudemesh/cli # claudemesh-cli
Client tool for claudemesh — install once per machine, join one or more Client tool for claudemesh — install once per machine, join one or more
meshes, and your Claude Code sessions can talk to peers on demand. meshes, and your Claude Code sessions can talk to peers on demand.
@@ -7,7 +7,7 @@ meshes, and your Claude Code sessions can talk to peers on demand.
```sh ```sh
# From npm (once published) # From npm (once published)
npm install -g @claudemesh/cli npm install -g claudemesh-cli
# Or from the monorepo during dev # Or from the monorepo during dev
cd apps/cli && bun link cd apps/cli && bun link

View File

@@ -1,5 +1,5 @@
{ {
"name": "@claudemesh/cli", "name": "claudemesh-cli",
"version": "0.1.0", "version": "0.1.0",
"description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.", "description": "Claude Code MCP client for claudemesh — peer mesh messaging between Claude sessions.",
"keywords": [ "keywords": [

View File

@@ -90,7 +90,7 @@ function resolveEntry(): string {
* Build the MCP server entry for Claude Code's config. * Build the MCP server entry for Claude Code's config.
* *
* Two modes: * Two modes:
* - Installed globally (npm i -g @claudemesh/cli): use `claudemesh` * - Installed globally (npm i -g claudemesh-cli): use `claudemesh`
* as the command, relies on it being on PATH. * as the command, relies on it being on PATH.
* - Local dev (bun apps/cli/src/index.ts): use `bun <absolute-path>`. * - Local dev (bun apps/cli/src/index.ts): use `bun <absolute-path>`.
*/ */
@@ -167,16 +167,25 @@ export function runInstall(): void {
process.exit(1); process.exit(1);
} }
// ANSI color helpers — stick to 8-color set so terminals without
// truecolor still render. Fall back to plain if NO_COLOR or dumb TERM.
const useColor =
!process.env.NO_COLOR && process.env.TERM !== "dumb" && process.stdout.isTTY;
const bold = (s: string) => (useColor ? `\x1b[1m${s}\x1b[22m` : s);
const yellow = (s: string) => (useColor ? `\x1b[33m${s}\x1b[39m` : s);
const dim = (s: string) => (useColor ? `\x1b[2m${s}\x1b[22m` : s);
console.log(`✓ MCP server "${MCP_NAME}" ${action}`); console.log(`✓ MCP server "${MCP_NAME}" ${action}`);
console.log(` config: ${CLAUDE_CONFIG}`); console.log(dim(` config: ${CLAUDE_CONFIG}`));
console.log( console.log(
dim(
` command: ${desired.command}${desired.args?.length ? " " + desired.args.join(" ") : ""}`, ` command: ${desired.command}${desired.args?.length ? " " + desired.args.join(" ") : ""}`,
),
); );
console.log(""); console.log("");
console.log("Restart Claude Code to load the MCP server."); console.log(yellow(bold("⚠ RESTART CLAUDE CODE")) + yellow(" for MCP tools to appear."));
console.log("Then join a mesh:");
console.log(""); console.log("");
console.log(" claudemesh join <invite-link>"); console.log(`Next: ${bold("claudemesh join ic://join/<your-invite-link>")}`);
} }
export function runUninstall(): void { export function runUninstall(): void {

View File

@@ -1,5 +1,5 @@
/** /**
* @claudemesh/cli entry point. * claudemesh-cli entry point.
* *
* Dispatches between two modes: * Dispatches between two modes:
* - `claudemesh mcp` → MCP server (stdio transport) * - `claudemesh mcp` → MCP server (stdio transport)

View File

@@ -1,5 +1,5 @@
/** /**
* MCP server (stdio transport) for @claudemesh/cli. * MCP server (stdio transport) for claudemesh-cli.
* *
* Starts BrokerClient connections for every mesh in config on boot, * Starts BrokerClient connections for every mesh in config on boot,
* then routes the 5 MCP tools through them. * then routes the 5 MCP tools through them.

View File

@@ -21,14 +21,14 @@ That's it.
## Step 1 — Install the CLI *(~30s)* ## Step 1 — Install the CLI *(~30s)*
```sh ```sh
npm install -g @claudemesh/cli npm install -g claudemesh-cli
claudemesh --version claudemesh --version
``` ```
You should see: You should see:
``` ```
@claudemesh/cli v0.1.x claudemesh-cli v0.1.x
``` ```
> **From source** (if npm install fails): clone the repo, then > **From source** (if npm install fails): clone the repo, then
@@ -179,7 +179,7 @@ to memorize them. Just describe what you want in plain English.
**`claudemesh: command not found`** **`claudemesh: command not found`**
→ `npm install -g` may have installed to a path not on your `$PATH`. → `npm install -g` may have installed to a path not on your `$PATH`.
Try `npm bin -g` to see the install location, and add it to your shell Try `npm bin -g` to see the install location, and add it to your shell
rc. Or use `npx @claudemesh/cli` until you fix the path. rc. Or use `npx claudemesh-cli` until you fix the path.
**`invalid invite: signature verification failed`** **`invalid invite: signature verification failed`**
→ The invite was tampered with or expired. Ask the mesh owner to → The invite was tampered with or expired. Ask the mesh owner to

View File

@@ -10,7 +10,7 @@ broker, ready for real teams.
- Signed ed25519 identities + signed invite links (`ic://join/...`) - Signed ed25519 identities + signed invite links (`ic://join/...`)
- Hello-sig handshake auth against the broker - Hello-sig handshake auth against the broker
- Hosted broker at `wss://ic.claudemesh.com/ws` - Hosted broker at `wss://ic.claudemesh.com/ws`
- `@claudemesh/cli` — join, list, leave, MCP server - `claudemesh-cli` — join, list, leave, MCP server
- Claude Code MCP tools: `list_peers`, `send_message`, `check_messages`, - Claude Code MCP tools: `list_peers`, `send_message`, `check_messages`,
`set_summary`, `set_status` `set_summary`, `set_status`
- Dashboard (beta): presence, live traffic, peer summaries - Dashboard (beta): presence, live traffic, peer summaries