jpskill.com
📦 その他 コミュニティ

web-styling-scss-modules

SCSS Modules、cva、デザイン tokensといった技術を活用し、Webサイトのスタイルを効率的に管理・構築することで、より洗練されたデザインを実現するSkill。

📜 元の英語説明(参考)

SCSS Modules, cva, design tokens

🇯🇵 日本人クリエイター向け解説

一言でいうと

SCSS Modules、cva、デザイン tokensといった技術を活用し、Webサイトのスタイルを効率的に管理・構築することで、より洗練されたデザインを実現するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o web-styling-scss-modules.zip https://jpskill.com/download/10309.zip && unzip -o web-styling-scss-modules.zip && rm web-styling-scss-modules.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10309.zip -OutFile "$d\web-styling-scss-modules.zip"; Expand-Archive "$d\web-styling-scss-modules.zip" -DestinationPath $d -Force; ri "$d\web-styling-scss-modules.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して web-styling-scss-modules.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → web-styling-scss-modules フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

スタイリングとデザインシステム

クイックガイド: 2段階のトークンシステム(コアプリミティブ -> セマンティックトークン)。前景/背景色のペア。コンポーネントはセマンティックトークンのみを使用。SCSS Modules + CSS Cascade Layers。HSL形式。mixin を使用した .dark クラスによるダークモード。状態のためのデータ属性。自己完結型(外部依存関係なし)。


<critical_requirements>

重要: この Skill を使用する前に

すべてのコードは、CLAUDE.md のプロジェクト規約に従う必要があります (kebab-case、名前付きエクスポート、インポート順序、import type、名前付き定数)

(適切なカスケード優先順位のために、すべての UI パッケージコンポーネントのスタイルを @layer components {} でラップする必要があります)

(コンポーネントではセマンティックトークンのみを使用する必要があります - コアトークンを直接使用しないでください)

(CSS カラー関数には HSL 形式を使用する必要があります - darken/lighten のような Sass カラー関数は使用しないでください)

(状態のスタイリングにはデータ属性を使用する必要があります - className の切り替えは使用しないでください)

(インポートには @use を使用する必要があります - @import は非推奨であり、Dart Sass 3.0.0 で削除されます)

</critical_requirements>


自動検出: UI コンポーネント、スタイリングパターン、デザイントークン、SCSS modules、CSS Cascade Layers、ダークモードテーマ

使用する場面:

  • デザイントークンとテーマの実装
  • SCSS Modules を使用したコンポーネントスタイルの構築
  • アプリケーション全体での視覚的な一貫性の確保
  • 色、間隔、タイポグラフィの操作
  • クラスベースのテーマを使用したダークモードの実装
  • 予測可能なスタイルの優先順位のための CSS Cascade Layers の設定

カバーする主要なパターン:

  • 2段階のトークンシステム(コア -> セマンティック)
  • CSS Cascade Layers を使用した SCSS Module パターン
  • カラーシステム(HSL形式、セマンティックな命名、前景/背景のペア)
  • 間隔とタイポグラフィのシステム
  • ダークモードの実装(mixin パターンを使用した .dark クラス)
  • コンポーネントの構造と構成

使用しない場面:

  • デザインシステムのニーズがない、一度限りのプロトタイプ(インラインスタイルまたは基本的な CSS を使用)
  • 独自のテーマを持つ外部コンポーネントライブラリ(Material-UI、Chakra)
  • 包括的なユーティリティクラスを必要とするプロジェクト(代わりに Tailwind CSS を使用)

詳細なリソース:


<philosophy>

Philosophy

デザインシステムは、自己完結型の2段階トークンアーキテクチャに従います。ここでは、コアプリミティブ(生の HSL 値、基本サイズ)がセマンティックトークン(目的主導の名前)にマッピングされます。コンポーネントはセマンティックトークンのみを使用するため、コンポーネントを変更せずにテーマを変更できます。

コア原則:

  • 自己完結型: 外部依存関係なし(Open Props なし、トークン用の Tailwind なし)
  • 2段階システム: コアトークンは生の値を、セマンティックトークンは意味を提供
  • HSL-first: Sass カラー操作ではなく、最新の CSS カラー関数を使用
  • レイヤーベース: CSS Cascade Layers は、モノレポ全体で予測可能なスタイルの優先順位を確保
  • テーマに依存しないコンポーネント: コンポーネントはセマンティックトークンを使用し、ライト/ダークモードに自動的に適応

</philosophy>


<patterns>

コアパターン

パターン 1: 2段階トークンシステム

デザインシステムは、2段階のトークンアーキテクチャを使用します。Tier 1 (コアトークン) は生の値を、Tier 2 (セマンティックトークン) は目的主導の名前でコアトークンを参照します。

トークンアーキテクチャ

場所: packages/ui/src/styles/design-tokens.scss

Tier 1: コアトークン - 生の HSL 値、基本サイズ、プリミティブ

--color-white: 0 0% 100%;
--color-gray-900: 222 47% 11%;
--color-red-500: 0 84% 60%;
--space-unit: 0.2rem;

Tier 2: セマンティックトークン - 目的主導の名前でコアトークンを参照

--color-background-base: var(--color-white);
--color-text-default: var(--color-gray-500);
--color-primary: var(--color-gray-900);
--color-primary-foreground: var(--color-white);
--color-destructive: var(--color-red-500);

これが重要な理由: セマンティックトークンは目的を明確にし(トークンの目的)、テーマの変更はトークン値のみを更新し(コンポーネントコードは更新しない)、コンポーネントはテーマに依存しません。

完全な実装例については、examples/core.md を参照してください。


パターン 2: CSS カラー関数を使用した HSL カラー形式

トークンに hsl() ラッパーなしで HSL 値を格納し、トークンを使用するときに hsl() ラッパーを適用し、透明度とカラーミキシングには最新の CSS カラー関数を使用します。

カラー形式のルール

  • hsl() ラッパーなしで HSL 値を格納: --color-gray-900: 222 47% 11%;
  • 適用時に hsl() ラッパーを使用: background-color: hsl(var(--color-primary))
  • 派生色には CSS カラー関数を使用:
    • 透明度: hsl(var(--color-primary) / 0.5) (HSL コンポーネントにアルファを追加)
    • カラーミキシング: color-mix(in srgb, hsl(var(--color-primary)), white 10%)
    • チャネル操作: hsl(from hsl(var(--color-primary)) h s calc(l * 0.8)) (最初に origin を hsl() でラップ)
  • Sass カラー関数は絶対に使用しない: darken()lighten()transparentize() は使用しない
  • 常にセマンティックカラートークンを使用する(コンポーネントに生の HSL は使用しない)

HSL が重要な理由: HSL 形式は Sass 依存関係を排除し、CSS カラー関数はブラウザでネイティブに動作し、セマンティックな命名は目的を明確にし(単なる値ではない)、テーマの変更はコンポーネントに触れることなくトークン値を更新します。

完全な実装例については、examples/core.md を参照してください。


パターン 3: 予測可能な優先順位のための CSS Cascade Layers

CSS

(原文がここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Styling & Design System

Quick Guide: Two-tier token system (Core primitives -> Semantic tokens). Foreground/background color pairs. Components use semantic tokens only. SCSS Modules + CSS Cascade Layers. HSL format. Dark mode via .dark class with mixin. Data-attributes for state. Self-contained (no external dependencies).


<critical_requirements>

CRITICAL: Before Using This Skill

All code must follow project conventions in CLAUDE.md (kebab-case, named exports, import ordering, import type, named constants)

(You MUST wrap ALL UI package component styles in @layer components {} for proper cascade precedence)

(You MUST use semantic tokens ONLY in components - NEVER use core tokens directly)

(You MUST use HSL format for colors with CSS color functions - NO Sass color functions like darken/lighten)

(You MUST use data-attributes for state styling - NOT className toggling)

(You MUST use @use for imports - @import is deprecated and will be removed in Dart Sass 3.0.0)

</critical_requirements>


Auto-detection: UI components, styling patterns, design tokens, SCSS modules, CSS Cascade Layers, dark mode theming

When to use:

  • Implementing design tokens and theming
  • Building component styles with SCSS Modules
  • Ensuring visual consistency across applications
  • Working with colors, spacing, typography
  • Implementing dark mode with class-based theming
  • Setting up CSS Cascade Layers for predictable style precedence

Key patterns covered:

  • Two-tier token system (Core -> Semantic)
  • SCSS Module patterns with CSS Cascade Layers
  • Color system (HSL format, semantic naming, foreground/background pairs)
  • Spacing and typography systems
  • Dark mode implementation (.dark class with mixin pattern)
  • Component structure and organization

When NOT to use:

  • One-off prototypes without design system needs (use inline styles or basic CSS)
  • External component libraries with their own theming (Material-UI, Chakra)
  • Projects requiring comprehensive utility classes (use Tailwind CSS instead)

Detailed Resources:


<philosophy>

Philosophy

The design system follows a self-contained, two-tier token architecture where core primitives (raw HSL values, base sizes) map to semantic tokens (purpose-driven names). Components consume only semantic tokens, enabling theme changes without component modifications.

Core Principles:

  • Self-contained: No external dependencies (no Open Props, no Tailwind for tokens)
  • Two-tier system: Core tokens provide raw values, semantic tokens provide meaning
  • HSL-first: Use modern CSS color functions, not Sass color manipulation
  • Layer-based: CSS Cascade Layers ensure predictable style precedence across monorepo
  • Theme-agnostic components: Components use semantic tokens and adapt automatically to light/dark mode

</philosophy>


<patterns>

Core Patterns

Pattern 1: Two-Tier Token System

The design system uses a two-tier token architecture: Tier 1 (Core tokens) provides raw values, Tier 2 (Semantic tokens) references core tokens with purpose-driven names.

Token Architecture

Location: packages/ui/src/styles/design-tokens.scss

Tier 1: Core tokens - Raw HSL values, base sizes, primitives

--color-white: 0 0% 100%;
--color-gray-900: 222 47% 11%;
--color-red-500: 0 84% 60%;
--space-unit: 0.2rem;

Tier 2: Semantic tokens - Reference core tokens with purpose-driven names

--color-background-base: var(--color-white);
--color-text-default: var(--color-gray-500);
--color-primary: var(--color-gray-900);
--color-primary-foreground: var(--color-white);
--color-destructive: var(--color-red-500);

Why this matters: Semantic tokens make purpose clear (what the token is for), theme changes only update token values (not component code), components remain theme-agnostic.

For complete implementation examples, see examples/core.md.


Pattern 2: HSL Color Format with CSS Color Functions

Store HSL values without the hsl() wrapper in tokens, apply hsl() wrapper when using tokens, and use modern CSS color functions for transparency and color mixing.

Color Format Rules

  • Store HSL values without hsl() wrapper: --color-gray-900: 222 47% 11%;
  • Use hsl() wrapper when applying: background-color: hsl(var(--color-primary))
  • Use CSS color functions for derived colors:
    • Transparency: hsl(var(--color-primary) / 0.5) (append alpha to HSL components)
    • Color mixing: color-mix(in srgb, hsl(var(--color-primary)), white 10%)
    • Channel manipulation: hsl(from hsl(var(--color-primary)) h s calc(l * 0.8)) (wrap origin in hsl() first)
  • NEVER use Sass color functions: No darken(), lighten(), transparentize()
  • Always use semantic color tokens (not raw HSL in components)

Why HSL: HSL format eliminates Sass dependencies, CSS color functions work natively in browsers, semantic naming clarifies purpose (not just value), theme changes update token values without touching components.

For complete implementation examples, see examples/core.md.


Pattern 3: CSS Cascade Layers for Predictable Precedence

Use CSS Cascade Layers to control style precedence across the monorepo, ensuring UI package components have lower priority than app-specific overrides.

Layer Hierarchy (lowest -> highest priority)

  1. @layer reset - Browser resets and normalizations
  2. @layer components - Design system component styles (UI package)
  3. Unlayered styles - App-specific overrides (highest priority)

Key Rules

  • UI package components: Always wrap in @layer components {}
  • App-specific styles: Never wrap in layers (unlayered = highest priority)
  • Layer declaration: Import layers.scss first to declare layer order

Why layers: Wrapping in @layer components {} ensures app styles can override without specificity wars, loading order becomes irrelevant, predictable precedence across monorepo.

For complete implementation examples, see examples/core.md.


Pattern 4: Dark Mode with .dark Class and Mixin

Implement dark mode by adding .dark class to root element, which overrides semantic tokens. Use mixin pattern for organization.

Key Principles

  • Components remain theme-agnostic (no theme logic in component code)
  • Semantic tokens provide indirection between theme and components
  • Only override Tier 2 semantic tokens in .dark class, never Tier 1 core tokens
  • Theme switching is instant (just CSS variable changes)

For complete implementation examples, see examples/theming.md.


Additional Patterns

The following patterns are documented with full examples in the examples/ folder:

</patterns>


<red_flags>

RED FLAGS

For complete anti-patterns and red flags, see reference.md.

High Priority Issues:

  • Using core tokens directly in components (use semantic tokens)
  • Component styles not wrapped in @layer components {}
  • Using Sass color functions (darken(), lighten())
  • Hardcoded color/spacing values
  • Theme logic in components
  • Using @import instead of @use (deprecated in Dart Sass 1.80.0, removed in 3.0.0)
  • Using / for division instead of math.div() (deprecated)

</red_flags>


<critical_reminders>

CRITICAL REMINDERS

All code must follow project conventions in CLAUDE.md

(You MUST wrap ALL UI package component styles in @layer components {} for proper cascade precedence)

(You MUST use semantic tokens ONLY in components - NEVER use core tokens directly)

(You MUST use HSL format for colors with CSS color functions - NO Sass color functions like darken/lighten)

(You MUST use data-attributes for state styling - NOT className toggling)

(You MUST use @use for imports - @import is deprecated and will be removed in Dart Sass 3.0.0)

Failure to follow these rules will break theming, create cascade precedence issues, and violate design system conventions.

</critical_reminders>