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

producer-tag

v0.1.0

Published

Play a producer-tag sound on git push with configurable defaults and custom audio.

Downloads

41

Readme

producer-tag

Play a producer tag sound every time you git push — like DJ Mustard's "Mustard on the beat, ho!" but for your code.

Why?

Because shipping code should feel like dropping a beat. Install once, and every git push plays your signature producer tag through your speakers.

Quick Start

Per-project install

cd your-project
npm install producer-tag

That's it. Push some code and listen.

Global install

Install once, use in any git repo — no per-project setup needed.

npm install -g producer-tag
producer-tag sync --global     # create global config
cd ~/any-git-project
producer-tag sync              # set up the hook in this repo

If install scripts are disabled in your environment, run producer-tag sync (or npx producer-tag sync) manually inside your project.

How It Works

  1. A pre-push git hook is added to your project
  2. Every time you run git push, the hook plays your configured sound
  3. Config is read from producer-tag.config.json (project) or ~/.config/producer-tag/config.json (global)
  4. Playback never blocks your push — if anything fails, the push still goes through

Config

A producer-tag.config.json file is created automatically on install. You can also edit it manually:

{
  "enabled": true,
  "mode": "single",
  "sound": "dj-mustard",
  "sounds": ["dj-mustard"],
  "customSoundPath": "",
  "customSoundPaths": []
}

| Key | Type | Description | |-----|------|-------------| | enabled | boolean | Turn playback on/off without uninstalling | | mode | "single" | "random" | single plays the first valid sound, random picks one at random | | sound | string | Primary built-in sound ID | | sounds | string[] | Pool of built-in sound IDs (used with random mode) | | customSoundPath | string | Path to a single custom audio file | | customSoundPaths | string[] | Array of custom audio file paths |

Sound selection priority

  1. Custom sounds (customSoundPath + customSoundPaths) — if valid files exist, these are used
  2. Built-in sounds (sound + sounds)
  3. Default fallback (dj-mustard)

Global vs. Project Config

| Scenario | What happens | |----------|-------------| | Only project config exists | Project config is used | | Only global config exists | Global config is used | | Both exist | Project config overrides global (per field) | | Neither exists | Built-in defaults are used |

Global config location: ~/.config/producer-tag/config.json (respects XDG_CONFIG_HOME)

producer-tag sync --global      # create or verify global config
producer-tag doctor --global    # inspect global config

Built-in Sounds

| ID | Producer | |----|----------| | dj-mustard | DJ Mustard | | metro-boomin | Metro Boomin | | london-on-da-track | London On Da Track | | tay-keith | Tay Keith |

Run producer-tag sounds to list available sounds anytime.

Commands

| Command | Description | |---------|-------------| | producer-tag sync | Set up hook + config in current project | | producer-tag sync --global | Create/ensure global config | | producer-tag preview | Play the current configured sound | | producer-tag doctor | Show config, hook status, and warnings | | producer-tag doctor --global | Show global config status | | producer-tag sounds | List built-in sound IDs | | producer-tag uninstall | Remove the managed hook block |

All commands also work with npx producer-tag if installed locally.

Examples

Use Metro Boomin for this project

{
  "enabled": true,
  "mode": "single",
  "sound": "metro-boomin",
  "sounds": ["metro-boomin"]
}

Random built-in sound on every push

{
  "enabled": true,
  "mode": "random",
  "sounds": ["dj-mustard", "metro-boomin", "london-on-da-track", "tay-keith"]
}

Use your own custom sound

{
  "enabled": true,
  "mode": "single",
  "customSoundPath": "./sounds/my-tag.wav"
}

Rotate through custom sounds

{
  "enabled": true,
  "mode": "random",
  "customSoundPaths": [
    "./sounds/tag-1.wav",
    "./sounds/tag-2.wav",
    "./sounds/tag-3.wav"
  ]
}

Temporarily disable

{
  "enabled": false
}

After any config change, test with:

producer-tag preview

Platform Support

| Platform | Audio backend | |----------|--------------| | macOS | afplay | | Linux | paplayaplayplayffplay (first available) | | Windows | PowerShell SoundPlayer |

Notes

  • Playback failures never block your push
  • Hook management is idempotent — safe to run sync multiple times
  • Only the managed block in the hook file is touched; your other hooks are preserved
  • Requires Node.js >= 18

License

See LICENSE.