producer-tag
v0.1.0
Published
Play a producer-tag sound on git push with configurable defaults and custom audio.
Downloads
41
Maintainers
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-tagThat'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 repoIf install scripts are disabled in your environment, run
producer-tag sync(ornpx producer-tag sync) manually inside your project.
How It Works
- A
pre-pushgit hook is added to your project - Every time you run
git push, the hook plays your configured sound - Config is read from
producer-tag.config.json(project) or~/.config/producer-tag/config.json(global) - 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
- Custom sounds (
customSoundPath+customSoundPaths) — if valid files exist, these are used - Built-in sounds (
sound+sounds) - 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 configBuilt-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 previewPlatform Support
| Platform | Audio backend |
|----------|--------------|
| macOS | afplay |
| Linux | paplay → aplay → play → ffplay (first available) |
| Windows | PowerShell SoundPlayer |
Notes
- Playback failures never block your push
- Hook management is idempotent — safe to run
syncmultiple times - Only the managed block in the hook file is touched; your other hooks are preserved
- Requires Node.js >= 18
License
See LICENSE.
