diff --git a/dot_claude/CLAUDE.md b/dot_claude/CLAUDE.md index 1817da3..49ae024 100644 --- a/dot_claude/CLAUDE.md +++ b/dot_claude/CLAUDE.md @@ -1,12 +1,12 @@ ## 基本 -- 日本語で応答すること +- 応答は日本語で行うこと +- コードコメント・コミットメッセージ・プルリクエストの本文は、作業対象のリポジトリの慣習が英語である場合はそれに合わせる - 必要に応じて、ユーザに質問を行い、要求を明確にすること - 作業後、作業内容とユーザが次に取れる行動を説明すること -- コマンドの出力が確認できない場合、 get last command / check background terminal を使用して確認すること +- コマンドの出力が確認できない場合、get last command / check background terminal を使用して確認すること - ユーザーが質問したとき(特に疑問符で終わっているとき)は、勝手に作業をしないで、まず質問に答えてください。 - シンプルなことがいいことです。ユーザーからの指示がない限り、いたずらに行数を増やしてはいけません。 -- より最新の書き方がベストです。最新の機能を使って、最先端を追求しましょう。 - ユーザーに対して誠実でありましょう。出来ないことは出来ない・不可能ですと言いましょう。 ## 開発手順 @@ -22,26 +22,24 @@ - 冪等性を担保し、実行日時や外部状態に依存しない造りにせよ。 - 作業項目が多い場合は、段階に区切り、git commit を行いながら進めること。その際、GitHub CLIを使用してください - semantic commit を使用する - - コミットメッセージは日本語で記載する - テストを追加・修正した場合、プルリクエストにサマリ・説明を記載すること ## コマンド実行 -- コマンドはサンドボックス内で実行すること。サンドボックス内で完結する実行は自動的に許可されるので、承認プロンプトは出ない -- `dangerouslyDisableSandbox` は必ず承認プロンプトを伴う。先入観で先に付けず、まずサンドボックス内で実行し、実際に権限エラーで落ちてから昇格すること -- 一時ファイルは `/tmp` 直下ではなくスクラッチパッド(`$TMPDIR`)に置くこと。`/tmp` はサンドボックスが書き込みを拒否する -- `git` と `gh` はサンドボックス外で走る扱いのため、ビルドやテストと同じコマンドに混ぜないこと。`go test ./... && git commit ...` のような複合はコマンド全体が昇格対象になり、`gh` をループやパイプの中で呼ぶと自分の設定ファイルを読めずに失敗する +- コマンドはサンドボックス内で実行すること。サンドボックス外での実行が必要な場合は、実際に権限エラーで落ちてから昇格すること +- `git` と `gh` はサンドボックス外で走るため、ビルドやテストと同じコマンドに混ぜないこと。`go test ./... && git commit ...` のような複合はコマンド全体が昇格対象になり、`gh` をループやパイプの中で呼ぶと自分の設定ファイルを読めずに失敗する - 破壊的な git 操作(force push、`reset --hard`、`clean -f`、履歴改変)は `bash-guard.sh` フックが拒否する。回避せず、必要なら人手での実行を提案すること -- ループバック接続(`localhost` / `127.0.0.1`)とローカルの listen は `sandbox.network.allowLocalBinding` で許可済み。統合テスト、E2E、dev サーバ、Playwright、Go の `httptest`、`curl http://localhost:*` はサンドボックス内で走るので escape を付けないこと -- `git` `gh` `docker` などは `sandbox.excludedCommands` により既にサンドボックス外で走る。これらに `dangerouslyDisableSandbox` を付けても実行結果は変わらず、承認プロンプトだけが増えるので付けないこと -- 承認プロンプトを伴うコマンド(`dangerouslyDisableSandbox` 付き、`docker exec` / `docker run` / `docker compose exec` などの変更系)では、`description` に日本語で次の4点を書くこと。ユーザはこの説明だけを見て可否を判断する - - 目的:何のために実行するのか - - 副作用:書き込むパス、触る DB とテーブル、接続先ホスト、削除や上書きの有無 - - 可逆性:元に戻せるか。戻し方、またはバックアップの場所 - - escape の理由:`dangerouslyDisableSandbox` を付ける場合、サンドボックス内で何がどう失敗したか +- 承認プロンプトを伴うコマンド(`dangerouslyDisableSandbox` 付き、`docker exec` / `docker run` / `docker compose exec` などの変更系)を実行する場合、`description` に日本語で以下を記載する。ユーザはこの説明だけを見て可否を判断するため、簡潔かつ具体的に書くこと + + | 項目 | 記載内容 | + |---|---| + | 目的 | 何のために実行するのか | + | 副作用 | 書き込むパス、触る DB とテーブル、接続先ホスト、削除や上書きの有無 | + | 可逆性 | 元に戻せるか。戻し方、またはバックアップの場所 | + | escape の理由 | `dangerouslyDisableSandbox` を付ける場合、サンドボックス内で何がどう失敗したか | + ヒアドキュメントで渡すスクリプトは、コマンド文字列を読ませて理解させるのではなく、`description` 側で何をするスクリプトかを説明すること ## 文章執筆 - 日本語で技術的な文章(書籍の章、記事、解説文、ドキュメント、ブログ)を書く・推敲・リライトするときは、`japanese-tech-writing` スキルを参照すること -- 読み物として読ませたい章・記事・解説文の緩急を設計する、または「密度はあるが平坦でおもしろくない」文章を診断・修正するときは、`cognitive-rhythm-writing` スキルを参照すること \ No newline at end of file