Communitygithub.com

Menyor/menyor-frontend-skill

Menyor Nigeriaのフロントエンドシステム(ユーザーのFigmaから構築)。トークン、タイポグラフィ、コンポーネント、モーション、コピールール、ビルド・検証プロセスを定義します。このユーザー(Menyor Nigeriaまたはその新製品)のフロントエンド、UI、ページ、コンポーネント、メール、デザイン作業のすべてに使用し、Menyorのルック&フィールと品質基準に一致させます。また、UIのレビューや修正時にも使用します。

menyor-frontend-skill とは?

このスキルは、Menyor Nigeriaのフロントエンドシステムを完全に定義したものです。ユーザーのFigmaデザインからピクセル単位で正確に構築され、すべての画面に拡張されたデザインシステムを提供します。このスキルは、Claude Code、Cursor、CodexなどのAIエージェントが、Menyor Nigeriaまたはその新製品向けのUIを生成、レビュー、修正する際に使用することを想定しています。 主な特徴として、厳格なカラーパレット(`--brand-blue`、`--ink`、`--surface`など6色のみ)、2種類のフォント(見出し用Cormorant Garamond、本文用DM Sans)、ピル型のコントロール、カードの境界線やシャドウの禁止、共有モーションプリセット、WCAG AA準拠のアクセシビリティ、レスポンシブデザイン(390/768/1440px)などがあります。 システムは複数のリファレンスファイルで構成されています:`references/design-system.md`(トークン、タイポグラフィ、スペーシング)、`references/components.md`(全コンポーネントのマークアップとクラス名)、`references/motion.md`(モーションプリセット)、`references/verification.md`(Figmaとの照合手順)、`references/gotchas.md`(Next.js 16、Turbopack等の既知の問題)、`assets/`(実際のスタイルシート、ロゴ、モーションファイル、コアコンポーネント)、`scripts/`(スクリーンショット、比較、測定、監査スクリプト)。 新しい画面の構築手順は、コピーの作成 → 既存コンポーネントからの構成 → 必要に応じた新規クラス追加 → モーションの設定 → 検証とレポート、という順序で行われます。このスキルは、Menyorブランドの一貫性を保ちながら、開発効率を最大化するために設計されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add Menyor/menyor-frontend-skill

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

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

ドキュメント

Menyor フロントエンド

このユーザーのために構築するものはすべて、Menyor Nigeriaアプリ(~/Projects/menyor-nigeria)のように見え、動作しなければなりません。このアプリはFigmaからピクセル単位で正確に構築され、その後すべての画面に拡張されました。このスキルはそのシステムです。現在のリクエストでユーザーが別の指示をしない限り、正確に従ってください。

優先順位: このリクエストにおけるユーザーの言葉 → ユーザーが添付したFigma/デザイン → このスキル → あなた自身の判断。 新しいFigmaが届いた場合、その作業ではそれが優先されます。それを測定し(references/verification.mdを参照)、このスキルからの逸脱をレポートに記載してください。

開始前にお読みください

必要なものファイル
正確なトークン、タイプスケール、スペーシング、ブレークポイント、コピー、アクセシビリティルールreferences/design-system.md
すべてのコンポーネント(ボタン、ピル、カード、ドロワー、タイムラインなど)のマークアップとクラス名references/components.md
モーションプリセットと各エフェクトの構築方法references/motion.md
Figma、スクリーンショットとの照合、監査、レポート方法references/verification.md
既に遭遇した落とし穴(Next 16、Turbopack、スタッキングコンテキスト、ポータル)references/gotchas.md
コピーすべき実際のスタイルシート、ロゴ、モーションファイル、コアコンポーネントassets/
スクリーンショット、比較、測定、監査スクリプトscripts/

新しいプロジェクトでは、assets/globals.css、assets/motion.ts、assets/components/ 内のコンポーネントから始め、再導出しないでください。

システム概要

フォント(これら2つのみ):

  • すべての見出しに Cormorant Garamond、ウェイト 700、letter-spacing: -0.02em。元のブリーフでは500/600とされていましたが、これがFigmaで使用されているものです。
  • その他すべて(入力、ボタン、セレクトを含む)に DM Sans 400/500/600、font-variation-settings: "opsz" 33 を設定し、Figmaのよりタイトなカットに合わせます。
  • 両方とも next/font/google、display: 'swap' で読み込み、プリロードします。
  • ロゴはSVGであり、フォントではありません。

カラー(これらのみ):

トークンHex使用箇所
--brand-blue#006BA6ボタン、リンク、見出し、青色バンド、フッター
--brand-blue-hover#005A8Cホバー
--brand-blue-tint#E6F0F6バッジ、選択行
--bg#EBEAEAページ、カード内の行
--surface#FFFFFFカード、入力、ドロワー
--ink#111111テキスト
--ink-muted#5F6368キャプション、ヘルパーテキスト
--success#1E8E3Eアイコンと「Confirmed」ドットのみ、本文テキストには使用不可(白色上でコントラスト比4.2:1)
--error#C62828エラー
--on-blue#FFFFFF青色上のテキスト;区切り線は60%不透明度

Hex値は :root と BRAND.colors 設定(メールとPDFが読み取る)にのみ存在します。 区切り線とスクリムは color-mix(in srgb, var(--ink) 12%, transparent) で導出します。

形状:

  • すべてのボタン、タブ、入力、セレクト、検索ボックス、トリップコントロールは ピル 形状です。
  • 大きなカードは48pxの半径、カードは24px、画像は24px、行は16pxです。
  • アウトラインコントロールと入力は 1pxの青色ボーダー を持ちます。
  • カードにボーダーはなく、シャドウもありません。
  • 階層はグレーと白のサーフェスで表現します。

タイプスケール(デスクトップ → スマートフォン):

要素サイズ
ヒーロー110px / 112px line height → 48px
セクションおよびページ見出し(.display)64px / 1.22 → 40px
カードタイトル30px
リスト行24px
本文16px
ヘルパーテキスト14px
バッジ13px
価格22px、ウェイト600、tabular figures
アイブロウDM Sans 16px、大文字、青色

レイアウト:

  • コンテナ最大幅1480px、ガター40px(スマートフォンでは24px)。
  • ヘッダー96px(スマートフォンでは72px)、グレーページ上でsticky、スクロール時に1pxの区切り線を表示。
  • セクション間隔はデスクトップで約160px、スマートフォンで80px。
  • ブレークポイント:1360(コンパクトトリップピル)、1180(ナビゲーションがメニューに変化)、960(1カラム)、640(スマートフォン)。

コピー:

  • 表示見出しはタイトルケース(「Everything For Your Trip, In One Place」)。
  • UIテキストはセンテンスケース(「Add to my trip」)。
  • すべてのコピーは src/content/*.ts に配置。コンポーネント内に文字列をハードコードしないでください。
  • ブランド値(メール、電話、WhatsApp、法人名、ソーシャル)は BRAND から取得。
  • 価格は常に通貨ヘルパー(デフォルトNGN、記憶される)を通してください。
  • レビュー、評価、統計、連絡先詳細を創作しないでください。
  • プレースホルダーは常に [BRACKETED] のまま表示してください。

譲れないルール

  1. 上記の2つのフォントとカラーのみを使用すること。 新しい画面ごとに scripts/audits.mjs(paletteAudit)を実行してください。
  2. シャドウ、カードのボーダー、グラデーションは禁止。 唯一の例外は微妙な写真グラデーションで、テキストに必要な場合のみ。
  3. すべてのコントロールは、1pxの青色アウトラインまたはソリッドブルーの塗りつぶしのピル形状。 フォーカス時は2pxの白 + 2pxの青いリングを表示。
  4. 共有のモーションプリセットファイルを1つ使用。 transform と opacity のみアニメーション;FAQと予約カードの高さは意図的な例外。prefers-reduced-motion はすべてのアニメーションを無効にし、コンテンツを一度に表示。
  5. デフォルトでアクセシブル:
    • WCAG AAコントラスト。
    • ラベル付きコントロール。
    • ドロワーとモーダルはフォーカストラップ、Escapeで閉じる、開いたボタンにフォーカスを戻す、document.body 上のポータルでレンダリング。
    • トグルは aria-pressed、ピル選択は role="radio" と aria-checked を使用。
    • 視覚のみのプレースホルダーは aria-hidden。
  6. コピーはコンテンツファイルに、ブランド値は BRAND から取得。 画像には適切なaltテキストが必要で、そのパスはコンテンツファイルに記述。
  7. 390、768、1440pxでレスポンシブ、横スクロールなし:
    • スマートフォンではスナップカルーセル(次のカードが一部見える)。
    • フィルターと予約フォームはボトムシートに移動。
    • メインアクションはスティッキーな下部バーに配置。
    • ドロワーはボトムシートになる。
  8. レポート前に検証:
    • 1440pxと390pxでスクリーンショットを撮影。
    • デザインと比較し、並べて確認。
    • パレット監査、コントラスト監査、axeを実行。
    • プロダクションビルドでLighthouseモバイルを実行:Performance 85以上、Accessibility 95以上、CLS 0。
    • 差異を正直にレポート。

新しい画面の構築手順

  1. まずコピーをコンテンツファイルに配置。
  2. references/components.md の既存コンポーネントから構成。
    • 典型的な構造:中央揃えの page-head(アイブロウ + .display 行 + イントロ)、その後にグレーのページ上に白い large-card/step-card/checkout-card ブロック。
    • リストは白いカード内のグレーの update-row/listing-row 行に配置。
  3. 既存コンポーネントで対応できない場合のみ、トークンから構築した新しいクラスを globals.css の適切なセクションに追加。Tailwindやインラインカラーは使用禁止。
  4. モーションプリセット(Reveal、SectionHeading 行の立ち上がり、ホバー時のリフト)を適用。
  5. 検証(references/verification.md)後、スクリーンショット付きでレポート。

関連スキル