exp-ai-form-design / LT Index

このプロジェクトの概要

同一仕様のフォームを、3つのコーディングエージェント(Codex CLI / Gemini CLI / Claude Code)に実装させ、 実装の違いや設計傾向を観察する小さな実験です。GitHub Pages で docs/ 以下を公開しています。

各コーディングエージェントが作成したフォームを見る

Codex CLI

Tailwind CSS + daisyUI を使用した実装

新しいタブで開く

Gemini CLI

Bootstrap 5 ベースのミニマル実装

新しいタブで開く

Claude Code

Bootstrap 5 + 追加CSS、JSで画面遷移制御

新しいタブで開く

プレビュー (ボタンで切替 / 1, 2, 3 キーでも切替)

各コーディングエージェントが採用した設計(事実)

Codex CLI 実装

  • UI: Tailwind CSS + daisyUI(CDN)
  • 画面: フォーム/確認の2画面をDOM切替(クエリ有無で制御)
  • マークアップ: 確認画面は <dl> を使用、<noscript> メッセージあり
  • 入力補助: autocompletearia-describedby を付与
  • バリデーション: requiredmaxlength、電話番号に pattern="[0-9+()\-\s]{9,}"
  • 送信方式: GET。パスワードは確認画面でマスク表示

Gemini CLI 実装

  • UI: Bootstrap 5.3.0(CDN)
  • 画面: URLの username パラメータ有無でフォーム/確認を切替
  • フィールド: 住所は <input type="text"> を使用
  • バリデーション: required のみ(追加の pattern 指定なし)
  • 送信方式: GET。確認画面は textContent で値を反映

Claude Code 実装

  • UI: Bootstrap 5.3.2(CDN)+ 追加のカスタムCSS
  • 画面: JSでフォーム送信をフックしシングルページ的に確認画面へ遷移
  • URL: history.replaceState で入力値をクエリに反映
  • バリデーション: パスワード minlength=8、電話番号は国内形式の patternsetCustomValidity
  • 表示: パスワードは '*'.repeat(n) でマスク。住所は改行を <br> に置換
  • データ反映: innerHTML で確認用HTMLを生成

各コーディングエージェントの設計傾向

この index.html について

このページ自体もコーディングエージェント(Codex CLI)で作成しています。
LTでの投影を想定し、文字サイズ・コントラスト・プレビュー切替に配慮したシンプルな実装です。