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

@1door/connector

v0.1.1

Published

Publish articles to 1door.cc directly from Claude — an MCP connector backed by the site's moderated publishing pipeline.

Readme

@1door/connector

Publish blog posts to 1door.cc straight from Claude — no GitHub deploy.

This is an MCP server. You add it to Claude Code or Claude Desktop with the key you were given, authorize it against your 1door.cc account, and Claude gets tools to draft, publish, and list your articles. Under the hood it calls the site's own moderated publishing API (it never touches the database directly), so a post you publish here is identical to one written in the website composer — you are always the author, and the 1door editorial team still moderates.

How access works — key + authorization

Everything published on 1door.cc goes out under a real person's name, so setup takes two steps:

  1. You get a key (1door_…) from the 1door team.
  2. You authorize it against your 1door.cc account. The key is only a pairing code — on its own it cannot publish. You open an authorize link, sign in to your 1door.cc account (or create one), and click Approve. From then on the same key publishes as you: your byline, your "My posts".

Keep the key secret — once linked, anyone holding it can publish as you. The 1door team can revoke it at any time.

1. Add the connector

Claude Code (one command):

claude mcp add one-door --env ONE_DOOR_TOKEN=1door_xxxxxxxx -- npx -y @1door/connector

Claude Desktop — add to claude_desktop_config.json (~/Library/Application Support/Claude/ on macOS):

{
  "mcpServers": {
    "one-door": {
      "command": "npx",
      "args": ["-y", "@1door/connector"],
      "env": { "ONE_DOOR_TOKEN": "1door_xxxxxxxx" }
    }
  }
}

Restart Claude Desktop after editing the config.

2. Authorize your key (once)

Ask Claude: "connect my 1door account". It returns a link like https://1door.cc/connect?code=1door_xxxxxxxx. Open it — the key is your pass:

  • New to 1door? Enter your name + email, type the 6-digit code emailed to you, and click Create account & connect. No invite needed — the key creates your account and links itself in one step.
  • Already a member? Choose Sign in, use the email on your 1door account, then Approve.

Check it worked — ask "who am I on 1door?"; it should answer with your real name. Until you finish, every tool politely refuses and repeats the link.

Writing quality articles

The connector ships with the 1door Content Engine — an editorial + humanization playbook so what you publish reads like a senior practitioner wrote it. When you ask Claude to write a 1door post, it should follow AUTHORING.md:

  • an interactive, step-by-step flow (post type → source → brief → story options → draft → package), never a one-shot dump;
  • a live preview of the post rendered in the 1door.cc dark house style in the artifact side panel, updated as you build it — you see the final look before publishing;
  • the full palette of editable attributes (headings, quote, link, attach a skill, related services, image, YouTube embed, HTML/widget, hero banner);
  • an anti-AI humanization pass (vocabulary blacklist, structural tells) so it doesn't sound generated.

Deep detail is in references/. AUTHORING.md says which file to read at each step.

3. Use it

Just ask Claude, e.g.:

  • "Publish a draft to 1door titled 'Onboarding teardown' with this article: …"
  • "List my 1door articles."
  • "Take that draft live."

Tools

| Tool | What it does | | --- | --- | | connect | Get the link to authorize your key against your 1door.cc account (or confirm it's already linked). Run this at setup. | | whoami | Verify your key and see which real account it publishes as. | | publish_article | Create a post from a title + either markdown or structured blocks (text/h2/h3/quote/link/skill/image/embed/html), plus optional services, hero, section, summary. publish:false (default) saves a Draft; publish:true takes it live. | | list_articles | List your posts with status (Draft / Published / Archived) and public URLs. |

Notes:

  • The article is either Markdown (headings, lists, links, images by URL) or a structured blocks array — see AUTHORING.md for the full palette and how each editable attribute maps to the payload.
  • Video files need Cloudflare R2 (not enabled yet) — use a YouTube/Vimeo embed block instead.
  • A live post by a non-core member is published immediately and sent to the 1door editorial team for moderation (approve / request changes / take down), same as the website.
  • The site refreshes from the database roughly every 5 minutes (ISR), so a new or just-published post can take a few minutes to appear on the public site and in list_articles.

Configuration

| Env var | Required | Default | Notes | | --- | --- | --- | --- | | ONE_DOOR_TOKEN | yes | — | Your personal connector token from the account page. | | ONE_DOOR_URL | no | https://1door.cc | Override to point at a dev/staging site. |

Develop locally

npm install
npm run build
ONE_DOOR_TOKEN=... ONE_DOOR_URL=http://localhost:3000 node dist/index.js

The server speaks JSON-RPC over stdio; run it through the MCP Inspector to poke at the tools.