@lism-css/mcp 0.23.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.ja.md +15 -15
  2. package/README.md +5 -5
  3. package/dist/data/docs-index.json +185 -159
  4. package/dist/data/guides/SKILL.md +164 -228
  5. package/dist/data/guides/antipatterns-layout.md +271 -0
  6. package/dist/data/guides/antipatterns.md +121 -196
  7. package/dist/data/guides/base-styles.md +10 -9
  8. package/dist/data/guides/components-core.md +27 -9
  9. package/dist/data/guides/components-ui.md +30 -51
  10. package/dist/data/guides/css-rules.md +104 -107
  11. package/dist/data/guides/customize.md +10 -7
  12. package/dist/data/guides/naming.md +22 -41
  13. package/dist/data/guides/primitive-class.md +5 -5
  14. package/dist/data/guides/primitives/a--decorator.md +2 -28
  15. package/dist/data/guides/primitives/a--divider.md +1 -52
  16. package/dist/data/guides/primitives/a--icon.md +2 -76
  17. package/dist/data/guides/primitives/a--spacer.md +1 -49
  18. package/dist/data/guides/primitives/l--autoColumns.md +7 -54
  19. package/dist/data/guides/primitives/l--box.md +1 -21
  20. package/dist/data/guides/primitives/l--center.md +6 -39
  21. package/dist/data/guides/primitives/l--cluster.md +6 -26
  22. package/dist/data/guides/primitives/l--columns.md +7 -56
  23. package/dist/data/guides/primitives/l--flex.md +5 -62
  24. package/dist/data/guides/primitives/l--flow.md +11 -72
  25. package/dist/data/guides/primitives/l--frame.md +7 -78
  26. package/dist/data/guides/primitives/l--grid.md +5 -56
  27. package/dist/data/guides/primitives/l--stack.md +5 -44
  28. package/dist/data/guides/primitives/l--switchColumns.md +8 -53
  29. package/dist/data/guides/primitives/l--tileGrid.md +7 -44
  30. package/dist/data/guides/primitives/l--withSide.md +9 -79
  31. package/dist/data/guides/property-class/all-props.md +246 -0
  32. package/dist/data/guides/property-class/bd.md +6 -71
  33. package/dist/data/guides/property-class/hov.md +14 -73
  34. package/dist/data/guides/property-class/max-sz.md +3 -39
  35. package/dist/data/guides/property-class.md +33 -250
  36. package/dist/data/guides/references/authoring.md +246 -0
  37. package/dist/data/guides/references/page-sections.md +99 -0
  38. package/dist/data/guides/references/verification.md +75 -0
  39. package/dist/data/guides/responsive.md +44 -15
  40. package/dist/data/guides/set-class.md +2 -12
  41. package/dist/data/guides/tokens.md +20 -16
  42. package/dist/data/guides/trait-class/has--gutter.md +3 -31
  43. package/dist/data/guides/trait-class/has--mask.md +3 -36
  44. package/dist/data/guides/trait-class/has--snap.md +3 -34
  45. package/dist/data/guides/trait-class/has--transition.md +3 -41
  46. package/dist/data/guides/trait-class/is--boxLink.md +2 -63
  47. package/dist/data/guides/trait-class/is--container.md +2 -29
  48. package/dist/data/guides/trait-class/is--layer.md +1 -57
  49. package/dist/data/guides/trait-class/is--wrapper.md +3 -56
  50. package/dist/data/guides/trait-class.md +8 -8
  51. package/dist/data/guides/utility-class.md +1 -1
  52. package/dist/data/meta.js +4 -3
  53. package/dist/index.js +4 -1
  54. package/dist/lib/load-markdown.d.ts +4 -0
  55. package/dist/lib/load-markdown.js +10 -0
  56. package/dist/lib/response.d.ts +5 -0
  57. package/dist/lib/response.js +15 -2
  58. package/dist/lib/schemas.d.ts +35 -0
  59. package/dist/lib/schemas.js +13 -0
  60. package/dist/lib/search.d.ts +2 -0
  61. package/dist/lib/search.js +56 -4
  62. package/dist/lib/types.d.ts +5 -21
  63. package/dist/lib/version.d.ts +2 -0
  64. package/dist/lib/version.js +8 -0
  65. package/dist/tools/convert-css.js +37 -14
  66. package/dist/tools/get-component.js +2 -2
  67. package/dist/tools/get-guide.d.ts +2 -0
  68. package/dist/tools/get-guide.js +41 -18
  69. package/dist/tools/get-overview.js +2 -2
  70. package/dist/tools/get-props-system.js +8 -6
  71. package/dist/tools/get-tokens.js +2 -2
  72. package/dist/tools/search-docs.js +13 -7
  73. package/package.json +21 -6
@@ -1,285 +1,221 @@
1
1
  ---
2
2
  name: lism-css-guide
3
- description: "Lism CSS の設計・実装に関するガイド。CSSの編集・追加、UIコンポーネントやレイアウトの実装・編集時に参照。c--*, l--*, a--*, is--*, has--*, set--*, u--* -prop:value 形式のクラス・トークン(CSS変数)・命名規則・Layer規則・レスポンシブ対応について調べる時にも参照。"
3
+ description: 'Lism CSSでUIやページを実装・修正する時に使う実装ガイド。Primitive選定・トークン照合・Property Class/Lism Props活用・レスポンシブ設計・アンチパターンセルフチェックを行う。b--*, c--*, l--*, a--*, is--*, has--*, set--*, u--*, -prop:value形式のクラスやトークンの逆引きにも使う。'
4
4
  ---
5
5
 
6
- # Lism CSS Best Practices
6
+ # Lism CSS 実装ガイド
7
7
 
8
- このスキルは、「Lism CSS」によるCSS設計理論の全体像と、実装時のベストプラクティスに関するガイドを提供します。
9
-
10
- 調和と統一感を生み出すデザイントークン設計、`@layer`で管理されるプリミティブ設計、CSS変数を活かした柔軟でレスポンシブなユーティリティ設計が特徴です。
11
-
12
- > **バージョン情報:** このガイドは `lism-css@0.23.0` / `@lism-css/ui@0.23.0` 時点の情報に基づいています。プロジェクトで使用中のバージョンを確認し、このガイドのバージョンと異なる場合はユーザーに通知してください。
8
+ Lism CSSでUI・ページ・コンポーネントを実装する時の判断の起点です。単なるリファレンスではなく、まず変更規模から「事前チェック実行レベル」を判定し、そのレベルに応じて**実装前チェック→実装→提出前セルフチェック**を通すことで、Primitive・トークン・Property Class・レスポンシブ設計の取りこぼしを防ぎます。
13
9
 
14
10
  公式ドキュメント: https://lism-css.com/docs/overview.md
15
11
 
12
+ > **バージョン情報:** このガイドは`lism-css@0.26.0`/`@lism-css/ui@0.26.0`時点の情報に基づきます。プロジェクトで使用中のバージョンが異なる場合は、ユーザーにその旨を伝え、パッケージ側の更新・またはこのスキルの更新を案内してください。
16
13
 
17
- ## インストール
18
-
19
- ### CDNでCSSファイルのみ読み込む場合
20
-
21
- ```html
22
- <link href="https://cdn.jsdelivr.net/npm/lism-css@0/dist/css/main.css" rel="stylesheet" />
23
- ```
24
-
25
- ### npm パッケージ
26
-
27
- - `lism-css` — コアパッケージ。Lism CSS本体となるCSSファイル、レイアウトプリミティブ、デザイントークン、Property Class、React/Astroコンポーネントを提供。
28
- - `@lism-css/plugin` — Vite / Astro / Next.js 統合、動的CSSビルド、CSS purge、`lism-css build` CLIを提供。
29
- - `@lism-css/ui` — `lism-css` を使って構築された UI コンポーネントライブラリ。Accordion, Modal, Tabs, Button, Badge, Callout 等を React/Astro で提供。
30
-
31
- ### CSS 読み込み
32
-
33
- ```js
34
- import 'lism-css/main.css';
35
- ```
36
-
37
- ### コンポーネント読み込み例
38
-
39
- ```jsx
40
- // React
41
- import { Flex, Stack, Grid, Columns } from 'lism-css/react';
42
- import { Accordion } from '@lism-css/ui/react/Accordion';
43
- import { Tabs } from '@lism-css/ui/react/Tabs';
44
- import { Button } from '@lism-css/ui/react/Button';
45
-
46
- // Astro
47
- import { Flex, Stack, Grid, Columns } from 'lism-css/astro';
48
- import { Accordion } from '@lism-css/ui/astro/Accordion';
49
- import { Tabs } from '@lism-css/ui/astro/Tabs';
50
- import { Button } from '@lism-css/ui/astro/Button';
51
- ```
52
-
53
- ### CSS Purge(未使用CSSの削除)
54
-
55
- 本番ビルド時に未使用の Lism CSS クラスを取り除いて出力 CSS を軽量化できます。`@lism-css/plugin/vite` / `@lism-css/plugin/astro` の統合プラグインを使っている場合は、各エントリの `lismCss({ purge: true })` で有効化するのが簡単です。統合プラグインを使わない場合は単体プラグイン `@lism-css/plugin/purge/vite`(Vite)/ `@lism-css/plugin/purge/astro`(Astro)も利用できます。詳細は https://lism-css.com/docs/customize/purge/ を参照。
56
-
57
-
58
- ## 実装ルール
59
-
60
- ### コードを書く前に必ず参照
61
-
62
- レイアウト選択ミスや典型的な記法ミスを避けるため、コード生成の前に以下を確認すること:
63
-
64
- - **どの Primitive を使うか迷ったら** → [primitive-class.md の「カラムレイアウト Primitive の使い分けガイド」](./primitive-class.md#カラムレイアウト-primitive-の使い分けガイド) — 比較表と用途別の選び方で判断材料を提供
65
- - **コードを書く前のチェック** → [antipatterns.md](./antipatterns.md) — Token typo / px 直書き / Prop 型ミス / レイアウト選択ミス / レスポンシブ抜けの NG → OK カタログ
66
-
67
- ### プリフライト・プリミティブ選定(必須)
68
-
69
- 実装対象の UI 構造を見て、**まずどのプリミティブ/コンポーネントを使うかを決めること**。ここを飛ばすと `<div>` + Property Class でゴリ押すコードになり、レイアウトの一貫性が失われる。
70
-
71
- 検討順:
72
-
73
- 1. **レイアウトプリミティブ** — `Stack` / `Flex` / `Cluster` / `Grid` / `Columns` / `WithSide` / `Center` / `Frame` / `Flow` / `TileGrid` / `AutoColumns` / `SwitchColumns` / `Box` のいずれかで構造を組めないか?
74
- 2. **Trait クラス** — `Container`(`is--container`) / `Wrapper`(`is--wrapper`) / `Layer`(`is--layer`) / `BoxLink`(`is--boxLink`) で表現すべき役割が無いか?
75
- 3. **Atomic プリミティブ** — `Icon` / `Divider` / `Spacer` / `Decorator` で置き換えられる装飾要素が無いか?
76
- 4. **UI コンポーネント** — `@lism-css/ui` の `Accordion` / `Modal` / `Tabs` / `Button` / `Badge` / `Callout` 等で済む UI が無いか?
77
-
78
- 判断に迷う場合:
14
+ ## 実装フロー(厳守)
79
15
 
80
- - カラム系の使い分け → [primitive-class.md の使い分けガイド](./primitive-class.md#カラムレイアウト-primitive-の使い分けガイド)
81
- - 典型的な選択ミス → [antipatterns.md のレイアウト選択ミス](./antipatterns.md#レイアウト選択ミス)
16
+ 資料確認は、コード上の操作の直前に行う。どの操作の手前で何を読むかは「資料確認トリガー」に従う。
82
17
 
83
- ### プリフライト・トークン照合(必須)
18
+ 0. **実行レベル判定**: 変更規模から「事前チェック実行レベル」(不要/軽量/通常/値照合付き)を判定する。判定に迷う場合は一つ上のレベルを選ぶ。「不要」の場合、手順6(実装)以外の手順1〜5・7は行わない(`.lism/`へのファイル作成もしない)。「軽量」の場合、手順7はチャット内の数行の確認に簡略化し、`.lism/review.md`は作らない。
19
+ 1. **初期確認**: SKILL.mdだけで実装しない。実装対象に明らかに関係する最小限の詳細ファイルだけを先に開き、実装プランに「初期確認した資料」を列挙する。リンク表を眺めただけは確認済みにしない。
20
+ 2. 目的別実装ガイドでPrimitive/コンポーネントの候補を選定する。
21
+ 3. 実装前チェック(C0–C8)を行い、初期確認した資料、使うPrimitive、コンポーネント、トークン、レスポンシブ方針を列挙した**実装プラン**を出す。未読のまま採用できない判断は🔁を付け、対応する「読む資料」を実装プランの判断行に紐づける。値照合付きレベルでは、実装プランをチャットの返答としてではなく`.lism/plan.md`として保存する(規約は[`references/verification.md`](./references/verification.md))。
22
+ 4. 「資料確認トリガー」に従い、各操作をコードに書く手前で対応資料を読み、🔁を✅または⏸へ解消する。
23
+ 5. ⏸が残る項目(px丸め・任意色・挙動変更・公開クラス変更など)は、その部分を実装する前にユーザー確認する。確認が取れない場合の運用は「判定記号」の⏸の項に従う。
24
+ 6. 実装する。
25
+ 7. 提出前セルフチェックで実装プランと実装を照合し、🔁の未解消・資料確認ログとの対応・差分・漏れを処理する。照合の実行はできる限り実装した本人から分離する(「提出前セルフチェック」の検証の分離を参照)。
84
26
 
85
- コードを書き始める前に、**これから使う予定の数値・キー名・カラー名をすべて列挙し、[tokens.md](./tokens.md) の値リストと照合すること**。照合が済むまでコードを書かない。
27
+ C0–C8の詳細と出力形式は[`references/authoring.md`](./references/authoring.md)にまとめています。
86
28
 
87
- 頻出ミス(spacing 中間値・角丸/影の数値外し・fz の他FW混入・存在しないカラー名・`--keycolor` 誤用 など)の NG → OK 例は [antipatterns.md](./antipatterns.md) を参照。
29
+ ## 判定記号
88
30
 
89
- 照合中に「該当トークンが無い/揺れる」値が見つかった場合は、そのまま実装に進まず [デザインデータ取り込み時のフロー](#デザインデータ取り込み時のフロー) に従ってユーザー確認すること。
31
+ 実装プラン(実装前チェックの成果物)の各行に付ける記号です。
90
32
 
91
- ### プリフライト・c-- 定義時の分解(必須)
33
+ | 記号 | 意味 |
34
+ | --- | --- |
35
+ | ✅ | 確定。新規定義(コンポーネント/トークン/クラスなど)や合意済みの直書き例外は、行内に注記する(例: `✅新規`、`✅例外(1px罫線)`) |
36
+ | 🔁 | 資料確認トリガーに該当する未通過項目。対応操作をコードに書く手前で指定資料を読み、✅または⏸へ解消する。🔁のまま実装しない |
37
+ | ⏸ | 要ユーザー確認。確認まで実装しない |
92
38
 
93
- `c--*` を新規に定義する/既存に追記する前に、書こうとしている各 CSS 宣言を以下の 2 グループに分解する:
39
+ 判定記号と注記はここに挙げたものだけを使います(記号は✅/🔁/⏸、✅への注記は`✅新規`・`✅例外`・`✅前提`のみ)。注記を組み合わせたり(例: `✅例外/前提`)、新しい記号・注記を作ったりしてはいけません。該当する行は未通過(🔁相当)として扱います。
94
40
 
95
- 1. **Property Class / Props で書ける宣言** — マークアップ側に `-{prop}:{value}` または Lism Props として移す。CSS に書かない。
96
- 2. **CSS でしか書けない宣言** — 擬似クラス・擬似要素・状態切替・子孫セレクタなど。これらは `.c--*` の CSS に残す。
41
+ 直書き例外を`✅例外`にできるのは、`antipatterns.md`の「直書きしてよい例外」(1px罫線・transform微調整・@media閾値など)に該当する場合だけです。`✅例外`の行には、この許可リストのどの項目に該当するかの引用を必ず添えます。引用を書けない場合、その行は⏸です。それ以外の例外化・丸め・新規トークンは⏸にします。この許可リストに例外カテゴリを自作して追加してはいけません。「正確に再現して」等のユーザー指示や実測値であることは`✅例外`の根拠になりません。デザイン値の既定の扱いは[`references/authoring.md`](./references/authoring.md)の「デザインデータ取り込みフロー」(入力種別と既定動作)に従います。
97
42
 
98
- **CSS 1 行も残らなくても、`c--*` クラス名はマークアップに付けたまま残してよい。**
99
- むしろコンポーネントとしての意味づけがソースから読み取れるので、空の `c--*` クラスは付けておくことを推奨する(CSS ファイル側にセレクタを書く必要は無い)。
43
+ ⏸のユーザー確認が取れない状況(自律実行など)では、原則準拠側の選択肢(すり合わせ済みの方針があればそれ、無ければ入力種別ごとの既定動作。例: 最寄りトークンへの丸め)を選び、該当行を選んだ選択肢の注記付きの`✅前提`(例: `✅前提(p="30"へ丸め)`)へ更新して前提を実装プランに明示した上で進め、完了報告で論点と代替案を列挙します。⏸のまま実装しない点は通常時と同じです。px直書き・例外カテゴリの新設・公開クラス変更・破壊的変更など逸脱側の選択肢は、この方式では採用できず⏸のままにします。
100
44
 
101
- 例:
45
+ > `lism-css-refactor`スキルは同じ記号を別の意味(✅=触らない、⬜=意図的に残す等)で使います。リファクタ時はrefactor側の定義に従い、どちらの意味で使っているかを表の見出しなどで明示してください。
102
46
 
103
- NG(全部 CSS に書く)
47
+ ## 実装プランのC一覧(実装前チェック項目)
104
48
 
105
- ```css
106
- .c--tag {
107
- font-size: var(--fz--xs);
108
- padding: var(--s10);
109
- background-color: var(--base-2);
110
- border-radius: var(--bdrs--10);
111
- }
112
- ```
49
+ このガイドでは、実装前に確認する項目を`C0`〜`C8`の番号で表します。`C`はCheck(確認)の略で、短く参照するためのラベルです。
113
50
 
114
- OK(Property Class でマークアップに移し、`c--tag` は意味づけとして残す)
51
+ | C | 見ること | 主な参照先 |
52
+ | --- | --- | --- |
53
+ | C0 | 入力整理:対象/粒度/フレームワーク/既存制約/不明点 | 既存コード・要件 |
54
+ | C1 | 構造・セマンティクス選定 | `primitive-class.md`、`components-core.md` |
55
+ | C2 | 再利用・コンポーネント境界 | `components-core.md`、`components-ui.md` |
56
+ | C3 | 命名設計 | `naming.md`、`css-rules.md` |
57
+ | C4 | 状態・バリエーション設計 | `trait-class.md`、`antipatterns-layout.md` |
58
+ | C5 | 値・トークン照合 | `tokens.md`、`property-class.md` |
59
+ | C6 | レスポンシブ方針 | `responsive.md`、`is--container.md` |
60
+ | C7 | CSSに書くもの/Propsに移すもの | `property-class.md`、`css-rules.md` |
61
+ | C8 | 既定値の確認 | `primitives/l--*.md` |
115
62
 
116
- ```html
117
- <span class="c--tag -fz:xs -p:10 -bgc:base-2 -bdrs:10">React</span>
118
- ```
63
+ ## 事前チェック実行レベル
119
64
 
120
- `.c--tag` CSS には、`:hover` 等の擬似クラスや、Modifier(`.c--tag--solid`)・状態切替(`[data-is-active]` 等)の宣言が出てきた時にだけ書く。そういう宣言が無ければ CSS は空のままで OK(クラス名はマークアップに残す)。
65
+ | レベル | 条件 | 確認するC | 出力 | 提出前セルフチェック |
66
+ | --- | --- | --- | --- | --- |
67
+ | 不要 | 説明のみ/コード変更なし/既存の書き方に沿った微修正 | — | — | 行わない |
68
+ | 軽量 | 数行の小変更・既存パターン内の変更 | C1・C5中心 | 3〜5行の箇条書き | チャット内で数行。`.lism/review.md`は作らない |
69
+ | 通常 | 新規UI/コンポーネント/セクション | 必須=初期確認した資料、C0、C1、C5、C6。該当時だけC2/C3/C4/C7/C8 | 項目別の表 | 実施し、`.lism/review.md`へ保存 |
70
+ | 値照合付き | Figma/スクショ等のデザイン再現 | 通常+C5/C7を詳しく確認 | 項目別の表+トークン差分表(差分列必須)。`.lism/plan.md`へ保存 | 実施し、`.lism/review.md`へ保存 |
121
71
 
122
- > **注意**: `is--*` は「〜である(役割・存在の宣言)」を表す trait 用プレフィックス。ユーザー定義の `is--*` を追加することは可能だが、**状態管理(`is--active` 等)やスタイルバリエーション(`is--solid` 等)への流用は誤用**。状態は `data-*` 属性、バリエーションは BEM Modifier(`c--{name}--{variant}`)で表現する。詳細: [antipatterns.md の `is--` の誤用](./antipatterns.md#is---の誤用状態バリエーション)
72
+ 通常レベルでも該当しないCは省略して構いません。表を形だけ埋めず、実装に影響する項目だけ列挙してください。
123
73
 
124
- 詳細な NG → OK 例は [antipatterns.md の「Property Class で書けるのに CSS で書く」](./antipatterns.md#property-class-で書けるのに-css-で書く) を参照。
74
+ ## 資料確認トリガー
125
75
 
126
- ### 基本方針: できる限りLism CSSの用意しているクラス・CSS変数・コンポーネントを使って書く
76
+ 次の表の左の操作をコードに書く手前で、右の資料をまだ読んでいない場合、その判断は🔁(未通過)にする。対応資料を読んで✅へ解消するか、判断できなければ⏸にする。**🔁のままコードへ反映してはいけません。**
127
77
 
128
- プリフライトでプリミティブとトークンを決めたら、細部を以下のチェックリストで検討する:
78
+ | この操作をする手前で | この資料を読む |
79
+ | --- | --- |
80
+ | まだ読んでいないPrimitiveを使う | 該当の`primitives/l--*.md` |
81
+ | まだ読んでいないTrait Classを使う | 該当の`trait-class/*.md`または`trait-class.md` |
82
+ | スタイル宣言をCSS(ファイル・`<style>`)に書く、またはProperty Class/Lism Propsへ移す | `property-class.md` |
83
+ | hover/focus等の状態スタイルを書く | `property-class/hov.md`(必要に応じて`trait-class/has--transition.md`) |
84
+ | トークン外の数値・色をコードに書く(丸める場合を含む。CSS/Props問わず) | `tokens.md`、`antipatterns.md`の「px / 固定値の直書き」節 |
85
+ | レスポンシブの切替を決める | `responsive.md` |
86
+ | 独自クラス(`b--*`/`c--*`)を新しく作る/名前を付ける | `naming.md`、`css-rules.md`の`独自クラスの選び方(2分類)`節 |
87
+ | `b--*`/`c--*`のCSSを書く | `css-rules.md`の`Block Class(b--)`/`Custom Class(c--)`節 |
88
+ | 状態・バリエーションを設計する | `trait-class.md` |
129
89
 
130
- - Lism の用意している `set--`系クラス、`u--`系クラスは使えないか?
131
- - Property Class (`-{prop}:{value}` or `<Lism prop="value">`))を使ってスタイリングできるか?
132
- - 値をレスポンシブに切り替える時は Lism の Property Class (`-{prop}_{bp}` or `<Lism prop={[...]}>`)を使って実装できるか?
133
- - カラー・余白・フォントサイズ・タイポグラフィ・行間(ハーフレディング)・サイズ・角丸・シャドウなどはトークン値を流用できないか?
134
- - その他、Lismが用意するCSS変数を活用できないか?
90
+ 「必要なら参照」などの曖昧な表現で代替しない。対象操作の直前に読む。
135
91
 
136
- ### ネイティブCSS で書くかどうか
92
+ ## 最小ゲート
137
93
 
138
- `c--*` クラスを定義する際、Primitive Class / Trait Class / Property Class / Lism Props で書ける宣言は CSS に直接書かない。
94
+ 次のルールを常に守る。迷う・例外にする・既存実装と衝突する場合は、該当資料を読んで🔁を✅または⏸へ解消する。
139
95
 
140
- CSS(`@layer lism-component` 等)に書くのは、以下のいずれかに該当する宣言のみ:
96
+ - 構造は`<div>`+素のCSSよりPrimitiveを優先する。候補は「目的別実装ガイド」の表から選ぶ。
97
+ - `c--*`/`b--*`命名はBlockをcamelCase、Elementを`_`ひとつ、Modifierを`--`ふたつにする。`c--feature-card`や`__`は使わない。
98
+ - 独自クラスは2分類(ベーススタイルを CSS 側で管理する共通基礎部品→`b--`/それ以外のカスタムクラス全般→`c--`)で命名する。
99
+ - 独自CSSは必ず`@layer lism-custom`内に置く(`b--`のベーススタイルだけ`@layer lism-block`)。
100
+ - トークン外のpx/rem/em値を勝手に丸めたり直書きしたりしない。丸め・新規トークン・直書き例外は⏸にする(`antipatterns.md`の「直書きしてよい例外」に該当する場合のみ`✅例外`にできる)。
101
+ - `c--*`のクラスでは、単一要素にだけ効く宣言はCSSに書かず、まずLism Props/Property Classで表せないか確認する。CSSに残すのは擬似要素・子孫セレクタ・状態切替などProperty Classで書けない宣言だけにする。`b--*`のベーススタイルは対象外で、トークンを使って`@layer lism-block`にCSSとして書いてよい(BP切替・hover・例外的な調整はProperty Class)。
102
+ - レスポンシブ値はbaseを必ず置く。container query運用なら必要な`isContainer`祖先を確認する。
103
+ - 状態は`data-*`/ARIA、見た目バリエーションはBlockと同じプレフィックスのModifier(`c--`なら`c--name--variant`、`b--`なら`b--name--variant`)で表す。`is--active`のようにTrait Classを状態名へ流用しない。
141
104
 
142
- - 擬似クラス・擬似要素(`:focus`, `::before`, `::after`, `:nth-child` 等)
143
- - 状態切替(data属性で管理する`[data-is-active]`等)で複数プロパティを切り替える場合
144
- - 自分でクラスを付けられない子孫要素のスタイル(MDX/markdown レンダリング配下の `h2` / `p` / `blockquote` 等)
145
- - その他、Lism の既存クラスで表現できないスタイル。(計算式・特殊なスタイル、アニメーションなど。)
105
+ ## 目的別実装ガイド
146
106
 
107
+ やりたいことからPrimitive/コンポーネントの候補を引く表です。候補が複数ある行は括弧内の基準で使い分けます。
147
108
 
148
- ### コンポーネント化のルール(CSS ではなくマークアップで束ねる)
109
+ | やりたいこと | 使う候補 | 詳細 |
110
+ | --- | --- | --- |
111
+ | 縦並び | `Stack`/`Flow` | `primitives/l--stack.md`、`primitives/l--flow.md` |
112
+ | 横並び | `Cluster`(折り返す)/`Flex`(細かく制御する) | `primitives/l--cluster.md`、`primitives/l--flex.md` |
113
+ | カラム | `Columns`(等幅N列)/`AutoColumns`(最小幅ベースの自動段組み)/`WithSide`(2カラム自動切替) | `primitive-class.md#カラムレイアウト-primitive-の使い分けガイド` |
114
+ | 幅制御 | `Container`(コンテナクエリ基準)/`Wrapper`(直下領域の幅制限)/`max-sz`(単体の幅) | `trait-class/is--container.md`、`trait-class/is--wrapper.md`、`property-class/max-sz.md` |
115
+ | 画像・動画・iframeを置く | `Frame`(アスペクト比枠・直下メディアのfit・overflowを任せる) | `primitives/l--frame.md` |
116
+ | ボタン | `@lism-css/ui`の`Button`。素の`<button>`を整えるならreset済みの`set--plain` | `components-ui.md`、`set-class.md` |
117
+ | hover効果 | `-hov:*`/`hov={{}}`/`set--hov`/`has--transition`(component CSSの`:hover`より先に検討) | `property-class/hov.md`、`trait-class/has--transition.md` |
118
+ | ボックス・カードの全体リンク | `BoxLink`/`is--boxLink`(クリック領域と重なり順を任せる) | `trait-class/is--boxLink.md` |
119
+ | 小さいUI部品 | `c--*`+Property Class(`c--*`は何のパーツかを示す名前に留め、単一要素の見た目はProperty Class/Lism Propsへ)。ベーススタイルを CSS 側で管理する共通部品なら`b--*` | `property-class.md`、`css-rules.md#custom-classc--`、`css-rules.md#block-classb--` |
120
+ | ページの定番セクション(ヒーロー・サイトヘッダー・フッター等) | `Group`+`Wrapper`/`Stack`/`Cluster`の定番構成 | `references/page-sections.md` |
149
121
 
150
- 同じ Property Class の組み合わせが 3 箇所以上で繰り返されるなら、**まず Astro/React コンポーネントとして切り出して Props で共通化** することを検討する。CSS の `c--*` を新設して中にスタイルを書くのはそれができない場合の手段とする。
122
+ ## 提出前セルフチェック
151
123
 
152
- - コンポーネントはできる限り `<Lism>` 系コアコンポーネントやレイアウトプリミティブ(`Stack`, `Flex`, `Columns` 等)をベースに構築する。
153
- - カスタムコンポーネントクラスは `c--{name}` の命名規則に従う(CSS が空でも意味づけとして付ける)。
124
+ **実行条件**: この節の照合と`.lism/review.md`の作成を行うのは、実行レベルが「通常」「値照合付き」の場合だけです。「不要」では行いません。「軽量」では、変更点に関係する最小ゲート項目だけをチャット内で数行確認し、ファイルは作りません。
154
125
 
126
+ **検証の分離(評価サブエージェント)**: サブエージェント/タスク委任機能が使える環境では、この節の照合を実装した本人ではなく読み取り専用の評価サブエージェントに委任します(指示テンプレ・報告書式・再評価ループは[`references/verification.md`](./references/verification.md))。評価報告は`.lism/review.md`へ保存し、違反ゼロの報告が出るまで修正→再評価を繰り返してから提出します。完了報告では`.lism/review.md`を参照します。委任機能が使えない環境では、同じ照合を本人がこの節の順に自分で実行します。
155
127
 
156
- ### 間違いやすい例
128
+ まず実装プランと実装を1行ずつ照合し、差分を「計画変更(意図的)/実装漏れ(直す)/要確認(再び確認が必要)」に分類します。その後、以下を確認します。
157
129
 
158
- | NG | OK | 理由 |
159
- |----|-----|------|
160
- | `<Heading level={3}>` | `<Heading level="3">` | `level` は文字列型(`'1'`〜`'6'`) |
161
- | `hov="shadow"` | `hov="-bxsh"` | Lism の省略名は `bxsh`(box-shadow) |
162
- | `bgc="secondary"` | `bgc="base-2"` | カラートークンの間違い |
163
- | `p="8"`, `g="6"` | `p="20"`, `g="10"` | スペーストークンの間違い |
130
+ **プロセス照合**
164
131
 
165
- その他の典型的な NG パターンは [antipatterns.md](./antipatterns.md) にカタログ化されているので、コード生成前に確認すること。
132
+ - 実装プラン内の🔁が、提出前に✅または⏸へ解消されているか。🔁のままコードに反映した判断がないか。
133
+ - 資料確認ログの各行が、実装プラン内の判断項目と対応しているか。未読のまま採用したPrimitive/トークン/命名/レスポンシブ判断がないか。
166
134
 
167
- #### NG: レスポンシブの考慮漏れ・Gridの直書き
135
+ **ルール照合**
168
136
 
169
- 渡されたPCサイズのデザインだけをみて、カラムレイアウトを`<Grid gtc="repeat(3, 1fr)>`のように固定してしまわないようにすること。
170
- 特に指示がなければ、レスポンシブを意識して実装する。`<Columns>`(`l--columns`)を使ってブレイクポイントで切り替えるか、`l--withSide`や`l--autoColumns`で自動レスポンシブを採用することを検討する。
137
+ - 「最小ゲート」の各項目に違反していないか。
138
+ - [`antipatterns.md`](./antipatterns.md)と[`antipatterns-layout.md`](./antipatterns-layout.md)のTOCを開き、実装コードに該当しうる項目を1つずつ照合する。リンク表を眺めただけは確認済みにしない。
171
139
 
172
- また、Lism CSSではコンテナクエリを採用しているため、レスポンシブの値切り替えには先祖要素で `isContainer`(`is--container`クラス) が必要なことに注意。
140
+ **プラン再審査**
173
141
 
174
- #### NG: コンテンツ幅のハードコーディング
142
+ 実装プランの判定自体を再審査します。プラン段階で✅にした逸脱は実装との差分照合では検出できない(差分ゼロ=合格になってしまう)ため、差分照合とは別に行います。
175
143
 
176
- ページ全体のデザインデータを渡された時、サイト幅やセクションエリアのサイズをpxでハードコーディングする前に、`--sz--`トークンを活用できないかをまずは考えてください。
177
- `<Lism as="section" max-sz="m"`>(`-max-sz:m`クラス) などの指定でコンテンツ幅を管理することができます。
144
+ - `✅例外`を含む✅判定を、最小ゲート・`antipatterns.md`の「直書きしてよい例外」・すり合わせ済みの値マッピング方針に再照合する。許可リスト外の`✅例外`は⏸へ戻す。
145
+ - 値照合付きレベルでは、`.lism/plan.md`にトークン差分表(差分列付き)が存在するか確認する。無ければその実装プランは無効。差分表を作成して照合をやり直す。スケール前提(画像の書き出し倍率等)が実測・整合チェックで検証済みかどうかも確認する(未検証なら差分表全体が無効)。
146
+ - 実行レベル判定が妥当だったかを見直す(デザイン再現なのに「値照合付き」へ上げず、トークン差分表を回避していないか)。
178
147
 
179
- ### デザインデータ取り込み時のフロー
180
-
181
- Figma 等のデザインデータから値を読み取って実装する場合、px / rem / em の固定値が含まれることが多い。**実装に着手する前に**以下の手順でユーザーに方針を確認すること。確認せずに px 直書きで進めない。
182
-
183
- #### 手順
184
-
185
- 1. **px / rem / em で書かれた値を抽出**(spacing / radius / size / fz / lh / lts / shadow など)
186
- 2. **対応するトークン候補と差分を表で提示**
187
-
188
- | デザイン値 | 最寄りトークン | 差分 |
189
- |---|---|---|
190
- | `padding: 12px` | `--s15`(≒12px) | 一致 |
191
- | `padding: 3px` | `--s5`(≒4px) | +1px |
192
- | `border-radius: 6px` | `--bdrs--10`(4px)/`--bdrs--20`(8px) | ±2px |
193
- | `font-size: 13px` | `--fz--xs`(mol/(mol+2)) | スケール基準でズレる |
194
-
195
- 3. **ユーザーに方針を確認**(候補は以下の3択)
196
-
197
- - **A. デザイン値を優先して px / rem / em で直書きする**
198
- - 一貫性より忠実度を優先するケース。デザイントークンの恩恵は失う。
199
- - **B. 最寄りトークンに丸める(推奨)**
200
- - 一貫性・スケーラビリティを優先。微差は許容する。
201
- - **C. トークン全体の基準値を上書きする**
202
- - デザインのスケールに合わせて、`--s-unit` / `--fz-mol` などの基準変数や、 `--s10`, `--fz--xl` , `--bdrs--10` などの**具体的な各トークン変数を `global.css` で再定義**することで、トークン全体をデザインデータに揃える。
203
- - 既存トークンの上書きで吸収できない場合に限り、`--s45` 等のカスタムトークンを追加する。
204
-
205
- 4. 確認結果に従って実装する。
206
-
207
- #### 確認不要な例外
208
-
209
- - 1px / -1px の罫線・視覚補正(border / margin の打ち消し)
210
- - transform / vertical-align 等の微調整値(数 px 単位)
211
- - ブラウザ仕様上 px 必須の値(`media query`、`@container` の `min-width` 等)
148
+ **個別確認(最小ゲート・antipatternsでカバーされない項目)**
212
149
 
150
+ - `@lism-css/ui`の既存コンポーネントで置き換えられないか。
151
+ - 同じProperty Classの組み合わせが3箇所以上ならコンポーネント化を検討したか。
152
+ - 既存の命名・レイヤー・ファイル配置に合っているか。
153
+ - デザイン再現(値照合付き)では、レンダリング結果の確認を完了報告の前提にする。環境的に確認できない場合は、完了報告にユーザーへの目視確認依頼を含める。HTTPステータスやビルド成功だけで完了扱いにしない。
213
154
 
214
155
  ## 詳細リファレンス
215
156
 
216
- このスキルには以下の詳細ファイルが含まれます。必要に応じて参照してください。
217
-
218
- - [tokens.md](./tokens.md) Lismで利用できるデザイントークンとCSS変数。(余白・フォントサイズ・タイポグラフィ・角丸・影・カラー・不透明度)
219
- - [css-rules.md](./css-rules.md) CSS設計の概要。(Layer構造・クラスの分類・プレフィックスのつけ方・Component クラス(`c--`)・カスタムCSSの追加ルール)
220
- - [naming.md](./naming.md) 命名規則の詳細。(CSS変数名・クラス名・Property Class `{prop}` / `{value}` の省略ルール)
221
- - [base-styles.md](./base-styles.md) HTML要素のベーススタイリング。(Reset CSSやHTML要素の基本スタイルをカスタマイズできるCSS変数)
222
- - [set-class.md](./set-class.md) ベーススタイル・変数セットに使用する`set--` クラスの一覧と用途。
223
- - [primitive-class.md](./primitive-class.md) レイアウトを組み立てる Primitive クラス(`l--`/`a--`)の一覧と用途。カラムレイアウト系の使い分けガイドも含む。
224
- - [antipatterns.md](./antipatterns.md) AI が生成しがちな NG パターンと OK 対応。Token typo / px 直書き / `--keycolor` 誤用 / Prop 型ミス / レイアウト選択ミス / レスポンシブ抜け。
225
- - [trait-class.md](./trait-class.md) 要素に役割・機能を宣言する Trait クラス(`is--`/`has--`)の一覧と用途。
226
- - [utility-class.md](./utility-class.md) 具体的な用途・装飾・機能を持つユーティリティクラス(`u--` クラス)の一覧と用途。
227
- - [property-class.md](./property-class.md) 単一のCSSプロパティに対応するProperty Class(`-{prop}:{value}`形式のクラス)の一覧・記法。
228
- - [responsive.md](./responsive.md) レスポンシブ対応(ブレークポイント・コンテナクエリ)の書き方・仕様。
229
- - [components-core.md](./components-core.md) `lism-css`パッケージに含まれるコアコンポーネントの一覧と用途。(React, Astroで使える`<Lism>`・Lism Props・getLismProps
230
- - [components-ui.md](./components-ui.md) `@lism-css/ui`パッケージに含まれるUIコンポーネント(Accordion・Modal・Tabs・Button 等)の Props・構造とCLIコマンドによるインストール方法。
231
- - [customize.md](./customize.md) SCSS変数の上書きによる、lism-cssのコアCSSの挙動カスタマイズ方法・`lism.config.js` によるコアコンポーネント挙動のカスタマイズ方法。
232
-
233
- これら各ファイルの冒頭にはTOC(目次)があり、セクションごとの詳細URL・ソースURLがまとめて記載されています。
234
-
235
- ### クラス単位の詳細リファレンス
236
-
157
+ 各ファイルの内容と、読むタイミングの目安です。
158
+
159
+ | ファイル | 内容 | こんな時に読む |
160
+ | --- | --- | --- |
161
+ | `primitive-class.md` | `l--`/`a--` Primitive一覧と使い分け | レイアウト選定(必要なら`primitives/l--*.md`も) |
162
+ | `trait-class.md` | `is--`/`has--` Trait一覧と役割 | 状態・バリエーション設計 |
163
+ | `property-class.md` | `-{prop}:{value}`形式のProperty Class | CSSをProperty Class/Propsへ移せるか |
164
+ | `utility-class.md` | `u--*`ユーティリティ | ユーティリティの確認 |
165
+ | `set-class.md` | `set--plain`/`set--hov`等のセットクラス | reset済みボタン等を使う |
166
+ | `tokens.md` | デザイントークンとCSS変数 | 余白・色・角丸・影・fzの照合 |
167
+ | `naming.md` | 命名規則とProperty Class省略ルール | 命名・prefix・Property Class表記 |
168
+ | `css-rules.md` | CSS設計・Layer構造・`b--*`/`c--*`・独自クラスの分類 | CSSレイヤー・`b--*`/`c--*`・カスタムCSS |
169
+ | `responsive.md` | BP・コンテナクエリ・レスポンシブProps | レスポンシブ・コンテナクエリ |
170
+ | `base-styles.md` | Reset CSSとHTML要素の基本スタイル | 素のHTML要素の既定を確認 |
171
+ | `components-core.md` | `lism-css`のReact/Astroコアコンポーネント | React/Astroコンポーネント |
172
+ | `components-ui.md` | `@lism-css/ui`のUIコンポーネント | UIコンポーネント置換 |
173
+ | `customize.md` | SCSS変数・`lism.config.js`によるカスタマイズ | トークン/設定をカスタマイズ |
174
+ | `antipatterns.md` | AIが生成しがちなNG→OK(値・スタイル宣言系) | 典型ミス確認 |
175
+ | `antipatterns-layout.md` | NG→OKの分冊(構造・レイアウト・レスポンシブ系) | 構造・レイアウトの典型ミス確認 |
176
+ | `references/authoring.md` | 実装プランの作り方(C0–C8詳細・出力フォーマット) | 実装プランを作る/書式を確認 |
177
+ | `references/verification.md` | `.lism/`規約・評価サブエージェントへの委任 | プラン保存・提出前チェックの委任 |
178
+ | `references/page-sections.md` | ヒーロー・ヘッダー・フッター等の定番構成例 | ページセクションの実装 |
179
+
180
+ ## クラス単位の詳細リファレンス
237
181
 
238
182
  **Layout Primitives**
239
183
 
240
- - `l--box` / `<Box>`: [primitives/l--box.md](./primitives/l--box.md)
241
- - `l--flex` / `<Flex>`: [primitives/l--flex.md](./primitives/l--flex.md)
242
- - `l--stack` / `<Stack>`: [primitives/l--stack.md](./primitives/l--stack.md)
243
- - `l--cluster` / `<Cluster>`: [primitives/l--cluster.md](./primitives/l--cluster.md)
244
- - `l--grid` / `<Grid>`: [primitives/l--grid.md](./primitives/l--grid.md)
245
- - `l--flow` / `<Flow>`: [primitives/l--flow.md](./primitives/l--flow.md)
246
- - `l--center` / `<Center>`: [primitives/l--center.md](./primitives/l--center.md)
247
- - `l--frame` / `<Frame>`: [primitives/l--frame.md](./primitives/l--frame.md)
248
- - `l--columns` / `<Columns>`: [primitives/l--columns.md](./primitives/l--columns.md)
249
- - `l--tileGrid` / `<TileGrid>`: [primitives/l--tileGrid.md](./primitives/l--tileGrid.md)
250
- - `l--autoColumns` / `<AutoColumns>`: [primitives/l--autoColumns.md](./primitives/l--autoColumns.md)
251
- - `l--switchColumns` / `<SwitchColumns>`: [primitives/l--switchColumns.md](./primitives/l--switchColumns.md)
252
- - `l--withSide` / `<WithSide>`: [primitives/l--withSide.md](./primitives/l--withSide.md)
253
-
254
- **Trait Class (is--)**
255
-
256
- - `is--container` / `<Container>`: [trait-class/is--container.md](./trait-class/is--container.md)
257
- - `is--wrapper` / `<Wrapper>`: [trait-class/is--wrapper.md](./trait-class/is--wrapper.md)
258
- - `is--layer` / `<Layer>`: [trait-class/is--layer.md](./trait-class/is--layer.md)
259
- - `is--boxLink` / `<BoxLink>`: [trait-class/is--boxLink.md](./trait-class/is--boxLink.md)
260
-
261
- **Trait Class (has--)**
262
-
263
- - `has--transition` (`hasTransition` prop): [trait-class/has--transition.md](./trait-class/has--transition.md)
264
- - `has--gutter` (`hasGutter` prop): [trait-class/has--gutter.md](./trait-class/has--gutter.md)
265
- - `has--snap` (`hasSnap` prop): [trait-class/has--snap.md](./trait-class/has--snap.md)
266
- - `has--mask` (`hasMask` prop): [trait-class/has--mask.md](./trait-class/has--mask.md)
267
-
268
- **Atomic Primitives**
269
-
270
- - `a--icon` / `<Icon>`: [primitives/a--icon.md](./primitives/a--icon.md)
271
- - `a--divider` / `<Divider>`: [primitives/a--divider.md](./primitives/a--divider.md)
272
- - `a--spacer` / `<Spacer>`: [primitives/a--spacer.md](./primitives/a--spacer.md)
273
- - `a--decorator` / `<Decorator>`: [primitives/a--decorator.md](./primitives/a--decorator.md)
274
-
275
- **Property Class(特殊仕様)**
276
-
277
- - `-bd` / `-bd-{side}` 系: [property-class/bd.md](./property-class/bd.md)
278
- - `-hov:*` 系: [property-class/hov.md](./property-class/hov.md)
279
- - `-max-sz:full` / `-max-sz:bleed`: [property-class/max-sz.md](./property-class/max-sz.md)
280
-
184
+ - `l--box`/`<Box>`: `primitives/l--box.md`
185
+ - `l--flex`/`<Flex>`: `primitives/l--flex.md`
186
+ - `l--stack`/`<Stack>`: `primitives/l--stack.md`
187
+ - `l--cluster`/`<Cluster>`: `primitives/l--cluster.md`
188
+ - `l--grid`/`<Grid>`: `primitives/l--grid.md`
189
+ - `l--flow`/`<Flow>`: `primitives/l--flow.md`
190
+ - `l--center`/`<Center>`: `primitives/l--center.md`
191
+ - `l--frame`/`<Frame>`: `primitives/l--frame.md`
192
+ - `l--columns`/`<Columns>`: `primitives/l--columns.md`
193
+ - `l--tileGrid`/`<TileGrid>`: `primitives/l--tileGrid.md`
194
+ - `l--autoColumns`/`<AutoColumns>`: `primitives/l--autoColumns.md`
195
+ - `l--switchColumns`/`<SwitchColumns>`: `primitives/l--switchColumns.md`
196
+ - `l--withSide`/`<WithSide>`: `primitives/l--withSide.md`
197
+
198
+ **Trait Class**
199
+
200
+ - `is--container`/`<Container>`: `trait-class/is--container.md`
201
+ - `is--wrapper`/`<Wrapper>`: `trait-class/is--wrapper.md`
202
+ - `is--layer`/`<Layer>`: `trait-class/is--layer.md`
203
+ - `is--boxLink`/`<BoxLink>`: `trait-class/is--boxLink.md`
204
+ - `has--transition`: `trait-class/has--transition.md`
205
+ - `has--gutter`: `trait-class/has--gutter.md`
206
+ - `has--snap`: `trait-class/has--snap.md`
207
+ - `has--mask`: `trait-class/has--mask.md`
208
+
209
+ **Atomic Primitives/Property Class**
210
+
211
+ - `a--icon`/`<Icon>`: `primitives/a--icon.md`
212
+ - `a--divider`/`<Divider>`: `primitives/a--divider.md`
213
+ - `a--spacer`/`<Spacer>`: `primitives/a--spacer.md`
214
+ - `a--decorator`/`<Decorator>`: `primitives/a--decorator.md`
215
+ - `-bd`/`-bd-{side}`系: `property-class/bd.md`
216
+ - `-hov:*`系: `property-class/hov.md`
217
+ - `-max-sz:full`/`-max-sz:bleed`: `property-class/max-sz.md`
281
218
 
282
219
  ## このスキルファイル自身のアップデート方法
283
220
 
284
- `skills add lism-css/lism-css` を再実行してください。
285
- 更新があるか確認したい場合は、[GitHub リポジトリ](https://github.com/lism-css/lism-css/tree/main/skills/lism-css-guide) を直接チェックしてください。
221
+ ユーザーがスキル更新を依頼した場合は、`lism-cli skill add`または`lism-cli skill update`を案内してください。最新を確認したい場合は、GitHubリポジトリの`skills/lism-css-guide`を確認してください。