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

astro-annotate

v0.5.0

Published

Visual annotation overlay for Astro staging sites. Clients annotate HTML elements directly in the browser. Annotations stored as structured JSON, readable by developers and LLMs.

Readme

astro-annotate

Visual annotation overlay for Astro staging sites. Clients and stakeholders annotate HTML elements directly in the browser. Annotations are stored as structured JSON, readable by developers and LLMs.

Status: Phase 1 (MVP) — local dev mode. Works with astro dev.

Features

  • Element-based annotations — hover to highlight, click to annotate any HTML element
  • Figma-style pins — small teardrops that point toward annotated elements with directional tilt
  • Draggable panel — freely movable annotations panel with resize handle and snap-to-side docking
  • CSS selector tracking — annotations reference elements by robust CSS selectors (IDs, data-testid, tag+class)
  • JSON storage — annotations saved as annotations.json, directly readable by developers and LLMs (Claude Code, Cursor, etc.)
  • Shadow DOM isolation — overlay UI is fully isolated from your site's styles
  • Zero dependencies — vanilla TypeScript client, ~24KB bundle
  • Device detection — automatically tags annotations as mobile/tablet/desktop

Installation

npx astro add astro-annotate

Or manually:

npm install astro-annotate
// astro.config.mjs
import { defineConfig } from 'astro/config';
import annotate from 'astro-annotate';

export default defineConfig({
  integrations: [annotate()],
});

Usage

  1. Start astro dev
  2. Click the crosshair button (top of FAB stack, bottom-right) to enter annotation mode
  3. Hover over elements to highlight them, click to annotate
  4. Click the speech bubble button (bottom of FAB stack) to open the annotations panel
  5. Drag the panel header to freely reposition — drag to viewport edges to snap/dock
  6. Drag the bottom-right corner of a floating panel to resize
  7. Annotations are saved to annotations.json in your project root

Reading annotations

The annotations.json file is structured for both humans and machines:

{
  "version": "1.0",
  "annotations": [
    {
      "id": "abc123",
      "page": "/",
      "selector": "h1.hero-title",
      "text": "Make this headline shorter",
      "author": "Client Name",
      "status": "open",
      "device": "desktop",
      "viewport": { "width": 1440, "height": 900 }
    }
  ]
}

Configuration

annotate({
  enabled: true,              // default: true in dev
  storage: 'local',           // default: 'local' (JSON file)
  annotationsPath: './annotations.json',  // default
})

Roadmap

  • Phase 2: Deployed mode on Cloudflare Pages with password auth
  • Phase 3: Screenshots, CLI export, mobile UX, docs

License

MIT