| name | new-userscript |
| description | Scaffold a new Tampermonkey userscript with a complete `==UserScript==` metadata block, sensible defaults, and a starter IIFE body. Drops it in the user's userscripts base directory if configured, otherwise asks where to place it. |
New Userscript
Create a new userscript file ready to load into Tampermonkey.
Resolve the base path
Order of precedence:
$USERSCRIPT_REPOS_BASE env var
userscripts_base_path from ${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/userscript-development/config.json
- Ask the user
Inputs
- Script name (kebab-case for filename, human-readable for
@name)
- Target site(s) — for
@match / @include (use @match by preference; it's stricter)
- What the script does — one sentence for
@description
- Run timing —
document-start | document-end | document-idle (default document-idle)
- Needed APIs — any
GM_* / GM.* grants (default none)
Metadata block reference
Use the official Tampermonkey metadata keys. Common ones:
Full key list: https://www.tampermonkey.net/documentation.php?locale=en#meta
Body template
(function () {
'use strict';
console.log('[<script-name>] loaded on', location.href);
})();
Layout
Create <base>/<script-name>/:
<script-name>.user.js — the script (Tampermonkey requires the .user.js suffix for install URLs)
README.md — placeholder; tell the user to run generate-readme later
.git — git init it so it's ready to publish
If the user prefers single-file userscripts (no per-script directory), accept <base>/<script-name>.user.js instead. Ask once and remember the choice in the user's config if they want.