エンジニアの@dandelion0216です。
この前42歳になりました。
要約
Claude Codeの Output Style をプラグインとして管理・切り替え・共有できる Output Style Manager を作りました。
-
/set-output-styleでスタイルを即座に切り替え -
/create-output-styleでオリジナルスタイルを作成・Gistで共有 -
/add-output-styleでコミュニティのスタイルをワンコマンドでインポート
GitHub: https://github.com/dandelion0216/output-style-manager
Output Style とは
Claude Codeには Output Style という機能があります。Claudeの応答スタイル(口調、フォーマット、詳細度など)をカスタマイズできる仕組みです。
たとえば「簡潔に答えて」「先生のように教えて」といった指示をセッション開始時に自動で注入し、Claudeの振る舞いを制御します。
ただし、(僕としては)この機能にはいくつかの不便さがありました:
- 共有しにくい — 他の人が作ったスタイルを簡単にインポートする手段がない
- 管理が煩雑 — 複数のスタイルを持っていると管理が大変(じゃないですか?)
これらを解決するために Output Style Manager プラグインを作りました。
できること
1. スタイルの切り替え
/set-output-style
インストール済みのスタイル一覧が表示され、選ぶだけ。直接指定もできます:
/set-output-style concise
/set-output-style off # 無効化
選択したスタイルは次回セッション開始時から適用されます。
2. オリジナルスタイルの作成
/create-output-style
Claudeと対話しながらスタイルを定義できます。完成したらローカルに保存し、希望すればGistにアップロードして共有URLを取得できます。
3. コミュニティスタイルのインポート
/add-output-style
registry.json に登録されたコミュニティスタイルの一覧から選んでインポート。URLからの直接インポートにも対応しています:
/add-output-style https://gist.github.com/user/xxxxx
同梱スタイル
プラグインには2つのスタイルが同梱されています:
| スタイル | 説明 |
|---|---|
| concise | 無駄を省いた最小限の応答。コードブロックは説明なし、一行回答を優先 |
| teaching | ステップバイステップの説明、具体例の提示、理解確認の質問を含む教育的スタイル |
仕組み
アーキテクチャ
セッション開始
↓
SessionStart Hook が発火
↓
session-start.sh が実行
↓
~/.claude/output-style-active からスタイル名を読み取り
↓
スタイルファイル (.md) の本文を取得
↓
additionalContext として JSON で出力
↓
Claude のセッションにスタイル指示が注入される
スタイルファイルの構造
スタイルはYAMLフロントマッター付きのMarkdownファイルです:
---
name: Concise
description: Minimal, direct responses with no filler
---
You are in 'concise' output style mode.
## Rules
- Answer in as few words as possible
- No introductory phrases
- No summaries unless explicitly asked
- Use code blocks without explanation unless asked
- One-line answers when possible
フロントマッター部分はメタデータとして使われ、--- 以降の本文が additionalContext としてClaudeに注入されます。
SessionStart Hook
Claude Codeのプラグインシステムでは、セッション開始時にシェルスクリプトをフックとして実行できます。hooks.json で定義し、スクリプトが hookSpecificOutput.additionalContext を含むJSONを標準出力すると、その内容がセッションに注入される仕組みです。
{
"hooks": {
"SessionStart": [{
"hooks": [{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks-handlers/session-start.sh"
}]
}]
}
}
スタイルの探索順序
- カスタムスタイル:
~/.claude/custom-output-styles/<name>.md - 同梱スタイル:
<plugin_root>/styles/<name>.md
カスタムが優先されるため、同梱スタイルと同名のカスタムスタイルで上書きすることも可能です。
コミュニティ共有の仕組み
共有フロー
-
/create-output-styleでスタイルを作成 - Gistにアップロード(自動)
- Gist URLを直接共有 → 相手は
/add-output-style <URL>でインポート
コミュニティレジストリ
registry.json にエントリを追加するPRを送ることで、/add-output-style の一覧に表示されるようになります:
{
"name": "my-custom-style",
"description": "A brief description",
"gist_id": "abc123...",
"author": "github-username",
"bundled": false
}
セキュリティ
registry.json へのPRは GitHub Actions による自動バリデーションが走ります:
- JSON構造の検証 — 必須フィールドの存在、型チェック、重複チェック
- Gistアクセス確認 — 指定されたGistが実在し、アクセス可能か
- フロントマッター検証 — スタイルファイルとして正しい形式か
- セキュリティスキャン — プロンプトインジェクション、コマンド実行、データ窃取などの危険なパターンを検出
- など
Output Style はセッションごとにClaudeに注入されるため、悪意あるスタイルが登録されると影響が大きくなります。そのため、自動チェックに加えてメンテナーによる手動レビューも行います。
インストール方法
/plugins
# → Add marketplace → dandelion0216/output-style-manager
# → "output-style-manager" をインストール
トークンコストについて
スタイルの内容はセッション開始時に毎回注入されるため、長大なスタイル定義はトークン消費に影響します。スタイルは簡潔に保つことをおすすめします。
まとめ
Output Style Manager は、Claude Code の出力スタイルを「管理」「切り替え」「作成」「共有」するためのプラグインです。
- インストールするだけで使える同梱スタイル
- スラッシュコマンドで直感的に操作
- Gist + registry.json によるコミュニティ共有
- GitHub Actions によるセキュリティバリデーション
自分好みのClaudeの応答スタイルを作って、ぜひコミュニティと共有してみてください。
GitHub: https://github.com/dandelion0216/output-style-manager
スタイル募集中
Output Style Manager のコミュニティスタイルを募集しています。「こんなスタイルがあったら便利」「自分が普段使っているスタイルを共有したい」という方、ぜひご参加ください。
こんなスタイルを歓迎します:
- 特定の言語・フレームワークに特化したスタイル(例: Rust向け、Next.js向け)
- 業務用途に合わせたスタイル(例: コードレビュー向け、ドキュメント作成向け)
- 多言語対応スタイル(例: 日本語で丁寧に応答、中国語で回答)
- ユニークで楽しいスタイル(例: 関西弁、RPG風)
共有方法:
- プラグインをインストールして
/create-output-styleでスタイルを作成 - Gist にアップロード
- リポジトリの
registry.jsonにエントリを追加するPRを送信
PRにはGitHub Actionsによる自動バリデーションが走るので、形式の心配は不要です。
あなたのスタイルが世界中のClaude Codeユーザーに届きます。気軽に投稿してください。
GitHub: https://github.com/dandelion0216/output-style-manager
Appendix
実はCodeの大半をClaude Codeに作ってもらいかつ、このブログもClaude Codeに元を作ってもらいました。
なんでも頼めていいですが、ブログくらいは自分で1から書こうかなって書かせて思いました。