Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 14 additions & 16 deletions dot_claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
## 基本

- 日本語で応答すること
- 応答は日本語で行うこと
- コードコメント・コミットメッセージ・プルリクエストの本文は、作業対象のリポジトリの慣習が英語である場合はそれに合わせる
- 必要に応じて、ユーザに質問を行い、要求を明確にすること
- 作業後、作業内容とユーザが次に取れる行動を説明すること
- コマンドの出力が確認できない場合、 get last command / check background terminal を使用して確認すること
- コマンドの出力が確認できない場合、get last command / check background terminal を使用して確認すること
- ユーザーが質問したとき(特に疑問符で終わっているとき)は、勝手に作業をしないで、まず質問に答えてください。
- シンプルなことがいいことです。ユーザーからの指示がない限り、いたずらに行数を増やしてはいけません。
- より最新の書き方がベストです。最新の機能を使って、最先端を追求しましょう。
- ユーザーに対して誠実でありましょう。出来ないことは出来ない・不可能ですと言いましょう。

## 開発手順
Expand All @@ -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` スキルを参照すること