npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

unclaw-cli

v0.2.0

Published

Give your coding agent (Claude Code, Codex, opencode, OpenClaw, Gemini CLI, Cursor, Cline, ...) a voice: the UnClaw 3D avatar's `speak` capability via one MCP server + a cross-agent /unclaw skill.

Readme

unclaw

Give any coding agent a voice: wire the UnClaw 3D avatar's speak capability into Claude Code, Codex, opencode, OpenClaw, Gemini CLI, Cursor, Cline, Roo, Windsurf — with one command.

npx unclaw-cli               # detect installed agents + connect them all
npx unclaw-cli detect        # list what's supported / installed
npx unclaw-cli install codex opencode   # only these
npx unclaw-cli status        # agents connected + is UnClaw live + talkativeness
npx unclaw-cli test          # send a test line to the avatar (verify the chain)
npx unclaw-cli doctor        # diagnose why speaking isn't working
npx unclaw-cli uninstall     # remove

(The installed command is unclaw , npm i -g unclaw-cli then just unclaw ....)

Then start your agent — it gains a speak tool. Launch UnClaw in passthrough mode (/unclaw, or open "unclaw://passthrough") and the avatar voices whatever the agent decides to say aloud.

How it works

The whole capability is one stdio MCP server (unclaw-speak.mjs --mcp, exposing speak + launch_unclaw). Because MCP is the common substrate across every modern coding agent, "support a new agent" just means registering that server + dropping short guidance — no per-agent reimplementation. The speak tool's own description carries the usage rules, so agents know how to use it even without an instructions file.

speak(text) → the agent's shim → soul /passthrough/speak → the UnClaw renderer → TTS + lipsync + facial expression on the avatar. The user controls talkativeness + mute inside UnClaw; every speak response echoes those back so the agent self-adjusts.

What it does per agent (all verified against official docs)

| Agent | MCP registration | Guidance | /unclaw (skill / command) | |---|---|---|---| | Claude Code | claude mcp add --scope user | ~/.claude/CLAUDE.md | skill ~/.claude/skills/unclaw | | Codex CLI | ~/.codex/config.toml (startup_timeout_sec) | ~/.codex/AGENTS.md | skill ~/.agents/skills/unclaw (+ legacy /prompts:unclaw) | | opencode | ~/.config/opencode/opencode.json (mcp, type:"local") | ~/.config/opencode/AGENTS.md | skill ~/.config/opencode/skills/unclaw + /unclaw command | | OpenClaw | ~/.openclaw/openclaw.json (mcp.servers) | workspace AGENTS.md | skill ~/.openclaw/skills/unclaw/unclaw | | Gemini CLI | ~/.gemini/settings.json (mcpServers) | ~/.gemini/GEMINI.md | /unclaw command | | Cursor | ~/.cursor/mcp.json (type:"stdio") | tool description | — (no user commands) | | Cline | VS Code globalStorage cline_mcp_settings.json (autoApprove) | tool description | — | | Roo Code | globalStorage mcp_settings.json (alwaysAllow) | tool description | — | | Windsurf | ~/.codeium/windsurf/mcp_config.json | tool description | — | | Antigravity | ~/.gemini/config/mcp_config.json (mcpServers, CLI + IDE) | tool description | skill ~/.gemini/antigravity-cli/skills/unclaw/unclaw |

Every agent with an extension point gets a first-class /unclaw that launches passthrough + switches on the speak tool. The rest rely on the launch_unclaw MCP tool (and auto-launch on first speak).

Notes baked in from the research pass:

  • SKILL.md is a cross-agent standard (AgentSkills). The same skill file is consumed by Claude Code, Codex, opencode, and OpenClaw — a skill named unclaw even auto-becomes OpenClaw's /unclaw slash command.
  • Codex: custom prompts are deprecated in favor of skills, so the skill is primary (the prompt stays as a legacy bonus). We write config.toml directly to set startup_timeout_sec = 30 — Codex's 10s default trips a spurious "failed to connect" on a Node cold start.
  • OpenClaw: external stdio MCP-client support is shipped + stable (release 2026.3.31). The server goes under nested mcp.servers (not mcpServers); one entry serves the embedded agent and is projected into delegated coding CLIs.
  • The runtime is copied to a stable ~/.unclaw/bin/unclaw-speak.mjs so configs survive npx-cache eviction.
  • Every config uses an absolute node path — Dock-launched GUI editors (Cursor/Cline/Windsurf) get a minimal PATH, and in the UnClaw app process.execPath is Electron, not node.
  • MCP JSON writes refuse to run if an existing config can't be parsed.
  • AGENTS.md is the emerging cross-agent instructions standard (Codex, opencode, OpenClaw, Cursor, Gemini, Windsurf, ...).

Distribution

Two channels, one shared core (lib/installer.mjs):

  1. CLI — publish this package to npm; users run npx unclaw.
  2. In-app — the UnClaw app's Connect your coding agent screen calls the same detectAgents() / install() core over IPC (one click per agent).

Node.js is required only where the MCP server runs. Gemini CLI users already have it; for the others the installer resolves an absolute node and, if none exists, should prompt to install one.

Cross-platform

macOS, Windows, Linux. Most agents key their config off the home dir (~/.codex, ~/.gemini, ~/.cursor, ...) which is portable; the OS-specific bits , the VS Code globalStorage root (Cline/Roo) and finding node , are handled in lib/platform.mjs (Library/Application Support · %APPDATA% · XDG_CONFIG_HOME; which · where).

Requirements

Node 18+. Node is only needed where the MCP server runs; the installer resolves an absolute node path (Dock/Start-menu-launched GUI editors get a minimal PATH).