unslop-audit は何をしますか?
手順
- コードから証拠を収集し、可能であれば実行中のアプリも確認する:ルート、コンポーネント、APIエンドポイント、DBテーブル、環境変数、compose/proxy設定。
- 以下のルーブリックを使用して各次元を0~4でスコアリングする。スコアにはファイルまたはルートを伴う理由が必要。
構造の痕跡から痕跡をリストアップする。各行に1つ、場所を付記すること。- 発見事項をランク付けする:Blockers(セキュリティ、データ損失、法的問題、外部副作用)→ Gap(フロー全体の欠落)→ Rough(一貫性がない、または未完成)→ Polish。
- 下部のテンプレートからレポートを作成する。
ルーブリック(0 = 存在しない、2 = 動作するが薄い、4 = 意図的)
| 次元 | 4点の条件 |
|---|---|
| アイデンティティとアクセス | ログイン、ログアウト、リセット、招待、ロールがバックエンドで強制、データの所有者管理、レート制限 |
| オンボーディング | 初回起動でループを説明、プロダクトが必要とするものを収集、最初の成功で終了 |
| コアループ | 開始、進行、結果、再試行、キャンセル、エクスポートがすべて存在し、リンク可能 |
| 設定 | プロフィール、チーム、通知、統合、データエクスポートと削除;重要なものが環境変数にしか存在しない状態を回避 |
| 状態 | すべての画面に空、ローディング、エラー、部分、オフライン、権限なし、制限超過の状態がある |
| 構造 | 実際のルート、エンティティごとのディープリンク、ページネーション、フィルター、一貫したナビゲーション |
| コピー | 具体的、人間的、未加工エラーなし、スロップ文言なし、一貫したトーン |
| ビジュアル | スペース/カラー/タイポグラフィ用のトークン、控えめなUI、1つの意図的なフォーカル要素、モバイル対応 |
| コンポーネント | 各画面にデータ形状に合わせた特徴的なコンポーネント;デフォルトのテーブル/KPIカード/フォームに頼らない;読み取り優先で編集は1階層深い場所 |
合計 /36。14未満:プロトタイプ。14-23:内部利用可。24-31:出荷可能。32以上:意図的に設計されている。
構造の痕跡(AI構築アプリに見られる特徴)
- 800行以上の単一コンポーネントが製品全体をレンダリング;ルーターなし。
- 認証がプロキシ設定内またはコメントアウトのみで実装;APIがオープン。
- 「すべてのユーザー向け」という確認テキスト、または所有者がいないデータ。
- 設定が環境変数としてのみ存在するか、まったく存在しない。
- UIがリフレッシュごとにすべてのアイテムを再取得(クライアント側のN+1問題)。
- 「近日公開」、プレースホルダーページ、機能しないボタン、lorem ipsum、シードデータが本番データとして表示される。
- エラーテキストでサポートを約束しているが、連絡先が存在しない。
- 説明のないステータス;同じ状態が3通りの名前で呼ばれている。
- 404/403/500ページがない;SPAのフォールバックがすべてのパスでシェルを提供。
- プレビュー、テスト送信、履歴、レート制限、オプトアウトがないアウトバウンドメールまたはWebhook。
- アクションが背後にない虚栄のKPIカードのダッシュボード。
- デフォルトのシルエット(タイトル、KPIカードの行、セルに編集コントロールがあるテーブル、フォーム)で構築された画面(
unslop-components参照)。
レポートテンプレート
# Audit: <アプリ名> - <日付>
Score: <n>/36 (<バンド>)
## Blockers
- <発見事項> - <ファイル/ルート> - <なぜ重要か> - <最小限の修正>
## Gaps
## Rough
## Polish
## Scores
| 次元 | スコア | 理由 |
## 未確認