replica-build(レプリカビルド) は何をしますか?
replica/recon.md、replica/architecture.md、replica/design/ を読み込みます。
replica/features.csv(cloneカラム)を更新し、replica/build-log.md を管理します。
ルール
- クリーンルーム。 すべてのコードは、ここで recon マップと仕様書をもとに新しく書かれます。元の HTML、CSS、JavaScript、SVG、画像を貼り付けたり、元のドメインや CDN から何かを読み込んだり、「ソースを見て流用する」ことは絶対にしません。
- あなたの言葉で。 ラベル、ボタン、空状態、メール文面はすべて新しく書きます。ボタンの動作を合わせることはパリティです。文章をそのままコピーすることはコピー行為です。
- トークンのみ。 コンポーネント内に生の16進数カラーやピクセル値は入れません。もし値が不足している場合は、トークンに追加してください。
ステップ1:シェル
インベントリ内のすべての画面へのルーティング(スタブページで可)、レイアウト(ナビ、ヘッダー、サイドバー)、トークンの組み込み、replica-design からのプリミティブ、さらに各画面に表示するためのシードデータを用意します。コミットします。
ステップ2:垂直スライス
recon マップ上のコアループを、他の何よりも先にエンドツーエンドで実装します。予約アプリの場合:イベントタイプ作成→公開ページを開く→スロットを予約→ダッシュボードで確認。見た目は悪くても構いません。動作するのが目的です。もし replica-backend がまだ実行されていない場合は、シードデータと、同じ関数シグネチャを持つフェイクデータレイヤーを使用します。そうすれば、本物と差し替えても画面のコードを変更する必要がありません。
ステップ3:画面ごと
architecture.md の順序で作業します。各画面について:
- recon マップの該当行を読む:目的、コンポーネント、状態、どのフローが通過するか。
- レイアウトと階層を参照スクリーンショットで確認する。ピクセル単位ではなく。
- プリミティブを使って画面を構築する。データレイヤーからの本物のデータを使用する。
- すべての状態:空、ローディング(元がそうならスピナーではなくスケルトン)、データあり、エラー、権限なし、長いコンテンツ(60文字の名前など)、モバイル幅。
- 毎回の基本:セマンティック HTML、入力欄にラベル、キーボードで到達可能、フォーカスが見える、画像に代替テキスト。
features.csvの該当行をyesまたはpartial(注釈付き)に設定する。- 参照と同じビューポートでスクリーンショットを撮り、
replica/clone-screens/S07.pngに保存する(replica-diff 用)。 - 画面ごとに1コミット:
build: S07 booking page
画面ごとの完了条件
- recon マップ上の全状態に加え、空、エラー、ローディング状態を実装していること
- 390px と 1440px の幅で正常に動作すること
- キーボードのみでフローを完了できること
- コンソールエラーがないこと
- 元のアプリから借用したベタ書きの文言がないこと
- features.csv が更新されていること
- 差分確認用のスクリーンショットが保存されていること
ステップ4:ビルドログ
replica/build-log.md に、画面ごとに1行:ID、日付、完了または部分的、不足しているもの、想定より難しかったこと。機能が想定より大きい場合は、ログとチャットの両方でその旨を伝える。半分だけ静かにリリースしてはいけません。
機能の動作が分からなくなったとき
ユーザーとして元のアプリに戻る:ヘルプ記事を読む、公開チュートリアルを見る、ユーザー自身のアカウントを使ってみる。コードやネットワークリクエストを調べてはいけません。その上で、自分自身の動作のバージョンを構築します。
出力
構築された画面、更新された機能マトリクス、保存されたスクリーンショット、そしてサマリー:完了した画面数/総画面数、完了した必須項目数/総必須項目数、次に行うべきこと。その後、データレイヤーがまだフェイクの場合は /replica-backend、それ以外は /replica-test を実行します。