ban-pattern — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ban-pattern (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
AI生成UIに頻出する「それっぽい」装飾パターンを特定し、DS全体の禁止ルールとして登録する。
ユーザーの説明(テキスト or スクリーンショット)から、禁止対象のパターンを特定する。
以下を明確にする:
border-l-4, bg-gradient-to-r)不明点があれば AskUserQuestion で確認する。推測で進めない。
以下を読み込む:
design/contracts/rules.json の rules[](SSOT。機械可読版。同じ pattern / 趣旨のルールが無いか)foundations/prohibited.md の「AI生成パターンの排除」セクション(人間向けミラー)既に同じ or 類似のルールが存在する場合は、ユーザーに報告して既存ルールの更新で対応するか確認する。
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_*、特定コンポーネントは <COMPONENT>_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 パターン):
{
"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 = 文脈判断が要るもの):
{
"id": "FORM_NO_PLACEHOLDER_AS_LABEL",
"category": "form",
"severity": "warn",
"description": "プレースホルダーのみでラベル省略は入力開始で消え目的がわからなくなる",
"detector": "manual",
"pattern": null,
"alternative": "<label> を必ず使用",
"contractLint": "skip"
}#### 3-2. 人間向けドキュメントと件数の整合
foundations/prohibited.md の該当セクション(AIパターンなら「## AI生成パターンの排除」、無ければ## コンポーネント の直前に同テンプレで新設)のテーブルに prose 行を追加する:
| 禁止パターン(具体的な Tailwind クラス) | 理由(なぜAI生成っぽいか) | 代替(DS準拠の実装) |detector が `manual` のルールは orphan 0 検証の対象なので、行末に <!-- RULE_ID -->(HTMLコメント・ レンダリング不可視・表非破壊)を必ず付け、drift-check が参照経路を見つけられるようにする。 auto 系(tailwind-*)は contract / lint で到達できるためコメントは任意。
DESIGN.md(全ルール(N 件))/ README.md(N 禁止ルール N ルール 複数箇所)/ AGENTS.md(N 禁止ルール N ルール)/ README.en.md(英語: N prohibition rules / N rules)。 どこが古いかは 3-4 の design:drift がファイル名・数値付きで指摘するので(英語入口の数値整合も検証する)、それに従って直す。
components/*.md の禁止事項にも追記する(任意)。#### 3-3. 生成ビューを再生成する
npm run design:build # llms.txt / llms-full.txt / metadata/components.json
npm run design:update-showcase # docs/index.html の数値
npm run design:coverage # README の検証カバレッジ表(manual を足すと manual 件数が動く)#### 3-4. 検証 — 「即 CI / MCP 反映」を自分で確認する
npm run design:drift # 件数 drift を全部指摘。NO DRIFT になるまで 3-2 を直す
npm run design:check # rules.json スキーマ + contract lint が PASSED であることnpm run design:lint-generated -- <file> で実際に発火することを確認すると「enforcement に乗った」証拠になる(任意・デモ向け)。
examples/ と docs/ 配下のHTMLファイルを Grep で走査し、禁止パターンに該当する実装が既にないか確認する。
該当がある場合:
該当がない場合:
以下のフォーマットで報告する:
## 禁止パターン登録完了
**ルール ID**: `[RULE_ID]`(rules.json に追加 → CI / MCP check_rule / hook で即 enforcement)
**パターン**: [禁止したパターンの説明]
**detector**: `[tailwind-class / -prefix / -segment / manual]`([自動検出 / 人手参照のみ])
**代替**: `[DS準拠の代替]`
### 更新ファイル
- design/contracts/rules.json — 機械可読ルールを追加(SSOT・enforcement の実体)
- foundations/prohibited.md — 人間向け解説に追加([manual の場合: <!-- RULE_ID --> 付き])
- DESIGN.md / README.md / AGENTS.md — ルール件数を N→N+1
- llms / docs/index.html / README カバレッジ表 — 再生成
### 検証
- npm run design:drift — NO DRIFT ✅
- npm run design:check — PASSED ✅
- [auto の場合: npm run design:lint-generated で発火確認]
### サンプル修正
- [修正した箇所のリスト or 「該当なし」]| 問題 | 対処 |
|---|---|
design/contracts/rules.json のスキーマ検証で落ちる | design:check のエラー文に従う。id は大文字スネーク、detector に応じた必須フィールド(tailwind-class→pattern / segment→matchPatterns / manual→pattern:null + contractLint:skip)を確認 |
design:drift が件数 mismatch を出す | 指摘されたファイル・数値の「N ルール」「全ルール(N 件)」を実数に直し、design:build / update-showcase / design:coverage を再実行 |
| manual ルールを足したら orphan 0 検証で落ちる | prohibited.md(または該当 foundations/patterns md)の行末に <!-- RULE_ID --> を付けて参照経路を作る |
| 禁止パターンの Tailwind クラスが特定できない | AskUserQuestion でスクリーンショットや具体例を求める。単一クラスでなく色名なら tailwind-class-segment、接頭辞バリアント群なら tailwind-class-prefix を検討 |
| 既存ルールと部分的に重複する | 既存ルールの拡張(pattern / matchPatterns の追加)で対応するか、新規ルールにするかをユーザーに確認する |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.