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

@slashgear/team-bookmarks

v1.0.1

Published

A lightweight open source web app to manage and share team bookmarks via YAML files.

Readme

Team Bookmarks

CI License: MIT Docker

A lightweight open source web app to manage, share and version your team's bookmarks as a YAML file.

  • Accessible: keyboard navigation, ARIA, Lighthouse accessibility score = 100
  • Lightweight: main bundle < 20 KB, heavy dependencies lazy-loaded
  • Self-hosted: single Docker image, no database, no auth
  • CLI: init and export bookmarks from the terminal, no app required

Features

  • Create folders and sub-folders of links
  • Import a .yml bookmark file
  • Export as YAML (for Git versioning), NETSCAPE HTML (browser import) or JSON
  • All edits saved in localStorage, persists across page reloads
  • Example collection pre-loaded with Slashgear's favorite tools

CLI

The package ships a CLI so your team can manage bookmarks directly in the repository, no web app needed.

Init a new bookmarks file

npx @slashgear/team-bookmarks init "My Team"
# bunx @slashgear/team-bookmarks init "My Team"
# pnpx @slashgear/team-bookmarks init "My Team"

Creates a bookmarks.yml with a starter structure and inline usage comments. Commit it to your repository.

Export to HTML or JSON

# Generate a Netscape HTML file ready to import in any browser
npx @slashgear/team-bookmarks export bookmarks.yml

# Generate JSON
npx @slashgear/team-bookmarks export bookmarks.yml --json

# Custom output path
npx @slashgear/team-bookmarks export bookmarks.yml -o dist/bookmarks.html

Workflow with Git

init bookmarks.yml  →  edit YAML  →  commit  →  share with team
                             ↓
                    npx … export → bookmarks.html → import in browser

Edit with an AI agent

An edit-bookmarks skill is included under .agents/skills/edit-bookmarks/SKILL.md. It is compatible with any agent runner that supports the open skills format (opencode, Claude Code, Cursor…).

skill: edit-bookmarks — add a link to Figma in the Design folder
skill: edit-bookmarks — rename "General" to "Resources"
skill: edit-bookmarks — remove the link to example.com

The agent reads and edits the YAML directly, preserving comments and formatting.

Quick start

Docker

docker run -p 3000:3000 ghcr.io/slashgear/team-bookmarks:latest

Then open http://localhost:3000.

Docker Compose

services:
  team-bookmarks:
    image: ghcr.io/slashgear/team-bookmarks:latest
    ports:
      - "3000:3000"
    restart: unless-stopped
docker compose up -d

YAML format

name: My Team
folders:
  - name: Dev Tools
    links:
      - label: GitHub
        url: https://github.com
    folders:
      - name: Monitoring
        links:
          - label: Grafana
            url: https://grafana.com

Save this file in your repository and import it whenever you need to update your team's bookmarks.

Workflow

Browser app:

Edit in browser  →  Export .yml  →  Commit to Git  →  Share with team
                                         ↓
                               Anyone can re-import,
                               edit and export again

CLI / Git-native:

npx … init  →  Edit YAML  →  Commit  →  npx … export  →  Import in browser
                  ↑
        /bookmarks "add a link to…"   (Claude Code)

Tech stack

| Layer | Technology | | ----------- | ---------------------------------------------------------- | | Frontend | Preact + TypeScript | | Validation | Zod mini | | YAML | js-yaml (lazy-loaded) | | Server | HonoJS on Node 22 | | Compression | Brotli (q11) + Zopfli | | Build | Vite | | Tests | Vitest | | Linting | Oxlint | | Formatting | oxfmt | | Releases | Changesets |

Local development

Requirements

  • Node.js 22+
  • pnpm 10+

Setup

git clone https://github.com/slashgear/team-bookmarks.git
cd team-bookmarks
pnpm install
pnpm dev

Available scripts

| Script | Description | | -------------------- | ----------------------------------------- | | pnpm dev | Start dev server | | pnpm build | Build frontend + compress + bundle server | | pnpm build:analyze | Build with bundle visualizer | | pnpm preview | Serve production build locally | | pnpm test | Run tests in watch mode | | pnpm test:run | Run tests once | | pnpm lint | Lint with Oxlint | | pnpm format | Format with oxfmt |

Build your own Docker image

docker build -t team-bookmarks .
docker run -p 3000:3000 team-bookmarks

Deployment guides

Contributing

See CONTRIBUTING.md.

License

MIT © Antoine Caron