---
name: dajare
description: 日本語のダジャレ（駄洒落）を生成するスキル。ユーザーが単語やお題・状況を入力すると、それをもとに面白いダジャレを3〜5個つくって返す。「ダジャレ」「駄洒落」「だじゃれ」「おやじギャグ」「シャレ」「洒落」「しゃれ」「語呂合わせ」「pun」といった言葉が出てきたら必ずこのスキルを使う。また、「〇〇で何か面白いこと言って」「〇〇でひとボケして」のように、言葉遊びやボケを求められた場合もこのスキルをトリガーする。
argument-hint: "[単語やお題] [--style 関西弁]"
---

# ダジャレジェネレーター

ユーザーから受け取った「元ネタ」をもとに、質の高いダジャレを3〜5個生成するスキル。

## 元ネタの受け取り方

元ネタは大きく2パターンある。

1. **単語**（例：「布団」「猫」「コーヒー」）
2. **お題・状況**（例：「寒い日の朝」「会議中の眠気」「夏祭り」）

単語が来たら、その単語の音（読み）を軸にダジャレを組み立てる。お題・状況が来たら、その場面に関連する単語をいくつか連想し、それぞれの音からダジャレを探る。

## スタイル

`--style` オプションでダジャレの「語り口」を切り替えられる。

- `--style 関西弁` のようにスタイルが指定された場合、**前置き・解説・締めコメント**を指定されたスタイルで書く。
- **ダジャレ本体は標準語のままでもOK。** 音の掛かりの成立が最優先であり、スタイルのために音の質を犠牲にしない。ただし、スタイルの言い回しで自然にダジャレが成立するならそちらを採用してよい。
- `--style` が指定されていない場合は、デフォルト（標準語）で出力する。

## 生成フロー

以下の5ステップを順番に踏む。各ステップの詳細な手法は `references/generation-guide.md` を参照すること。

### ステップ1：元ネタの音を分解する

元ネタをひらがなに変換し、母音列と子音列を書き出す。`scripts/rhyme.py` が利用可能な場合は `uv run {baseDir}/scripts/rhyme.py <元ネタ>` を実行して正確な分解を得ること。LLM の内部知識だけでは音の分解を間違えやすい。

### ステップ2：音が似ている言葉を大量に探す

以下の2つの探索を**並列に**実行し、結果をマージする。

**A. LLM の語彙で連想**（メインエージェント）：同音異義語・子音交換・母音列一致・部分一致・埋め込みなど、あらゆる変換パターンで候補を探す。このとき意味の距離を意識し、元ネタとかけ離れた分野の言葉を積極的に狙う。意味が遠いほど面白くなるため（`references/humor-theory.md` の第2層を参照）。

**B. 逆引き韻辞書で網羅検索**（サブエージェントまたは直接実行）：以下の2つの検索モードを使い分ける。

- `uv run {baseDir}/scripts/rhyme.py --search <元ネタ>` — 母音列が完全一致する単語を辞書（約4万語）から検索。正確な韻を見つけたいときに使う。
- `uv run {baseDir}/scripts/rhyme.py --search-embed <元ネタ>` — 韻bedding（母音 n-gram ベクトル）によるファジー検索。母音列が部分的に似ている語や、モーラ数が異なる語感踏みも発見できる。幅広く候補を探したいときに使う。

サブエージェント（Agent ツール等）が使える環境では、この検索をサブエージェントに委譲して A と並列に走らせること。使えない場合は直接実行する。

### ステップ3：文脈のある一文に仕上げる

音の重なりを見つけたら、短く・自然に・情景が浮かぶ一文に組み上げる。聞いた瞬間に掛かりが分かり、日本語の文としても自然に読めることが目標。

### ステップ4：検証（サブエージェントに委譲）

生成したダジャレの検証は**サブエージェントに委譲する**こと。自分で作ったものを自分で評価すると甘くなりやすい。検証基準とサブエージェントへの指示テンプレートは `references/generation-guide.md` のステップ4を参照。サブエージェントが使えない環境では自分で実行するが、**音の照合は必ず `scripts/rhyme.py` を実行**すること。

**改善ループ：** 不合格で3個未満になったら、理由を踏まえてステップ2-3に戻り追加生成する（1回まで）。それでも足りなければ少数でも質の高いものだけを出力する（質 > 数）。

### ステップ5：バリエーションのバランスを整える

ストレート型（即座に分かる）1〜2個、知的シャレ型（一瞬考える）1〜2個、ぶっ飛び型（無理に入れない）0〜1個をバランスよく混ぜる。

## 参照ファイル

生成中に以下を必要に応じて読み込むこと。

| ファイル | 内容 | 読むタイミング |
|---|---|---|
| `references/humor-theory.md` | 面白さの3層構造（音・意味・文脈）の理論 | 生成方針に迷ったとき |
| `references/generation-guide.md` | 各ステップの詳細手法・長い単語への対応・検証手順・バリエーション定義 | 生成プロセスの各ステップで |
| `references/examples.md` | 思考プロセス付きの生成例（猫・コーヒー・会議・関西弁） | 初回生成時や品質のベンチマークとして |
| `references/bad-examples.md` | LLMが陥りやすい5つの失敗パターン | ステップ4の自己チェック時 |
| `scripts/rhyme.py` | 読み変換・母音列・子音列抽出・類似度比較 | ステップ1とステップ4で |
| `scripts/rhyme.py --search` | 逆引き韻辞書検索（母音列完全一致） | ステップ2で正確な韻候補を探すとき |
| `scripts/rhyme.py --search-embed` | 韻beddingファジー検索（語感踏み対応） | ステップ2で幅広く候補を探すとき |

## 出力フォーマット

以下の形式で出力する。思考プロセス（ステップ1〜5）は内部で行い、出力には含めない。

1. **前置き** — 元ネタに触れつつ1行程度
2. **ダジャレ本体** — 3〜5個、番号付き。各ダジャレは太字で、直後にどこが掛かっているかの解説（カッコ書き、1行以内）
3. **締め** — 軽い一言コメント

質が高いものが3個なら3個でよい。数合わせで質を落とすより、3個の粒ぞろいの方がずっと良い。解説は簡潔に。ダジャレの面白さを損なわない程度に留める。

## 注意点

- 元ネタが下ネタや差別的な言葉の場合は、品のあるダジャレに昇華させること。攻撃的・差別的な内容にはしない。
- 有名すぎる既存のダジャレはそのまま出さない。ただし、うまく発展させたアレンジならOK。
- 元ネタが英語やカタカナ語の場合も、日本語の音との掛け合わせを積極的に探る。逆に、日本語の元ネタに対して英語を掛けるのもアリ。
