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

tryforge

v0.1.1

Published

The Homebrew for AI Agents — one CLI for skills, MCPs, plugins, agents

Readme

Forge — The Homebrew for AI Agents

CI npm version npm downloads license MIT registry GitHub stars

One CLI to install skills, MCPs, plugins, agents on any harness.

brew is for system packages. forge is for AI agent packages.

curl -fsSL https://raw.githubusercontent.com/oomerevren-beep/forge/main/install.sh | sh
# or
npm i -g tryforge

forge add anthropics/plan          # skill → all 7 harnesses at once
forge add mcp/filesystem           # MCP server → auto mcp.json
forge add obra/superpowers         # agent collection

No more git clone + cp SKILL.md. One command, every harness. Star to get notified at v1.0.


Table of Contents


Why Forge?

2026: everything is a skill/plugin/MCP — but install is still stone age. Every harness has its own folder, no versioning, no update.

  • obra/superpowers — 280k stars — install is manual git clone + cp
  • deepseek-harness — 207k stars in 18 days — proves "Everything is a Plugin", but DeepSeek-only
  • anthropics/skills — 172k stars — Claude-only
  • mcp-registry — MCP-only, no skills/agents

Result: a developer using Claude Code + Codex + OpenCode + Cursor installs the same package 4 times by hand. No update, no forge.toml, no team sync.

Forge fixes it: 6 package types × 5+ harnesses × one CLI. Like brew unified system packages, forge unifies agent packages. Viral loop: creators promote forge add me to distribute their own work.

| Type | Example | What it does | |------|---------|--------------| | skill | anthropics/plan | SKILL.md capability (Anthropic standard) | | mcp | mcp/filesystem | Model Context Protocol server | | plugin | dsh/desktop | Harness extension | | agent | agency/frontend | Subagent definition | | command | cmd/plan | Slash command /plan | | hook | hook/pre-tool | Lifecycle hook |


Features

  • Universal — 6 types, one registry. Skills + MCPs + plugins + agents + commands + hooks in one place.
  • Multi-harness — 7 adapters today. Claude Code, Codex, OpenCode, Cursor, DeepSeek (dsh), Windsurf, Generic. Symlink (junction on Windows) preferred, copy fallback. One file per harness → easy to add Antigravity, Droid, Copilot.
  • Team sync — forge.toml + forge.lock. Like package.json for agents. forge install / forge install --frozen for CI.
  • Search in <200ms. Offline scored search.json + typed index, no API key.
  • Git-native registry. Every package is a GitHub repo. Forkable, private registry ready. No central DB.
  • Safe by default. sha256-verified tarballs or hard fail (no silent fallback); mock content only with explicit --mock; forge audit flags unverified installs; forge doctor health check; Windows/Linux/macOS.

Install

# via curl (recommended)
curl -fsSL https://raw.githubusercontent.com/oomerevren-beep/forge/main/install.sh | sh
# Windows PowerShell
irm https://raw.githubusercontent.com/oomerevren-beep/forge/main/install.ps1 | iex

# via npm
npm i -g tryforge

# via cargo (v0.2 — Rust rewrite)
cargo install tryforge

Requires Node 18+ for v0.1 (TypeScript). Rust binary in v0.2 — single binary, no runtime.


Quick Start

forge doctor              # detect your harnesses (7 checked)
forge search plan         # find packages (try: pdf, mcp, agent)
forge add anthropics/plan # install latest (resolves ^1.2.0)
forge add mcp/filesystem  # MCP → auto-writes to mcp.json
forge list                # 8 installed, with versions
forge info mcp/github     # detail + versions + engines
forge outdated            # what can be updated
forge update              # update all (or: forge update mcp/github)
forge remove obra/superpowers
# version pinning
forge add anthropics/[email protected]
forge add anthropics/plan@^1.2.0

# dry run — see what would happen
forge add anthropics/plan --dry-run

# mock content for packages with no verified tarball yet (explicit opt-in)
forge add skill/pdf --mock
forge install --mock       # same opt-in for project installs
forge update mcp/github --mock

Team Sync — forge install

Add forge.toml to your project, everyone gets the same set with one command.

# my-project/forge.toml
[project]
name = "my-app"
version = "0.1.0"

[dependencies]
"anthropics/plan" = "^1.2.0"
"mcp/filesystem" = "^1.0.0"
"obra/superpowers" = "^3.0.0"
"skill/pdf" = "^1.0.0"
forge install          # installs all, writes forge.lock
forge install --frozen # CI: exact versions from lock (like npm ci)
forge outdated         # shows 1.1.0 → 1.2.0 etc.
forge update           # bumps to latest within semver

Lockfile forge.lock is [[packages]] TOML — commit it. ~/.forge/config.toml holds user defaults (registry URL, default harnesses).


Create a Package

forge init my-skill --type skill --yes   # → SKILL.md + forge.toml
forge init my-mcp --type mcp --yes       # → MCP template + [mcp] config
forge init my-agent --type agent --yes   # → agent.md template
# types: skill | mcp | plugin | agent | command | hook

cat forge.toml
# [package] name="my-skill" version="0.1.0" type="skill" ...

forge publish   # (v0.2) validates → tarball → GitHub Release → registry PR

Until publish lands, open a PR adding registry/packages/<slug>.json (see schema/forge.schema.json), then npm run registry:build.


How it Works

forge add anthropics/plan
  → resolve ^1.2.0 → tarball URL + sha256 (from local/bundled registry/index.json; CDN in v0.3)
  → download to ~/.forge/cache/tarballs/ → verify sha256 (hard fail on mismatch) → extract to ~/.forge/packages/[email protected]/
  → adapter: symlink/copy to all 7 harnesses (Claude/Codex/OpenCode/Cursor/DSH/Windsurf/Generic)
  → if MCP: backup mcp.json → inject server entry

Add a harness = one file in cli/src/adapters/. See docs/ADAPTERS.md.

~/.forge/
  config.toml               # user config
  packages/<slug>@<ver>/    # extracted content
  cache/tarballs/           # downloaded .tar.gz
  links.json                # {pkg, version, adapters[]} source of truth

Comparison

| | Forge | anthropics/skills | DSH | mcp-registry | Manual git clone | |---|---|---|---|---|---| | Types | 6 (skill/mcp/plugin/agent/command/hook) | 1 (skill) | plugin | 1 (mcp) | 1 | | Harnesses | 7 (Claude/Codex/OpenCode/Cursor/DSH/Windsurf/Generic) | 1 | 1 (DeepSeek) | ~1 | per-harness manual | | Versioning | semver + lock | none | none | partial | none | | Update | forge update | manual | manual | manual | manual | | Team sync | forge.toml + forge.lock | none | none | none | none | | Search | <200ms offline | GitHub search | none | web only | none | | Registry | Git-native, forkable | repo | repo | central | — |

Narrow tools fragment. Universal wins — same lesson as brew.


Registry — 250 Packages

Seeded at v0.1, grown in Faz 13-lite — registry/packages/*.json → registry/index.json + search.json + stats.json.

forge search mcp        # 54 results
forge search pdf        # 13 results
forge search --type skill plan  # filtered
forge info skill/pdf    # versions, engines, sha

Stats: 127 skills, 54 MCPs, 33 agents, 15 commands, 10 hooks, 11 plugins. Generated via:

npm run seed            # idempotent: base catalog (100) + Faz 13-lite (+150)
npm run registry:build  # index + search + stats + --check in CI

Publish flow (v0.2): forge publish → GitHub Release → PR to registry/packages/ → bot merges → R2 deploy.

See docs/REGISTRY.md and docs/SPEC.md.


Architecture

CLI (TypeScript v0.1 → Rust v0.2)
  ├─ registry client (index.json + semver)
  ├─ store (~/.forge/packages/ + links.json + cache)
  ├─ adapters (detect/install/list — 1 file per harness)
  └─ commands (add/remove/list/search/info/doctor/init/install/update/outdated/audit)

Full diagram and crate layout in docs/ARCHITECTURE.md. Tech choices: commander + smol-toml + tsx (no bun on Windows), tsc emit to dist/ for npm pack.


Docs


Roadmap

v0.1 — Homebrew moment (now): 7 harnesses, 250 packages, add/search/list/doctor/install/init — Trending prep. v0.2 — NPM moment: forge publish, deps, cargo install. v0.3 — Store moment: forge run, Rust binary, GUI. v1.0 — Cloud: team registry, brew install forge, winget.

See docs/ROADMAP.md and docs/FAZ4-PLAN.md.


Contributing

git clone https://github.com/oomerevren-beep/forge
cd forge
npm install
npm run build
npm test                  # 34 tests (smoke + semver + init + adapters + installer-security)
npm run dev -- --help     # or: npx tsx cli/src/index.ts --help
  • Add a package: create registry/packages/<slug>.json → npm run registry:build
  • Add a harness: cli/src/adapters/<name>.ts → register in adapters/index.ts → forge doctor
  • PR checklist: npm run build && npm test && npm run registry:build -- --check

See CONTRIBUTING.md and AGENTS.md.


FAQ

Is this just for Claude Code? No. 7 harnesses today, one file per new harness. The point is universal — same reason brew beat per-OS managers.

How is this different from mcp-registry or skills repos? Those are single-type and single-harness. Forge is brew for all agent package types, on every harness, with versioning/lock/search.

Does install.sh need forge.sh domain? No. curl -fsSL https://raw.githubusercontent.com/oomerevren-beep/forge/main/install.sh | sh works today. forge.sh is a future vanity alias.

Are most packages mock content? Honest answer: 245 of 250 registry entries still carry placeholder SHAs (only 5 verified so far). Forge is fail-closed — installing one without --mock errors out instead of silently faking it; forge audit flags every unverified install. Real tarballs land as maintainers verify them (tracked for Faz 13-full).

Windows symlinks? Junction (symlinkSync(..., 'junction')) on dirs, fallback to cpSync on EPERM. doctor checks links.json (source of truth), not just dir scan.

Why TypeScript first, not Rust? Speed to market. v0.1 is TypeScript + tsx; v0.2 rewrites to Rust for single binary cargo install. Adapters stay cheap.

Private registry? Yes. Fork this repo, keep registry/ private, point ~/.forge/config.toml registry = "https://your-r2/index.json".


License

MIT — see LICENSE.