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

midtool

v0.2.1

Published

Generate project-specific AI instruction files from reusable markdown standards.

Readme

mid

AI-generated code sucks, so I created mid (Mark. It. Down).

We all want to be 10x devs but AI on it's own is too sloppy. Nobody wants to spend time reviewing low-quality code and refactoring it.

mid generates AI standards not just instructions. mid does this effeciently by instructing your agent to only load modular standards on demand.

Have fun writing sexy-looking code

Install

Requires node >= 18.

Run without installing globally:

npx midtool

Install globally:

npm install -g midtool

After a global install, use:

mid

Usage

Run mid inside a project root:

cd /your/project
mid

This opens an interactive selector, saves .mid/config, and generates the selected assistant files. When .mid/config is missing or effectively empty, mid also scans the repo and pre-fills a conservative recommended selection before you confirm it.

Commands

| Command | Purpose | | --- | --- | | mid | Interactive selector that saves .mid/config and generates outputs. | | mid sync | Regenerate outputs from the saved config with no prompts. | | mid doctor | Show standards root, module count, and config status. | | mid kill | Ask for confirmation, then remove managed outputs, restore adopted originals, and delete .mid/config. | | mid kill --backup | Ask for confirmation, then move managed outputs into .mid/backups/<timestamp>/ before cleanup. | | mid kill --yes | Skip the confirmation prompt. Useful for non-interactive runs. |

Releases

CI validates every push to main and every pull request.

Publishing is manual through the GitHub Actions Publish workflow:

  • set version for an exact release such as 0.2.0
  • or leave version empty and choose patch, minor, or major via release_type

The workflow bumps package.json and package-lock.json, creates the release commit and tag, publishes to npm, and pushes the result back to main.

Generated Files

mid writes assistant-native files and stores its own state under .mid/.

Common outputs:

  • .mid/config
  • .mid/instructions/**
  • AGENTS.md
  • CLAUDE.md
  • .cursor/rules/mid-router.mdc

Recommended gitignore (Auto-added by mid):

.mid/backups/
.mid/adopted/
.mid/state/

Commit .mid/config and the generated assistant files you want to keep in the project.

Config

.mid/config is the project source of truth.

It stores:

  • selected assistants
  • selected general modules
  • selected domains
  • selected design patterns
  • selected languages
  • selected frameworks
  • optional output path overrides
  • the standards revision used for generation

mid sync overwrites managed outputs from that config. If an unmanaged file already exists at a target path, mid will not replace it silently.

Generated root instruction files are entrypoints only. They point to copied module snapshots under .mid/instructions/ using relative paths so deeper instructions can be loaded on demand instead of bloating initial context. Selected design patterns are bundled into .mid/instructions/design-patterns.md. Domain modules can also be auto-included when selected languages or frameworks expose matching metadata tags.

Content Layout

All reusable instruction content lives under mid/.

Structure:

  • mid/core/*: shared core modules
  • mid/domains/*: cross-cutting domain modules
  • mid/languages/*: language and framework modules
  • mid/patterns/*: reusable patterns
  • mid/workflows/*: workflow modules

Module format:

  • core/domain/framework/pattern/workflow modules use a folder with instructions.md and metadata.json
  • language base modules use base.instructions.md and base.metadata.json

mid discovers modules directly from the filesystem. Metadata may include tags and autoSelectWhenTags so cross-cutting domain modules can be auto-selected without duplicating tag matches.

Contributing

Any contribution to this project is highly appreciated!

If you have very opinionated programming style, please contribute and improve these.

Reach out to me on X