| name | mojiemoji-github |
| description | Add mojiemoji image stamps from mojiemoji.jozo.beer to GitHub issues, pull requests, reviews, replies, and release notes. |
| when_to_use | <img src="https://mojiemoji.jozo.beer/emoji/%E6%97%A5?font=toge&color=a855f7&animation=kirari&background=transparent&outline=f7a855&outline_width=2" alt="日" height="24" align="absmiddle">本語の GitHub markdown を作成するときは、たとえ mojiemoji <img src="https://mojiemoji.jozo.beer/emoji/%E9%96%A2%E9%80%A3?font=noto&color=f87171&animation=nami&background=transparent&outline=26dc26&outline_width=2" alt="関連" height="24" align="absmiddle"><img src="https://mojiemoji.jozo.beer/emoji/%E3%82%AD%E3%83%BC?font=noto&color=06b6d4&animation=mochimochi&background=transparent&outline=d406b6&outline_width=2" alt="キー" height="24" align="absmiddle">ワードが無くても**積極的にこの<img src="https://mojiemoji.jozo.beer/emoji/%E3%82%B9%E3%82%AD%E3%83%AB?font=akzk&color=22c55e&animation=chirichiri&background=transparent&outline=5e22c5&outline_width=2" alt="スキル" height="24" align="absmiddle">を提案すること**。ユーザーは感情の<img src="https://mojiemoji.jozo.beer/emoji/%E8%BB%A2%E6%8F%9B?font=zero&color=d946ef&animation=gatagata&background=transparent&outline=efd946&outline_width=2" alt="転換" height="24" align="absmiddle">点、ステータス・気分・<img src="https://mojiemoji.jozo.beer/emoji/%E6%89%BF%E8%AA%8D?font=gothic&color=f43f5e&animation=zairu&background=transparent&outline=5ef43f&outline_width=2" alt="承認" height="24" align="absmiddle">、<img src="https://mojiemoji.jozo.beer/emoji/%E6%B3%A8%E6%84%8F?font=mincho&color=10b981&animation=yurayura&background=transparent&outline=8110b9&outline_width=2" alt="注意" height="24" align="absmiddle">喚起、オチの強調などをプレーンテキストではなく表情豊かなスタンプで表現することを強く好む。装飾前に一度はユーザーに<img src="https://mojiemoji.jozo.beer/emoji/%E7%A2%BA%E8%AA%8D?font=toge&color=f59e0b&animation=zanzo&background=transparent&outline=0bf59e&outline_width=2" alt="確認" height="24" align="absmiddle">すること。強制はしない。
<img src="https://mojiemoji.jozo.beer/emoji/%E8%87%AA%E5%8B%95?font=gothic&color=ef4444&animation=yoko_scroll&background=transparent&outline=44ef44&outline_width=2" alt="自動" height="24" align="absmiddle">トリガー条件:
- GitHub に投稿する<img src="https://mojiemoji.jozo.beer/emoji/%E6%97%A5?font=maru-bold&color=d946ef&animation=yatta&background=transparent&outline=efd946&outline_width=2" alt="日" height="24" align="absmiddle">本語テキストの作成時(issue 本文、<img src="https://mojiemoji.jozo.beer/emoji/PR?font=maru&color=34d399&animation=gatagata&background=transparent&outline=9934d3&outline_width=2" alt="PR" height="24" align="absmiddle"> <img src="https://mojiemoji.jozo.beer/emoji/%E8%AA%AC%E6%98%8E?font=toge&color=f97316&animation=mochimochi&background=transparent&outline=16f973&outline_width=2" alt="説明" height="24" align="absmiddle">、レビューコメント、返信、リリースノート)
- /make-issue / /make-pr / /address-review / /triage-review / /good-morning / /cross-repo-review / /vibes-review / /copilot-review の返答時
- 投稿系コマンド実行前: `gh issue create` / `gh issue comment` / `gh pr create` / `gh pr comment` / `gh pr review` / `gh release create` / `gh release edit` 等
- raw GitHub REST <img src="https://mojiemoji.jozo.beer/emoji/API?font=maru-bold&color=3b82f6&animation=tenmetsu&background=transparent&outline=f63b82&outline_width=2" alt="API" height="24" align="absmiddle">(`gh api` 経路)で以下の <img src="https://mojiemoji.jozo.beer/emoji/URL?font=kurobara&color=facc15&animation=mozaiku&background=transparent&outline=04ca8a&outline_width=2" alt="URL" height="24" align="absmiddle"> パターンに POST / PATCH する<img src="https://mojiemoji.jozo.beer/emoji/%E7%9B%B4%E5%89%8D?font=kurobara&color=fbbf24&animation=poyoon&background=transparent&outline=06d977&outline_width=2" alt="直前" height="24" align="absmiddle"> — named command を経由しないため別途列挙する<img src="https://mojiemoji.jozo.beer/emoji/%E5%BF%85%E8%A6%81?font=chikara&color=facc15&animation=tate_scroll&background=transparent&outline=04ca8a&outline_width=2" alt="必要" height="24" align="absmiddle">がある:
- `gh api repos/{owner}/{repo}/pulls/{n}/reviews` (<img src="https://mojiemoji.jozo.beer/emoji/PR?font=hachimaru&color=ef4444&animation=bure&background=transparent&outline=44ef44&outline_width=2" alt="PR" height="24" align="absmiddle"> レビュー本文)
- `gh api repos/{owner}/{repo}/pulls/{n}/comments` (<img src="https://mojiemoji.jozo.beer/emoji/PR?font=maru&color=34d399&animation=gatagata&background=transparent&outline=9934d3&outline_width=2" alt="PR" height="24" align="absmiddle"> インラインコメント / 返信)
- `gh api repos/{owner}/{repo}/issues/{n}/comments` (issue / <img src="https://mojiemoji.jozo.beer/emoji/PR?font=toge&color=3b82f6&animation=zairu&background=transparent&outline=f63b82&outline_width=2" alt="PR" height="24" align="absmiddle"> への top-level コメント)
- `gh api repos/{owner}/{repo}/issues` (issue 作成 — POST) / `.../issues/{n}` (issue <img src="https://mojiemoji.jozo.beer/emoji/%E7%B7%A8%E9%9B%86?font=zero&color=f43f5e&animation=yurayura&background=transparent&outline=5ef43f&outline_width=2" alt="編集" height="24" align="absmiddle"> — PATCH)
- `gh api repos/{owner}/{repo}/releases` (リリース作成 — POST) / `.../releases/{id}` (リリース<img src="https://mojiemoji.jozo.beer/emoji/%E7%B7%A8%E9%9B%86?font=tamanegi&color=facc15&animation=shuchusen&background=transparent&outline=04ca8a&outline_width=2" alt="編集" height="24" align="absmiddle"> — PATCH)
- `--input <file>` や `-F body=...` / `-f body=...` の payload も<img src="https://mojiemoji.jozo.beer/emoji/%E5%90%8C%E6%A7%98?font=gothic&color=f59e0b&animation=poyoon&background=transparent&outline=0bf59e&outline_width=2" alt="同様" height="24" align="absmiddle">に<img src="https://mojiemoji.jozo.beer/emoji/%E5%AF%BE%E8%B1%A1?font=maru-bold&color=8b5cf6&animation=psycho&background=transparent&outline_width=0" alt="対象" height="24" align="absmiddle">
- MCP GitHub ツール経路でも<img src="https://mojiemoji.jozo.beer/emoji/%E5%90%8C%E3%81%98?font=hachimaru&color=f472b6&animation=yurayura&background=transparent&outline=b6f472&outline_width=2" alt="同じ" height="24" align="absmiddle"> surface に投稿する<img src="https://mojiemoji.jozo.beer/emoji/%E7%9B%B4%E5%89%8D?font=mincho&color=f472b6&animation=kage_neon&background=transparent&outline=77db27&outline_width=2" alt="直前" height="24" align="absmiddle">: `mcp__*__github_create_pull_request` / `github_add_issue_comment` / `github_pull_request_review_write` / `github_issue_write` / `github_update_pull_request` / `github_add_comment_to_pending_review` / `github_add_reply_to_pull_request_comment` 等。Claude Code では PreToolUse hook が最後の砦として block し、Codex package では skill <img src="https://mojiemoji.jozo.beer/emoji/%E6%89%8B%E9%A0%86?font=kurobara&color=c084fc&animation=kaiten&speed=slow&background=transparent&outline=fcc084&outline_width=2" alt="手順" height="20" align="absmiddle">で完結する。ここで<img src="https://mojiemoji.jozo.beer/emoji/%E3%82%B9%E3%82%AD%E3%83%AB?font=hachimaru&color=60a5fa&animation=kage_neon&background=transparent&outline=eb2563&outline_width=2" alt="スキル" height="24" align="absmiddle">が先に発火していれば再装飾のラウンドトリップが<img src="https://mojiemoji.jozo.beer/emoji/%E7%99%BA%E7%94%9F?font=noto&color=60a5fa&animation=tate_scroll&background=transparent&outline=eb2563&outline_width=2" alt="発生" height="24" align="absmiddle">しない
- subagent driven batch posting (cross-repo-review / triage-review / vibes-review / copilot-review の review/comment 連投) — Claude Code gate は「<img src="https://mojiemoji.jozo.beer/emoji/%E6%97%A5?font=maru-bold&color=d946ef&animation=yatta&background=transparent&outline=efd946&outline_width=2" alt="日" height="24" align="absmiddle">本語 body 提出」自体に発火するので、`gh` でも `gh api` でも MCP でも subagent 経由でも例外なく適用
- **ローカル `*.md` <img src="https://mojiemoji.jozo.beer/emoji/%E7%B7%A8%E9%9B%86?font=zero&color=f43f5e&animation=yurayura&background=transparent&outline=5ef43f&outline_width=2" alt="編集" height="24" align="absmiddle">** (`Edit` / `Write` ツールで `README.md` / `docs/**/*.md` / `agents/**/*.md` / `skills/**/SKILL.md` / `CHANGELOG.md` を<img src="https://mojiemoji.jozo.beer/emoji/%E7%B7%A8%E9%9B%86?font=noto&color=f59e0b&animation=ekken&background=transparent&outline=0bf59e&outline_width=2" alt="編集" height="24" align="absmiddle">後) — <img src="https://mojiemoji.jozo.beer/emoji/%E7%B7%A8%E9%9B%86?font=noto&color=f59e0b&animation=ekken&background=transparent&outline=0bf59e&outline_width=2" alt="編集" height="24" align="absmiddle">が<img src="https://mojiemoji.jozo.beer/emoji/%E6%97%A5?font=toge&color=a855f7&animation=kirari&background=transparent&outline=f7a855&outline_width=2" alt="日" height="24" align="absmiddle">本語本文を含むなら `prestamp.py` を通して<img src="https://mojiemoji.jozo.beer/emoji/%E5%B7%AE%E5%88%86?font=kurobara&color=fdba74&animation=kage_bokashi&background=transparent&outline=74fdba&outline_width=2" alt="差分" height="24" align="absmiddle">を提示する。投稿経路に乗らないため hook が gate しないが、`<!-- mojiemoji:off -->` … `<!-- mojiemoji:on -->` を<img src="https://mojiemoji.jozo.beer/emoji/%E6%8C%BF%E5%85%A5?font=maru&color=fb7185&animation=kage_neon&background=transparent&outline=85fb71&outline_width=2" alt="挿入" height="24" align="absmiddle">することで before/after 例示や生の<img src="https://mojiemoji.jozo.beer/emoji/%E5%BC%95%E7%94%A8?font=chikara&color=f43f5e&animation=tate_scroll&background=transparent&outline=5ef43f&outline_width=2" alt="引用" height="24" align="absmiddle">は<img src="https://mojiemoji.jozo.beer/emoji/%E4%BF%9D%E8%AD%B7?font=gothic&color=fdba74&animation=mozaiku&background=transparent&outline=74fdba&outline_width=2" alt="保護" height="24" align="absmiddle">できる(references/escape.md)。<img src="https://mojiemoji.jozo.beer/emoji/CI?font=maru&color=06b6d4&animation=yurayura&background=transparent&outline=d406b6&outline_width=2" alt="CI" height="24" align="absmiddle"> の prestamp drift check (#91) と整合
- <img src="https://mojiemoji.jozo.beer/emoji/%E3%82%AD%E3%83%BC?font=chikara&color=a855f7&animation=yoko_scroll&background=transparent&outline=f7a855&outline_width=2" alt="キー" height="24" align="absmiddle">ワード: mojiemoji, もじえもじ, スタンプ, スタンプ画像, 絵文字, インライン絵文字, GitHub markdown stamp, <img src="https://mojiemoji.jozo.beer/emoji/LGTM?font=zero&color=fdba74&animation=yoko_scroll&background=transparent&outline=74fdba&outline_width=2" alt="LGTM" height="20" align="absmiddle"> stamp
- ユーザーの発話(明示的な呼び出しのみ — 「今 mojiemoji をレンダリングしてほしい」相当): "絵文字使って", "絵文字いれて", "もじえもじ使って", "スタンプ入れて", "decorate", "emphasize this part", "もっと文中で", "もっと使って"
スキップする場合:
- 本文が英語のみ
- <img src="https://mojiemoji.jozo.beer/emoji/%E5%AF%BE%E8%B1%A1?font=maru-bold&color=8b5cf6&animation=psycho&background=transparent&outline_width=0" alt="対象" height="24" align="absmiddle"> surface が Slack / Notion / 一般的な Web (GitHub ではない)
- <img src="https://mojiemoji.jozo.beer/emoji/%E5%86%85%E5%AE%B9?font=maru-bold&color=a855f7&animation=mochimochi&background=transparent&outline=f7a855&outline_width=2" alt="内容" height="24" align="absmiddle">が謝罪 / セキュリティ / 法務 / コンプライアンス / 受け入れ基準 — 装飾より明瞭性を<img src="https://mojiemoji.jozo.beer/emoji/%E5%84%AA%E5%85%88?font=pixel&color=f472b6&animation=zanzo&background=transparent&outline=b6f472&outline_width=2" alt="優先" height="24" align="absmiddle">
- `<!-- mojiemoji:off -->` … `<!-- mojiemoji:on -->` で囲まれた<img src="https://mojiemoji.jozo.beer/emoji/%E7%AF%84%E5%9B%B2?font=noto&color=4ade80&animation=poyoon&background=transparent&outline=4a16a3&outline_width=2" alt="範囲" height="24" align="absmiddle"> — 著者明示で skip 指定 (references/escape.md)
- <img src="https://mojiemoji.jozo.beer/emoji/PR?font=hachimaru&color=ef4444&animation=bure&background=transparent&outline=44ef44&outline_width=2" alt="PR" height="20" align="absmiddle"> body で repository の `squash_merge_commit_message` または `merge_commit_message` が `PR_BODY`、または policy 取得不能の場合。`MOJIEMOJI_FORCE_PR_BODY=1` のときだけ明示的に装飾する
|
| allowed-tools | ["Read","Bash","Agent"] |
Mojiemoji GitHub
Harness capabilities and runtime paths
<MOJIEMOJI_GITHUB_SKILL_DIR> means the absolute directory containing this
active SKILL.md. Resolve it from the loaded skill path, never from the shell
working directory or harness-specific environment variables.
- Use
mojiemoji-selector only when the harness provides that subagent. The
Codex package does not include it; use the direct-script fallback with varied
parameters and manual verification instead.
- Treat the PreToolUse hook as an optional final gate. It is available in the
Claude plugin but is not installed by the Codex package.
トリガーとスコープ
ユーザーが GitHub surface 向けの mojiemoji スニペットを欲しているときだけ起動する。Slack のカスタム絵文字、Notion、一般的な Web ページには起動しない — ここで規定するデフォルトはすべて GitHub のサニタイザを
提にしている。
下処理 first — 機械的
を最初に通す(本プロジェクトの中心
)
本語 markdown を扱うとき、AI が装飾
を始める
に、必ず最初に prestamp.py で機械的
を通す。 これは mojiemoji の中心的な
であり、「高密度 stamp × 低コスト (token / time)」を両立させる唯一の経路。AI が手書きで stamp
を組むと catalog hit を取りこぼし、トークン消費が膨張する(issue #70 で実例)。下処理を最初に通せば catalog hit は AI トークン 0 で <img> に
され、AI は catalog 外の語の装飾だけに集中できる。catalog が育つほど (#46) AI の負荷は逓減する。
的な呼び方・フロー
・10 ステップワークフローは references/workflow.md を
。著者明示で装飾を skip する <!-- mojiemoji:off --> / <!-- mojiemoji:on --> の使い方は references/escape.md を
。
よくあるアンチパターン
| アンチパターン | なぜダメ |
|---|
AI が hand-craft で stamp を組み始める(下処理を経ずに) | catalog hit を取りこぼす、トークン消費が膨張 |
| 下処理を「最後に通す」 | AI が既に 語を手動 stamp 化済 → 二重 でリンク壊れ。AI の労力も無駄になる |
| 「催促が無いから」と省略 | catalog 育成 (#46) の が活きない、<img> 大量 が常態化してトークンが青天井 |
prestamp.py を通さずに hook bypass (MOJIEMOJI_HOOK_DISABLED=1) | hook が catch するべき も silent で通る、catalog hit ゼロ のまま投稿 |
この
(および mojiemoji-selector subagent)が起動したら、装飾
の
に 必ず prestamp.py を呼ぶ。
が逆になると上記アンチパターンに該当する。draft を作る
/
中 / 投稿
のいずれの段でも、AI が新しく
本語を書き加えたら下処理を通し直す。
Hard pre-action gate

: gate は「投稿される body が
本語の GitHub markdown かどうか」で発火する — どの コマンド で投稿するかではない。 
は「装飾なしで
本語を silently 投稿してしまう」こと。これを防ぐためなら、新しい投稿経路が増えてもこの
は不変。
発火する surface(完全列挙)
以下のいずれかで
本語 body を提出する
に、mojiemoji-github skill による装飾を行う:
gh CLI 投稿系: gh issue create / gh issue comment / gh issue edit / gh pr create / gh pr comment / gh pr review / gh pr edit / gh release create / gh release edit
- raw GitHub REST:
gh api .../pulls/.../reviews / gh api .../pulls/.../comments / gh api .../issues/.../comments / gh api .../issues 等(--input payload や -F body=... も
)
- MCP GitHub ツール経路:
mcp__*__github_create_pull_request / github_add_issue_comment / github_pull_request_review_write / github_issue_write / github_update_pull_request / github_add_comment_to_pending_review / github_add_reply_to_pull_request_comment 等
- subagent 駆動の一括投稿:
cross-repo-review / triage-review / vibes-review / copilot-review 等が複数
を回って review/comment を連投する経路
- 上記いずれでもない新経路でも、
本語 GitHub body を提出するなら例外なく
Claude Code では最終 gate として PreToolUse hook (hooks/mojiemoji_japanese_gate.py) が submission
に発火し、未装飾の
本語 body を block する。Codex package では hook gate はインストールされないため、prestamp.py とこの skill の
が
の gate になる。Skill を先に呼んでおけば hook
ハーネスでも再装飾のラウンドトリップが
しない、というのが skill 側で gate を
する意義。
ルール — メニューを出さず、装飾して見せる
ユーザーがこの skill を起動した時点で、装飾の placement(どの単語に stamp を当てるか)の
権限は skill に
されている。「block で付けますか / inline で付けますか / どこに付けますか」と選択肢を並べて聞き返してはいけない。
- Auto-decorate — heuristics で stamp
を選び、本ファイルの
通りに装飾した draft を作成
- Show the decorated draft — ユーザーに 1 度だけ提示
- Wait for yes/no — 「これで投稿してよい?」の
だけ取る。
要求があれば 1 に戻る
mojiemoji-selector subagent にデリゲートする場合も
— selector が返した snippet を本文に embed して draft を
させ、その draft をユーザーに見せる(selector の生 output を user に見せて「どれにします?」と聞かない)。
装飾しない正当ケース(skip 条件)
以下のいずれかに該当する body は装飾せずに投稿してよい: 本文が英語のみ / surface が GitHub ではない /
が謝罪・セキュリティ advisory・法務・コンプライアンス記述・受け入れ基準を単独で提示するケース。迷ったら装飾する(
述「飽和
」
、迷ったら loud を選ぶ)。
bypass
gate 自体を
的に黙らせたい場合は Bash command 先頭 / MCP body 内に MOJIEMOJI_HOOK_DISABLED=1 を含める(PreToolUse hook がこの marker を見ると素通しする)。乱用しない — 1 投稿 1 bypass の最小スコープに留める。
Reviews
の surface policy(body + comments[])
gh api repos/{owner}/{repo}/pulls/{n}/reviews (および MCP github_pull_request_review_write) の review payload は body と comments[].body の両方を GitHub prose surface として扱う。summary だけを装飾して inline comment を素のまま残す運用は
する。
| フィールド | 用途 | 装飾 |
|---|
body | verdict / 総評 / 締めの review summary | 。Review summary body のヒューリスティックに沿って inline 飽和で装飾 |
comments[].body | file path + line に紐づく inline finding | 。body と prestamp / selector パイプラインを通す |
comments[].body でも fenced code block / suggestion block / inline code / <details> / file path / symbol は safe-zone として
し、散文
だけに stamp を入れる。action バッジ(action: fixed/by design/test added/deferred/wontfix)を返信本文の先頭に置くケース(gh api .../pulls/.../comments 経由の reply)も同方針で、reply body 自体を装飾
にする。
バッジと併用する(バッジが見出しの役割)
mojiemoji スタンプと shields.io バッジは相補的で交換
ではない — バッジはメタデータを、スタンプは雰囲気を伝える。よくある
パターンは、スタンプは付けたのにバッジを忘れることである。
| Surface | バッジ | スタンプ |
|---|
Issue 本文 / 本文 / リリースノート |  |  |
| レビューコメント / 返信 | (action バッジ) | 主役 |
Issue / コメント |  | 主役 |
鉄則: バッジは見出しである。その上に何も置かない。 body-class surface(issue 本文 /
本文 / リリースノート)では、shields.io のバッジ行が視覚的にも意味的にも最初の要素である。これより上に何も置かないこと —  を独立した行に置く block 形式 mojiemoji スタンプ、単独の装飾、タイトル風の一文、画像バナーなど全て
。レビュアーが最初に目にする行はバッジでなければならない。唯一の例外は、 バッジ(例: action-fixed-green)自体で始まるレビューコメント風の返信(これもバッジなのでルール自体は破られていない)。
デフォルトのトーンとインライン飽和
ユーザーがトーンを指定しない場合、surface ごとのデフォルトは全 surface とも loud(インライン飽和) — issue /
本文 / リリースノート / レビュー本文 / レビュー返信 / Issue・
コメント、いずれも本文と
密度で装飾する。ただし
body は repo policy gate が先で、commit message に
body が流れる repository では既定 skip。違うのはblock の使用可否だけ — レビュー surface には block スロットが
せず、body surface でもユーザーがそのターン内で明示的に block 装飾を依頼した場合に限る。ユーザーが「calm にして」「軽めで」「控えめに」と明示した場合、または本文が「装飾してはいけない」カテゴリ(謝罪 / セキュリティ / 法務 / コンプライアンス / 受け入れ基準を単独で見せるケース)である場合のみオーバーライドする。本文で迷ったら loud を選ぶこと。
「loud」とは、段落・箇条書きすべてに渡るインライン密度のことであり、大きな block スタンプではない。ユーザーの明示的な好み(
ワード列挙・例外なし):
- ✓ 常にインライン埋め込みで、文中の単語を置き換える。密度は惜しみなく — 1 段落あたり最低 1〜2 個、アイデアの濃い箇条書きならもっと多く。文法的に収まる名詞・動詞・副詞はすべて埋め込む。
- ✗ セクション末のオチ装飾(各セクションの
ろに → <stamp1> <stamp2> を独立行で置く)は使わない。
- ✗ 締めの装飾(本文末に
--- + 独立行のムードスタンプ)も使わない。
- ✓ 文末・段落末・見出し末の trailing 装飾は 2 段階
で選ぶ(catalog 在の絵文字は mojiemoji 化、未登録は素の Unicode)。
は references/trailing-decoration.md を
。
マントラ: 「文中に埋める」「文法崩壊しないように自然に埋め込みまくる」。密度は高くかつ文法は自然に保つ — どの埋め込みもクリーンな単語
として読めること、関係ない品詞の間にぎこちなく突っ込まれていないこと。文法的に自然なスロットが無い候補なら、そのフレーズはスタンプせずに諦める。
INTENSITY(prestamp.py --intensity) は TONE(calm / neutral / loud)とは直交する軸で、機械
のボリュームだけを下げます。既定は aggressive(従来互換)。抑えたいときは normal または minimal を CLI で明示してください。normal / minimal では
に <!-- mojiemoji-intensity:… --> が
付与され、catalog-leftovers gate が緩いしきい値を
します。
毎回 --intensity を渡したくない場合は /mojiemoji-config skill で既定の intensity を ~/.config/mojiemoji/config.json に
できます(解決順: CLI >
> aggressive)。
body policy gate: prestamp.py --surface pr-body と PreToolUse gate は gh api repos/{owner}/{repo} の squash_merge_commit_message / merge_commit_message を見て、PR_BODY を使うメソッドが
(allow_squash_merge / allow_merge_commit) なときだけ leaks と判定する。leaks なら本文をそのまま返し、装飾済みの
body を送ろうとした場合は gate が ブロックする (commit 履歴に HTML が残るため)。取得値は ${XDG_CACHE_HOME:-~/.cache}/mojiemoji/repo-policy/<owner>--<repo>.json に 1 時間 cache する。cache が壊れている / 期限切れのときは破棄して再取得し、再取得でも policy を判定できない場合 (取得
/ gh 未認証 / 非 github remote) に だけ
側として skip する。どうしても
body に mojiemoji を入れる場合だけ MOJIEMOJI_FORCE_PR_BODY=1 を付ける (Bash は command 先頭、MCP は body 内)。
2 つの
| Mode | Surface | 形式 | デフォルトサイズ |
|---|
block | 稀。 issue / 本文の特定のセクション見出しや、ユーザーが同ターンで明示的に依頼したコールアウト文脈でのみ独立行スタンプを使う。レビュー系 surface ではすべて (レビュー本文、レビュー返信、 コメント、issue コメント) — 何があってもインラインのみ。 mojiemoji は他スタンプと く扱う — 別の -imagery skill と併用しないなら block / inline どちらも 。 | Markdown  | native |
inline | すべての 本語 GitHub surface のデフォルト。 文中強調(例: 【マジで】やばい【 】)。body-class でも review-class でも 1 段落最低 1〜2 個で飽和させる。 | HTML <img> | 24 px |
GitHub サニタイザは style を剥がし、CSS 単位を無視する。整数の height ピクセル値を使うこと。height="24" は本文サイズで読みやすい。height="20" がユーザーの観察上の好み。
は references/parameters.md § Inline height を
。
画像 — mojiemoji 単独なら自由、他
skill と併用時はインライン
mojiemoji だけで
するのは何の
もない。 インラインでも  の block-image でも、見せ方は自由。完璧 / 見事 / 綺麗 / 完成度 のような verdict 語と
く、
も普通の語として扱ってよい。
唯一の調整ガイドラインは併用ケース: user 環境に別の
-imagery skill(派手な画像を
する系)があり、それを使って approve に
画像を載せる場合は、
レビュー本文に mojiemoji
の block-image を重ねないこと(見出し級の装飾が 2 つ並んで強すぎる)。そのケースでは mojiemoji
はインラインだけに留める。mojiemoji 単独 / 他
skill を使わない場合は block-image
をそのまま使って
。
PreToolUse hook は
スタンプに対して特別扱いをしない。他のスタンプと
く、6
スタイルパラメータ(font / color / animation / background / outline / outline_width)が揃っていれば pass する。runtime context(別 skill が同時に動いているか)を hook が知る手段が無いため、上記併用ガイドラインは人の
/ SKILL.md
で運用する。
埋め込み vs 装飾(根本
)
inline
の中には2 つのサブパターンがあり、ソース上は
に見えるがレンダリングされた
はまったく違って読める:
| パターン | 何 |  | 文法的役割 |
|---|
| 埋め込み(embed) | スタンプが文中の単語を置き換える | 文中 | その文に合う名詞・動詞・副詞の代わり |
| 装飾(decoration) | 文法的役割なくムードや勢いを添える | 文の下に独立行、→ を 置 | なし — 純粋に装飾 |
ルール: 散文の文末に装飾スタンプを付け足してはいけない。 文末の trailing 装飾は埋め込みと視覚的に混ざり、文の終わりが認識できなくなる。trailing 装飾は専用行に移すこと。
・絵文字 trailing decoration の 2 段階
・%0A 改行ルールは references/trailing-decoration.md を
。
スタンプ
: 文ではなく単語
mojiemoji は単語レベルの一撃であって、句や文の強調ではない。スイートスポットは2 字の漢字熟語(二字熟語) — コンパクトで意味密度が高く、視覚的にも際立つ。
| スタンプにする | スタンプしない |
|---|
歓迎 修正 確認 完了 重要 緊急 綺麗 完璧 要点 対応 …(2 字熟語) | 気になりました お疲れさまでした(完全な文 / 述語+丁寧語) |
PR OK NG WIP API LGTM 等(2〜4 字の ASCII 略語 / ドメイン用語) | 〜していただきありがとうございます(挨拶ブロック) |
マージ テスト バグ リファクタ(2〜4 字のカタカナ語) | 単語ではなく文法的な節に当たるもの |
綺麗 素敵 見事 丁寧(2 字の形容詞・形容動詞) | 動詞形(書きました 送ります 読んでます) |
候補テキストが文ならスタンプ自体を諦める — 同文の別の単語を選ぶか、その箇所にはスタンプが乗らないと受け入れる。
文字種別ごとのスタンプ長
(漢字 ≤2、ひらがな ≤5、カタカナ ≤3、ASCII ≤3)、4 字以上の単語の
ヒューリスティック、%0A 改行ルールは references/parameters.md § スタンプ
の選定と長さ
を
。
飽和
(body surface のデフォルト)
body-class surface(issue /
/ リリース / コメント / 返信)が
本語の場合、飽和がデフォルト — トリガー語句は
。ユーザーが明示的に「static」「plain」「スタンプなし」「少なめ」と言わない限り、この密度でレンダリングする。
アンチパターン: 単一スタンプ本文(密度
)
よくある
パターンは、本文の最上部に mojiemoji を 1 つ置いて、残りはプレーンな
本語散文という形。block でも inline でも
病。
- issue #166(block + 単調): 本文中 15 スタンプを置いたが、全て
font=maru-bold color=60a5fa animation=spring speed=normal。さらに Promise.all と Green という、そもそもスタンプすべきでない identifier まで含まれていた。多様性の無い量は無意味。
- 2026-05-12 cross-repo-review batch / triage-review batch: 6
パラメータの
で全 7〜8
分のスタンプがダーク
GitHub 上で黒不可視に。
は references/colors.md § 過去 incident を
。
飽和デフォルト下では、本文中スタンプ ≤2 個は密度エラーである — 出稿前に PHRASES 一覧をフルで作り直して再ディスパッチすること。
絶対不変のもの
- 埋め込みの文法的正当性: 埋め込みは常に成立する文でなければならない。
- 装飾は独立行: 散文の文末に装飾を付け足さない。下に
→ <stamps> 行を置く。
- コード、
子、リンク: 絶対にスタンプしない。
- 色: ダーク
に耐える Tailwind 300〜500 域。
は references/colors.md および references/parameters.md § Dark-mode-safe color palette を
。
- **アニメーション
**で多様性を保つ(本文
で 12 種以上、
animation 3 回
)。
は references/parameters.md § Animation diversity を
。
selector subagent への dispatch 用の飽和
ブロック・Hard contract 行は references/workflow.md を
。
鉄則: スタンプ
identifier(FLAVOR GATE OVERRIDE の例外)
飽和 / loud トーンで FLAVOR GATE OVERRIDE が効いていても、以下は常にプレーンテキストのまま:
名 / 言語組み込み: Promise.all, Promise, useState, useEffect, Map, Map.from, Vec::new, Result, Option, Iterator::find
- 英単語の identifier / 判定語:
Green, Red, Blue, null, undefined, OK, NG, Yes, No, True, False, Success, Error
- ファイル
: apps/api/src/..., packages/db/..., Sources/Foo.swift
- バージョン文字列:
v1.2.3, 0.4.0, Node 20
- コードシンボル / 型名:
MatchingHistory, creativeIntegrity, WallpaperLoadingOverlay
、ハッシュ、issue/
番号: #166, abc1234, https://...
- 単位付き数値:
100ms, 200lines, 5指標 の数字
迷ったら問う: 「コードレビュアーがこの文字列を逐語 grep したくなるか?」 答えが Yes(identifier / シンボル /
)ならスタンプ不可。
本語散文としてのみ意味を持つもの(状態、属性、
、関係、着地)ならスタンプ可。
ワークフローと
ルール
ワークフロー
(prestamp → selector → 直接スクリプト →
→ 投稿の 10 ステップ)、mojiemoji-selector subagent への dispatch コントラクト、Python cross-boundary interop、直接スクリプトの呼び方、Surface ごとの top/closing 装飾ヒューリスティックは references/workflow.md を
。
スポットチェック(15 字
、プリフライト HTTP チェック、dispatch 
bash ブロック)は references/verification.md を
。「単一フレーズ・自明なプリセット」のファスト
は references/flavor-guide.md でスタンプ
を判定して references/presets.md で 1 行を引く。
の鉄則:
- そのまま貼れるスニペットを返す。
的散文は返さない。
- issue 本文 /
本文 / リリースノートの場合、本文の最上部に shields.io バッジが
することを
する(スタンプとは別の段落)。
- コード片、
子、リンクはスタンプ
外。ただし周辺の散文はスタンプ
。 箇条書きが `Sources/Foo.swift:40-55` — `WallpaperLoadingOverlay` (差し替え対象) のような形のとき、ファイル
とシンボルは素のまま — だが括弧内の記述子(差し替え対象、変更不要の想定、重点、導入)は
本語散文なのでインライン飽和デフォルト下ではスタンプすべき。
- フレーズが flavor-guide のスタンプ
リストに引っかかる場合、黙って落とすか指摘する。
名・バージョン・謝罪本文・セキュリティ/法務テキストは決して装飾しない。
- スポットチェックは body-class surface でスタンプ数 ≥3 のとき
、
ではない。 貼り付け
に references/verification.md § Post-dispatch spot-check を本文
に対して実行する。