---
generated_at: 2026-02-18 10:30:00
metrics:
  claims_total: 108
  claims_with_evidence: 105
  claims_without_evidence: 3
confidence_derived: 0.97
---

# 根拠レポート: packages-cli 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：105 / 108、根拠なし：3
- 優先レビュー（高）
  1. **UT-CLI-091〜105（setEnvPlugin関連）**：内部関数のため直接テスト困難な可能性
  2. **UT-CLI-106〜108（removeImportWasi関連）**：ビルド後処理の検証方法要確認
  3. **UT-CLI-076〜090（initCommand対話処理）**：inquirerモック方法の確認必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `frontend/packages/cli/src/cli/index.ts` - CLIメインプログラム定義
- E-02: `frontend/packages/cli/src/cli/errors.ts` - エラークラス階層定義
- E-03: `frontend/packages/cli/src/cli/actionRunner.ts` - アクション実行ラッパー
- E-04: `frontend/packages/cli/src/cli/urls.ts` - URL定数定義
- E-05: `frontend/packages/cli/src/cli/banner.ts` - バナー表示コンポーネント
- E-06: `frontend/packages/cli/src/cli/erdCommand/index.ts` - ERDコマンド定義
- E-07: `frontend/packages/cli/src/cli/erdCommand/getInputContent.ts` - 入力コンテンツ取得
- E-08: `frontend/packages/cli/src/cli/erdCommand/runPreprocess.ts` - スキーマ前処理
- E-09: `frontend/packages/cli/src/cli/erdCommand/buildCommand/index.ts` - ビルドコマンド実行
- E-10: `frontend/packages/cli/src/cli/initCommand/index.ts` - 初期化コマンド
- E-11: `frontend/packages/cli/vite-plugins/setEnv.ts` - 環境変数設定プラグイン
- E-12: `frontend/packages/cli/vite-plugins/removeImportWasi.ts` - WASI import削除プラグイン
- E-13: `frontend/packages/cli/src/cli/index.test.ts` - 既存テスト（参照用）
- E-14: `frontend/packages/cli/src/cli/erdCommand/index.test.ts` - 既存テスト（参照用）
- E-15: `frontend/packages/cli/src/cli/erdCommand/getInputContent.test.ts` - 既存テスト（参照用）
- E-16: `frontend/packages/cli/src/cli/erdCommand/runPreprocess.test.ts` - 既存テスト（参照用）

## 3) Claims と根拠の対応（レビューの主戦場）

### CLI基本設定（UT-CLI-001〜005）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | program.name() が 'liam' を返す | E-01 L11 | ○ |
| C-02 | program.description() が 'CLI tool for Liam' を返す | E-01 L11 | ○ |
| C-03 | program.version() が package.json の version と一致 | E-01 L9, L11 | ○ |
| C-04 | 'erd' コマンドが存在 | E-01 L12 | ○ |
| C-05 | 'init' コマンドが存在 | E-01 L13 | ○ |

### エラークラス（UT-CLI-006〜011）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-06 | CliError が正しくメッセージを設定 | E-02 L1-6 | ○ |
| C-07 | CriticalError が CliError を継承 | E-02 L8-13 | ○ |
| C-08 | FileSystemError が CriticalError を継承 | E-02 L15-20 | ○ |
| C-09 | ArgumentError が CriticalError を継承 | E-02 L22-27 | ○ |
| C-10 | WarningError が CliError を継承 | E-02 L29-34 | ○ |
| C-11 | WarningProcessingError が WarningError を継承 | E-02 L36-41 | ○ |

### actionRunner（UT-CLI-012〜016）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-12 | エラー0件で正常終了 | E-03 L21-34 | ○ |
| C-13 | CriticalError で赤色エラー出力 | E-03 L5-9 | ○ |
| C-14 | WarningError で黄色警告出力 | E-03 L10-14 | ○ |
| C-15 | トラブルシューティングURL出力 | E-03 L17-19 | ○ |
| C-16 | process.exit(1) 呼び出し | E-03 L31 | ○ |

### URL定数（UT-CLI-017〜021）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | DocsUrl が正しいURL | E-04 L2 | ○ |
| C-18 | TroubleshootingUrl が正しいURL | E-04 L3-4 | ○ |
| C-19 | RepositoryUrl が正しいURL | E-04 L7 | ○ |
| C-20 | DiscussionUrl が正しいURL | E-04 L8 | ○ |
| C-21 | DbOrmDiscussionUrl が正しいURL | E-04 L9-10 | ○ |

### banner（UT-CLI-022〜028）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | NO_COLOR設定時にtrueを返す | E-05 L8-16 | ○ |
| C-23 | NO_COLOR未設定時にfalseを返す | E-05 L8-16 | ○ |
| C-24 | ターミナル幅>65でロングASCIIアート | E-05 L49-52 | ○ |
| C-25 | ターミナル幅<=65でショートASCIIアート | E-05 L49-52 | ○ |
| C-26 | カラー無効時にプレーンテキスト | E-05 L55-57 | ○ |
| C-27 | カラー有効時にグラデーション | E-05 L60-64 | ○ |
| C-28 | generateBanner が Promise<void> を返す | E-05 L67-76 | ○ |

### erdCommand（UT-CLI-029〜035）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-29 | erdCommand.name() が 'erd' | E-06 L8 | ○ |
| C-30 | erdCommand.description() が 'ERD commands' | E-06 L8 | ○ |
| C-31 | 'build' サブコマンドが存在 | E-06 L10-11 | ○ |
| C-32 | --input オプションが定義 | E-06 L13-16 | ○ |
| C-33 | --format オプションが定義 | E-06 L17-20 | ○ |
| C-34 | --output-dir デフォルト値が 'dist' | E-06 L7, L21-25 | ○ |
| C-35 | actionRunner でラップ | E-06 L26-30 | ○ |

### getInputContent（UT-CLI-036〜051）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-36 | 有効なURLでtrue | E-07 L6-13 | ○ |
| C-37 | 無効なURLでfalse | E-07 L6-13 | ○ |
| C-38 | GitHub blobURLでtrue | E-07 L15-18 | ○ |
| C-39 | GitHub blobURL以外でfalse | E-07 L15-18 | ○ |
| C-40 | Windowsでパス変換 | E-07 L20-32 | ○ |
| C-41 | Linux/macOSでパス保持 | E-07 L20-32 | ○ |
| C-42 | ローカルファイル読み込み | E-07 L34-53 | ○ |
| C-43 | ファイル不存在でエラー | E-07 L46-49 | ○ |
| C-44 | パターンマッチなしでエラー | E-07 L37-43 | ○ |
| C-45 | 複数ファイル結合 | E-07 L51-52 | ○ |
| C-46 | GitHub rawURL変換 | E-07 L55-62 | ○ |
| C-47 | URLからダウンロード | E-07 L64-76 | ○ |
| C-48 | ダウンロード失敗でエラー | E-07 L67-70 | ○ |
| C-49 | ローカルパスでreadLocalFiles呼び出し | E-07 L78-83 | ○ |
| C-50 | GitHubURLでdownloadGitHubRawContent呼び出し | E-07 L85-87 | ○ |
| C-51 | 通常URLでdownloadFile呼び出し | E-07 L85-90 | ○ |

### runPreprocess（UT-CLI-052〜060）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-52 | PostgreSQL形式でschema.json生成 | E-08 L23-101 | ○ |
| C-53 | schemarb形式でschema.json生成 | E-08 L23-101 | ○ |
| C-54 | 入力ファイル取得失敗でArgumentError | E-08 L28-34 | ○ |
| C-55 | フォーマット未定義・検出不可でArgumentError | E-08 L44-53 | ○ |
| C-56 | 無効フォーマットでArgumentError | E-08 L55-66 | ○ |
| C-57 | パースエラーでWarningProcessingError | E-08 L68-79 | ○ |
| C-58 | 出力ディレクトリ作成 | E-08 L83-85 | ○ |
| C-59 | ファイル書き込み失敗でFileSystemError | E-08 L91-99 | ○ |
| C-60 | フォーマット自動検出 | E-08 L38-42 | ○ |

### buildCommand（UT-CLI-061〜067）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | ERD HTMLアセット生成 | E-09 L9-69 | ○ |
| C-62 | 前処理エラーで返却 | E-09 L17-26 | ○ |
| C-63 | HTMLテンプレートなしでFileSystemError | E-09 L35-40 | ○ |
| C-64 | ファイルコピー失敗でFileSystemError | E-09 L47-49 | ○ |
| C-65 | 成功メッセージ出力 | E-09 L51-66 | ○ |
| C-66 | 絶対パスで表示 | E-09 L54-57 | ○ |
| C-67 | 相対パスで表示 | E-09 L54-57 | ○ |

### initCommand（UT-CLI-068〜090）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | initCommand.name() が 'init' | E-10 L15-17 | ○ |
| C-69 | initCommand.description() | E-10 L15-17 | ○ |
| C-70 | PostgreSQL -> 'postgres' | E-10 L20-29 | ○ |
| C-71 | Rails -> 'schemarb' | E-10 L20-29 | ○ |
| C-72 | Prisma -> 'prisma' | E-10 L20-29 | ○ |
| C-73 | Drizzle -> 'drizzle' | E-10 L20-29 | ○ |
| C-74 | tbls -> 'tbls' | E-10 L20-29 | ○ |
| C-75 | ウェルカムメッセージ出力 | E-10 L34-52 | ○ |
| C-76 | pg_dump使用でパス返却 | E-10 L58-81 | ○ |
| C-77 | pg_dump不使用で空文字 | E-10 L83-90 | ○ |
| C-78 | Drizzleスキーマパス返却 | E-10 L96-118 | ○ |
| C-79 | tblsスキーマパス返却 | E-10 L124-137 | ○ |
| C-80 | tbls via otherでデフォルトパス | E-10 L143-162 | ○ |
| C-81 | Railsデフォルトパス | E-10 L169-188 | ○ |
| C-82 | Prismaデフォルトパス | E-10 L169-188 | ○ |
| C-83 | 未サポートメッセージとexit(0) | E-10 L193-203 | ○ |
| C-84 | tbls経由コマンド表示 | E-10 L211-256 | ○ |
| C-85 | 入力ファイルありコマンド表示 | E-10 L211-256 | ○ |
| C-86 | 入力ファイルなしプレースホルダ | E-10 L211-256 | ○ |
| C-87 | GitHub Actionsワークフロー生成 | E-10 L265-322 | ○ |
| C-88 | addGhActions=falseでスキップ | E-10 L271 | ○ |
| C-89 | tbls経由セットアップステップ含む | E-10 L277-285 | ○ |
| C-90 | ディレクトリ作成失敗でエラー出力 | E-10 L315-320 | ○ |

### vite-plugins/setEnv（UT-CLI-091〜105）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-91 | VITE_CLI_VERSION_VERSION設定 | E-11 L97 | ○ |
| C-92 | VITE_CLI_VERSION_GIT_HASH設定 | E-11 L101 | ○ |
| C-93 | mainブランチでproduction | E-11 L95 | ○ |
| C-94 | main以外でpreview | E-11 L95 | ○ |
| C-95 | gitハッシュ取得 | E-11 L27-34 | ○ |
| C-96 | gitコマンド失敗で空文字 | E-11 L31-33 | ○ |
| C-97 | gitブランチ名取得 | E-11 L36-43 | ○ |
| C-98 | gitブランチ取得失敗で空文字 | E-11 L40-42 | ○ |
| C-99 | gitコミット日付取得 | E-11 L45-53 | ○ |
| C-100 | 日付取得失敗でフォールバック | E-11 L50-52 | ○ |
| C-101 | リリースタグ一致で1 | E-11 L57-81 | ○ |
| C-102 | リリースタグ不一致で0 | E-11 L57-81 | ○ |
| C-103 | タグ不存在で0 | E-11 L68-69 | ○ |
| C-104 | origin未設定でリモート追加 | E-11 L16-25 | △ |
| C-105 | origin設定済みでスキップ | E-11 L16-25 | △ |

### vite-plugins/removeImportWasi（UT-CLI-106〜108）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-106 | import 'wasi'削除 | E-12 L7-17 | ○ |
| C-107 | 複数存在時すべて削除 | E-12 L13 (正規表現の/g) | ○ |
| C-108 | 削除対象なしで内容保持 | E-12 L13 | △ |

## 4) 不足情報（Unknown / Missing）
- **C-104, C-105（remoteAddOrigin）**: git remote操作の具体的な動作確認が困難。Vercel環境でのみ必要な処理のため、ローカルテストでの検証方法が限定的。
  - 候補：統合テスト / モック強化 / Vercel環境でのE2Eテスト
- **C-108（removeImportWasi）**: 削除対象がない場合の挙動は暗黙的に保持されるが、明示的なテストケースが必要。
  - 候補：ファイル内容比較テスト / モックファイルを使用したテスト

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - CLI基本設定、URL定数、エラークラス定義（静的な値の検証）
- **1: 中リスク** - actionRunner、banner、getInputContent、runPreprocess、buildCommand（ビジネスロジック）
  - 既存テストが存在し、パターンを参照可能
- **1: 中リスク** - initCommand（対話型処理）
  - inquirerのモックが必要、ユーザー入力のシミュレーションが複雑
- **2: 高リスク** - vite-plugins（ビルドプロセス依存）
  - 実際のビルド環境でないと完全な検証が困難
  - gitコマンド依存のため、CI環境での動作確認が必要

## 6) レビュアーチェックリスト（最小）
- [ ] エラークラス階層が正しく設計されているか確認
- [ ] actionRunnerのエラーハンドリングパターンが適切か確認
- [ ] getInputContentのURL/ローカルファイル分岐ロジックが網羅されているか
- [ ] runPreprocessのフォーマット検出・検証ロジックが正しいか
- [ ] buildCommandの成功/失敗パターンが適切にテストされているか
- [ ] initCommandの対話処理がモック可能な設計になっているか確認
- [ ] vite-pluginsのテスト実現可能性を評価（モック戦略の検討）
- [ ] 既存テストファイル（E-13〜E-16）との整合性確認
