From saucy-status
Control saucy-status mode. Use when user types /saucy [on|off|gooning|status|install|uninstall]. No arg → toggle off↔saucy.
How this skill is triggered — by the user, by Claude, or both
Slash command
/saucy-status:saucyhaikuThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Voice cadence: at every user-visible workflow transition, try to dispatch `warden:voice` with `SUMMARY: <≤15 words, in the user's language>`, `PERSONA_CONTRACT_PATH: ${CLAUDE_PLUGIN_ROOT}/shared/persona-line-contract.md`, and `VOICE_FLAG_PATH: $HOME/.claude/nuthouse/voice.state`. Visible transitions are skill start, context resolved, user decision point, external mutation gate, handoff, recov...
Voice cadence: at every user-visible workflow transition, try to dispatch
warden:voicewithSUMMARY: <≤15 words, in the user's language>,PERSONA_CONTRACT_PATH: ${CLAUDE_PLUGIN_ROOT}/shared/persona-line-contract.md, andVOICE_FLAG_PATH: $HOME/.claude/nuthouse/voice.state. Visible transitions are skill start, context resolved, user decision point, external mutation gate, handoff, recoverable failure, final report, and clean exit. Print the returnedlineonly when non-empty. Ifwardenis unavailable, errors, returns malformed output, or voice is disabled, print nothing and continue. Never make voice dispatch a precondition, never retry it, and never mention missingwardento the user.
Read ../../../persona.md at skill start — the saucy voice is canonical. Mechanical work (flag toggle, state file write) stays serious — only the strings are saucy.
Preconditions:
CLAUDE_PLUGIN_DATA is available. If not, abort: "CLAUDE_PLUGIN_DATA is required — cannot write state."CLAUDE_PLUGIN_ROOT as 3 levels above this skill's base directory (BASE_DIR/../../..).Parse arg:
| Arg | Action |
|---|---|
on or saucy | write saucy |
off | write off |
gooning | write gooning |
status | report current mode, no write |
install | write statusLine to ~/.claude/settings.json |
uninstall | remove statusLine from ~/.claude/settings.json, remove flag |
| (none) | toggle: off → saucy, else → off |
Run the Node.js snippet via Bash, passing computed root:
CLAUDE_PLUGIN_ROOT="$(cd "BASE_DIR/../../.." && pwd)" CLAUDE_PLUGIN_DATA="$CLAUDE_PLUGIN_DATA" node -e "SNIPPET"
Use this snippet, replacing ARG with the user's argument (or empty string) and BASE_DIR with the actual base directory path:
const fs = require("fs");
const os = require("os");
const path = require("path");
const pluginRoot = process.env.CLAUDE_PLUGIN_ROOT;
const pluginData = process.env.CLAUDE_PLUGIN_DATA;
if (!pluginData) {
console.error("CLAUDE_PLUGIN_DATA is required for saucy-status state");
process.exit(1);
}
const flagPath = path.join(pluginData, ".state");
const arg = "ARG".trim();
let current = "off";
try {
current = fs.readFileSync(flagPath, "utf8").trim();
} catch (e) {}
function shellQuote(value) {
return "'" + String(value).replace(/'/g, "'\\''") + "'";
}
if (arg === "status") {
console.log(`saucy-status: ${current}`);
process.exit(0);
}
if (arg === "install") {
const settingsPath = path.join(os.homedir(), ".claude", "settings.json");
let settings = {};
try {
settings = JSON.parse(fs.readFileSync(settingsPath, "utf8"));
} catch {}
settings.statusLine = {
type: "command",
command: `SAUCY_STATUS_ROOT=${shellQuote(pluginRoot)} SAUCY_STATUS_DATA=${shellQuote(pluginData)} bash ${shellQuote(path.join(pluginRoot, "hooks", "statusline.sh"))}`,
};
fs.mkdirSync(path.dirname(settingsPath), { recursive: true });
fs.writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}\n`, "utf8");
console.log("saucy-status installed — restart Claude Code to apply");
process.exit(0);
}
if (arg === "uninstall") {
const settingsPath = path.join(os.homedir(), ".claude", "settings.json");
let settings = {};
try {
settings = JSON.parse(fs.readFileSync(settingsPath, "utf8"));
} catch (e) {}
const statusCommand = settings.statusLine?.command || "";
if (
statusCommand.includes("saucy-status") ||
statusCommand.includes(path.join(pluginRoot, "hooks", "statusline.sh"))
) {
delete settings.statusLine;
fs.writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}\n`, "utf8");
}
try {
fs.unlinkSync(flagPath);
} catch (e) {}
console.log("saucy-status uninstalled — restart Claude Code to apply");
process.exit(0);
}
let next;
switch (arg) {
case "on":
case "saucy":
next = "saucy";
break;
case "off":
next = "off";
break;
case "gooning":
next = "gooning";
break;
case "":
next = current === "off" ? "saucy" : "off";
break;
default:
console.error(`unknown arg: ${arg}. Use on|off|gooning|status|install|uninstall`);
process.exit(1);
}
fs.mkdirSync(pluginData, { recursive: true });
fs.writeFileSync(flagPath, next, { flag: "w" });
console.log(`saucy-status: ${next}`);
Report the resulting state:
saucy → "saucy mode activated 🌶️ — suggestive messages enabled"off → "saucy-status off — back to normal"gooning → "GOONING mode 🫠 — Claude lost in your embeddings"status → "current mode: "install → "saucy-status installed — restart Claude Code to apply"uninstall → "saucy-status uninstalled — restart Claude Code to apply"git push, git commit, or git rebase.CLAUDE_PLUGIN_DATA is unavailable — abort instead.CLAUDE_PLUGIN_ROOT as writable — it's read-only package data.~/.claude/settings.json for any arg other than install or uninstall.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub g-bastianelli/nuthouse --plugin saucy-status