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

useturtle

v0.1.7

Published

Click on your UI. Describe the change. Claude fixes the code.

Readme

useturtle

Click on your UI. Describe the change. Claude fixes the code.

A dev tool for Vite apps. Point at any element in your running app, tell Claude what you want changed, and it edits the source file. No copy-pasting selectors, no describing layouts in chat. Just point and talk.

Setup

cd your-project        # go to your project root (where vite.config.ts lives)
npm install useturtle -D
npx useturtle-init

That's it. Three things happen:

  1. turtle() gets added to your vite.config.ts plugins
  2. The MCP server gets registered with Claude Code
  3. A /turtle slash command gets added to your project

Start your dev server, open your app, and type /turtle in Claude Code. You're ready to go.

Usage

  1. Start your Vite dev server like you normally do
  2. In Claude Code, type /turtle to activate watch mode
  3. Open your app in the browser. Click the turtle icon in the bottom-right.
  4. Click on any element, type what you want changed, hit send
  5. Claude picks it up, edits the source file, and HMR reloads the page

That's the full loop. Click, describe, done.

Features

Annotate -- Click any element, type what you want changed. Claude reads the annotation (component name, file path, props, CSS) and edits the code. HMR reloads the page.

Multi-select -- Shift+click multiple elements, then comment on all of them at once.

Area select -- Hold Alt and drag a rectangle to select multiple elements in a region.

Rearrange -- Switch to rearrange mode, drag elements to reorder them. Claude updates the source to match.

Layout mode -- Pick components from a palette (Navigation, Header, Hero, Section, etc.) and place them as wireframe blocks. Hit send and Claude builds the page.

Threads -- If Claude isn't sure what you mean, it asks a follow-up question right on the annotation. Click the badge to reply. No context lost.

What Claude sees

Every annotation includes:

  • Vue component name and file path
  • Props and parent component chain
  • CSS selector and computed styles
  • Bounding box and accessibility attributes
  • Selected text (if any)
  • The page URL

Claude knows exactly which file to edit and what the element looks like.

Requirements

  • Vite 5+ (works with any Vite-based framework)
  • Claude Code with MCP support
  • Dev mode only (zero production impact)

Manual setup

If you prefer not to use the init script:

// vite.config.ts
import turtle from 'useturtle'

export default defineConfig({
  plugins: [turtle()]
})
claude mcp add turtle -- npx useturtle-mcp

Options

// Change which file the overlay injects into (default: 'inertia.ts')
turtle({ appendTo: 'main.ts' })

License

MIT