コンテンツにスキップ

Slack MCP Agent — DESIGN.md

v1.1 / 2026-04-18

AI が管理画面を実装する際のデザイン指示書。
トークン・コンポーネント・レイアウトの規約を定義し、一貫した UI を保つ。
参考: DESIGN.md アプローチ


1. デザイン原則

# 原則 説明
D-1 シンプル & 機能的 装飾より情報を優先。運用管理ツールとして必要十分な UI
D-2 ステータスを色で即座に識別 パイプラインの状態を色とアイコンで一目で把握できる
D-3 情報密度は高く、認知負荷は低く テーブル・カード・バッジを活用し、スクロールを最小化しつつ読みやすさを確保
D-4 ダークモード対応 運用者が長時間利用する前提でダーク/ライト切替を実装
D-5 Caster 既存 UI を踏襲 caster-division-ai の DashShell レイアウト思想を継承
D-6 絵文字(Emoji)使用禁止 UI 上のラベル・ボタン・ナビ・見出し・説明文にUnicode 絵文字を使わない。状態表現は Lucide Icons + ステータスカラーで行う。ワイヤーフレーム等ドキュメント内の記号的使用も避ける

2. 技術スタック

領域 選定 備考
フレームワーク Next.js 16+ (App Router) Server Components 主体
スタイリング Tailwind CSS v4 ユーティリティファースト
コンポーネント shadcn/ui コピペ型、カスタマイズ可能
アイコン Lucide Icons shadcn/ui のデフォルト
フォント Inter (sans-serif) Tailwind デフォルト
カラー管理 CSS Variables + Tailwind ダーク/ライト切替

3. デザイントークン

3.1 カラーパレット

ブランドカラー

トークン ライト ダーク 用途
--primary hsl(221 83% 53%) hsl(217 91% 60%) プライマリアクション、アクティブナビ
--primary-foreground hsl(210 40% 98%) hsl(222 47% 11%) プライマリ上のテキスト

セマンティックカラー

トークン ライト ダーク 用途
--background hsl(0 0% 100%) hsl(222 47% 11%) ページ背景
--foreground hsl(222 47% 11%) hsl(210 40% 98%) 標準テキスト
--card hsl(0 0% 100%) hsl(222 47% 11%) カード背景
--card-foreground hsl(222 47% 11%) hsl(210 40% 98%) カード上テキスト
--muted hsl(210 40% 96%) hsl(217 33% 17%) 補助背景
--muted-foreground hsl(215 16% 47%) hsl(215 20% 65%) 補助テキスト
--border hsl(214 32% 91%) hsl(217 33% 17%) ボーダー
--input hsl(214 32% 91%) hsl(217 33% 17%) 入力フィールド枠
--ring hsl(221 83% 53%) hsl(224 76% 48%) フォーカスリング

ステータスカラー

パイプライン状態を即座に識別するための色。Slack カードの attachment color と一致させる。

ステータス トークン ライト ダーク Slack 対応
生成中 --status-generating hsl(45 93% 47%) hsl(45 93% 57%) #f2c744
承認待ち --status-pending hsl(207 90% 54%) hsl(207 90% 64%) #2196f3
承認済み / 完了 --status-success hsl(142 71% 45%) hsl(142 71% 55%) #36a64f
却下 / 失敗 --status-error hsl(348 83% 47%) hsl(348 83% 57%) #e01e5a
実行中 --status-running hsl(210 79% 36%) hsl(210 79% 46%) #1264a3
中止 --status-cancelled hsl(0 0% 53%) hsl(0 0% 63%) #888888

3.2 タイポグラフィ

要素 サイズ ウェイト 行間 用途
Page title text-2xl (1.5rem) font-semibold 1.33 ページタイトル
Section heading text-lg (1.125rem) font-semibold 1.5 セクション見出し
Card title text-base (1rem) font-medium 1.5 カードタイトル
Body text-sm (0.875rem) font-normal 1.43 本文・テーブルセル
Caption text-xs (0.75rem) font-normal 1.33 タイムスタンプ・補助情報
Mono text-sm font-mono font-normal 1.5 ID・JSON・コード

3.3 スペーシング

トークン 用途
--space-page p-6 (1.5rem) ページコンテンツのパディング
--space-card p-4 (1rem) カード内パディング
--space-section space-y-6 (1.5rem) セクション間マージン
--space-inline gap-2 (0.5rem) インライン要素間

3.4 角丸・影

要素 角丸
カード rounded-lg (0.5rem) shadow-sm
バッジ rounded-full なし
ボタン rounded-md (0.375rem) なし
入力 rounded-md (0.375rem) なし
ダイアログ rounded-lg (0.5rem) shadow-lg

4. レイアウト

4.1 シェルレイアウト(DashShell)

Caster 既存実装を踏襲。固定サイドバー + メインコンテンツエリア。

┌──────────────────────────────────────────────────────┐
│ Sidebar (w-64, 固定)       │ Main Content              │
│                            │                           │
│ ┌────────────────────────┐ │ ┌───────────────────────┐ │
│ │ Logo                   │ │ │ Page Header           │ │
│ │ "HR AI Agent"          │ │ │ Title + Actions       │ │
│ ├────────────────────────┤ │ ├───────────────────────┤ │
│ │ Nav Items              │ │ │                       │ │
│ │  Pipeline パイプライン │ │ │ Page Content          │ │
│ │  Settings 設定         │ │ │                       │ │
│ │  Link 外部連携         │ │ │                       │ │
│ │  ScrollText 監査ログ   │ │ │                       │ │
│ ├────────────────────────┤ │ │                       │ │
│ │ User Menu              │ │ │                       │ │
│ │ Theme Toggle (☀/☽)     │ │ │                       │ │
│ └────────────────────────┘ │ └───────────────────────┘ │
└──────────────────────────────────────────────────────┘
要素 仕様
サイドバー幅 w-64 (16rem)、モバイルでは折り畳み
サイドバー背景 --card / ボーダー右に --border
ナビ項目 text-sm、アクティブ時 bg-primary/10 text-primary
ロゴ テキストベース「HR AI Agent」、text-lg font-bold
テーマ切替 サイドバー下部に ☀/☽ トグル
メインコンテンツ flex-1 overflow-autop-6

4.2 レスポンシブ

ブレークポイント サイドバー レイアウト
lg (1024px+) 固定表示 サイドバー + メイン
md (768px-1023px) ハンバーガーで開閉 メインのみ
sm (<768px) ハンバーガーで開閉 シングルカラム

5. コンポーネント規約

5.1 ステータスバッジ

パイプライン状態を表すバッジ。shadcn/ui の Badge を拡張。

// 使用方法
<StatusBadge status="completed" />
<StatusBadge status="running" />
<StatusBadge status="failed" />
status ラベル バリアント
extracted 抽出済み outline --muted-foreground
generating 生成中 default --status-generating
pending_approval 承認待ち default --status-pending
approved 承認済み default --status-success
rejected 却下 destructive --status-error
running 実行中 default --status-running
completed 完了 default --status-success
failed 失敗 destructive --status-error
cancelled 中止 secondary --status-cancelled

5.2 データテーブル

パイプライン一覧・監査ログで使用。shadcn/ui の Table を使用。

要素 スタイル
ヘッダ text-xs font-medium text-muted-foreground uppercase tracking-wider
セル text-sm、パディング py-3 px-4
ホバー hover:bg-muted/50
行クリック cursor-pointer (パイプライン一覧のみ)
ページネーション テーブル下部に Button ペア(前/次)

5.3 タイムラインビュー

パイプライン詳細で Task → Prompt → Process → Execution を時系列表示。

  ● Task                    ← ドット + ステータスカラー
  │  タイトル、作成日時
  ● Prompt v1 (承認済み)    ← 承認者、時刻
  │  テキスト(アコーディオン展開)
  ● Process v1 (承認済み)
  │  ステップ一覧
  ● Execution (完了)        ← 実行時間
     ツール実行ログ
要素 スタイル
縦線 border-l-2 border-border ml-3
ドット w-3 h-3 rounded-full、ステータスカラー
ノード間 space-y-4
展開/折りたたみ shadcn/ui Collapsible

5.4 接続カード

外部連携画面でプロバイダーの接続状態を表示。

┌─────────────────────────────────────────┐
│ 💼 freee                    [接続済み]  │  ← icon + status badge
│ 勤怠・給与・従業員 API にアクセス      │  ← description
│ スコープ: employees:read, ...          │  ← scopes (mono)
│ 接続日時: 2026-04-15 09:20            │  ← timestamp
│                     [再認証] [切断]     │  ← actions
└─────────────────────────────────────────┘

5.5 フォームコントロール

設定画面で使用。

コントロール コンポーネント 用途
トグル shadcn/ui Switch 承認フロー ON/OFF
セレクト shadcn/ui Select モデル選択
数値入力 shadcn/ui Input type="number" タイムアウト秒数
保存ボタン shadcn/ui Button variant="default" 設定保存

6. アイコン規約

ナビゲーションおよびページ内で使用するアイコン。Lucide Icons から選定。

用途 アイコン名 使用場所
パイプライン GitBranch サイドバーナビ
設定 Settings サイドバーナビ
外部連携 Link サイドバーナビ
監査ログ ScrollText サイドバーナビ
成功 CheckCircle2 ステータス表示
失敗 XCircle ステータス表示
実行中 Loader2 (animate-spin) ステータス表示
承認待ち Clock ステータス表示
フィルタ Filter テーブルフィルタ
再読み込み RefreshCw リフレッシュボタン
ライトモード Sun テーマ切替
ダークモード Moon テーマ切替

7. ページ別デザインガイド

7.1 パイプライン一覧 (/)

  • ページヘッダ: タイトル + [リフレッシュ] ボタン
  • ステータスフィルタ: タブ形式で all / running / completed / failed
  • テーブル: ステータスバッジ | タイトル | 種別 | 作成日時 | 実行時間
  • 行クリック → /pipeline/[id] へ遷移

7.2 パイプライン詳細 (/pipeline/[id])

  • ページヘッダ: タスクタイトル + ステータスバッジ + 作成日時
  • メタデータ: 優先度、種別(section.fields 的な 2 列表示)
  • タイムラインビュー: Task → Prompt → Process → Execution
  • 各ノードはアコーディオンで展開/折りたたみ

7.3 設定 (/settings)

  • カード内にフォームコントロールを配置
  • セクション: 基本情報(名前・スラッグ)、承認フロー設定(トグル×2)、実行設定(モデル選択・タイムアウト)
  • 下部に [変更を保存] ボタン

7.4 外部連携 (/integrations)

  • プロバイダーごとの接続カードを縦並び
  • 3 プロバイダー: freee / Google Sheets / Slack
  • 各カードに接続状態バッジ + アクションボタン

7.5 監査ログ (/audit)

  • フィルタバー: 日付範囲ピッカー + アクション種別セレクト
  • テーブル: タイムスタンプ | アクター | アクション | リソース | 詳細
  • 詳細列は JSON をインライン展開(Collapsible

8. 実装時の注意事項

8.1 shadcn/ui の使い方

  • npx shadcn@latest add でコンポーネントを追加(ソースコードがコピーされる)
  • カスタマイズは components/ui/ 内のファイルを直接編集
  • 新規コンポーネントは components/ に配置(ui/ 内は shadcn 管理)

8.2 CSS Variables の定義

app/globals.css に定義:

@layer base {
  :root {
    --background: 0 0% 100%;
    --foreground: 222.2 47.4% 11.2%;
    --primary: 221.2 83.2% 53.3%;
    --status-generating: 45 93% 47%;
    --status-pending: 207 90% 54%;
    --status-success: 142 71% 45%;
    --status-error: 348 83% 47%;
    --status-running: 210 79% 36%;
    --status-cancelled: 0 0% 53%;
    /* ... */
  }

  .dark {
    --background: 222.2 47.4% 11.2%;
    --foreground: 210 40% 98%;
    /* ダーク版の値 ... */
  }
}

8.3 コンポーネントファイル構成

web/
├── app/
│   ├── globals.css          # CSS Variables + Tailwind
│   ├── layout.tsx           # RootLayout (font, theme provider)
│   ├── (dash)/
│   │   ├── layout.tsx       # DashShell (sidebar + main)
│   │   ├── page.tsx         # パイプライン一覧 (/)
│   │   ├── pipeline/
│   │   │   └── [id]/
│   │   │       └── page.tsx # パイプライン詳細
│   │   ├── settings/
│   │   │   └── page.tsx     # 設定
│   │   ├── integrations/
│   │   │   └── page.tsx     # 外部連携
│   │   └── audit/
│   │       └── page.tsx     # 監査ログ
│   └── login/
│       └── page.tsx         # ログイン
├── components/
│   ├── ui/                  # shadcn/ui コンポーネント
│   ├── dash-shell.tsx       # サイドバーレイアウト
│   ├── status-badge.tsx     # ステータスバッジ
│   ├── pipeline-table.tsx   # パイプラインテーブル
│   ├── timeline-view.tsx    # タイムラインビュー
│   ├── integration-card.tsx # 接続カード
│   └── theme-toggle.tsx     # テーマ切替
└── lib/
    ├── db.ts                # SQLite 接続
    └── utils.ts             # ユーティリティ

変更履歴

日付 バージョン 変更内容
2026-04-18 v1.0 初版作成
2026-04-18 v1.1 D-6 絵文字使用禁止を追加、ダッシュボード画面を削除、CSV エクスポート削除