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

useechoui

v0.1.0

Published

Visual feedback that teaches your AI agent. Capture design preferences from rejected changes. Build a taste profile. Paste it into your system prompt. Your agent stops making the same mistakes.

Readme

echoui

Experimental software. DYOR. Use at your own risk.

Visual feedback that teaches your AI agent. Build a taste profile. Export it as a system prompt block. Your agent stops making the same design mistakes.

npm install echoui

The feedback loop in AI-assisted development is broken. You reject a change, explain why in chat, the agent forgets next session, makes the same mistake. ECHO captures your design preferences as structured rules, persists them in localStorage, and exports them as a system prompt block you paste into Cursor rules, CLAUDE.md, Copilot instructions, or any system prompt.

Quick start

import { Echo } from 'echoui'

function App() {
  return (
    <>
      <YourApp />
      <Echo />
    </>
  )
}

Press Alt+E to toggle. Click elements to capture context. Type what's wrong. ECHO parses it into a typed, categorized rule.

How it works

  1. Spot it — Click any element (optional). ECHO captures its computed styles, selector, and layout info as context.
  2. Say it — Type what's wrong: "too much padding", "never use modals for settings", "prefer 14px body text".
  3. Save it — ECHO parses the rule type automatically (never, always, prefer, avoid, use, note) and tags it with a category. Duplicates get reinforced instead of duplicated.
  4. Ship it — Export as a <design_preferences> system prompt block. Paste it into your agent's instructions. Done.

Smart parsing

Type naturally. ECHO figures out the rule type from your phrasing:

  • "Never use modals" → NEVER rule
  • "Too much padding" → AVOID rule
  • "Prefer subtle shadows" → PREFER rule
  • "Always use 14px body" → ALWAYS rule
  • "Use 8px grid" → USE rule
  • Anything else → NOTE

Start with the keyword for explicit typing. Everything else gets classified automatically.

Deduplication

Say "too much padding" three times and ECHO reinforces the existing rule (weight goes to x3) instead of creating duplicates. Heavily weighted rules appear first in the export, signaling to your agent which preferences matter most.

Eight categories

Every rule gets tagged: spacing, color, typography, layout, components, interaction, content, general. The export groups by category so your agent can scan by domain.

The export

One click copies a structured block:

<design_preferences>

## Spacing
- **AVOID:** too much padding on cards (not `24px`)
- **PREFER:** tight spacing, 8px gaps between elements

## Color
- **NEVER:** use pure black for text (use `#1a1a1a`) [×3]

## Components
- **NEVER:** use modals for settings pages
- **PREFER:** inline editing over modal forms

</design_preferences>

Paste into Cursor rules, CLAUDE.md, Copilot instructions, .github/copilot-instructions.md, or any system prompt.

Programmatic API

import { useEcho } from 'echoui'

const {
  rules,              // Current rules array
  addRule,            // (category, type, text, opts?) => Rule
  removeRule,         // (ruleId) => void
  clearAll,           // () => void
  exportSystemPrompt, // () => string
  exportMarkdown,     // () => string
  exportJSON,         // () => string
  importJSON,         // (json) => number (rules imported)
} = useEcho()

Team sharing

Export your profile as JSON, commit it to your repo, and import it on other machines:

const { importJSON } = useEcho()

// Load team preferences
fetch('/team-preferences.json')
  .then(r => r.text())
  .then(json => importJSON(json))

Props

| Prop | Default | Description | |------|---------|-------------| | project | document.title | Project name for the profile | | shortcut | 'Alt+E' | Keyboard toggle | | position | 'right' | Panel: right or left | | panelWidth | 340 | Panel width in px | | storageKey | 'echo-profile' | localStorage key for persistence | | zIndex | 99999 | Z-index for panel | | onRule | - | Callback when rule is added | | onExport | - | Callback when profile exported |

Persistence

Rules are stored in localStorage under the storageKey prop. They persist across page refreshes and browser restarts. Each project can have its own key. Clear with clearAll() or the panel's clear button.

Disclaimer

Experimental, open-source software provided as-is. No warranties, no guarantees. Use at your own risk. DYOR. The author assumes no liability for any issues arising from the use of this software.

License

MIT. Built by 0xDragoon.