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

@ajmarquez99/dot-ai

v1.0.0

Published

A tiny, tool-agnostic convention for the context you give your coding agents.

Readme

dot-ai

A tiny, tool-agnostic convention for the context you give your coding agents.

License: MIT

Coding agents start every session blind. Your project's domain knowledge, conventions, and hard-won lessons live in your head or get locked inside one tool's proprietary memory — switch agents and it's gone. dot-ai gives that context one home: a small, version-controlled .ai/ directory in plain Markdown that any agent (Claude, Gemini, Codex, …) can read.

Quickstart

Install once, globally, then use dot-ai in any project:

npm install -g @ajmarquez99/dot-ai
dot-ai init        # scaffold .ai/ here (like `git init`)

Prefer not to install? Run it one-off with npx (the original installer flow):

npx @ajmarquez99/dot-ai

Latest unreleased from source: npm i -g github:AJMarquez99/dot-ai.

Commands

dot-ai is a small command suite (run dot-ai --help for flags):

| Command | Does | |---|---| | init | Scaffold .ai/ and optionally wire agent config (the default action) | | wire | Inject/update the convention block in CLAUDE.md/GEMINI.md/AGENTS.md | | sync | Re-apply the latest scaffold, prune stale-empty folders, resync convention blocks | | doctor | Read-only structure/health diagnosis (and the ancestor cascade) | | archive <file> | Move a file into archive/ with a YYYY-MM-DD_ prefix (--retain to exempt from prune) | | prune | Delete archive/ entries past the retention window (dry-run by default; --force to delete) | | context | Print the effective .ai/ cascade for the current directory (alias: resolve) | | promote <file> <up\|down\|global\|path> | Copy (or --move) a file to another cascade layer |

Nested cascade & global ~/.ai/

.ai/ directories compose: the effective context is every .ai/ from your current directory up to and including ~/.ai/ (the machine-global layer), applied additively — outer is broad, inner is specific, nearest wins on a collision. ~/.ai/ is just .ai/ scaffolded in your home directory (cd ~ && dot-ai init). Inspect the chain with dot-ai context; move files between layers with dot-ai promote.

What you get

.ai/
├── knowledge/    # What is true / why
├── guidelines/   # What rules we follow
├── runbooks/     # How a task is done (with judgment)
├── scripts/      # How, automated (deterministic)
├── templates/    # What to start from (blanks to fill)
├── data/         # What raw inputs exist
├── plans/        # What we intend to do
├── audits/       # What was true at time T
├── lessons/      # What we just learned (→ a guideline)
├── notes/        # What might be worth a look later
├── context/      # The live working state / handoff (gitignored)
└── archive/      # Historical records (date-stamped)

Each folder answers a distinct question — that's the whole trick. Full semantics, lifecycle, and version-control rules are in SPEC.md; the exact text your agent reads is agent-instructions.md.

Sharing .ai/ in a public repo? Commit the scaffold and the files worth sharing; keep personal files local by prefixing them with _ (the shipped .ai/.gitignore ignores _*). This repo's own .ai/ is committed exactly this way — browse it as a worked example.

How it wires into your agent

The installer appends a marked block to your agent's config file:

<!-- BEGIN .ai-convention -->
…contents of agent-instructions.md…
<!-- END .ai-convention -->

Re-running the installer updates just that block — your other instructions are never touched.

Adding your own instructions. Put anything personal below the <!-- END .ai-convention --> marker. The installer only ever rewrites the region between the markers, so content after END survives every reinstall and never gets duplicated:

<!-- BEGIN .ai-convention -->
…installer-managed convention…
<!-- END .ai-convention -->

## My instructions
Your personal additions here — preserved across reinstalls.

Because the installer recognizes that marked block, a config that already has it (e.g. wired into your global ~/.claude/CLAUDE.md) is flagged as (already global) in the interactive prompt — a reminder that wiring it into an individual repo is only needed to share the convention with collaborators. If your global config predates the markers, re-run the installer to resync it to the canonical block, then keep your personal notes below END.

Why adopt it

  • Portable. Plain Markdown in your repo, not a vendor's memory store. Works across every agent.
  • Legible. A reviewer (human or agent) can tell at a glance where a fact belongs.
  • Self-cleaning. The notes → plan/knowledge/lesson → guideline lifecycle keeps it from rotting.

A note on privacy (and dogfooding)

dot-ai dogfoods its own convention: this repo's .ai/ is committed — curated knowledge/, guidelines/, and runbooks/ that a contributor (or their agent) can read — while personal and in-flight files (design scratch, working notes) stay local via the _ prefix, and context/ ignores its own contents. It's the convention working on itself.

Adopting .ai/ in a public repo? Favor sharing over hiding. The whole point is that your project's context is legible to anyone — human or agent — who clones it. So commit the parts a contributor would benefit from and write them for that audience. Keep what's genuinely personal or sensitive — scratch notes, secrets, half-formed drafts — local by prefixing the file or folder with _ (the shipped .ai/.gitignore ignores anything starting with _). Gitignoring the entire .ai/ directory is the fallback for repos that are private by default — not the default move.

Tools using this convention

.ai/ is used in the wild by a small family of personal, agent-driven CLIs — handy as real-world examples of the convention in a shipped project:

  • gmail-cli — a fail-closed Gmail CLI for AI agents (send + IMAP read), with its own curated .ai/.

License

MIT © 2026 Alejandro Marquez