# Nerdy Jokes

> >

- **Type:** Skill
- **Install:** `agentstack add skill-shyuan-skills-nerdy-jokes`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [shyuan](https://agentstack.voostack.com/s/shyuan)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [shyuan](https://github.com/shyuan)
- **Source:** https://github.com/shyuan/skills/tree/main/skills/nerdy-jokes

## Install

```sh
agentstack add skill-shyuan-skills-nerdy-jokes
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Nerdy Jokes

700 one-liner jokes (418 English, 282 Traditional Chinese) spanning programming
and STEM disciplines. Each joke is tagged by topic for contextual delivery.

Sources:
- [pyjokes](https://github.com/pyjokes/pyjokes) (BSD-3) — English programming jokes
- [JokeKappa](https://github.com/vinta/JokeKappa) (MIT) — Chinese programming jokes
- Curated STEM collection — classic folk humor in math, physics, chemistry, etc.

## When to tell a joke

**Transition moments** — right after a resolution, not during the struggle.
Tell at most one joke per session. Treat it like seasoning.

## Tags

### Programming (517 jokes)

| Tag | Count | Matches when... |
|---|---|---|
| `work-culture` | 90 | meetings, deadlines, overtime, scrum, career |
| `algorithms` | 85 | recursion, threads, data structures, complexity |
| `languages` | 73 | Java, Python, C++, type systems, compilers |
| `debugging` | 71 | bugs, errors, testing, fixing, QA |
| `general` | 57 | broad programmer humor |
| `tools` | 41 | vim, git, editors, dependencies, Stack Overflow |
| `os` | 38 | Windows, Linux, hardware |
| `ai` | 29 | machine learning, bots, singularity |
| `networking` | 27 | HTTP, TCP/UDP, APIs, Unicode |
| `devops` | 22 | deploy, CI/CD, servers, Docker |
| `security` | 19 | passwords, hacking, encryption |
| `databases` | 10 | SQL, queries, ORM |
| `frontend` | 4 | CSS, HTML, browsers |
| `legacy` | 4 | old code, technical debt |

### STEM (183 jokes)

| Tag | Count | Matches when... |
|---|---|---|
| `math` | 47 | proofs, topology, calculus, number theory |
| `physics` | 37 | quantum, relativity, thermodynamics |
| `chemistry` | 22 | elements, reactions, periodic table |
| `statistics` | 18 | p-values, correlation, sampling |
| `economics` | 18 | markets, economists, predictions |
| `philosophy` | 18 | logic, existence, paradoxes |
| `linguistics` | 15 | grammar, punctuation, etymology |
| `biology` | 13 | cells, DNA, evolution |
| `astronomy` | 12 | space, planets, gravity |
| `engineering` | 10 | mechanical, civil, design |

### Chuck Norris (category, not a tag)

103 Chuck Norris programmer jokes live under `--category chuck` (English) rather
than the topic tags above. They are exaggerated hero gags ("Chuck Norris can
divide by zero"), not tied to a specific STEM/programming topic — reach for them
only when the session tone is playful and a tall-tale punchline fits. Skip them
in a focused or serious thread.

## How to pick a joke

### Match language → match context

```bash
# Just fixed a bug
python3 scripts/joke.py --tag debugging --lang zh

# Discussing a math proof
python3 scripts/joke.py --tag math --lang en

# Physics rabbit hole
python3 scripts/joke.py --tag physics --lang zh

# Data analysis gone wrong
python3 scripts/joke.py --tag statistics --lang en

# Economics or policy discussion
python3 scripts/joke.py --tag economics --lang zh

# No specific context — random
python3 scripts/joke.py --lang zh
```

### Fallback

If `--tag X --lang Y` returns nothing, the script falls back to `--lang Y` only.

### CLI reference

```bash
python3 scripts/joke.py                            # random joke
python3 scripts/joke.py --lang zh                   # random Chinese joke
python3 scripts/joke.py --tag physics --lang en     # English physics joke
python3 scripts/joke.py --keyword Schrödinger       # search by keyword
python3 scripts/joke.py --category chuck            # Chuck Norris jokes
python3 scripts/joke.py --tags                      # list all tags + counts
python3 scripts/joke.py --count                     # count matching jokes
```

## Delivery style

- Drop the joke naturally after task wrap-up, don't announce it
- Use `>` blockquote to set it apart visually
- Don't explain the joke — if it needs explaining, pick another one
- Match the user's working language; don't default to 中文 if the session is in English

### Iron Laws — Rationalization Table

| What you'll be tempted to think | The rule |
|---|---|
| "Just one line of setup will make it land" | If it needs setup, pick another joke. No exceptions. |
| "The user smiled, a second one fits" | One per session. Diminishing returns are steep. |
| "User is stuck/frustrated but a joke might cheer them up" | No. Solve first, joke only after resolution. |
| "The punchline is subtle, a brief gloss helps" | Never explain. A gloss kills the joke and insults the reader. |
| "I should announce it so the user notices the tonal shift" | Don't. The blockquote is the signal. |

### Example

After a long debugging session involving quantum-level race conditions:

> 終於修好了。
>
> 海森堡超速被攔，警察問：「你知道你開多快嗎？」海森堡：「不知道，但我精確地知道我在哪。」

English session equivalent:

> All green.
>
> A SQL query walks into a bar, approaches two tables, and asks: "Mind if I join you?"

## Gotchas

- **Mid-struggle delivery** — telling a joke while the user is still debugging reads as tone-deaf. Wait for a clean resolution signal (tests pass, deploy completes, "got it", "fixed").
- **Language mismatch** — the CLI defaults to random language. Always pass `--lang` to match the session, otherwise a 中文 joke lands flat in an English debugging thread (and vice versa).
- **Silent empty result** — if `--tag X --lang Y` has zero matches, joke.py falls back to `--lang Y` only; if that's also empty, it picks from all jokes. Verify the printed joke actually matches the context before delivering — don't blindly forward an off-topic fallback.
- **Tag over-specificity** — narrow tags (`frontend`, `legacy`) have few jokes and recycle fast within a project. Prefer broader tags (`general`, `debugging`) for repeat sessions.
- **Explaining the punchline** — the single strongest failure mode. If you catch yourself typing "this works because…", delete the joke entirely and move on.
- **Stacking** — two jokes in one response dilutes both. Pick one, commit.
- **Sarcasm near frustration** — jokes about common pitfalls (`work-culture`, `debugging`) can read as mockery when the user just hit that exact pitfall. Use `general` or a STEM tag instead.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [shyuan](https://github.com/shyuan)
- **Source:** [shyuan/skills](https://github.com/shyuan/skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-shyuan-skills-nerdy-jokes
- Seller: https://agentstack.voostack.com/s/shyuan
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
