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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@ai-guide/react-plugin

v0.2.0

Published

Build plugins (Babel, Vite, Webpack) for auto-tagging React components for AI Guide

Readme

@ai-guide/react-plugin

Build plugins (Babel, Vite, Webpack) for automatically tagging React components with data-ai attributes. Makes your components discoverable for AI Guide without manual tagging.

Installation

npm install @ai-guide/react-plugin --save-dev
# or
pnpm add -D @ai-guide/react-plugin
# or
yarn add -D @ai-guide/react-plugin

Features

  • 🔧 Automatic data-ai attribute injection
  • 🎯 Works with Babel, Vite, and Webpack
  • ⚡ Zero runtime overhead
  • 🎨 Customizable component patterns
  • 📦 Small bundle size

Usage

Vite

// vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import { aiGuidePlugin } from '@ai-guide/react-plugin/vite';

export default defineConfig({
  plugins: [
    react(),
    aiGuidePlugin({
      // Optional: customize which components to tag
      include: ['**/*.tsx', '**/*.jsx'],
      exclude: ['**/node_modules/**'],
    }),
  ],
});

Babel

// .babelrc or babel.config.js
{
  "plugins": [
    ["@ai-guide/react-plugin/babel", {
      // Optional configuration
    }]
  ]
}

Webpack

// webpack.config.js
const { aiGuideWebpackPlugin } = require('@ai-guide/react-plugin/webpack');

module.exports = {
  // ... other config
  plugins: [
    aiGuideWebpackPlugin({
      // Optional configuration
    }),
  ],
};

What It Does

The plugin automatically transforms your React components:

Before:

<button onClick={handleSubmit}>Submit Form</button>
<input type="email" placeholder="Email" />

After:

<button data-ai="submit-form" onClick={handleSubmit}>Submit Form</button>
<input data-ai="email-input" type="email" placeholder="Email" />

Configuration

Options

{
  // File patterns to include
  include?: string[];
  
  // File patterns to exclude
  exclude?: string[];
  
  // Custom naming strategy
  namingStrategy?: (element: Element) => string;
  
  // Only tag elements with specific attributes
  onlyWithDataAi?: boolean;
}

Best Practices

  1. Use in development: Enable during development to help identify components
  2. Commit tagged code: Commit the auto-tagged files so your production build includes them
  3. Review generated tags: Check that generated data-ai values make sense
  4. Combine with manual tagging: You can still manually add data-ai attributes for better control

How Naming Works

The plugin generates data-ai values based on:

  1. Existing data-ai attributes (kept as-is)
  2. Element text content (e.g., "Submit" → "submit")
  3. Input types and names
  4. ARIA labels
  5. Component names

Related Packages

License

MIT