Windows用画像ビューアー(Rust製)。多形式対応と高速切り替えを軸にした単一ユーザー向けGUIアプリ。
本プロジェクトは人間による開発作業がほぼ発生しないため、
コーディング規約・設計判断・実装上の注意点はCLAUDE.mdおよび.claude/rules/配下に集約する。
- rust, node, pnpmなどはmise経由で実行する
- 普段使うのは
mise run format(フォーマット + 軽量lint)とmise run test(全チェック実行) - リリースは
gh workflow run release.yaml --field="bump=PATCH"で実行する - コミット前の検証方法:
uvx pyfltr run-for-agent- テストコードの単体実行なども極力
pyfltr run-for-agent <path>を使う(直接呼び出さない) - 修正後の再実行時は
--commands=cargo-clippy,cargo-test等で限定して実行する(最終検証はCIに委ねる前提)
- テストコードの単体実行なども極力
アーキテクチャ概要・モジュール構成・設計判断の根拠は docs/development/architecture.mdを参照する。
Rust実装の規約(ロックpoison・TOML SSOT・自然順比較・エラーハンドリング)は
.claude/rules/coding-standards.mdに集約する。
.claude/rules/coding-standards.mdはsrc/**/*.rs編集時に自動ロードされる。
Windowsバッチファイル生成の規約(CP932・UTF-8 BOM・chcp・goto構文)は
src/updater.rsのgenerate_update_batch関数のdocコメントに記載する。
unsafeブロックを新規追加・変更した直後は、必ずTaskツールで
subagent_type=unsafe-reviewerを呼び出し、対象ファイルの絶対パスを与えてレビューを依頼する。
既存のunsafeを含むファイルを編集しても、unsafe部分そのものに変更がなければ対象外。
SAFETYコメントの粒度判定基準は.claude/agents/unsafe-reviewer.mdをSSOTとする。
- Windows用プロジェクトのため、Linux環境での検証はlint系(textlint / markdownlint / prettier)のみ確認可能。 cargo-clippy / cargo-test / cargo-denyはWindowsターゲットのためLinuxでは失敗する
- Makefileではなく
mise.tomlのタスクを使用する。pre-commitフレームワークはuvx pre-commitで呼び出す taiki-e/install-action@cargo-denyはツール名タグ形式のためpinactでハッシュピン不可(.pinact.yamlで除外済み)- Linux環境での検証コマンド実行時は
LOCALAPPDATA=/tmp/dummy環境変数を付与する。mise.tomlがWindows前提でLOCALAPPDATAを参照しているため - Linux環境からドキュメント等のcargo無関係な変更をコミットする際は、
SKIP=cargo-clippy,cargo-test,cargo-deny LOCALAPPDATA=/tmp/dummy git commit ...形式で cargo系pre-commit hookをskipする。--no-verifyは全hookを無効化するため使わない