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

zrobi

v0.1.1

Published

Sync slash commands across AI coding tools (Claude Code, Gemini CLI, Codex CLI, etc.)

Readme

zrobi

Sync slash commands across AI coding tools. Define once in ~/.zrobi/commands/, run zrobi build, and they appear in Claude Code, Gemini CLI, Codex CLI, OpenCode, and Cline.

Why

Each tool has its own command format and location:

| Tool | Location | Format | | ----------- | ------------------------------- | --------------- | | Claude Code | ~/.claude/commands/ | Markdown + YAML | | Codex CLI | ~/.codex/prompts/ | Markdown + YAML | | Gemini CLI | ~/.gemini/commands/ | TOML | | OpenCode | ~/.config/opencode/command/ | Markdown + YAML | | Cline | ~/Documents/Cline/Workflows/ | Markdown |

Maintaining the same commands across all of them by hand is tedious. zrobi handles the conversion and copying.

Installation

npm install -g zrobi

# Or use without installing
npx zrobi status

On first run, zrobi creates ~/.zrobi/commands/ automatically. Add your commands there.

Usage

# Check which tools are detected
zrobi status

# Build commands for all enabled tools
zrobi build

# Build for one tool only
zrobi build --tool gemini

# Preview without writing anything
zrobi build --dry-run

Sync mode

By default, zrobi build only adds and updates files. Deleted commands stay in tool directories until you remove them manually.

Use --sync to also clean up stale files:

zrobi build --sync --dry-run  # Preview what would be deleted
zrobi build --sync            # Do it

Warning: --sync deletes any files in tool directories not managed by zrobi, including manual customizations. Always run with --dry-run first.

Writing commands

Commands use Claude Code's format (Markdown + YAML frontmatter). Create a file in ~/.zrobi/commands/:

---
description: Short description shown in command list
argument-hint: '[optional-arg]'
---

Your prompt content here.

Use $ARGUMENTS for user input.
Use $1, $2 for positional arguments.

zrobi automatically converts placeholders per tool (e.g., $ARGUMENTS{{args}} for Gemini).

Then run zrobi build.

Subdirectories

Organize commands in folders:

~/.zrobi/commands/
├── git/
│   ├── commit.md      → /git:commit
│   └── review-pr.md   → /git:review-pr
└── deploy.md          → /deploy

Note: Codex CLI doesn't support subdirectories, so git/commit.md becomes git-commit.md. Avoid naming collisions like having both git-commit.md and git/commit.md.

Configuration

Copy config.example.yaml to ~/.zrobi/config.yaml and edit:

tools:
  claude:
    enabled: true
    global_path: ~/.claude/commands
  gemini:
    enabled: true
    global_path: ~/.gemini/commands

# Skip specific commands for specific tools
exclude:
  gemini:
    - some-claude-only-command

Per-tool overrides in frontmatter:

---
description: Default description
gemini:
  description: Gemini-specific description
---

Auxiliary files

README.md files in ~/.zrobi/commands/ are copied verbatim (not parsed as commands). This lets you include documentation alongside your commands.

~/.zrobi/commands/
├── README.md        # Copied to all tool directories
├── git/
│   ├── README.md    # Copied to git/ subdirectory
│   └── commit.md
└── deploy.md

Configure patterns in ~/.zrobi/config.yaml:

auxiliary:
  patterns:
    - "**/README.md"    # Default
    - "**/NOTES.md"     # Additional pattern

Note: Cline skips auxiliary files because it would parse README.md as a command.

Limitations

  • Global commands only - No project-level command support yet
  • One-way sync - Edits made directly in tool directories get overwritten on next build
  • Cursor/Windsurf - Not implemented (project-only commands complicate things)

Development

pnpm install
pnpm dev
pnpm test
pnpm lint
pnpm typecheck
pnpm build

Adding a new tool: create an adapter in src/adapters/ following the existing pattern.

License

MIT