検証とプルリクエスト
プルリクエストを出す前に、リポジトリの規約に従い、UIの変更をブラウザで確かめ、検証コマンドを実行します。
規約
振る舞いを変える前に、変更する領域の開発者向けリファレンスを読んでください。そのうえで、次の規則に従います。
- ソースコード、コードコメント、リポジトリの指示文書、英語のREADME(
README.md)は英語で書きます。UIの翻訳リソース、README.ja.md、CONTRIBUTING.ja.md、ドキュメントサイトの日本語ページ(docs/ja/**)は対象の言語で書けます。英語が正本なので、日本語訳は同じ変更で更新します。それ以外の文書は英語で書きます。 - 実装とテストはこのリポジトリに置きます。
- プロダクションのソースファイル(
src/**/*.rsと、web/src/配下の.ts・.tsx)は、1ファイル300行以内に収めます。テストとスタイルには上限はありません。- Rust:
tests/file_size.rsが確認し、#[cfg(test)]モジュールより前の行だけを数えます。 - Web画面:
web/biome.jsonのBiomeのルールnoExcessiveLinesPerFileが確認するので、pnpm --dir web checkで検出されます。同じコマンドが、続けてweb/src/のimportの層と循環も検査します(Webコードの置き場所)。 - どうしても長いままにするファイルは、先頭行に理由つきでその旨を書きます。Rustでは
// file-size: allow (理由)、Web画面では// biome-ignore lint/style/noExcessiveLinesPerFile: 理由です。この指定をしたファイルには上限がかからないので、できるだけ責務ごとに分けてください。Rustのテストは、理由のない指定や、上限に収まっているファイルに残った指定も失敗にします。
- Rust:
docs/dev/reference/の開発者向けリファレンスは、Agent Boardの現在の仕組みを記述します。振る舞いを変えるときは、同じ変更でリファレンスとdocs/ja/dev/reference/の日本語訳を更新します。- Hook、設定、スクリプト、文書、生成物に、マシン固有の絶対パスをコミットしないでください。個人のホームディレクトリやローカルのチェックアウト先も含みます。
- プロジェクトのファイルや実行ファイルにはリポジトリ相対のパス、インストール済みのコマンドには
PATH、実行時に解決する値には環境変数を使います。マシン固有の設定は、Gitの追跡対象から除外したローカルファイルに置きます。 - コミット前にステージした差分を確認し、
/Users/や/home/などの個人のパスを取り除きます。変更したHookのコマンドが、特定の利用者のディレクトリ構成に依存せずに動くことを確かめます。
UIの変更
- モーダルには既存のshadcn/uiのDialogとButtonを使います。独自のモーダルの枠を作らず、共通のオーバーレイとテーマのスタイルを再利用します。
- ボタンの大きさは、共通の部品だけで決めます。
Buttonのsize、ダイアログや確認の末尾のボタンのDialogActions、アイコンと文字のIconLabel、パネルの中の確認のConfirmPanelです。cursor: pointerを持つスタイルの規則が、pxの固定の高さや幅を自分で持つと、Biome(web/biome-plugins/no-fixed-clickable-size.grit)が、エディターとpnpm --dir web checkで報告します。固定の大きさを残す必要がある規則(一覧の行、スライダーなど)は、宣言の前に理由をコメント/* biome-ignore lint/plugin: 理由 */で書きます。 - アーカイブのレイアウトは、タスクを選ぶ前と後の両方をブラウザで確認します。一括確認は、スクロールが必要になる十分な行数で、英語と日本語、ライトとダークのテーマ、狭い幅とデスクトップ幅で確認します。
検証
変更を終える前に、次を実行します。
sh
pnpm --dir web install
pnpm --dir web build # cargo buildの前に必要
cargo build
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
TZ=UTC cargo test
pnpm --dir web typecheck
pnpm --dir web check
TZ=UTC pnpm --dir web test
pnpm --dir web typecheck:storybook
TZ=UTC pnpm --dir web test:storybook
pnpm --dir web build-storybookWebのフォーマットを適用するにはpnpm --dir web formatを実行します。
テストの規則:
- 表示時刻を固定するため、
TZ=UTCを設定します。 - 既定のデータ領域は使いません。各テストが
AGBOARD_HOMEを一時ディレクトリに設定します。 agboard serveは127.0.0.1だけで待ち受けます。ポート7420は使わず、空いているポートかポート0を使い、接続先にはlocalhostではなくhttp://127.0.0.1:<port>/を使います。
Playwrightのテストはe2e/にあります。初回はpnpm --dir e2e install --frozen-lockfileで依存関係を、pnpm --dir e2e exec playwright install chromiumでブラウザをインストールします。
pnpm --dir e2e testはアプリのテストを実行し、共通の事前処理(global setup)でWeb画面とCLIをビルドします。pnpm --dir e2e test:docsは、ビルド済みのドキュメントサイトを検証します。

