# 開発コマンド (Development Commands)

日常の開発で使うコマンドの一覧．人間とエージェントがコマンドを推測せずに済むよう，ここを唯一の参照先とする．コマンドが確定・変更されたら本ファイルに反映する．

※ すべてプロジェクトルートで実行する．`uv run` 経由で実行すれば仮想環境の有効化は不要（構築手順は [ENV_02](ENV_02_環境構築手順.md)）．グローバルの Python には pytest 等が入っていない．

## 依存パッケージ (Dependencies)

```bash
# uv.lock どおりに .venv を同期（clone 直後・pull 後・依存更新 PR の検証前）
uv sync

# 依存の追加・削除（pyproject.toml と uv.lock が更新される．開発用は --dev）
uv add <パッケージ>
uv remove <パッケージ>

# ロックの更新（全体 / 特定パッケージ）
uv lock --upgrade
uv lock --upgrade-package <パッケージ>
```

## 依存更新の検証スイート (Verification Suite)

`/deps-update` のローカル検証など，依存を更新した後に「壊れていないか」を確かめるときはこの 2 つを実行する．

```bash
uv sync
uv run pytest
```

※ `ruff check` は既存コードに違反が残っている（主に E501 行長）ため，現時点では検証スイートに含めない．

## テスト (Test)

```bash
# 全テスト（testpaths = tests は pyproject.toml で設定済み）
uv run pytest

# 特定のテストファイル・詳細出力
uv run pytest tests/analysis/test_uniformity.py
uv run pytest -v
```

テストの書き方は `.claude/rules/testing.md` を参照．

## Lint・フォーマット (Lint & Format)

```bash
# lint（設定は ruff.toml）
uv run ruff check .

# 自動修正・フォーマット
uv run ruff check . --fix
uv run ruff format .
```

## 解析スクリプト (Analysis Scripts)

```bash
# PNG の照明均一性評価（単一画像 / ディレクトリ一括）
uv run python scripts/run_uniformity.py --image data/smtias/whiteboard/xxx.png
uv run python scripts/run_uniformity.py --image data/smtias/whiteboard/

# DNG の照明均一性評価
uv run python scripts/run_uniformity_dng.py --image data/smtias/quantitative/xxx.dng

# ROI の対話的選択（config/roi_config.json に保存）
uv run python scripts/select_roi.py --image data/smtias/whiteboard/xxx.png --key smtias.whiteboard

# 結果ビューア
uv run streamlit run scripts/viewer.py
```

- `scripts/compare_*.py`・`plot_radial_clean.py` 等の比較・作図スクリプトは，各ファイル冒頭の docstring「使い方」を参照する（`python` を `uv run python` に読み替える）
- 入力は `data/`，出力は `output/`（いずれも Git 管理外）

## Claude Code フックのテスト (Hook Tests)

`.claude/hooks/` のフックを変更した場合，またはテンプレート同期後に実行する（標準ライブラリのみで動く）．

```bash
python -m unittest discover -s .claude/hooks/tests -p "test_*.py"
```
