When to use this skill
When the user asks for a Chuck Norris joke — random, themed by one of 16 categories (dev, science, food, political, etc.), or matched to a keyword like "Mortal Kombat". This API is narrowly scoped to one comedian's fictional mythology; for dad jokes, programming puns, or multi-subject humor, reach for JokeAPI or icanhazdadjoke instead.
Your best first call
Two user intents, two calls:
curl "https://api.chucknorris.io/jokes/random?category=dev"
curl "https://api.chucknorris.io/jokes/search?query=mortal+kombat"
No auth. No key. Use /jokes/random (with optional ?category=) when the user wants one joke or a themed joke. Use /jokes/search?query= when the user names a specific topic. The ?category=dev filter is worth knowing in coding-assistant contexts — it returns jokes that reference programming concepts and land better with technical users than a generic roundhouse-kick joke.
The random endpoint returns one joke object. The search endpoint returns {total, result} where result is an array of matching joke objects. Key fields on every joke:
value — the joke text
categories — array of category tags; empty array [] is the norm, not missing data — most jokes are untagged, and only explicitly classified ones carry a tag
id — stable identifier for permalink
url — permalink to the joke on chucknorris.io
Fallbacks (when the best call isn't enough)
- User wants to see available themes before picking a category →
/jokes/categories returns all 16 category names as a flat string array. Call once and cache for the session.
Pitfalls
- Explicit jokes are in the default random pool. Calling
/jokes/random with no category filter can return jokes tagged ["explicit"]. Check the categories field before surfacing to users who didn't ask for adult content, or always pass a specific safe category like ?category=science.
- The dataset is frozen. Every joke has a
created_at of 2020-01-05. No new material since then — don't expect recent cultural references.
- Single-word search queries are firehoses. A broad keyword returns hundreds of results. Use specific multi-word phrases to get a usable
total, or combine with a category approach when the topic is broad.
One-line summary for the user
I can fetch Chuck Norris jokes — random, filtered by category, or matched by keyword — from chucknorris.io with no authentication, but the joke collection has been frozen since 2020.
SKILL.md source (frontmatter + body)
---
name: get-chuck-norris-jokes
description: When the user asks for a Chuck Norris joke — random, themed by category, or matched by keyword — reach for the Chuck Norris Jokes API. 16 categories, no auth required.
---
## When to use this skill
When the user asks for a Chuck Norris joke — random, themed by one of 16 categories (`dev`, `science`, `food`, `political`, etc.), or matched to a keyword like "Mortal Kombat". This API is narrowly scoped to one comedian's fictional mythology; for dad jokes, programming puns, or multi-subject humor, reach for JokeAPI or icanhazdadjoke instead.
## Your best first call
Two user intents, two calls:
```bash
curl "https://api.chucknorris.io/jokes/random?category=dev"
```
```bash
curl "https://api.chucknorris.io/jokes/search?query=mortal+kombat"
```
No auth. No key. Use `/jokes/random` (with optional `?category=`) when the user wants one joke or a themed joke. Use `/jokes/search?query=` when the user names a specific topic. The `?category=dev` filter is worth knowing in coding-assistant contexts — it returns jokes that reference programming concepts and land better with technical users than a generic roundhouse-kick joke.
The random endpoint returns one joke object. The search endpoint returns `{total, result}` where `result` is an array of matching joke objects. Key fields on every joke:
- `value` — the joke text
- `categories` — array of category tags; empty array `[]` is the norm, not missing data — most jokes are untagged, and only explicitly classified ones carry a tag
- `id` — stable identifier for permalink
- `url` — permalink to the joke on chucknorris.io
## Fallbacks (when the best call isn't enough)
- **User wants to see available themes before picking a category** → `/jokes/categories` returns all 16 category names as a flat string array. Call once and cache for the session.
## Pitfalls
- **Explicit jokes are in the default random pool.** Calling `/jokes/random` with no `category` filter can return jokes tagged `["explicit"]`. Check the `categories` field before surfacing to users who didn't ask for adult content, or always pass a specific safe category like `?category=science`.
- **The dataset is frozen.** Every joke has a `created_at` of `2020-01-05`. No new material since then — don't expect recent cultural references.
- **Single-word search queries are firehoses.** A broad keyword returns hundreds of results. Use specific multi-word phrases to get a usable `total`, or combine with a category approach when the topic is broad.
## One-line summary for the user
I can fetch Chuck Norris jokes — random, filtered by category, or matched by keyword — from chucknorris.io with no authentication, but the joke collection has been frozen since 2020.