genshijin
githubgenshijin 原始人 🗿| Claude Code / Codex等AIエージェント 向け超圧縮コミュニケーションスキル。caveman の日本語版をベースに、日本語特有の冗長表現に最適化。
genshijin 原始人 🗿
なぜ多くトークン使う?少なくて済む🗿
Claude Code 公式プラグインディレクトリに公開済み。/plugin install genshijin でワンライナーインストール。
Claude Code / Codex 向けの超圧縮コミュニケーションスキル。caveman の日本語版をベースに、日本語特有の冗長表現に最適化。
トークン使用量を 約75%削減 しつつ、技術的正確性は100%維持。 コミット生成・PRレビュー・メモリ圧縮の用途別サブスキルも同梱。
日本語への最適化ポイント
英語版 caveman は冠詞(a/an/the)やフィラーの削除が中心だが、日本語版は以下に対応:
| 英語版の削減対象 | 日本語版の削減対象 |
|---|---|
| 冠詞 (a/an/the) | 敬語・丁寧語 (です/ます/ございます) |
| フィラー (just/really/basically) | クッション言葉 (えーと/まあ/基本的に/一応) |
| 前置き (Sure! I’d be happy to…) | 前置き表現 (ご質問ありがとうございます…) |
| ぼかし (might/perhaps/likely) | ぼかし (〜かもしれません/おそらく/〜と思われます) |
| 冗長表現 | 冗長な助詞連続・敬語の二重化 |
インストール
方法1: Claude Code 公式プラグインディレクトリ(推奨)
Claude Code 内で以下を実行:
/plugin install genshijin
Anthropic 公式 プラグインディレクトリ に公開済み。marketplace add 不要。
方法1b: GitHub 直接インストール(開発版)
claude plugin marketplace add InterfaceX-co-jp/genshijin
/plugin install genshijin@InterfaceX-co-jp/genshijin
main ブランチ最新を取得したい場合。
方法2: npx skills(サードパーティ)
npx skills add InterfaceX-co-jp/genshijin
方法3: 手動インストール
プロジェクト単位(このリポジトリだけに適用):
# リポジトリのルートで実行
mkdir -p .claude/skills/genshijin
curl -o .claude/skills/genshijin/SKILL.md \
https://raw.githubusercontent.com/InterfaceX-co-jp/genshijin/main/skills/genshijin/SKILL.md
グローバル(すべてのプロジェクトに適用):
mkdir -p ~/.claude/skills/genshijin
curl -o ~/.claude/skills/genshijin/SKILL.md \
https://raw.githubusercontent.com/InterfaceX-co-jp/genshijin/main/skills/genshijin/SKILL.md
方法4: 一時的に使う
claude --plugin-dir ./path/to/genshijin
使い方
/genshijin # 通常モード(デフォルト)で起動
/genshijin 丁寧 # ビジネス向け簡潔体
/genshijin 極限 # 最大圧縮
会話中に 原始人やめて または 通常モード で解除。
3段階の強度
丁寧モード
クッション言葉・ぼかし表現を削除。敬語は維持。ビジネスメール向き。
Before:
ご質問ありがとうございます。お調べしたところ、こちらの問題につきましては、認証ミドルウェアにおけるトークンの有効期限チェックの部分に原因がある可能性が考えられます。
After:
コンポーネントが再レンダリングされるのは、レンダリングごとに新しいオブジェクト参照が生成されるためです。
useMemoで解決できます。
通常モード(デフォルト)
敬語を落とし体言止め。助詞も最小限。原始人の基本形。
Before:
こちらの問題は、レンダリングが行われるたびに新しいオブジェクトの参照が生成されてしまうことが原因となっております。
After:
レンダリング毎に新オブジェクト参照が生成。インラインオブジェクトprop = 新しい参照 = 再レンダリング。
useMemoで包む。
極限モード
略語・矢印記法・一語回答。電報のような圧縮。
Before:
データベースのコネクションプーリングというのは、リクエストが来るたびに新しい接続を確立するのではなく、あらかじめ作成しておいた接続を再利用する仕組みのことです。
After:
プール = DB接続再利用。ハンドシェイク省略 → 高負荷時に高速。
サブスキル
本体 /genshijin に加え、用途別サブスキル6個同梱。
| スキル | トリガー | 内容 |
|---|---|---|
| genshijin-commit | /genshijin-commit | Conventional Commits 形式の簡潔コミットメッセージ。件名≤50文字、「なぜ」重視 |
| genshijin-review | /genshijin-review | 1行PRコメント L42: 🔴 バグ: user null。ガード追加。 |
| genshijin-compress | /genshijin-compress <file> | CLAUDE.md 等のメモリファイルを原始人モード化し入力トークン永続削減 |
| genshijin-stats (v1.4.0〜) | /genshijin-stats [--share / --all / --since 7d] | 現セッションのリアルトークン使用量+推定削減量+USD換算をフックが即時表示 |
| genshijin-crew (v1.4.0〜) | (auto) | 3 subagent preset (investigator/builder/reviewer)。tool-result 原始人圧縮で主コンテキスト約60%減 |
| genshijin-help | /genshijin-help | 全モード・サブスキル・設定方法のリファレンスカード |
genshijin-compress について
CLAUDE.md はセッション開始毎に読込 → 圧縮で 毎回 の入力トークン削減。
使い始め(3ステップ)
1. 前提準備
Python 3.10+ に加え、以下いずれか:
# オプションA: API key 直接利用
pip install anthropic
export ANTHROPIC_API_KEY=sk-ant-...
# オプションB: claude CLI ログイン済みなら 追加設定不要(CLI fallback)
claude --version
2. 対象ファイル選定
典型的な圧縮対象:
~/.claude/CLAUDE.md— ユーザー全体メモリ(全セッションで毎回読込)./CLAUDE.md— プロジェクト単位メモリ~/.claude/projects/<project>/memory/MEMORY.md— auto memory インデックス
3. 圧縮実行
/genshijin-compress ~/.claude/CLAUDE.md
結果:
- 圧縮版が原ファイルを上書き
- 人間可読版は
CLAUDE.original.mdにバックアップ(復元可能) - 失敗時は原ファイル無変更
保持・拒否ルール
- 完全保持: コードブロック / URL / ファイルパス / 数値 / 見出し / 技術用語
- 自動拒否:
.env/credentials.*/id_rsa/.ssh/配下 等
誤検知時はファイル名変更で回避可能。
自動化機能(v1.2.0〜)
プラグイン導入後、Claude Code のフック機構で以下が自動で動く。
SessionStart フック — 原始人ルール注入
セッション開始毎に SKILL.md を読み、現アクティブレベルの該当行のみフィルタして hidden context に注入。多ターン経過後の敬語回帰・フィラー漂流を防ぐ anchor。
UserPromptSubmit フック — モード追跡 + 毎ターン補強
/genshijin 丁寧|通常|極限や自然言語(「原始人モード」「原始人やめて」等)でモード切替を検出- アクティブ中は毎ユーザー発話で短い補強リマインダを注入 → 他プラグインが競合するスタイル指示を毎ターン注入する環境でもドリフト防止
Statusline バッジ
現モードを [原始人] / [原始人:丁寧] / [原始人:極限] / [原始人:コミット] 等で可視化。初回セッションで未設定を検知したら Claude がセットアップを提案する。
既定モードの設定(任意)
優先度: 環境変数 > 設定ファイル > normal(デフォルト)。
# 環境変数(最優先)
export GENSHIJIN_DEFAULT_MODE=extreme # polite | normal | extreme | off
# 設定ファイル
mkdir -p ~/.config/genshijin
cat > ~/.config/genshijin/config.json <<'JSON'
{ "defaultMode": "extreme" }
JSON
off を指定するとフックがルール注入をスキップしフラグも削除 — プラグインインストール済みのまま一時停止できる。
セキュリティ
フラグファイル ~/.claude/.genshijin-active は symlink 拒否・64バイト上限・モードホワイトリスト検証で保護。~/.ssh/id_rsa 等への symlink 差替えで secret バイトが statusline やモデルコンテキストに流れ込む攻撃を塞ぐ。
スラッシュコマンド(v1.3.0〜)
プラグイン導入後、以下のコマンドが利用可能。
/genshijin 丁寧|通常|極限— 強度レベル切替/genshijin-commit— 現在のステージング変更から簡潔なコミットメッセージ生成(Conventional Commits)/genshijin-review— 現在のコード変更を1行1指摘でレビュー(L42: 🔴 バグ: ...)/genshijin-stats(v1.4.0〜) — 現セッションのリアルトークン使用量+推定削減量+USD換算をフックが即時表示。--shareツイート用1行サマリ、--all/--since 7dライフタイム集計対応
定義は commands/ 配下。
v1.4.0 拡張機能
caveman 本家 v1.3.0以降の差分(stats receipts / smart installer / cavecrew相当 / cavepack相当 / MCP-shrink)を全項目移植。
Smart multi-agent installer — root install.sh / install.ps1
Claude Code/Cursor/Windsurf/Cline/Copilot を自動検出し、各 agent に native install。
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/InterfaceX-co-jp/genshijin/main/install.sh | bash
# Windows PowerShell
iwr -useb https://raw.githubusercontent.com/InterfaceX-co-jp/genshijin/main/install.ps1 | iex
--dry-run / --force / --only <agent> / --all / --minimal / --list 対応。再実行安全。
genshijin-init — per-repo rule 一発投下
1コマンドで対象 repo に常時有効化 rule を全 IDE agent 用に投下。idempotent。
npx -y https://raw.githubusercontent.com/InterfaceX-co-jp/genshijin/main/tools/genshijin-init.js
Cursor / Windsurf / Cline / Copilot / AGENTS.md 用 rule file 生成。--dry-run / --force / --only 対応。
genshijin-shrink — MCP middleware
任意の MCP server を wrap → tools/list の description field を圧縮。コード/URL/パス/識別子は byte-for-byte 保護。
{
"mcpServers": {
"fs-shrunk": {
"command": "npx",
"args": ["genshijin-shrink", "npx", "@modelcontextprotocol/server-filesystem", "/path"]
}
}
}
詳細は mcp-servers/genshijin-shrink/README.md。
genshijin-crew — 3 subagent preset
長セッションでコンテキストを温存するための subagent 3種。
| Subagent | 用途 |
|---|---|
genshijin-investigator | read-only locator (haiku model)、file:line 表で返却 |
genshijin-builder | 1-2ファイル surgical edit。3+ファイルは too-big. で拒否 |
genshijin-reviewer | severity-tagged finding (🔴bug / 🟡risk / 🔵nit / ❓question) |
委譲判断ガイドは skills/genshijin-crew/SKILL.md。
マルチエージェント対応(v1.3.0〜)
Claude Code 以外の AI コーディングエージェントでも原始人モード利用可能:
| エージェント | ファイル |
|---|---|
| Cursor | .cursor/rules/genshijin.mdc |
| Windsurf | .windsurf/rules/genshijin.md |
| Cline | .clinerules/genshijin.md |
| GitHub Copilot | .github/copilot-instructions.md |
| Codex / Gemini CLI 等 | AGENTS.md |
| フック無し共通 | rules/genshijin-activate.md |
Standalone インストーラ(v1.3.0〜)
プラグイン未使用でも ~/.claude 配下に直接フックを導入可能。
# インストール
bash hooks/install.sh
# 再インストール
bash hooks/install.sh --force
# アンインストール
bash hooks/uninstall.sh
Windows は hooks/install.ps1 / hooks/uninstall.ps1。settings.json への安全マージ(既存 statusline を尊重)。
アップデート
プラグイン版(推奨)
# マーケットプレイス側を最新取得
claude plugin marketplace update genshijin
# プラグイン本体を更新(再起動で適用)
claude plugin update genshijin@genshijin
Claude Code 内の /plugin update genshijin が使える環境ではそれでも可。インストール済バージョン確認は claude plugin list。
Standalone 版
cd /path/to/genshijin
git pull
bash hooks/install.sh --force # Windows: hooks/install.ps1 -Force
npx skills 版
npx skills add InterfaceX-co-jp/genshijin # 上書き再取得
ベンチマーク
| タスク | 通常 | 簡潔 | caveman | genshijin | genshijin削減 | gs vs 簡潔 | gs vs caveman |
|---|---|---|---|---|---|---|---|
| なぜReactコンポーネントが毎回再レンダリングされるのか説 | 1143 | 509 | 366 | 189 | 83% | 63% | 48% |
| 認証ミドルウェアのトークン有効期限チェックにバグがある。修正 | 2535 | 736 | 322 | 92 | 96% | 88% | 71% |
| Node.jsでPostgreSQLのコネクションプーリング | 2035 | 1016 | 520 | 371 | 82% | 63% | 29% |
| git rebaseとmergeの違いを説明して | 784 | 435 | 296 | 276 | 65% | 37% | 7% |
| コールバック地獄をasync/awaitにリファクタリングし | 1805 | 711 | 434 | 377 | 79% | 47% | 13% |
| マイクロサービスとモノリスの比較を説明して | 1121 | 563 | 316 | 261 | 77% | 54% | 17% |
| ExpressルートのPRをセキュリティ観点でレビューして | 1009 | 760 | 114 | 110 | 89% | 86% | 4% |
| Dockerのマルチステージビルドを設定して | 1653 | 616 | 429 | 276 | 83% | 55% | 36% |
| PostgreSQLのレースコンディションをデバッグして | 1775 | 638 | 518 | 338 | 81% | 47% | 35% |
| ReactのError Boundaryを実装して | 2457 | 1491 | 565 | 253 | 90% | 83% | 55% |
| CORSエラーが出る。原因と解決策を教えて | 1104 | 491 | 379 | 305 | 72% | 38% | 20% |
| Nginxのリバースプロキシ設定を教えて | 1869 | 595 | 437 | 329 | 82% | 45% | 25% |
| Redisを使ったキャッシュ戦略を教えて | 2201 | 942 | 556 | 342 | 84% | 64% | 38% |
| TypeScriptのジェネリクスを初心者向けに説明して | 1180 | 753 | 588 | 336 | 72% | 55% | 43% |
| REST APIとGraphQLの違いを説明して | 872 | 464 | 410 | 215 | 75% | 54% | 48% |
| Node.jsアプリのメモリリークを調査する方法を教えて | 1853 | 1226 | 659 | 396 | 79% | 68% | 40% |
| GitHub Actionsで基本的なCI/CDパイプライン | 2172 | 1054 | 926 | 384 | 82% | 64% | 59% |
| N+1クエリ問題とは何か、どう解決するか教えて | 1199 | 492 | 412 | 294 | 75% | 40% | 29% |
| WebSocketとServer-Sent Eventsの使 | 1293 | 492 | 422 | 216 | 83% | 56% | 49% |
| Reactの状態管理ライブラリの選び方を教えて | 1118 | 451 | 496 | 288 | 74% | 36% | 42% |
| Kubernetesの基本概念を説明して | 733 | 499 | 389 | 202 | 72% | 60% | 48% |
| OAuth2の認証フローを説明して | 1297 | 509 | 444 | 314 | 76% | 38% | 29% |
| CSS FlexboxとGridの使い分けを教えて | 1023 | 493 | 333 | 348 | 66% | 29% | -5% |
| Pythonのデコレータの仕組みを説明して | 1405 | 551 | 495 | 345 | 75% | 37% | 30% |
| データベースインデックスの仕組みと使いどころを教えて | 1391 | 515 | 413 | 292 | 79% | 43% | 29% |
| JWTとセッションベース認証の比較を教えて | 967 | 457 | 354 | 275 | 72% | 40% | 22% |
| Promise.allとPromise.raceの違いと使い | 1226 | 546 | 447 | 275 | 78% | 50% | 38% |
| TerraformでAWSインフラを管理する基本を教えて | 1600 | 817 | 560 | 401 | 75% | 51% | 28% |
| Node.jsのイベントループの仕組みを説明して | 1289 | 511 | 662 | 310 | 76% | 39% | 53% |
| APIのレート制限を実装する方法を教えて | 1943 | 1118 | 1033 | 451 | 77% | 60% | 56% |
| 平均 | 1468 | 681 | 476 | 295 | 80% | 57% | 38% |
English Benchmark (参考値)
genshijin は日本語最適化スキルだが、英語プロンプトでも圧縮効果を発揮するか検証。caveman(英語ネイティブ)との比較。
| Task | Normal | Terse | caveman | genshijin | gs saved | gs vs terse | gs vs caveman |
|---|---|---|---|---|---|---|---|
| Why does my React component re | 914 | 692 | 228 | 120 | 87% | 83% | 47% |
| There’s a bug in the auth midd | 728 | 593 | 86 | 151 | 79% | 75% | -76% |
| How do I set up PostgreSQL con | 2344 | 1374 | 338 | 327 | 86% | 76% | 3% |
| Explain the difference between | 688 | 399 | 298 | 206 | 70% | 48% | 31% |
| Refactor callback hell to asyn | 2026 | 1822 | 394 | 272 | 87% | 85% | 31% |
| Compare microservices vs monol | 785 | 517 | 322 | 387 | 51% | 25% | -20% |
| Review this Express route PR f | 193 | 165 | 83 | 76 | 61% | 54% | 8% |
| Set up Docker multi-stage buil | 2396 | 1658 | 238 | 343 | 86% | 79% | -44% |
| Debug a race condition in Post | 2097 | 1924 | 354 | 295 | 86% | 85% | 17% |
| Implement a React Error Bounda | 3363 | 2672 | 478 | 374 | 89% | 86% | 22% |
| I’m getting CORS errors. What’ | 1463 | 495 | 257 | 227 | 84% | 54% | 12% |
| Show me how to configure Nginx | 2802 | 2240 | 438 | 286 | 90% | 87% | 35% |
| What’s a good Redis caching st | 1552 | 702 | 304 | 263 | 83% | 63% | 13% |
| Explain TypeScript generics fo | 1387 | 1140 | 388 | 419 | 70% | 63% | -8% |
| Explain the difference between | 601 | 415 | 240 | 233 | 61% | 44% | 3% |
| How do I investigate memory le | 2153 | 1704 | 359 | 356 | 83% | 79% | 1% |
| Build a basic CI/CD pipeline w | 3023 | 2501 | 619 | 749 | 75% | 70% | -21% |
| What is the N+1 query problem | 1377 | 770 | 324 | 275 | 80% | 64% | 15% |
| When should I use WebSocket vs | 746 | 399 | 276 | 253 | 66% | 37% | 8% |
| How do I choose a React state | 1275 | 617 | 242 | 190 | 85% | 69% | 21% |
| Explain the basic concepts of | 837 | 442 | 306 | 282 | 66% | 36% | 8% |
| Explain the OAuth2 authenticat | 1449 | 545 | 304 | 305 | 79% | 44% | 0% |
| When should I use CSS Flexbox | 601 | 410 | 224 | 193 | 68% | 53% | 14% |
| Explain how Python decorators | 1489 | 742 | 395 | 359 | 76% | 52% | 9% |
| Explain how database indexes w | 1629 | 1262 | 378 | 371 | 77% | 71% | 2% |
| Compare JWT vs session-based a | 1463 | 543 | 237 | 319 | 78% | 41% | -35% |
| Explain the difference between | 686 | 533 | 216 | 248 | 64% | 53% | -15% |
| How do I manage AWS infrastruc | 2479 | 1854 | 628 | 397 | 84% | 79% | 37% |
| Explain how the Node.js event | 1458 | 838 | 311 | 411 | 72% | 51% | -32% |
| How do I implement API rate li | 2814 | 1855 | 561 | 403 | 86% | 78% | 28% |
| Average | 1560 | 1060 | 327 | 303 | 81% | 71% | 7% |
ベンチマークは英語版 caveman の結果を参考値として掲載。 自分で計測するには:
cd benchmarks
pip install -r requirements.txt
export ANTHROPIC_API_KEY=sk-ant-...
python run.py --trials 3 --update-readme # 日本語
python run.py --lang en --trials 3 --update-readme # 英語
安全機能
セキュリティ警告や破壊的操作の確認時は自動的に通常の丁寧な日本語に切り替わる。誤解が致命的になる場面では正確性を優先。
プロジェクト構成
genshijin/
├── skills/
│ ├── genshijin/SKILL.md # 本体スキル
│ ├── genshijin-commit/SKILL.md # コミット生成サブスキル
│ ├── genshijin-review/SKILL.md # PRレビューサブスキル
│ ├── genshijin-help/SKILL.md # ヘルプサブスキル
│ └── genshijin-compress/
│ ├── SKILL.md # メモリ圧縮サブスキル
│ └── scripts/ # Python CLI 実装
├── hooks/ # v1.2.0〜
│ ├── genshijin-activate.js # SessionStart: ルール注入
│ ├── genshijin-mode-tracker.js # UserPromptSubmit: モード追跡 + 毎ターン補強
│ ├── genshijin-config.js # 設定解決(env var + config file)
│ ├── genshijin-statusline.sh # statusline バッジ(Unix)
│ ├── genshijin-statusline.ps1 # statusline バッジ(Windows)
│ ├── install.sh / uninstall.sh # standalone インストーラ(v1.3.0〜)
│ └── install.ps1 / uninstall.ps1 # standalone インストーラ Windows
├── commands/ # v1.3.0〜スラッシュコマンド定義
│ ├── genshijin.toml # /genshijin 強度切替
│ ├── genshijin-commit.toml # /genshijin-commit
│ └── genshijin-review.toml # /genshijin-review
├── rules/ # v1.3.0〜
│ └── genshijin-activate.md # フック無しプラットフォーム向け共通ルール
├── .cursor/rules/ # Cursor 用(v1.3.0〜)
├── .windsurf/rules/ # Windsurf 用(v1.3.0〜)
├── .clinerules/ # Cline 用(v1.3.0〜)
├── .github/copilot-instructions.md # GitHub Copilot 用(v1.3.0〜)
├── AGENTS.md # マルチエージェント参照インデックス(v1.3.0〜)
├── .claude-plugin/
│ ├── plugin.json # Claude Code プラグインマニフェスト(hooks 登録)
│ └── marketplace.json # マーケットプレイス定義
├── benchmarks/
│ ├── run.py # ベンチマークスクリプト
│ ├── prompts.json # テスト用プロンプト
│ └── requirements.txt # Python依存パッケージ
├── docs/
│ ├── index.html # GitHub Pages
│ └── caveman-diff-analysis.md # caveman差分分析 + 進捗管理
├── README.md
├── LICENSE
└── .gitignore
元プロジェクト
JuliusBrussee/caveman — 英語版オリジナル
Star History
ライセンス
MIT