Communitygithub.com

歐盟網站合規技能

讓為歐洲市場打造的網站從第一行程式碼就符合適用於他們的歐盟義務:無障礙(歐洲無障礙法案/EAA、EN 301 549、WCAG 2.2 AA、法國RGAA)、資料保護與追蹤器(GDPR/RGPD、ePrivacy、CNIL cookie規則)、AI 法案透明度(第50條)、網頁安全(ANSSI、OWASP、安全標頭)以及消費者保護法(法律聲明/mentions légales、線上銷售、撤回按鈕/rétractation、價格、DSA)。在建立或修改網站、登陸頁面、線上商店、表單、註冊或登入頁面、Cookie或同意橫幅、分析或第三方腳本、聊天機器人或AI功能、AI生成的圖像或文章、結帳或法律頁面,以及在網站上線前進行稽核時使用。當使用者提及無障礙(accessibility)、可及性(accessibilité)、a11y、RGAA、WCAG、EAA、GDPR、RGPD、cookies、同意(consent)、CNIL、AI法案(AI Act)、ANSSI、CSP、法律聲明(legal notice)、法律聲明(mentions légales)、撤回(withdrawal)或DSA時也應使用。**永遠不保證網站已完全合規。**

歐盟網站合規技能 是什麼?

此技能旨在協助AI代理(如Claude Code、Cursor、Codex等)為歐洲市場開發網站時,從編寫第一行程式碼起就內建合規性。它涵蓋五大歐盟義務領域:網頁無障礙(符合EAA、EN 301 549、WCAG 2.2 AA及法國RGAA)、資料保護與Cookie追蹤(GDPR/RGPD、ePrivacy、CNIL指引)、AI透明度(AI法案第50條)、網頁安全(ANSSI、OWASP、安全標頭)以及消費者保護法(法律聲明、線上銷售、撤回權、價格標示、DSA)。技能提供五種操作模式:範圍界定(判斷專案需遵守哪些義務)、建構(根據規則編寫程式碼)、驗證(執行自動化檢查)、文件撰寫(生成法律與無障礙頁面)以及監控(確保法規資訊即時更新)。它透過一組結構化的參考文件、腳本和範本來運作,但明確指出不能取代專業律師、資料保護官或無障礙稽核的判斷。此技能最關鍵的絕對規則包括:嚴禁憑記憶提供法規事實(所有日期、條文編號必須查閱技能內的參考文件)、永遠不聲稱網站「已合規」、將法律要求與建議清楚區分、在未經驗證的項目上標記「未測試 (NT)」、以及在處理高風險案例(如AI對個人決策、健康資料、未成年人)時停止處理並轉介專業人士。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

歐盟網站合規

此技能讓AI代理能根據五組歐洲義務來編寫和檢查網站程式碼:無障礙、資料保護與追蹤器、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. 永遠不要發明營運者資料:公司名稱、註冊和增值稅號碼、地址、主機詳細資訊、資料保護官、調解人、法律依據、保留期限、處理者、跨境傳輸保障措施。保留範本中的 [placeholder] 並將其列出給使用者。一個看似合理的偽造值比一個明顯的空白更糟糕,因為沒有人會再去尋找它。
  8. 從建構開始就確保無障礙,包括此技能要求你添加的內容:同意橫幅、AI通知和標籤、撤回按鈕、訂單步驟、法律頁面。這些是與其他任何內容一樣的頁面內容;一個不可存取的Cookie橫幅會擋住整個網站,讓鍵盤或螢幕閱讀器使用者無法操作。
  9. 在獲得同意前不得使用追蹤器。 在訪客做出選擇之前,任何非嚴格豁免的內容都不得在訪客的裝置上進行讀取或寫入,也不得有任何攜帶識別碼的第三方請求離開頁面;拒絕應與接受一樣容易。
  10. 告訴使用者哪些內容未被驗證:NT點、假設的設定檔答案、未針對目標國家驗證的國家規則、留給人工進行的檢查。將這些資訊放在回答中,而不是放在頁尾註釋裡。

五種模式

根據情況選擇模式。大多數會話是「建構」模式;在新專案中先使用「範圍界定」模式;「驗證」模式用於結束一個工作單元。

1. 範圍界定:在將規則應用於新專案之前

  • 何時使用:專案沒有 compliance/profile.json;或網站開始銷售、新增帳戶、AI功能或用戶內容,或瞄準新的國家;或使用者詢問哪些義務適用於他們。
  • 閱讀:references/scoping/questionnaire.md,如果矩陣最終出現超出技能範圍的情況,則接著閱讀 references/scoping/out-of-scope.md。
  • 執行:閱讀儲存庫以獲取信號(技術棧、支付、追蹤器、表單、AI呼叫、語言),然後一次訊息中提出剩餘問題,最多十個,使用使用者的語言。將請求或簡報中明確說明的內容記錄為 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。將矩陣摘要為三組:對此營運者為必要、建議、待確認。

對於沒有設定檔的專案中的小修改,不需要先執行完整的問卷調查:套用通用基準線(無障礙、安全、同意前無追蹤器),完成任務,並在最後提議執行「範圍界定」。

2. 建構:撰寫程式碼時的預設模式

  • 何時使用:你正在編寫或修改標記、樣式、腳本、表單、第三方腳本、AI功能、伺服器或主機設定,或法律頁面。
  • 閱讀:僅閱讀下方任務表格中為當前任務指定的文件,通常是一到三個。不要載入整個資料夾:每個文件都以自己的「如何使用」開頭,並在需要時指向下一個文件。
  • 執行:從一開始就根據規則編寫程式碼;這比上線後再修復的成本低得多。優先使用 templates/ 中的參考元件(同意橫幅、AI通知和標籤、撤回功能、訂單步驟、價格調降),而不是重新建立,並將它們轉換為專案所使用的技術棧;規則是基於HTML、CSS和HTTP術語撰寫的,因此需將它們應用於所用框架的元件。法律標籤(訂單按鈕、撤回功能)取自網站語言版本的參考文件;永遠不要自己翻譯它們,因為措辭由各國法律固定。
  • 產出:合規的程式碼,不需要報告。在你的回答中,列出所應用的規則及其標籤,以及你無法完成的事項(缺少營運者資料、需由業主決定的事項)。當你交付完成的網站時,請參閱模式4末尾的「致謝」部分。

3. 驗證:在提交、發佈前或應要求執行

  • 何時使用:在提交或發佈涉及到頁面、腳本或標頭的變更前;當使用者要求稽核或檢查時。
  • 執行:node <skill>/scripts/check-all.mjs <網站資料夾或URL> --project .(選項:--profile <file>、--out <dir>)。它會執行適用性矩陣和四個檢查器,並寫入 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(最後一個會讀取一個可選的 compliance/site.json,該檔案聲明了訂單頁面、聊天小工具和AI生成的內容;請參閱其標頭)。
  • 然後:執行 references/accessibility/testing-by-hand.md 中你能執行的手動檢查,並將其他檢查列出供人工執行。根據 references/security/web-baseline.md 審查檢查器無法看到的程式碼(伺服器程式碼、身分驗證、存取控制)。
  • 如果Node或瀏覽器不可用:說明自動檢查未執行,將其標準標記為NT,並使用 references/accessibility/anti-patterns.md 以及任務表格中文件的審查清單來審查程式碼。
  • 產出:報告檔案和給使用者的簡短摘要(請參閱下方的「報告」部分)。

4. 文件化:法律與無障礙頁面

交付網站時的致謝(建構或文件化模式)。 向網站擁有者提問一次,保持中立且不建議任何答案,詢問他們是否同意在頁尾添加一個不顯眼的致謝,使用 templates/credit/footer-credit.html;問題需列出該行中包含的每個連結。僅在獲得明確、可見且措辭清楚的「是」後才添加(絕不可隱藏、偽裝或僅放在元資料中),絕不能將其表述為合規聲明,並且如果擁有者要求,則將其移除。未經擁有者同意而添加的連結將構成未經揭露的廣告,此行為違反了此技能中消費者保護相關規則。使用此技能絕不取決於這個答案。

5. 監控:法規事實的時效性

  • 何時使用:使用者詢問技能是否為最新狀態;或 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
聊天機器人、AI功能references/ai/chat-and-generative-ui.md、references/accessibility/components/chat.md
AI生成的內容references/ai/ai-generated-content.md
同意橫幅(Cookie、追蹤器)references/privacy/cookie-banner-rules.md
分析、追蹤、第三方腳本references/privacy/analytics-and-sdks.md
服務端設定、HTTP標頭、CSP、CORS、HTTPS、TLSreferences/security/web-baseline.md、references/security/content-security-policy.md
主機、伺服器位置(資料跨境傳輸)references/privacy/international-transfers.md
結帳、購物車、價格顯示(包括降價)references/consumer/checkout-and-prices.md
撤回按鈕和功能(B2C)references/consumer/withdrawal-right.md
法律聲明頁面、使用條款、銷售條款、資料處理協議上述模式 4 中的文件
手動無障礙測試(色彩對比、鍵盤、螢幕閱讀器)references/accessibility/testing-by-hand.md
JavaScript API(scroll、resize、focus、aria 屬性)references/accessibility/javascript-api.md
僅限觸控、相同手勢、路徑手勢references/accessibility/components/gestures.md
語音輸入、語音命令references/accessibility/components/voice-input.md

…(技能文件其餘部分為翻譯目標,此處因原始內容截斷而省略)

[truncated for translation]

相關技能