Claude Code お試し

claude
-
-p
でインタラクティブなしの結果を得られる -
-c
で前回からの続きとしてメッセージを送れる
なので、CLIから擬似的に会話を続けることができる。
-
--resume
で過去の履歴をみれて、続きから始められる - 履歴をどうやって消すのかわからない。コマンドでは無理なのかな?物理削除?

claude codeの性質
- claude -c -p は会話の履歴を全て読んで継続で応答している。別のターミナルでしている会話も反映される。
- 一方で、claude -c後に連続して会話している方は、その会話で閉じていて、他のところでclaude -c -pしたものが見れない。
良し悪しあって、-c
で起動の方は自然と応答が遅くなる。

独自コマンドはフォルダ分けしても中をみてくれる。みてほしくないときは.archives
のように隠しフォルダにする。

/status
でsessionIDをみれるので、claude -r SessionID -p "hello"
で継続できるのか、と思ったらできなかった。

1+1を計算して
claude -p "@tmp/test"
で2を出力してもらえる。
claude -p "@tmp/test 結果に1を足して"
で3を出力してもらえる。
Neovimからの単体指示利用のときに使えそう。

ざっくり作ってもらった。
選択範囲か今の行にある指示を実行して、別タブに結果を表示する。
" Claude Code shortcut
function! SendToClaude()
" ファイルパスを取得
let filepath = expand('%')
" visual modeかどうかを判定してテキストを取得
let text_content = ''
" visual modeから抜ける
if mode() ==# 'v' || mode() ==# 'V' || mode() ==# "\<C-v>"
normal! gv
" 選択範囲を取得
let [line_start, column_start] = getpos("'<")[1:2]
let [line_end, column_end] = getpos("'>")[1:2]
if visualmode() ==# 'V'
let text_content = join(getline(line_start, line_end), "\n")
else
let lines = getline(line_start, line_end)
if len(lines) == 1
let text_content = lines[0][column_start-1:column_end-1]
else
let lines[0] = lines[0][column_start-1:]
let lines[-1] = lines[-1][:column_end-1]
let text_content = join(lines, "\n")
endif
endif
" visual modeから抜ける
execute "normal! \<Esc>"
else
let text_content = getline('.')
endif
let claude_input = '@' . filepath . ' ' . text_content
" テンポラリファイルに内容を書き込み
" -- エスケープの問題が厄介なため
let temp_file = tempname()
let claude_input = '@' . filepath . ' ' . text_content
call writefile(split(claude_input, "\n"), temp_file)
execute 'silent tabnew | terminal claude -p < ' . temp_file . ' && rm ' . temp_file
endfunction

直接ファイル編集されるともやっとするときがある。そういったときは、
ファイル編集を禁じる。
指示内容をレスポンスとして返すこと。
みたいにするといい(?)

開発しながらちょこちょこ実行するための独自コマンドを作ってみた。
あとは開発しながら調整が必要。助言が毎回出ると鬱陶しさがあるかもしれない。
// もうちょい速度が出れば、mix-test-observer
のかわりになりそう。

開発の一区切りとして一連処理を実行します。全体の工程を示します。
- コード整形
- 自動テスト実行
- 助言
対象は作業を行ったファイルのみとする。Git管理下であればgit status
も参照のこと。
1. コード整形
mix format
を対象ファイルに実施する。
2. 自動テスト実行
MIX_ENV=test mix test
を実施する。
ただしmix
コマンドを都度起動すると時間がかかるため、下記のファイル一覧を出した後に、まとめて実施する。
(a)対象テストファイル
(b)対象コードに関連するであろうテストファイル(存在する場合)
3. 助言
最高位のレビュアーとして、作業者の成長を促すことを目的とする。
自動テスト結果に対するフィードバック、あるいは、対象ファイルのロジックや記述に対して助言を行うこと。
優先度をつけて簡潔に列挙すること。
出力フォーマット
## コード整形結果
- {自動整形したファイル名}
## 自動テスト実行結果
- {採番} {失敗したテストのファイル名:行番号の一覧}
- {簡潔なエラー内容}
## 助言
**自動テスト**
{対応する自動テスト実行結果採番}:
{簡潔な修正方針}
**課題 必須(MUST)**
{採番} {見出し}:
{内容}
**課題 すべき(SHOULD)**
{採番} {見出し}:
{内容}
**課題 一流の考え(THINK)**
{採番} {見出し}:
{内容}
**リファクタリング**
{採番} {見出し}:
{内容}

コマンドファイルを作るためのコマンドがいる感

claude + mcp お試し
- playwright https://zenn.dev/sesere/articles/4c0b55102dcc84
- o3 or o4-mini接続 https://zenn.dev/yoshiko/articles/claude-code-with-o3
- Elixir - 自作してみる ~ https://github.com/cloudwalk/hermes-mcp
- echoサーバが動いたけど微妙にREADMEが違う?
- 登録:
claude mcp add yamato -s project --transport http http://localhost:4000/mcp
-
handle_tool
ではなくhandle_tool_call
を使う。replyも%Response{} を返す必要があった。このあたりはdepsにあるソースから探った。