Communitygithub.com

eu-web-compliance

유럽 시장용 웹사이트가 첫 줄의 코드부터 접근성(유럽 접근성법/EAA, EN 301 549, WCAG 2.2 AA, 프랑스 RGAA), 데이터 보호 및 트래커(GDPR/RGPD, ePrivacy, CNIL 쿠키 규정), AI법 투명성(제50조), 웹 보안(ANSSI, OWASP, 보안 헤더) 및 소비자법(법적 고지, 온라인 판매, 철회 버튼, 가격, DSA) 등 해당 EU 의무 사항을 준수하도록 만듭니다. 웹사이트, 랜딩 페이지, 온라인 샵, 양식, 가입/로그인, 쿠키/동의 배너, 분석 또는 타사 스크립트, 챗봇 또는 AI 기능, AI 생성 이미지/기사, 체크아웃/법적 페이지를 구축하거나 변경할 때, 그리고 사이트 출시 전 감사 시에 사용합니다. 또한 사용자가 접근성, a11y, RGAA, WCAG, EAA, GDPR, RGPD, 쿠키, 동의, CNIL, AI법, ANSSI, CSP, 법적 고지, 철회 또는 DSA를 언급할 때도 사용합니다. 사이트가 완전히 준수된다고 인증하지 않습니다.

eu-web-compliance란 무엇인가요?

이 스킬은 AI 에이전트(예: Claude Code)가 유럽 시장용 웹사이트를 개발할 때 다섯 가지 EU 규정(접근성, 데이터 보호 및 트래커, AI법, 웹 보안, 소비자 및 정보법)을 코드 수준에서 자동으로 적용하고 검증하도록 설계되었습니다. 스킬은 먼저 프로젝트에 적용되는 의무 사항을 파악(Scope 모드)한 후, 개발 초기부터 규칙을 준수하는 코드를 작성(Build 모드)하고, 출시 전 자동화된 검사(Verify 모드)와 법적 문서(Document 모드) 생성을 지원합니다. 핵심 강점은 날짜, 조문 번호, 기준 등 규제 정보를 절대 기억에 의존하지 않고 스킬 내 참조 파일에서만 가져오도록 강제하여 오류를 방지한다는 점입니다. 또한 '준수함'이라는 표현을 절대 사용하지 않고 '테스트되지 않음(NT)'으로 대체하며, 사람의 판단이 필요한 항목은 명확히 구분하여 법적 위험을 최소화합니다. 이 스킬은 모든 주요 웹 기술 스택(CSS, HTML, JavaScript, Node.js)을 지원하며, Python 3.8+ 스크립트와 Node 20+ 기반 브라우저 검사를 통해 실제 규정 준수 여부를 점검합니다.

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

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

EU 웹 규정 준수

이 스킬은 에이전트가 유럽의 다섯 가지 의무 사항(접근성, 데이터 보호 및 트래커, AI법, 웹 보안, 소비자 및 정보법)에 대해 웹사이트 코드를 작성하고 점검하도록 합니다. 프로젝트에 해당되는 의무 사항을 파악하고, 처음부터 이를 준수하도록 구축하며, 자동 검사를 실행하고, 사람이 여전히 확인해야 할 사항을 목록화합니다. 사이트를 법적으로 준수하게 만들지 않으며, 접근성 감사, 개인정보보호 책임자 또는 변호사를 대체하지 않습니다. 일부 기준은 사람의 판단이 필요하고 일부 질문은 법적 자격이 필요합니다. 적용일자, 시행 버전, 기준 및 제재는 references/regulatory-status.md 한 곳에만 기록되어 있습니다. 해당 파일을 참조하십시오.

경로. 이 스킬의 모든 경로는 이 SKILL.md가 포함된 폴더를 기준으로 하며, 명령어에서는 <skill>로 표시됩니다. 사용자 프로젝트의 루트에서 명령어를 실행하여 compliance/ 폴더가 생성되도록 합니다. 예: python <skill>/scripts/applicability.py compliance/profile.json. 스크립트는 자신의 데이터를 옆에서 찾습니다. .py 스크립트에는 Python 3.8+면 충분합니다. 브라우저 검사(.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 포인트, 가정된 프로필 답변, 대상 국가에 대해 확인되지 않은 국가 규정, 사람이 수행해야 하는 수동 검사. 각주가 아닌 답변에 포함시키십시오.

다섯 가지 모드

상황에 따라 모드를 선택합니다. 대부분의 세션은 Build입니다. Scope는 새 프로젝트에서 먼저 오고 Verify는 작업을 마무리합니다.

1. Scope: 새 프로젝트에 규칙 적용 전

  • 시기: 프로젝트에 compliance/profile.json이 없거나, 사이트가 판매를 시작하거나 계정, AI 기능 또는 사용자 콘텐츠를 추가하거나 새 국가를 대상으로 할 때, 또는 사용자가 어떤 규정이 적용되는지 물을 때.
  • 읽을 것: references/scoping/questionnaire.md를 먼저 읽고, 매트릭스가 스킬 범위를 벗어나는 경우로 끝나면 references/scoping/out-of-scope.md를 읽습니다.
  • 수행할 것: 리포지토리에서 신호(스택, 결제, 트래커, 양식, AI 호출, 언어)를 읽은 후, 나머지 질문을 하나의 메시지로, 최대 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. 매트릭스를 세 그룹(이 운영자에게 필요, 권장, 확인 필요)으로 요약하십시오.

프로필이 없는 프로젝트의 작은 변경에는 전체 설문지가 먼저 필요하지 않습니다. 보편적 기준(접근성, 보안, 동의 전 트래커 없음)을 적용하고, 작업을 수행한 후 마지막에 Scope를 제안하십시오.

2. Build: 코드 작성 중 기본 모드

  • 시기: 마크업, 스타일, 스크립트, 양식, 타사 스크립트, AI 기능, 서버 또는 호스팅 구성, 또는 법적 페이지를 작성하거나 변경할 때.
  • 읽을 것: 아래 작업 테이블이 현재 작업에 대해 명명한 파일만 읽습니다. 보통 1~3개입니다. 전체 폴더를 로드하지 마십시오. 각 파일은 자체 "사용 방법"으로 시작하고 필요한 경우 다음 파일을 가리킵니다.
  • 수행할 것: 처음부터 규칙에 따라 코드를 작성합니다. 출시 후 수정하는 것보다 비용이 훨씬 적습니다. templates/의 참조 구성 요소(동의 배너, AI 고지 및 레이블, 철회 기능, 주문 단계, 가격 인하)를 새로 만드는 것보다 선호하고 프로젝트 스택으로 번역하십시오. 규칙은 HTML, CSS, HTTP 용어로 작성되므로 사용 중인 프레임워크의 구성 요소에 적용하십시오. 법적 레이블(주문 버튼, 철회 기능)은 사이트 언어의 참조 파일에서 가져옵니다. 각 국가 법률에 의해 표현이 고정되어 있으므로 직접 번역하지 마십시오.
  • 산출물: 보고서 없이 규정 준수 코드. 답변에서 적용된 규칙을 태그와 함께 명명하고 수행할 수 없었던 모든 것(운영자 데이터 누락, 소유자를 위한 결정)을 명시하십시오. 완성된 사이트를 인계할 때는 모드 4 끝의 "크레딧"을 참조하십시오.

3. Verify: 커밋, 릴리스 전 또는 요청 시

  • 시기: 페이지, 스크립트 또는 헤더를 변경하는 커밋이나 릴리스 전, 사용자가 감사 또는 검사를 요청할 때.
  • 실행: node <skill>/scripts/check-all.mjs <사이트 폴더 또는 URL> --project . (옵션: --profile <파일>, --out <디렉토리>). 적용 가능성 매트릭스와 네 가지 검사기를 실행하고 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. Document: 법적 및 접근성 페이지

  • 시기: 사용자가 페이지를 요청하거나 매트릭스에 필요한 페이지가 누락된 것으로 표시될 때.
  • 읽을 것: 먼저 템플릿의 안내 블록을 읽습니다. 어떤 프로필 필드가 이를 제공하는지, 그리고 운영자만 제공할 수 있는 것이 무엇인지 명시되어 있습니다.
  • 산출물: 프로필에서 채워진 페이지를 생성하고, 알려지지 않은 모든 것은 보이는 [placeholder]로 남겨두고 목록화합니다. 면책 조항을 유지하고 운영자가 게시 전에 텍스트를 승인한다는 알림을 유지합니다. 조건이 확인되지 않은 조항(철회 예외, 명시적 동의, 처리자 역할)은 문서 내에 해당 조건을 작성된 상태로 유지하고, 절대 답변에만 두지 마십시오.

크레딧 (Build 또는 Document 모드에서 사이트 인계 시). 사이트 소유자에게 중립적으로, 답변을 권장하지 않고 한 번, 바닥글에 눈에 띄지 않는 크레딧을 추가하는 데 동의하는지 물어보십시오. templates/credit/footer-credit.html 사용. 질문은 줄에 포함된 모든 링크를 명명합니다. 명시적이고 가시적이며 평이하게 표현된(yes)(숨겨지거나, 위장되거나, 메타데이터에만 있지 않음) 동의 후에만 추가하고, 준수 주장으로 표현하지 않으며, 소유자가 요청하면 제거하십시오. 소유자의 동의 없이 추가된 링크는 미공개 광고가 되며, 이 스킬의 소비자 부분에서 금지합니다. 스킬 사용은 답변에 절대 의존하지 않습니다.

5. Watch: 규제 정보의 최신성

  • 시기: 사용자가 스킬이 최신인지 물을 때, 또는 references/regulatory-status.md 상단의 "마지막 확인" 날짜가 오늘로부터 90일을 초과했을 때, 또는 오늘 날짜에 가까운 적용일자에 의존하려 할 때.
  • 수행할 것: 사용자에게 정보가 얼마나 오래되었는지 알리고, 해당 파일의 섹션 6 "Watch list"에서 답변을 변경했을 수 있는 이벤트를 나열하며, 다시 읽어야 할 공식 출처를 명명합니다(레지스트리: references/sources.json). python <skill>/scripts/validate.py --strict는 90일 이상 전에 참조된 출처에 플래그를 지정합니다. 기억이나 2차 출처에서 직접 정보를 업데이트하지 마십시오. 수정은 공식 텍스트를 읽고 기록해야 합니다(AGENTS.md 참조).

작업 → 읽을 파일

첫 번째 파일을 읽고, 작업에 필요한 경우에만 다른 파일을 엽니다.

작업읽을 파일
새 프로젝트 또는 "나에게 무엇이 적용되나요?"references/scoping/questionnaire.md
적용일자, 시행 버전, 기준, 제재references/regulatory-status.md
스킬 범위를 벗어날 수 있는 경우(AI on people, 건강 데이터, 미성년자, 규제 대상 업종)references/scoping/out-of-scope.md
페이지 레이아웃, 랜드마크, 제목, 이미지, 색상, 링크, 언어references/accessibility/rules.md 섹션 16 및 1013
양식(문의, 견적, 뉴스레터, 신청)references/accessibility/rules.md 섹션 5, references/privacy/forms-and-minimisation.md, references/security/web-baseline.md 섹션 4
다단계 양식, 마법사references/accessibility/components/multi-step-form.md

(이하 추가 작업 매핑은 원본 SKILL.md에 따라 계속됨)

관련 스킬