--- name: ban-pattern description: "Register AI-generated-looking UI patterns as prohibited rules in the design system. Use when user says \"AIっぽい\", \"AI臭い\", \"これ禁止\", \"このパターンやめたい\", \"ban this pattern\", \"add to prohibited\", or points out a generic/cookie-cutter UI element." user-invocable: true --- AI生成UIに頻出する「それっぽい」装飾パターンを特定し、DS全体の禁止ルールとして登録する。 ## 手順 ### Step 1: パターンを特定する ユーザーの説明(テキスト or スクリーンショット)から、禁止対象のパターンを特定する。 以下を明確にする: - **何が問題か**: どの視覚要素がAI生成っぽいのか - **該当する Tailwind クラス / CSS**: 具体的な実装パターン(例: `border-l-4`, `bg-gradient-to-r`) - **代替パターン**: DS準拠の代わりの実装 不明点があれば AskUserQuestion で確認する。推測で進めない。 ### Step 2: 既存ルールと重複がないか確認する 以下を読み込む: - `design/contracts/rules.json` の `rules[]`(**SSOT。機械可読版**。同じ pattern / 趣旨のルールが無いか) - `foundations/prohibited.md` の「AI生成パターンの排除」セクション(人間向けミラー) 既に同じ or 類似のルールが存在する場合は、ユーザーに報告して既存ルールの更新で対応するか確認する。 ### Step 3: 禁止ルールを登録する **SSOT は `design/contracts/rules.json`**。CI / MCP `check_rule` / PostToolUse hook はすべて rules.json を参照する。ここに機械可読ルールを足して初めて「ban → 即 enforcement」が成立する。 prohibited.md は人間向けの解説ミラーであり、enforcement の実体ではない。順序厳守: #### 3-1. `design/contracts/rules.json` — 機械可読ルールを追加(最優先) `rules[]` 配列にルールオブジェクトを 1 件追加する。スキーマは `design/schemas/rule.schema.json`。 **detector の選び方**(これで自動検出されるか・人手参照に留まるかが決まる): | detector | いつ使う | 必須フィールド | 例 | |---|---|---|---| | `tailwind-class` | 単一の固定クラスを禁止 | `pattern`(クラス名) | `border-l-4`, `shadow-2xl` | | `tailwind-class-prefix` | 前方一致で複数バリアントを一網打尽 | `pattern`(接頭辞)。任意値回避経路があれば `prefixPatterns` も | `bg-gradient-` | | `tailwind-class-segment` | クラスを `-` 分割したセグメント一致(色名等) | `matchPatterns`(セグメント配列)、`pattern: null` | `purple`/`violet` | | `manual` | 静的検出が原理的に不能(文脈判断) | `pattern: null`、`contractLint: "skip"` | 「色だけで状態を伝達」 | **フィールド規約**: - `id`: 大文字スネーク(`^[A-Z][A-Z0-9_]+$`)。AI生成装飾は `AI_NO_*`、特定コンポーネントは `_NO_*` - `category`: `ai-pattern`(AI装飾)/ または該当カテゴリ(`color` `spacing` `form` 等、schema の enum 参照) - `severity`: `error`(明確なNG)/ `warn`(文脈次第・段階導入) - `alternative`: DS準拠の代替実装(必須・具体的に) - `contractLint`: `enforce`(自動検出可・contract も検査)/ `warn` / `skip`(manual・html-attr・文脈依存) **テンプレ(自動検出する典型の AI パターン)**: ```json { "id": "AI_NO_GLASS_BLUR", "category": "ai-pattern", "severity": "error", "description": "ガラスモーフィズム(backdrop-blur)はAI生成UIの典型tell。安っぽく散漫に見える", "detector": "tailwind-class-prefix", "pattern": "backdrop-blur", "alternative": "不透明な bg-white / bg-slate-50 + border border-slate-200 で面を作る", "contractLint": "enforce" } ``` **テンプレ(manual = 文脈判断が要るもの)**: ```json { "id": "FORM_NO_PLACEHOLDER_AS_LABEL", "category": "form", "severity": "warn", "description": "プレースホルダーのみでラベル省略は入力開始で消え目的がわからなくなる", "detector": "manual", "pattern": null, "alternative": "