Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add guruswami-ai/not-happy-jan --skill not-happy-jangit clone --depth 1 https://github.com/guruswami-ai/not-happy-janWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/guruswami-ai/not-happy-jan/not-happy-jan)<a href="https://agentmods.dev/skills/guruswami-ai/not-happy-jan/not-happy-jan"><img src="https://agentmods.dev/badge/skills/guruswami-ai/not-happy-jan/not-happy-jan/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/guruswami-ai/not-happy-jan/not-happy-jan"><img src="https://agentmods.dev/badge/skills/guruswami-ai/not-happy-jan/not-happy-jan.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00042 | $0.00627 |
| Opus 5 | $0.00021 | $0.00313 |
| Sonnet 5 | $0.00008 | $0.00125 |
| Haiku 4.5 | $0.00004 | $0.00063 |
Grade A, and why
not-happy-jan scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Not-Happy-Jan settings
Use the nhj CLI to inspect and change Not-Happy-Jan settings. Changes take effect on the next vibe; no Claude restart is needed.
Running the CLI
Use nhj if it's on PATH; otherwise use the project venv:
<project>/.venv/bin/nhj <command>.
The dials
- Jan —
ockerism(1 professional … 10 broad bogan … 11 swearing);competence - Bazza —
stress(1 apathetic … 10 anxious/fast);competence - Karren —
karren(1 curt … 10 full "NOT HAPPY JAN" meltdown)
Commands to run
| User says… | Run |
|---|---|
| "what are the current settings?" | nhj status |
| "make Jan more bogan" / "set Jan's ockerism to 8" | nhj set jan.ockerism 8 |
| "make Jan less competent / muddled" | nhj set jan.competence 3 |
| "let Jan swear" / "full bogan" | nhj set jan.ockerism 11 or nhj swearing on |
| "stop bleeping / raw swears" / "change the bleep" | nhj censor off or nhj censor beep / quack / honk |
| "crank Karren to 11" | nhj set karren.karren 10 |
| "make Bazza less anxious" | nhj set bazza.stress 2 |
| "turn the hold music on / off" | nhj muzak on / nhj muzak off |
| "mute the notifications" | nhj mute |
| "unmute" | nhj unmute |
| "test an error vibe" | nhj test err -m "test message" |
Notes
- Prefer
nhj statusbefore and after changes when the user asks what is currently set or wants confirmation. - Runtime overrides live in NHJ's platform state location (
NHJ_STATE_FILEor the platform state dir;NHJ_STATE_DIRcan override the directory). - Config lives in the checkout
.envduring source use, or the platform config location for installed/wheel use (NHJ_CONFIG_DIRcan override it). mutesilences all channels untilnhj unmute.- Swearing is censored by default; only run
nhj censor offif the user explicitly asks for raw swears.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 45 lines · 42 tokens per session scan A ce44231426e9
not-happy-jan is a skill published in the GitHub repository guruswami-ai/not-happy-jan (0 stars, last pushed 3mo ago), licensed MIT. It adds 42 tokens to every session and 627 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
voice-chatterbox-tts
Use when free local TTS with voice cloning using Chatterbox. Zero API costs, word-level timing, whisper integration. Clone any voice with 10-60s reference audio. Use when generating narration, voiceovers, or custom AI voices.
frame-macos-notification
Realistic macOS notification banner with app icon, title, and body, suited to video overlays or product teasers.
ensembl-database
Query Ensembl genome database REST API for 250+ species. Gene lookups, sequence retrieval, variant analysis, comparative genomics, orthologs, VEP predictions, for genomic research.
mochi-remind
Handle due reminders — notify the user with natural language and mark them done.
aatmf-t10-confidentiality-breach
AATMF T10 — Integrity & Confidentiality Breach. System prompt extraction, training-data extraction, model-weight leakage, private-key recovery.
memory
Use when the user asks to remember, recall, forget, update, search, or inspect durable OpenSquilla memory, including profile facts in USER.md and long-term notes in MEMORY.md or memory//.md.