Communitygithub.com

benjaminsehl/liquid-theme-standards

Shopify Liquidテーマ向けCSS、JavaScript、HTMLコーディング標準。BEM命名規則、デザイントークン、CSSカスタムプロパティ、Web Components、防御的CSS、プログレッシブエンハンスメントをカバー。.liquidファイルやテーマアセットファイルでCSS/JS/HTMLを記述する際に使用。

liquid-theme-standards とは?

このスキルは、Shopify Liquidテーマの開発におけるCSS、JavaScript、HTMLのコーディング標準を提供します。主な特徴として、スタイルシートタグ内でのBEM命名規則の適用、デザイントークンの管理、CSSカスタムプロパティの活用、テーマ向けWeb Componentsの実装、防御的CSSによる堅牢なスタイリング、そしてプログレッシブエンハンスメントの手法が含まれています。この標準に従うことで、テーマ開発者はコードの一貫性を保ち、保守性と拡張性を向上させることができます。Shopifyのテーマエコシステムに特化して設計されており、.liquidファイルやその他のテーマアセットファイルで作業する際に特に有用です。コード例や具体的なガイドラインを通じて、実践的なコーディングのベストプラクティスを提供します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/benjaminsehl/liquid-skills/tree/main/skills/liquid-theme-standards

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

プレビュー

スキル README より

liquid-theme-standards preview

ドキュメント

liquid-theme-standards は何をしますか?

Shopify Liquidテーマ向けCSS、JavaScript、およびHTMLコーディング標準。スタイルシートタグ内のBEM命名規則、デザイントークン、CSSカスタムプロパティ、テーマ向けWeb Components、防御的CSS、プログレッシブエンハンスメントをカバーします。.liquidファイルまたはテーマアセットファイルでCSS/JS/HTMLを記述する際に使用します。

目次

概要

このリポジトリは、Shopify Liquidテーマの開発における一貫性、保守性、およびパフォーマンスを向上させるためのコーディング標準を定義します。これらの標準は、単一のテーマでも、複数の開発者が関わる大規模プロジェクトでも適用できるように設計されています。

対象者

  • Shopifyテーマ開発者
  • フロントエンドエンジニア
  • デザインシステム構築者

CSS標準

BEM命名規則

スタイルシートタグ内ではBEM(Block Element Modifier)命名規則を使用してください。

.block {}
.block__element {}
.block--modifier {}

デザイントークン

デザイントークンにはCSSカスタムプロパティを使用します。すべてのトークンは:rootまたはtheme.liquid内で定義してください。

:root {
  --color-primary: #007bff;
  --spacing-unit: 8px;
  --font-size-base: 16px;
}

防御的CSS

防御的CSSの原則に従い、予期しない状態でもレイアウトが崩れないようにします。

.card {
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-unit);
  /* コンテンツが少ない場合のフォールバック */
  min-height: 100%;
}

JavaScript標準

Web Components

テーマ内で再利用可能なUIコンポーネントにはWeb Componentsを使用します。

class ProductCard extends HTMLElement {
  constructor() {
    super();
    this.attachShadow({ mode: 'open' });
  }

  connectedCallback() {
    this.render();
  }

  render() {
    this.shadowRoot.innerHTML = `
      <div class="product-card">
        <slot name="image"></slot>
        <slot name="title"></slot>
        <slot name="price"></slot>
      </div>
    `;
  }
}

customElements.define('product-card', ProductCard);

プログレッシブエンハンスメント

JavaScriptが無効な環境でも基本機能が動作するように、プログレッシブエンハンスメントの原則に従います。

<!-- 基本のHTML構造 -->
<a href="/products/example" class="add-to-cart">
  カートに追加
</a>

<script>
  // JavaScriptで機能を拡張
  document.querySelectorAll('.add-to-cart').forEach(button => {
    button.addEventListener('click', async (e) => {
      e.preventDefault();
      // AJAXでカートに追加
    });
  });
</script>

HTML標準

Liquidテンプレート

Liquidテンプレート内では、適切なインデントとコメントを使用して可読性を高めます。

{% comment %}
  商品カードブロック
  @param {object} product - 商品オブジェクト
{% endcomment %}
<div class="product-card">
  <img src="{{ product.featured_image | img_url: 'medium' }}" alt="{{ product.title }}">
  <h3>{{ product.title }}</h3>
  <p>{{ product.price | money }}</p>
</div>

アクセシビリティ

すべてのHTML要素には適切なARIA属性とセマンティックHTMLを使用します。

<nav aria-label="メインナビゲーション">
  <ul role="list">
    <li><a href="/">ホーム</a></li>
    <li><a href="/collections">コレクション</a></li>
  </ul>
</nav>

コントリビューション

この標準へのコントリビューションを歓迎します。プルリクエストを送信する前に、既存の規約に準拠していることを確認してください。

ライセンス

MIT

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル