1. はじめに
この記事は、100%人力で書いてる。
「この人、本当にこんなことやってるの?」「なんかおかしくない?」と思うことがよくある。
「AIで空虚な紹介記事を作成してないか?」と思うことがよくある。
ここでは、「いつもこうやってるけど、これでうまく動いてる」という内容を書いてみる。
自分ではClaude Codeを使ってるが、他のAIコーディングエージェントでも通用する内容だと思う。
2. プロンプト例
1. 例題
ここでは、リポジトリにある./path/to/script.pyに機能を追加することを目的とする。
2. 理解
このリポジトリを読んで理解してほしい。特に`./path/to/script.py`を中心に頼む。
このプロンプトを出すからリポジトリ内にCLAUDE.mdを書かない。
CLAUDE.mdは徐々に実態と乖離するものと考えてる。
更新をサボると次第に意図とズレてくるので、そもそもCLAUDE.mdに頼らない。
セッションの最初に読んで理解してもらうことが、いまは最適解だと考えてる。
3. 計画
`./path/to/script.py`にはXXXXXXXXという問題がある。
その問題を解決するため、XXXXXXXXという機能を追加したい。
次の条件であるとする。
- XXXXXXXXという問題を解決することが目的である。
- 目的を達成するためにXXXXXXXXという機能を追加する。
- XXXXXXXXという状況を前提として良い。
- XXXXXXXXという状況ではXXXXXXXXと表示して処理を中断する。
- リポジトリ内の他のファイルが参考になるだろう。類似の問題を扱ってる可能性がある。
どのようなコードを追加したら良いだろうか?
プランを立ててほしい。
プランファイルはXXXXXXXXに保存してほしい。
ここは可能な限り詳しく書いておく。
もし、条件をうまく書けなのであれば、まだ扱って良い問題ではないと判断してる。
プランモードで進めると、Claude Codeはいい感じにAskUserQuestionToolを使ってくるので、状況に合わせて回答する。
計画が大きくなりすぎたら削るとか、深堀りが足りないなら更に考えてもらったりする。
リポジトリ内の他のファイルが少ない/あっても参考にならない場合、ある程度は手本となるコードを書いておく必要がある。
ある程度蓄積されるまでは、AIを使わない人力コーディングも必要とされてると考えてる。
4. 実装
いろいろ納得できたら実装を進める。
プランモードで進めてたら、コンテキストをクリアして実装を進める選択肢がある。自分では、それを選ぶことが多い。
プランモードではなかった場合、その内容で実装を進めてくれかその内容で実装と動作確認を進めてくれになる。
5. Gitコミット前レビュー
# Gitコミット前レビュー
## phase 1. コマンド実行
`git_add_diff.sh`を実行してくれ。パスが通ってるディレクトリに置いてある。
## phase 2. Gitコミット前レビュー
このディレクトリはGit管理してる。
いまはコミット前であり、コミット前の最終チェックをしたい。
差分情報は `./tmp/git.diff` に保存されてる。
コミット内容に次のような問題があるだろうか?
- 明らかに冗長だったり無駄な処理をしてる。
- 明らかなタイプミスをしている。
問題点を指摘してくれるだけで良い。改善は手動で実行する。
この内容をスラッシュコマンドにして実行してる。
git_add_diff.shはgit add --allしてgit diff HEADして差分情報を./tmp/git.diffに保存してるだけ。
指示してる内容は少ないが問題ない。
自分では冗長/無駄とタイプミスを気にしてるが、そういう気になる点だけの指示で問題ない。
Claude Codeの素のレビュー機能が効いてるようで、いい感じにレビューしてくれる。
このレビューが意外と重要だと思ってる。
ここで意図しない記述が含まれてた場合、自分の意図とファイルの更新状況がマッチしてない。
たぶん、そういう場合は修正が必要になる。
だから、Gitコミット前レビューは何回か繰り返す場合がある。
6. コミットメッセージの提案
# Gitコミットメッセージの提案
## phase 1. コマンド実行
`git_add_diff.sh`を実行してくれ。パスが通ってるディレクトリに置いてある。
## phase 2. Gitコミットメッセージの提案
このディレクトリはGit管理してる。
次の条件を満たすコミットメッセージを提案してくれ。
- 差分情報は `./tmp/git.diff` に保存されてる。
- Conventional Commits形式を採用してくれ。
- 日本語で作成してくれ。
コミットメッセージを提案してくれるだけで良い。コミット/プッシュは手動で実行する。
この内容をスラッシュコマンドにして実行してる。
IDEのコミットメッセージの提案機能を使わない。
「もう意図しない更新はないよね?」の最終確認の意味もあるので、IDEの機能ではreasoningが足りないと考えてる。