Communitygithub.com

eu-web-compliance

ウェブサイトを、EU市場向けに、アクセシビリティ(欧州アクセシビリティ法/EAA、EN 301 549、WCAG 2.2 AA、フランスRGAA)、データ保護とトラッカー(GDPR/RGPD、ePrivacy、CNILクッキールール)、AI法の透明性(第50条)、ウェブセキュリティ(ANSSI、OWASP、セキュリティヘッダー)、消費者法(法的通知/メンション・レガル、オンライン販売、撤回ボタン/レトラクタシオン、価格表示、DSA)に準拠させるためのスキルです。ウェブサイトの構築や変更時、ランディングページ、オンラインショップ、フォーム、サインアップ・ログイン、クッキー・同意バナー、アナリティクス・サードパーティスクリプト、チャットボット・AI機能、AI生成画像・記事、チェックアウト・リーガルページ、そしてローンチ前のサイト監査時に使用します。ユーザーがアクセシビリティ、accessibilité、a11y、RGAA、WCAG、EAA、GDPR、RGPD、cookies、consent、CNIL、AI Act、ANSSI、CSP、legal notice、mentions légales、withdrawal、DSAと言及した場合にも使用します。ただし、サイトの準拠を認定することは決してありません。

eu-web-compliance とは?

このスキルは、AIエージェントがEU市場向けのウェブサイトのコードを作成・検証する際に、5つの主要なEU規制(アクセシビリティ、データ保護・トラッカー、AI法、ウェブセキュリティ、消費者法)への準拠を支援します。まず、プロジェクトに関連する義務を特定し、初期段階から準拠したコードを記述し、自動チェックを実行した後、人間が手動で検証すべき項目をリストアップします。このスキルは法的な準拠を認定するものではなく、専門家(アクセシビリティ監査人、データ保護責任者、弁護士)による判断を代替するものではありません。Claude Code、Cursor、CodexなどのAIエージェントツールで使用できるよう設計されており、Pythonスクリプト(Python 3.8+)とブラウザチェック用のNode.jsスクリプト(Node 20+、Playwrightが必要)で構成されています。重要なルールとして、規制に関する事実はスキル内のファイルからのみ引用し、記憶に頼らないこと、判断に迷う場合は「未テスト(NT)」とすること、サイトの「準拠」を断言しないこと、法的要件と推奨事項を明確に区別することなどが徹底されています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kayzen-lyon/eu-web-compliance/tree/HEAD

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

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

ドキュメント

EUウェブコンプライアンス

このスキルは、AIエージェントがEUの5つの義務(アクセシビリティ、データ保護とトラッカー、AI法、ウェブセキュリティ、消費者法・情報法)に関してウェブサイトのコードを記述・検証するためのものです。プロジェクトに関係する義務を特定し、初期段階からそれに準拠して構築し、自動チェックを実行し、人間がまだ検証すべき項目をリストアップします。このスキルはサイトを法的に準拠させるものではなく、アクセシビリティ監査、データ保護責任者、弁護士に代わるものではありません。一部の基準は人間による判断を必要とし、一部の質問は法的な資格を必要とします。適用日、有効なバージョン、閾値、罰則は一箇所、references/regulatory-status.mdにのみ記載されています。そちらを参照してください。

パス. このスキル内のすべてのパスは、このSKILL.mdを含むフォルダを基準とし、コマンド内では<skill>と記述します。コマンドはユーザーのプロジェクトルートから実行し、compliance/ディレクトリがそこに作成されるようにします。例:python <skill>/scripts/applicability.py compliance/profile.json。スクリプトは自身のデータを自身の隣に見つけます。Python 3.8+があれば.pyスクリプトは動作します。ブラウザチェック(.mjs)にはNode 20+と、<skill>内で一度npm installを実行しておく必要があります(ブラウザが見つからない場合は、同ディレクトリでnpx playwright install chromiumも実行してください)。

絶対ルール

このスキルを使用する人は弁護士であることは稀であり、あなたが書いた内容を信頼します。誤った日付や早計な「準拠」の表明は、ユーザーを制裁のリスクにさらしたり、障害を持つ人が利用できないサービスを生み出したりする可能性があります。したがって、以下のルールを厳守してください:

  1. 記憶による規制情報は使用しないこと。 日付、条文番号、閾値、標準バージョン、暗号値、基準タイトル、法的ラベルは、このスキルのファイルから取得します。これらのテキストに関するあなたの記憶は、これらのファイルよりも古く、信頼性が低くなります。2026年にいくつかの日付が変更されました。事実がスキル内にない場合は、検証されていないと述べ、自分で提供しないでください。
  2. 疑わしい場合は「未テスト(NT)」とし、決して「準拠」としないこと。 実行できなかったチェック、読み込めなかったページ、人間の判断が必要な基準は、NTとします。
  3. サイト、企業、サービスが「準拠している」と決して書かないこと。 判定は単一の基準に適用されます。エンドユーザー向けのすべての成果物(レポート、声明、ポリシー、通知)には、AIの支援により作成され、監査や法的助言ではないと明記します。
  4. 法的要件、勧告、ベストプラクティスを明確に区別すること。 [best practice]タグが付いたルールは、決して義務として提示してはなりません。規制当局の勧告は法律ではありません。マトリックスの行to-confirmは「適用外」ではありません。想定または欠落した回答に基づいて、免除(零細企業、非専門家、オンラインプラットフォームではない)に依存してはなりません。
  5. 適用するすべてのルールには、そのソースを付記すること。 変更を説明、報告、または正当化する際には、参照ファイルに記載されているタグを添えてください:[WCAG 2.4.7]、[RGAA 11.1]、[GDPR art. 7(3)]、[CNIL guidelines § 27](CNILが必須とみなすもの)、または[CNIL recommendation § 2.3](推奨事項)、[AI Act art. 50(1)]、[ANSSI WEB R14]、[OWASP A03]、[CRD 11a]。(to confirm)で終わるタグは、regulatory-status.mdにまだ記録されていない条文を引用しています。そのルールを検証済みの義務として提示しないでください。コード自体にタグを付ける必要はありません。
  6. 以下の場合は作業を中止し、専門家に相談すること: references/scoping/out-of-scope.mdに記載されている禁止されたAI慣行の疑いがある場合、人について決定を下すAI(高リスクの可能性がある場合)、健康関連データやその他の特別なカテゴリのデータ、未成年者、規制対象セクター、対象国がカバーされていない場合。該当する機能の構築は行わず、残りの部分については作業を続け、回答の冒頭でその旨を明記してください。
  7. 事業者のデータを決して捏造しないこと: 会社名、登録番号やVAT番号、住所、ホスト情報、データ保護責任者、調停者、法的根拠、保存期間、処理者、移転の保護措置。テンプレートの[placeholder]はそのまま表示し、ユーザーにリストアップしてください。もっともらしい捏造された値は、明らかな抜けがあるよりも悪質です。なぜなら、誰もそれを探そうとしないからです。
  8. アクセシブルに設計すること。 このスキルが追加する要素(同意バナー、AI通知とラベル、撤回ボタン、注文ステップ、リーガルページ)も含みます。これらは他のページコンテンツと同じです。アクセシブルでないクッキーバナーは、キーボードやスクリーンリーダーのユーザーに対してサイト全体をブロックすることになります。
  9. 同意なしにトラッカーを使用しないこと。 厳密に免除されているものを除き、訪問者のデバイスに何も読み書きしてはならず、また識別子を含むサードパーティへのリクエストは、訪問者が選択する前にページから送信されてはなりません。拒否は受け入れと同程度に簡単でなければなりません。
  10. 検証されなかったことをユーザーに伝えること: NTポイント、想定されたプロファイルの回答、対象国について検証されなかった国内ルール、人間に委ねられた手動チェック。これらは脚注ではなく、回答本文に記載してください。

5つのモード

状況に応じてモードを選択してください。ほとんどのセッションはビルド(Build)です。新しいプロジェクトでは最初にスコープ(Scope)を実行し、作業の区切りには検証(Verify)で締めくくります。

1. スコープ(Scope):新しいプロジェクトにルールを適用する前

  • 使用タイミング: プロジェクトにcompliance/profile.jsonがない場合。または、サイトが販売を開始した、アカウント、AI機能、ユーザーコンテンツを追加した、新しい国を対象にした場合。またはユーザーが自分に何が適用されるかを尋ねた場合。
  • 読むもの: references/scoping/questionnaire.md。その後、マトリックスがスキルの範囲を超えるケースで終了した場合は、references/scoping/out-of-scope.mdも読むこと。
  • 実行すること: リポジトリを読み、シグナル(スタック、支払い、トラッカー、フォーム、AIコール、言語)を確認します。その後、残りの質問を1つのメッセージで、最大10個まで、ユーザーの言語で尋ねます。リクエストやブリーフが述べていることはstatedとして記録し、そこから明らかに導き出せることはinferredとして、その理由とともに記録します(市役所は販売を行わない、すべての機能を列挙しAI機能がないブリーフにはAI機能がない)。真に不明で重要なものだけが、assumedを根拠とする保護的な仮定を得ます。コードの沈黙から「ノー」を推測してはなりません。記述または推測された事実については専門家に相談し、想定された回答については、そのリスクが正当化される場合にのみ相談してください。
  • 実行するコマンド: python <skill>/scripts/applicability.py compliance/profile.json --output-dir compliance。サイトにAI機能がある場合は、python <skill>/scripts/ai_act_classify.py compliance/profile.jsonも実行します。
  • 成果物: compliance/profile.json(スキーマ:schemas/profile.schema.json、例:templates/profile.example.json)とcompliance/applicability-matrix.md。マトリックスを3つのグループ(この事業者に必須、推奨、確認が必要)に要約します。

プロファイルのないプロジェクトでの小さな変更は、最初に完全な質問票を必要としません。普遍的なベースライン(アクセシビリティ、セキュリティ、同意なしのトラッカーなし)を適用し、タスクを実行し、最後にスコープ(Scope)を提案します。

2. ビルド(Build):コード作成中のデフォルト

  • 使用タイミング: マークアップ、スタイル、スクリプト、フォーム、サードパーティスクリプト、AI機能、サーバーまたはホスティング設定、またはリーガルページを作成または変更する場合。
  • 読むもの: 下のタスクテーブルが現在のタスクに対して指定しているファイルのみ(通常は1~3ファイル)。フォルダ全体を読み込まないでください。各ファイルは独自の「使用方法」で始まり、必要に応じて次のファイルを指示します。
  • 実行すること: 最初からルールに従ってコードを記述します。ローンチ後に修正するよりもコストがはるかに低くなります。templates/の参照コンポーネント(同意バナー、AI通知とラベル、撤回機能、注文ステップ、値下げ表示)を新しいものより優先して使用し、プロジェクトのスタックに翻訳します。ルールはHTML、CSS、HTTPの用語で記述されているため、使用中のフレームワークのコンポーネントに適用します。法的ラベル(注文ボタン、撤回機能)は、サイトの言語の参照ファイルから取得します。文言は各国の法律で固定されているため、自分で翻訳しないでください。
  • 成果物: 準拠したコード。レポートは不要です。回答では、適用したルールをタグとともに示し、できなかったこと(不足している事業者データ、所有者のための決定)を記載します。完成したサイトを引き渡すときは、モード4の最後にある「クレジット」を参照してください。

3. 検証(Verify):コミット前、リリース前、またはリクエストに応じて

  • 使用タイミング: ページ、スクリプト、またはヘッダーに影響を与えるコミットまたはリリースの前。ユーザーが監査またはチェックをリクエストした場合。
  • 実行するコマンド: node <skill>/scripts/check-all.mjs <site folder or URL> --project .(オプション:--profile <file>、--out <dir>)。これは適用可能性マトリックスと4つのチェッカーを実行し、compliance/reports/compliance-report-YYYY-MM-DD.mdと.jsonを書き込みます。フォルダはビルドされたページ(静的エクスポート、dist/、out/)を保持している必要があります。サーバーサイドレンダリングアプリの場合は、それを起動し、そのローカルURLを渡してください。各チェッカーは同じ入力で単独でも実行できます:scripts/check-a11y.mjs、scripts/check-privacy.mjs、scripts/check-security.mjs、scripts/check-content.mjs(最後のチェッカーは、注文ページ、チャットウィジェット、AI生成コンテンツを宣言するオプションのcompliance/site.jsonを読み取ります。ヘッダーを参照してください)。
  • その後: references/accessibility/testing-by-hand.mdの手動チェックのうち、自分でできるものを実行し、残りを人間のためにリストアップします。チェッカーが確認できないコード(サーバーコード、認証、アクセス制御)をreferences/security/web-baseline.mdに照らしてレビューします。
  • Nodeまたはブラウザが利用できない場合: 自動チェックが実行されなかったことを伝え、それらの基準をNTとマークし、references/accessibility/anti-patterns.mdとタスクテーブルのファイルのレビューチェックリストを使用してコードをレビューします。
  • 成果物: レポートファイルと、ユーザーへの短いサマリー(下記「報告」を参照)。

4. 文書化(Document):リーガルページとアクセシビリティページ

  • 使用タイミング: ユーザーがページを要求した場合、またはマトリックスが必須ページが不足していることを示した場合。
  • テンプレートのガイダンスブロックを最初に読むこと: どのプロファイルフィールドがそれを入力し、何を事業者だけが提供できるかを示しています。
  • 成果物: プロファイルから入力されたページ。不明な点はすべて目に見える[placeholder]として残し、リストアップします。免責事項を保持します。事業者が公開前にテキストを承認することを忘れずに記載します。条件が確認されていない条項(撤回の例外、明示的な同意、処理者の役割)は、その条件を文書内に記述したままにし、回答内にのみ記述しないでください。

クレジット(サイトの引き渡し時(ビルドまたは文書化))。 サイトの所有者に対して、中立的に、回答を推奨することなく、templates/credit/footer-credit.htmlを使用したフッター内の控えめなクレジットに同意するかどうかを一度だけ尋ねます。質問には、その行に含まれるすべてのリンクを明示します。明示的かつ明白な文言(非表示、偽装、メタデータのみではない)での「はい」の回答があった場合にのみ追加し、準拠の主張として表現しないでください。所有者が要求した場合は削除します。所有者の知らないうちに追加されたリンクは、未開示の広告となり、このスキルの消費者関連部分で禁止されています。このスキルの使用は、回答に依存しません。

5. ウォッチ(Watch):規制情報の鮮度確認

  • 使用タイミング: ユーザーがスキルが最新かどうかを尋ねた場合。または、references/regulatory-status.mdの先頭にある「最終確認日」が今日から90日以上前の場合。または、本日に近い適用日に依存しようとしている場合。
  • 実行すること: ユーザーに情報の古さを伝え、そのファイルのセクション6「ウォッチリスト」のうち、回答を変えた可能性のあるイベントをリストアップし、再読すべき公式ソースを指定します(レジストリ:references/sources.json)。python <skill>/scripts/validate.py --strictは、90日以上前に参照されたソースにフラグを立てます。記憶や二次情報源から自分で事実を更新しないでください。修正には、公式テキストを読んで記録する必要があります(AGENTS.mdを参照)。

タスク → 読むべきファイル

最初のファイルを読んでください。他のファイルはタスクに必要な場合のみ開いてください。

タスク読むファイル
新しいプロジェクト、または「自分に何が適用されるか?」references/scoping/questionnaire.md
適用日、有効なバージョン、閾値、罰則references/regulatory-status.md
スキルの範囲を超える可能性のあるケース(人に関するAI、健康データ、未成年者、規制対象セクター)references/scoping/out-of-scope.md
ページレイアウト、ランドマーク、見出し、画像、色、リンク、言語references/accessibility/rules.md セクション1~6および10~13
フォーム(問い合わせ、見積もり、ニュースレター、申し込み)references/accessibility/rules.md セクション5、references/privacy/forms-and-minimisation.md、references/security/web-baseline.md セクション4
マルチステップフォーム、ウィザードreferences/accessibility/components/multi-step-form.md
テーブルreferences/accessibility/rules.md セクション7
動的コンテンツ、シングルページアプリ、スクリプトで生成されたインタラクションreferences/accessibility/rules.md セクション8、references/accessibility/components/dynamic-content.md
フォーカス管理(タブトラップ、スキップリンク、モーダル)references/accessibility/rules.md セクション9
マルチメディア(動画、音声)references/accessibility/rules.md セクション14、references/accessibility/components/multimedia.md
カスタムウィジェット、アコーディオン、タブ、ツールチップreferences/accessibility/components/widgets.md
クッキーと同意references/privacy/cookies-and-consent.md
追跡とサードパーティスクリプト(アナリティクス、広告、チャット)references/privacy/trackers-and-third-parties.md
データ最小化とフォームreferences/privacy/forms-and-minimisation.md
ユーザーデータの国際移転references/privacy/international-transfers.md
個人データの保存期間と削除references/privacy/retention-and-deletion.md
データ主体の権利(アクセス、削除、ポータビリティ)references/privacy/rights.md
データ侵害の通知references/privacy/breach-notification.md
データ処理契約(DPA)references/privacy/data-processing-agreement.md
AI機能:チャット、コンテンツ生成、分類、レコメンデーションreferences/ai-act/ai-features.md
AIシステムの分類(高リスク、限定リスク、最小リスク)references/ai-act/ai-classification.md
AI透明性(通知、ラベリング)references/ai-act/transparency.md
AIリスク管理references/ai-act/risk-management.md
HTTPセキュリティヘッダーreferences/security/web-baseline.md セクション2
HTTPSとTLS設定references/security/web-baseline.md セクション1
入力検証とサニタイゼーションreferences/security/web-baseline.md セクション3
認証とセッション管理references/security/web-baseline.md セクション4
アクセス制御と権限references/security/web-baseline.md セクション5
サーバー設定(CSP、CORS、HSTS)references/security/web-baseline.md セクション2、references/security/security-headers.md
消費者法:法的通知(メンション・レガル)references/consumer/legal-notice.md
消費者法:価格表示references/consumer/pricing.md
消費者法:撤回権(レトラクタシオン)references/consumer/withdrawal-right.md
消費者法:オンライン販売の一般条件references/consumer/terms-of-sale.md
デジタルサービス法(DSA)references/dsa/requirements.md
出品者透明性(DSA第30条)references/dsa/trader-transparency.md
ユーザー報告メカニズム(DSA)references/dsa/user-reporting.md
商品リコールreferences/consumer/recalls.md

報告

検証(Verify)レポートの最初の部分は短い概要です。それには以下を含めます:

  • チェックされたページ/URLの数と結果の数(パス、注意事項、失敗、NT)
  • すべての失敗の中で最も深刻なもの(クリティカルなアクセシビリティの問題、同意なしのトラッカー、TLSの欠如、価格操作、誤解を招くAIラベル)
  • NTチェックの数とその理由(人間の判断が必要、構成されていない、サーバーの外部)
  • 実行されたチェッカーのバージョンと、チェッカーが実行されなかった場合のその旨

コードレビュー(ビルド(Build)または検証(Verify))の回答では、発見された問題を以下のように構造化する必要があります:

  • ルールが適用されるコードブロック
  • 問題:ルールがどのように違反されているか
  • 修正:コードの修正案(該当する場合)
  • タグとリンクで参照されるルール

スキルの更新

規制が変更された場合、または発効日が近づいた場合、スキルメンテナーが情報を更新します。更新方法については、AGENTS.mdを参照してください。

関連スキル