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

@adi-mudi/pi-chirpi

v1.0.1

Published

Chirpi — architecture factory extension for Pi — generates project-specific architecture agents and skills from a bundled library or from your own input documents

Readme

pi-chirpi

Chirpi is a Pi extension that generates a project-specific architecture for your repository: an architecture profile, human-readable docs, ADRs, and ready-to-use Pi agents and skills.

Install

pi install npm:@adi-mudi/pi-chirpi

Commands

| Command | Purpose | |---|---| | /chirpi-predefined-architect | Static mode — pick an architecture from the bundled library (36 entries). No input documents needed: Chirpi scans your codebase first (deps, folders, configs), shows why each top match fits, and asks at most 1-2 targeted questions — only about things the code cannot answer. | | /chirpi-generate-architect | Dynamic mode — derive the architecture from your own documents and constraints listed in .pi/senai/architect-inputs.json. | | /chirpi-configure-architect-inputs | Configure .pi/senai/architect-inputs.json (documents + constraints) used by /chirpi-generate-architect. | | /chirpi-predefined-framework | Lock the framework from dependency detection — one confirm on a single match, one question on a close call, the full library list when nothing matches. Writes .pi/senai/framework.json. | | /chirpi-configure-framework | Lock the framework manually (id or none; picker grouped by language when no id is given). A manual lock always wins over dependency detection. |

Static mode

Run /chirpi-predefined-architect. Chirpi profiles your codebase first — package.json dependencies, folder layout, deployment configs (vercel.json, Dockerfile, …) — and infers purpose, scale, deployment, and realtime needs with evidence. It scores the bundled architecture-library/ entries, shows the top matches with the reasons they matched, and asks questions only about what the code could not answer: one confirm when the winner is clear, one targeted question when two entries are close, and at most two short questions when the project has no readable signals. Pi extension projects skip questions entirely. If nothing fits, it falls back to a new-entry template.

Dynamic mode

  1. Run /chirpi-configure-architect-inputs to list your input documents and constraints (written to .pi/senai/architect-inputs.json — path kept for compatibility with pi-senai).
  2. Run /chirpi-generate-architect. Chirpi merges architectural drivers from your documents and generates the architecture artifacts.

Generated output

| Location | Purpose | |---|---| | .pi/architect/ | Architect state and artifacts (drivers, profile, report, architecture.md, adrs/*.md). | | .pi/agents/<project>-<architecture-id>-<role>.md | Generated architecture agents. | | .pi/skills/<project>-<architecture-id>-<stage>/SKILL.md | Generated architecture skills. |

Framework library

Beside the language-free architecture-library/, Chirpi ships a framework-library/ — one map per framework, grouped by language (typescript/: nextjs, express, nestjs, react-vite; python/: django, fastapi, flask). Each map carries frontmatter (id, language, framework, officialDocs, detectDeps), a layout map, layer fit, forbidden patterns, verification hints, and a machine-readable ## Rules section (- forbid: <importer glob> -> <target glob or pkg:module> # <reason>) that gate runners can enforce with dependency-cruiser / import-linter. Projects can override or add maps in .pi/framework-library/.

The codebase profiler detects frameworks from package.json dependencies (exact-name, all-listed against each map's detectDeps), and /chirpi-predefined-architect treats a detected framework as a confirmed signal — no question — asking one confirm question only on close calls. The loader API (discoverFrameworkLibrary, loadFrameworkMap, validateFrameworkMap, parseFrameworkRules, detectFrameworksFromDeps, …) is exported from the package for downstream tools like pi-senai.

The lock can also be set explicitly: /chirpi-predefined-framework locks a framework from dependency detection (confirm / close call / full library list), and /chirpi-configure-framework sets it by hand. Both write .pi/senai/framework.json ({ id, source, setAt } — source is detected or manual; none means architecture-only). A saved config always wins over fresh detection in /chirpi-predefined-architect, and doctor verifies the lock (checkFrameworkConfig): an existing framework.json must name a valid library id.

Development

npm run build compiles pi-extension/ into dist/. After every build, sync the full package payload — dist/, skills/, README.md, architecture-library/, framework-library/ — into consumers' node_modules/@adi-mudi/pi-chirpi/ (e.g. pi-senai). Syncing only dist/ leaves stale skills and docs behind.

License

MIT