IME の挙動に引きずられない——私はそのために「プロンプトはMarkdownで管理」へ移行し、さらに.claude/templatesと.claude/commandsの二層設計で、タイピングの省略と再現性を両立させている。VS Code 版 Claude Code はエディタで選択したテキストを自動で文脈に入れてくれるので、この運用と非常に相性が良い。(Visual Studio Marketplace)
何が起きていたか(私の症状)
Windows + VS Code で作業中、日本語の未確定文字が入力欄に見えない・再変換が崩れる等のIMEまわりの既知の揺らぎに遭遇。VS Code の Issue でも日本語 IME の再合成(recomposition)や候補表示位置の問題は長年報告がある。私は表示やチャット欄に依存せず、ふつうのエディタでMarkdownとして指示を書き、必要な部分だけ選択して Claude に渡す方式へ舵を切った。(GitHub)
解決の芯:プロンプトは"ファイル"で持つ(Gitで残す)
prompts/YYYY/MM/DD.mdのように日次の目的・制約・Done条件を書く- 編集はVS Codeのエディタで行い、必要な段落だけ選択→Claude Codeに投げる(選択範囲は自動で文脈化)
- 変更の経緯はGitに残り、意思決定の再現性が上がる この"選択→文脈化"は公式の拡張仕様なので、毎回コピペするより確実だ。(Visual Studio Marketplace)
新設:.claude/templates×.claude/commandsの二層で「省入力+再現性」
私はプロンプトを二層に分けた:
-
個人テンプレ層:
.claude/templates/自分だけの素材集。レビュー観点、修正実装フロー、出荷チェックなど"よく使う骨子"をMarkdownで置く。自由に育てる「倉庫」。 -
実行コマンド層:
.claude/commands/スラッシュコマンドとして即実行できる"完成形"だけを配置。ここはチーム共有し、Gitでの再現可能性を担保する。コマンドはMarkdownファイルとして定義するのが公式仕様だ。(Claude Docs)
公式エンジニアリングブログでも、繰り返す作業はスラッシュコマンド化して再現性を高める方針が示されている。(Anthropic)
付録(本文内サンプル):.claude/templates → .claude/commands 薄いシム(おすすめ)
狙い:テンプレ更新=即コマンド反映。.claude/commands側は@参照だけの薄いシムにして、実体は.claude/templatesに置く。
1. ディレクトリ構成(例)
.
├─ CLAUDE.md
├─ prompts/
│ └─ 2025-09-29.md
└─ .claude/
├─ templates/
│ └─ x.fix.md
└─ commands/
└─ x.fix.md
2. テンプレ本体(.claude/templates/x.fix.md)
# 修正実装テンプレ(x.fix)
## ゴール
- この修正で"何ができるようになったか"を1〜2文で
## 前提・制約
- 既存のコードスタイルに準拠
- 変更は最小限(差分は小さく)
## 手順
1. 再現手順(ログ/スクショ歓迎)
2. 根本原因の仮説と検証方針
3. 最小修正(before/after の要点)
4. テスト観点(ユニット/E2E/手動)
5. 影響範囲とリグレッション懸念
## 出力
- 変更ファイル一覧と差分要約
- 検証結果(スクショ・ログ)
- フォロータスク(TODO / Issue化)
3. コマンド側の薄いシム(.claude/commands/x.fix.md)
# /x.fix(薄いシム:本体は templates 側)
@.claude/templates/x.fix.md
$ARGUMENTS
- 先頭の
@.claude/templates/x.fix.mdで本文を取り込み、あとは通常のスラッシュコマンドとして実行する。 - 末尾の
$ARGUMENTSは任意パラメータを展開したい場合の置き場(不要なら削除)。 - 注意:この @参照は私の環境で有効だった"実践テク"で、公式ドキュメントの記述は限定的。将来の変更に備え、うまく動かない環境ではシンボリックリンク運用(
mklink/ln -s)に切り替えるのが無難。スラッシュコマンド自体の定義は公式仕様どおりMarkdown in.claude/commands/。(Claude Docs)
4. 最短の使い方
- VS Codeで対象リポジトリを開く
- prompts/今日.md に作業目的・Done条件を書く
- 実行したい段落だけ選択 →
/x.fixを実行(選択範囲は自動で文脈に入る)(Visual Studio Marketplace) - 生成案をレビューし、差分とテスト観点を追記して確定
CLAUDE.mdに"起動時の所作"を明記しておく
- 「直近の日次プロンプトを読む」
- 「まず
.claude/commandsのコマンドを使う(なければ.claude/templatesから昇格)」 こうした行動様式を文章で固定しておくと、誰が触っても同じ振る舞いを再現できる。/initで CLAUDE.md を作るワークフローの紹介記事もあるが、私は自分の規約を先に書いてから/initで肉付けする。(Kir Shatrov)
なぜ再現性が上がるのか
-
コマンドはテキスト資産
.mdとして残るため、差分が追える。チームでは昇格済みコマンドだけ.claude/commandsに置く運用で、ブレを抑える。(Claude Docs) -
操作の最小化 実行は「選択→/コマンド」。拡張が選択範囲を自動文脈化するので、貼り付けミスやIMEの表示揺らぎに左右されない。(Visual Studio Marketplace)
-
ベストプラクティスと整合 繰り返し作業をコマンド化し、必要な情報を引き込みやすく設計するのは、Anthropicのベストプラクティスにも合致する。(Anthropic)
補記:IMEの揺らぎは"仕様で避ける"
VS Code × 日本語 IME では、再合成や候補表示まわりで環境依存の不具合が散発する。私はエディタでMarkdownを書き、選択して渡す運用に切り替えることで、影響をほぼゼロにできた。(GitHub)
まとめ
- プロンプトはMarkdownでファイル管理(日次は
prompts/、共通化は.claude/templates) - 実行はスラッシュコマンド(成熟したものだけ
.claude/commandsへ昇格)(Claude Docs) - 渡し方は"選択して渡す"(VS Code拡張が自動で文脈化)(Visual Studio Marketplace)
- 薄いシム方式で
.claude/templates→.claude/commandsを@参照し、タイピング削減と再現性を同時に確保(動作しない環境はシンボリックリンクに切り替え)。
このやり方にしてから、私は入力欄の不安定さに振り回されず、記事執筆や修正実装の品質が一定に保てるようになった。あなたの環境でも、まずは.claude/templatesから小さく始め、育ったものを昇格させていけば自然とチーム共有へ乗せられるはず。