@aegis-scan/skills 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/ATTRIBUTION.md +204 -0
  2. package/CHANGELOG.md +48 -3
  3. package/package.json +1 -1
  4. package/sbom.cdx.json +1 -1
  5. package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
  6. package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +1080 -0
  7. package/skills/compliance/aegis-native/brutaler-anwalt/HANDOVER-LO-LIVE-VERIFICATION-2026-05-15.md +187 -0
  8. package/skills/compliance/aegis-native/brutaler-anwalt/LICENSE +43 -0
  9. package/skills/compliance/aegis-native/brutaler-anwalt/README.md +242 -0
  10. package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +427 -14
  11. package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
  12. package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
  13. package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
  14. package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
  15. package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
  16. package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
  17. package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
  18. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
  19. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
  20. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
  21. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
  22. package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
  23. package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
  24. package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +63 -9
  25. package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +1581 -10
  26. package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
  27. package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +323 -31
  28. package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +610 -1
  29. package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +107 -1
  30. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
  31. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
  32. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
  33. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
  34. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
  35. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
  36. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
  37. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
  38. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
  39. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
  40. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
  41. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
  42. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
  43. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
  44. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
  45. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
  46. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
  47. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
  48. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
  49. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
  50. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
  51. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
  52. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
  53. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
  54. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
  55. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
  56. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
  57. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
  58. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
  59. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
  60. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
  61. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
  62. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
  63. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
  64. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
  65. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
  66. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
  67. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
  68. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
  69. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
  70. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
  71. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
  72. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
  73. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
  74. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
  75. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
  76. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
  77. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
  78. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
  79. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
  80. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
  81. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
  82. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
  83. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
  84. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
  85. package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +81 -8
  86. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
  87. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
  88. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
  89. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/paragraphs.md +62 -0
  90. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
  91. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/paragraphs.md +85 -0
  92. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
  93. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/paragraphs.md +112 -0
  94. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
  95. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/paragraphs.md +71 -0
  96. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/articles.md +182 -0
  97. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
  98. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +111 -0
  99. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
  100. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
  101. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
  102. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
  103. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
  104. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
  105. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
  106. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
  107. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
  108. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
  109. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
  110. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
  111. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
  112. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
  113. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +134 -0
  114. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
  115. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
  116. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
  117. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
  118. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
  119. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
  120. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
  121. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
  122. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
  123. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
  124. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
  125. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
  126. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
  127. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
  128. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
  129. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
  130. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
  131. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/paragraphs.md +61 -0
  132. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
  133. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/INDEX.md +93 -0
  134. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
  135. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
  136. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
  137. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
  138. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
  139. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
  140. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
  141. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
  142. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
  143. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +68 -0
  144. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
  145. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
  146. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +185 -0
  147. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
  148. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
  149. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/paragraphs.md +57 -0
  150. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
  151. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
  152. package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +137 -9
  153. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +122 -0
  154. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
  155. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/mistral-eu.md +123 -0
  156. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/openai-dpa.md +120 -0
  157. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
  158. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
  159. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
  160. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
  161. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
  162. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/nextauth-tom.md +120 -0
  163. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/supabase-auth-tom.md +104 -0
  164. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
  165. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
  166. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
  167. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
  168. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
  169. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
  170. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
  171. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
  172. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
  173. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
  174. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
  175. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
  176. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
  177. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
  178. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
  179. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
  180. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
  181. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/proxy-csp-pattern.md +93 -0
  182. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/payment/stripe-pci-tom.md +121 -0
  183. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
  184. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
  185. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
  186. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
  187. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
  188. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
  189. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
  190. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
  191. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
  192. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
  193. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
  194. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/plausible-pattern.md +107 -0
  195. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
  196. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
  197. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
  198. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
  199. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
  200. package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
  201. package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
  202. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/AffiliateDisclaimer.tsx.example +54 -0
  203. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/COMPLIANCE-AUDIT-TRAIL-template.md +95 -0
  204. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSE-Section-UGC.md.example +77 -0
  205. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +156 -0
  206. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/LostFoundReportForm-consent.tsx.example +126 -0
  207. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/README.md +33 -0
  208. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/UmamiScript.tsx.example +64 -0
  209. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
  210. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template.md +60 -0
  211. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-cron.ts.example +52 -0
  212. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-workflow.yml.example +47 -0
  213. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/proxy-strict-dynamic.ts.example +80 -0
  214. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/security.txt.example +26 -0
  215. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
  216. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
  217. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
  218. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
  219. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
  220. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
  221. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
  222. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
  223. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
  224. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
  225. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +262 -0
  226. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
  227. package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
  228. package/skills/defensive/aegis-native/rls-defense/SKILL.md +85 -0
  229. package/skills/defensive/permoon-fork/README.md +40 -0
  230. package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
  231. package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
  232. package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
  233. package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
  234. package/skills/foundation/aegis-native/aegis-module-builder/SKILL.md +5 -1
  235. package/skills/foundation/aegis-native/aegis-orchestrator/SKILL.md +87 -4
  236. package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +69 -9
  237. package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
  238. package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
  239. package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
  240. package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
  241. package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
  242. package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
  243. package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
  244. package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
  245. package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
  246. package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
  247. package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
  248. package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
  249. package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
  250. package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
  251. package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
  252. package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
  253. package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
  254. package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
  255. package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
  256. package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
  257. package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
  258. package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
  259. package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
  260. package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
  261. package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
  262. package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
  263. package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
  264. package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
  265. package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
  266. package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
  267. package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
  268. package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
  269. package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
  270. package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
  271. package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
  272. package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
  273. package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
  274. package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
  275. package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
  276. package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
  277. package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
  278. package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
  279. package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
  280. package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
  281. package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
  282. package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
  283. package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
  284. package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
  285. package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
  286. package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
  287. package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
  288. package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
  289. package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
  290. package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
  291. package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
  292. package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
  293. package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
  294. package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
  295. package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
  296. package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
  297. package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
  298. package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
  299. package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
  300. package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
  301. package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
  302. package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
  303. package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
  304. package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
  305. package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
  306. package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
  307. package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
  308. package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
  309. package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
  310. package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
  311. package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
  312. package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
  313. package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
  314. package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
  315. package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
  316. package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
  317. package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
  318. package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
  319. package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
  320. package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
  321. package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
  322. package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
  323. package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
  324. package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
  325. package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
  326. package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
  327. package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
  328. package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
  329. package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
  330. package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
  331. package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
  332. package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
  333. package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
  334. package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
  335. package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
  336. package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
  337. package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
  338. package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
  339. package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
  340. package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
  341. package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
  342. package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
  343. package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
  344. package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
  345. package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
  346. package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
  347. package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
  348. package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
  349. package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
  350. package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
  351. package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
  352. package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
  353. package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
  354. package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
  355. package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
  356. package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
  357. package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
  358. package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
  359. package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
  360. package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
  361. package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
  362. package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
  363. package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
  364. package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
  365. package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
  366. package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
  367. package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
  368. package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
  369. package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
  370. package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
  371. package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
  372. package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
  373. package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
  374. package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
  375. package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
  376. package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
  377. package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
  378. package/skills/offensive/matty-fork/cicd-redteam/SKILL.md +531 -0
  379. package/skills/offensive/matty-fork/cloud-security/SKILL.md +106 -0
  380. package/skills/offensive/matty-fork/container-escape/SKILL.md +174 -0
  381. package/skills/offensive/matty-fork/mobile-pentester/SKILL.md +357 -0
  382. package/skills/offensive/matty-fork/subdomain-takeover/SKILL.md +154 -0
  383. package/skills/osint/elementalsouls-fork/offensive-osint/README.md +92 -0
  384. package/skills/osint/elementalsouls-fork/offensive-osint/SKILL.md +4177 -0
  385. package/skills/osint/elementalsouls-fork/osint-methodology/README.md +66 -0
  386. package/skills/osint/elementalsouls-fork/osint-methodology/SKILL.md +1695 -0
@@ -0,0 +1,79 @@
1
+ ---
2
+ license: MIT (snippet) / Vendor-Doc separat
3
+ provider: PostHog (PostHog Inc., USA — EU-Cloud verfuegbar)
4
+ provider-AVV-status: DPA verfuegbar + EU-Cloud-Region
5
+ last-checked: 2026-05-02
6
+ purpose: PostHog Consent + EU-Cloud-Region.
7
+ ---
8
+
9
+ # PostHog — Consent + EU-Cloud
10
+
11
+ ## 1. Default-Verhalten
12
+
13
+ - US-Cloud (default) ODER EU-Cloud (eu.posthog.com)
14
+ - Cookies: `ph_*`, `ph_phc_*`
15
+ - Self-Hosting moeglich (Open-Source)
16
+
17
+ ## 2. Compliance-Risiken
18
+
19
+ | Risiko | Wirkung | Fix |
20
+ |---|---|---|
21
+ | Default US-Cloud | Drittland | EU-Cloud (eu.posthog.com) waehlen |
22
+ | Auto-Capture aller Events | DSGVO-Datenminimierung | Selective Capture |
23
+ | Pre-Consent-Loading | § 25 TDDDG | ConsentGate |
24
+
25
+ ## 3. Code-Pattern (Next.js)
26
+
27
+ ```tsx
28
+ // File: src/components/analytics/PostHog.tsx
29
+ 'use client';
30
+
31
+ import { useEffect } from 'react';
32
+ import posthog from 'posthog-js';
33
+ import { useConsent } from '@/lib/consent';
34
+
35
+ const POSTHOG_KEY = process.env.NEXT_PUBLIC_POSTHOG_KEY;
36
+ const POSTHOG_HOST = process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://eu.posthog.com'; // EU
37
+
38
+ export default function PostHogProvider() {
39
+ const { hasConsented } = useConsent();
40
+
41
+ useEffect(() => {
42
+ if (!POSTHOG_KEY) return;
43
+ if (!hasConsented('analytics')) {
44
+ posthog.opt_out_capturing();
45
+ return;
46
+ }
47
+
48
+ posthog.init(POSTHOG_KEY, {
49
+ api_host: POSTHOG_HOST,
50
+ capture_pageview: true,
51
+ autocapture: false, // Selective Capture (Datenminimierung)
52
+ disable_session_recording: true, // Privacy-friendly default
53
+ mask_all_text: true, // Mask Inputs by default
54
+ person_profiles: 'identified_only', // Nur eingeloggte User profilieren
55
+ });
56
+ posthog.opt_in_capturing();
57
+ }, [hasConsented]);
58
+
59
+ return null;
60
+ }
61
+ ```
62
+
63
+ ## 4. AVV / DPA
64
+
65
+ - **DPA-Link**: https://posthog.com/dpa
66
+ - **EU-Cloud**: eu.posthog.com (Frankfurt)
67
+
68
+ ## 5. DSE-Wording-Vorlage
69
+
70
+ > Wir nutzen PostHog (PostHog Inc., 2261 Market St, San Francisco, USA — EU-Cloud Frankfurt)
71
+ > als Auftragsverarbeiter im Sinne von Art. 28 DSGVO. Datenstandort: EU. EU-SCC Modul 2.
72
+ > Datenschutzhinweise: https://posthog.com/privacy.
73
+
74
+ ## 6. Verify
75
+
76
+ ```bash
77
+ # EU-Cloud-Pruefung
78
+ curl -sI https://eu.posthog.com/decide | grep -i "X-Region"
79
+ ```
@@ -0,0 +1,208 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Vue.js (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: Vue 3 Cookie-Banner Pattern mit Composition-API + useConsent Composable + Teleport.
6
+ ---
7
+
8
+ # Vue — Cookie-Banner (Pattern)
9
+
10
+ ## Trigger / Detection
11
+
12
+ Repo enthaelt:
13
+ - `vue` in `package.json` Dependencies (Version >= 3.x)
14
+ - `src/main.ts` mit `createApp(App).mount('#app')`
15
+ - `<script setup>`-Komponenten in `src/**/*.vue`
16
+ - Optional: `pinia` / `vuex` State-Management
17
+ - Optional: `vue-router` mit Navigation-Guards
18
+
19
+ ## Default-Verhalten (was passiert ohne Konfiguration)
20
+
21
+ - SPA-Default: Banner-State im Memory → reload zeigt Banner erneut
22
+ - Tracker-SDKs in `main.ts` initialisiert vor Banner-Mount
23
+ - Reactive State leakt zwischen Visitors (bei SSR)
24
+ - `localStorage` Access vor Mount kann hydration-mismatch ausloesen (bei Nuxt)
25
+
26
+ ## Compliance-Risiken
27
+
28
+ | Risiko | Norm | Severity | Fix |
29
+ |---|---|---|---|
30
+ | Tracker in `main.ts` vor Consent | § 25 TDDDG | KRITISCH | Lazy-Init nach Consent-Event |
31
+ | LocalStorage-Read in `setup()` SSR | DSGVO Art. 25 | HOCH | `onMounted` + `useStorage` (VueUse) |
32
+ | Banner als Komponente ohne `<Teleport>` | A11y / DSGVO Klarheit | MITTEL | `<Teleport to="body">` fuer Modal-Style |
33
+ | Drittland-Tracker via CDN | Art. 44 DSGVO | KRITISCH | EU-Provider + AVV |
34
+ | Pre-Tick im Settings | EuGH C-673/17 | KRITISCH | Default `false` fuer Opt-In |
35
+
36
+ ## Code-Pattern (sanitized)
37
+
38
+ ```typescript
39
+ // File: src/composables/useConsent.ts
40
+ import { ref, computed, watch, readonly } from 'vue';
41
+
42
+ export type Consent = {
43
+ necessary: true;
44
+ analytics: boolean;
45
+ marketing: boolean;
46
+ timestamp?: string;
47
+ version: '1.0';
48
+ };
49
+
50
+ const STORAGE_KEY = 'cookie-consent';
51
+
52
+ const defaultConsent: Consent = {
53
+ necessary: true,
54
+ analytics: false,
55
+ marketing: false,
56
+ version: '1.0',
57
+ };
58
+
59
+ const consent = ref<Consent>({ ...defaultConsent });
60
+ const hasDecided = ref(false);
61
+
62
+ function loadFromStorage() {
63
+ if (typeof window === 'undefined') return;
64
+ const raw = localStorage.getItem(STORAGE_KEY);
65
+ if (!raw) return;
66
+ try {
67
+ consent.value = JSON.parse(raw);
68
+ hasDecided.value = true;
69
+ } catch {
70
+ /* ignore malformed */
71
+ }
72
+ }
73
+
74
+ function persist(next: Partial<Consent>) {
75
+ consent.value = { ...consent.value, ...next, timestamp: new Date().toISOString() };
76
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(consent.value));
77
+ hasDecided.value = true;
78
+ fetch('/api/consent-log', {
79
+ method: 'POST',
80
+ headers: { 'Content-Type': 'application/json' },
81
+ body: JSON.stringify(consent.value),
82
+ });
83
+ }
84
+
85
+ function reset() {
86
+ localStorage.removeItem(STORAGE_KEY);
87
+ consent.value = { ...defaultConsent };
88
+ hasDecided.value = false;
89
+ }
90
+
91
+ export function useConsent() {
92
+ return {
93
+ consent: readonly(consent),
94
+ hasDecided: readonly(hasDecided),
95
+ loadFromStorage,
96
+ persist,
97
+ acceptAll: () => persist({ analytics: true, marketing: true }),
98
+ rejectAll: () => persist({ analytics: false, marketing: false }),
99
+ reset,
100
+ };
101
+ }
102
+ ```
103
+
104
+ ```vue
105
+ <!-- File: src/components/CookieBanner.vue -->
106
+ <script setup lang="ts">
107
+ import { onMounted, computed } from 'vue';
108
+ import { useConsent } from '@/composables/useConsent';
109
+
110
+ const { consent, hasDecided, loadFromStorage, acceptAll, rejectAll, persist } = useConsent();
111
+
112
+ onMounted(() => {
113
+ loadFromStorage();
114
+ });
115
+
116
+ const visible = computed(() => !hasDecided.value);
117
+ </script>
118
+
119
+ <template>
120
+ <Teleport to="body">
121
+ <aside
122
+ v-if="visible"
123
+ role="dialog"
124
+ aria-label="Cookie-Einwilligung"
125
+ class="cookie-banner"
126
+ >
127
+ <p>
128
+ Wir nutzen Cookies fuer notwendige Funktionen.
129
+ Mit Ihrer Einwilligung zusaetzlich fuer Webanalyse.
130
+ Details:
131
+ <RouterLink to="/datenschutz">Datenschutzerklaerung</RouterLink>.
132
+ </p>
133
+ <div class="cookie-actions">
134
+ <!-- Buttons gleichwertig (OLG Koeln 6 U 80/23) -->
135
+ <button @click="rejectAll" class="btn-secondary">Nur Notwendige</button>
136
+ <button @click="acceptAll" class="btn-primary">Alle akzeptieren</button>
137
+ </div>
138
+ </aside>
139
+ </Teleport>
140
+ </template>
141
+ ```
142
+
143
+ ```typescript
144
+ // File: src/main.ts
145
+ import { createApp } from 'vue';
146
+ import { createPinia } from 'pinia';
147
+ import App from './App.vue';
148
+ import router from './router';
149
+
150
+ const app = createApp(App);
151
+ app.use(createPinia());
152
+ app.use(router);
153
+
154
+ // KEIN Tracker-Init hier — erst nach Consent-Event
155
+ window.addEventListener('consent:granted', (event: any) => {
156
+ if (event.detail?.analytics) {
157
+ import('./trackers/analytics').then(m => m.init());
158
+ }
159
+ });
160
+
161
+ app.mount('#app');
162
+ ```
163
+
164
+ ## AVV / DPA
165
+
166
+ - Hosting (Vite-Build static / Nuxt SSR auf Vercel/Netlify) — Art. 28 DSGVO
167
+ - Optional Pinia-Persisted-Store-Provider (z.B. localStorage = kein AVV; backend-sync = AVV)
168
+ - Tracker-Provider (Plausible EU / Matomo Cloud EU / self-hosted Umami) — AVV
169
+ - Form-Backends (Formspree / FormBricks) — AVV bei Drittland: SCC + TIA
170
+
171
+ ## DSE-Wording-Vorlage
172
+
173
+ ```markdown
174
+ ### Webanalyse (mit Einwilligung)
175
+
176
+ Sofern Sie Ihre Einwilligung erteilen, verwenden wir <placeholder-analytics-provider>
177
+ zur statistischen Auswertung der Webseiten-Nutzung. Verarbeitete Daten:
178
+ - Anonymisierte Besuchsdauer
179
+ - Referrer (ohne Query)
180
+ - Geraet-Typ (Desktop/Mobile)
181
+
182
+ **Anbieter:** <placeholder-analytics-provider>, Sitz <placeholder-eu-country>
183
+ **Rechtsgrundlage:** Art. 6 Abs. 1 lit. a DSGVO i.V.m. § 25 Abs. 1 TDDDG
184
+ **Speicherdauer:** <placeholder-days> Tage
185
+ **Widerruf:** [Cookie-Einstellungen](#cookie-settings) im Footer
186
+ ```
187
+
188
+ ## Verify-Commands (Live-Probe)
189
+
190
+ ```bash
191
+ # 1. Banner visible bei Erstbesuch
192
+ curl -sS https://<placeholder-domain>/ | grep -ic "cookie-banner\|cookie-einwilligung"
193
+
194
+ # 2. Tracker-Bundle nicht im initial-load
195
+ curl -sS https://<placeholder-domain>/ | grep -oE 'src="[^"]*\.js"' | grep -i "analytics\|tracker"
196
+ # Erwartung: leer oder nur lazy-chunk-Hashes
197
+
198
+ # 3. Playwright: Tracker-Request erst nach Accept
199
+ npx playwright test e2e/consent.spec.ts
200
+ ```
201
+
202
+ ## Cross-References
203
+
204
+ - AEGIS-Scanner: `cookie-audit.ts`, `consent-flow-checker.ts`, `tracking-scan.ts`
205
+ - Skill-Reference: `references/dsgvo.md` § 25 TDDDG, Art. 7 DSGVO
206
+ - BGH-Rechtsprechung: `references/bgh-urteile.md` BGH I ZR 7/16
207
+ - OLG-Rechtsprechung: OLG Koeln 6 U 80/23 (Button-Gleichwertigkeit)
208
+ - Audit-Pattern: `references/audit-patterns.md` Phase 2 (Cookie-Audit)
@@ -0,0 +1,204 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Nuxt 3 + @nuxtjs/i18n (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: Nuxt-i18n DSE-Pattern fuer mehrsprachige Datenschutzerklaerung mit Locale-Routing.
6
+ ---
7
+
8
+ # Nuxt-i18n — DSE-Pattern (mehrsprachig)
9
+
10
+ ## Trigger / Detection
11
+
12
+ Repo enthaelt:
13
+ - `@nuxtjs/i18n` in Dependencies
14
+ - `nuxt.config.ts` mit `modules: ['@nuxtjs/i18n']`
15
+ - `i18n/locales/*.json` oder `i18n/locales/*.ts` Locale-Files
16
+ - `useI18n` / `$t` in Components
17
+ - Routes wie `/de/datenschutz`, `/en/privacy`
18
+
19
+ Pattern: DSE existiert in mehreren Sprachen — DE-Version ist rechtlich-verbindlich, EN-Version erklaerend. Locale-Detection bestimmt Default-View, Banner-Text und DSE-Inhalt.
20
+
21
+ ## Default-Verhalten (was passiert ohne Konfiguration)
22
+
23
+ - Default-Locale-Detection via `Accept-Language`-Header → kann Drittland-IP triggern
24
+ - Cookie `i18n_redirected` gesetzt ohne § 25 TDDDG-Check
25
+ - DSE-Versionen koennen drift (DE updated, EN nicht)
26
+ - Cookie-Banner-Text aus EN-Locale falls IP nicht-DE → User versteht Banner nicht
27
+ - Fehlende `hreflang`-Tags → SEO + Transparenz
28
+
29
+ ## Compliance-Risiken
30
+
31
+ | Risiko | Norm | Severity | Fix |
32
+ |---|---|---|---|
33
+ | `i18n_redirected`-Cookie ohne Consent | § 25 TDDDG | HOCH | als notwendiger Cookie deklarieren oder als Session entfernen |
34
+ | DSE-Versionen drift zwischen Sprachen | Art. 12 DSGVO Klarheit | KRITISCH | CI-Check `last-updated` synchron |
35
+ | Banner-Text in falscher Sprache | EuGH C-673/17 (Klarheit) | HOCH | DE-Default fuer DE-Visitors via IP-Geolocation |
36
+ | Locale-Detection mit IP-Geo | Art. 6 Abs. 1 DSGVO | MITTEL | nur Accept-Language, kein IP-Lookup |
37
+ | Fehlende `hreflang`-Tags | SEO / DSGVO Transparenz | NIEDRIG | `<link hreflang="de">` setzen |
38
+
39
+ ## Code-Pattern (sanitized)
40
+
41
+ ```typescript
42
+ // File: nuxt.config.ts
43
+ export default defineNuxtConfig({
44
+ modules: ['@nuxtjs/i18n'],
45
+ i18n: {
46
+ defaultLocale: 'de',
47
+ locales: [
48
+ { code: 'de', iso: 'de-DE', file: 'de.json', name: 'Deutsch' },
49
+ { code: 'en', iso: 'en-US', file: 'en.json', name: 'English' },
50
+ ],
51
+ strategy: 'prefix_except_default', // / = de, /en = en
52
+ detectBrowserLanguage: {
53
+ useCookie: true,
54
+ cookieKey: 'i18n_redirected',
55
+ cookieSecure: true,
56
+ cookieCrossOrigin: false,
57
+ redirectOn: 'root',
58
+ // KEIN IP-Geo-Lookup
59
+ },
60
+ },
61
+ });
62
+ ```
63
+
64
+ ```json
65
+ // File: i18n/locales/de.json (Auszug)
66
+ {
67
+ "cookie": {
68
+ "title": "Cookie-Einwilligung",
69
+ "intro": "Wir nutzen Cookies fuer notwendige Funktionen. Mit Ihrer Einwilligung zusaetzlich fuer Webanalyse.",
70
+ "moreInfo": "Details in der",
71
+ "privacyLink": "Datenschutzerklaerung",
72
+ "rejectAll": "Nur Notwendige",
73
+ "acceptAll": "Alle akzeptieren",
74
+ "settings": "Einstellungen"
75
+ },
76
+ "privacy": {
77
+ "title": "Datenschutzerklaerung",
78
+ "lastUpdated": "Stand: {date}",
79
+ "version": "Version {version}"
80
+ }
81
+ }
82
+ ```
83
+
84
+ ```json
85
+ // File: i18n/locales/en.json (Auszug — informational, NICHT rechtsverbindlich)
86
+ {
87
+ "cookie": {
88
+ "title": "Cookie Consent",
89
+ "intro": "We use cookies for essential functions. With your consent additionally for analytics.",
90
+ "moreInfo": "Details in our",
91
+ "privacyLink": "Privacy Policy",
92
+ "rejectAll": "Only Essential",
93
+ "acceptAll": "Accept All",
94
+ "settings": "Settings"
95
+ },
96
+ "privacy": {
97
+ "title": "Privacy Policy",
98
+ "lastUpdated": "Last updated: {date}",
99
+ "version": "Version {version}",
100
+ "legalNote": "This is a translation. The German version is legally binding."
101
+ }
102
+ }
103
+ ```
104
+
105
+ ```vue
106
+ <!-- File: pages/datenschutz.vue / pages/privacy.vue -->
107
+ <script setup lang="ts">
108
+ const { locale, t } = useI18n();
109
+ const localePath = useLocalePath();
110
+
111
+ useHead(() => ({
112
+ htmlAttrs: { lang: locale.value },
113
+ title: t('privacy.title'),
114
+ link: [
115
+ { rel: 'alternate', hreflang: 'de', href: '<placeholder-domain>/datenschutz' },
116
+ { rel: 'alternate', hreflang: 'en', href: '<placeholder-domain>/en/privacy' },
117
+ { rel: 'alternate', hreflang: 'x-default', href: '<placeholder-domain>/datenschutz' },
118
+ ],
119
+ }));
120
+
121
+ // Last-updated wird aus Frontmatter eines lokalen Content-Files gelesen
122
+ const { data: legal } = await useAsyncData('privacy', () =>
123
+ queryContent(`/legal/${locale.value}/privacy`).findOne()
124
+ );
125
+ </script>
126
+
127
+ <template>
128
+ <article class="legal">
129
+ <header>
130
+ <h1>{{ t('privacy.title') }}</h1>
131
+ <p class="meta">
132
+ {{ t('privacy.lastUpdated', { date: legal?.lastUpdated }) }}
133
+ — {{ t('privacy.version', { version: legal?.version }) }}
134
+ </p>
135
+ <p v-if="locale !== 'de'" class="legal-note">
136
+ <strong>{{ t('privacy.legalNote') }}</strong>
137
+ <RouterLink :to="localePath('/datenschutz', 'de')">DE</RouterLink>
138
+ </p>
139
+ </header>
140
+ <ContentDoc :path="`/legal/${locale}/privacy`" />
141
+ </article>
142
+ </template>
143
+ ```
144
+
145
+ ## AVV / DPA
146
+
147
+ - Hosting-Provider mit EU-SSR-Region — Art. 28 DSGVO
148
+ - Cookie `i18n_redirected` = First-Party, kein AVV
149
+ - Translation-Service (falls extern, z.B. DeepL Pro) — AVV erforderlich
150
+ - Content-Lieferant fuer DSE-Texte (Anwalt/Lawyer) — Werkvertrag, kein AVV (kein Daten-Verarbeiter)
151
+
152
+ ## DSE-Wording-Vorlage
153
+
154
+ ```markdown
155
+ ### Sprachversionen
156
+
157
+ Diese Datenschutzerklaerung ist in mehreren Sprachversionen verfuegbar.
158
+ Rechtsverbindlich ist ausschliesslich die **deutsche Version**. Andere
159
+ Sprachversionen dienen lediglich dem Verstaendnis.
160
+
161
+ **Verfuegbare Sprachen:**
162
+ - Deutsch (verbindlich): `<placeholder-domain>/datenschutz`
163
+ - English (informational): `<placeholder-domain>/en/privacy`
164
+
165
+ ### Sprach-Praeferenz-Cookie
166
+
167
+ Wir setzen einen Cookie `i18n_redirected` zur Speicherung Ihrer
168
+ Sprach-Praeferenz. Dieser Cookie ist technisch notwendig (Art. 6 Abs. 1
169
+ lit. f DSGVO i.V.m. § 25 Abs. 2 Nr. 2 TDDDG) und erfordert keine
170
+ Einwilligung.
171
+
172
+ **Speicherdauer:** 365 Tage. **Inhalt:** ausschliesslich der gewaehlte
173
+ Locale-Code (z.B. `de` oder `en`).
174
+ ```
175
+
176
+ ## Verify-Commands (Live-Probe)
177
+
178
+ ```bash
179
+ # 1. hreflang-Tags vorhanden
180
+ curl -sS https://<placeholder-domain>/datenschutz | grep -oE 'hreflang="[^"]+"' | sort -u
181
+ # Erwartung: hreflang="de", hreflang="en", hreflang="x-default"
182
+
183
+ # 2. lang-Attribut korrekt pro Locale
184
+ curl -sS https://<placeholder-domain>/datenschutz | grep -oE 'lang="[a-z]+"' | head -1
185
+ # Erwartung: lang="de"
186
+ curl -sS https://<placeholder-domain>/en/privacy | grep -oE 'lang="[a-z]+"' | head -1
187
+ # Erwartung: lang="en"
188
+
189
+ # 3. last-updated synchron zwischen Locales (CI-Check)
190
+ DE_DATE=$(grep -oE 'lastUpdated: [0-9-]+' content/legal/de/privacy.md | head -1)
191
+ EN_DATE=$(grep -oE 'lastUpdated: [0-9-]+' content/legal/en/privacy.md | head -1)
192
+ [ "$DE_DATE" = "$EN_DATE" ] && echo "OK" || echo "DRIFT: DE=$DE_DATE EN=$EN_DATE"
193
+
194
+ # 4. legalNote in EN-Version sichtbar
195
+ curl -sS https://<placeholder-domain>/en/privacy | grep -ic "legally binding\|german version"
196
+ # Erwartung: >=1
197
+ ```
198
+
199
+ ## Cross-References
200
+
201
+ - AEGIS-Scanner: `i18n-drift-checker.ts`, `dse-completeness-checker.ts`
202
+ - Skill-Reference: `references/dsgvo.md` Art. 12 (Klarheit), Art. 13 (Informationspflichten)
203
+ - BGH-Rechtsprechung: `references/bgh-urteile.md`
204
+ - Audit-Pattern: `references/audit-patterns.md` Phase 1 (DSE-Vollstaendigkeit), Phase 5 (Multi-Locale-Drift)
@@ -0,0 +1,197 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Nuxt 3 / Vue 3 (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: Nuxt 3 SSR vs Vue-only SPA Hydration-Pattern fuer DSGVO-konforme Tracker-Initialisierung.
6
+ ---
7
+
8
+ # Nuxt vs Vue-only — Hydration-Pattern (Tracker-Lazy-Init)
9
+
10
+ ## Trigger / Detection
11
+
12
+ Nuxt 3 Repo:
13
+ - `nuxt.config.ts` mit `ssr: true` (Default)
14
+ - `package.json` enthaelt `nuxt`
15
+ - `composables/`, `plugins/`, `server/` Top-Level Folders
16
+ - `useFetch`, `useState`, `useNuxtApp` in Components
17
+
18
+ Vue-only Repo:
19
+ - `vite.config.ts` + `vue` Dependency (kein nuxt)
20
+ - `index.html` als Entry mit `<div id="app">`
21
+ - `main.ts` mit `createApp`
22
+
23
+ Hydration-Issue: Nuxt rendered HTML serverseitig + hydratiert clientseitig. Tracker-Calls in `setup()` feuern auf BEIDEN Seiten = Daten doppelt + Tracker fuer NICHT-eingewilligte Users serverseitig geladen.
24
+
25
+ ## Default-Verhalten (was passiert ohne Konfiguration)
26
+
27
+ Nuxt-Default:
28
+ - `setup()` laeuft auf Server UND Client → fetch-Aufrufe doppelt
29
+ - `process.client` / `import.meta.client` Check fehlt oft → SSR-Crash bei `localStorage`-Access
30
+ - Tracker im Default-Layout `app.vue` laed ueber `<Head>` → vor jeder Banner-Logik
31
+ - Cookies werden vom Server ausgelesen ohne Consent-Check
32
+
33
+ Vue-only:
34
+ - Kein SSR, daher kein Hydration-Problem, ABER kein SEO ohne Pre-Rendering
35
+ - Tracker in `main.ts` startet bevor Banner-Komponente mounted
36
+
37
+ ## Compliance-Risiken
38
+
39
+ | Risiko | Norm | Severity | Fix |
40
+ |---|---|---|---|
41
+ | Tracker in Nuxt-Layout `<Head>` | § 25 TDDDG | KRITISCH | `useHead` nur nach `consent:granted` Event |
42
+ | `localStorage` in `setup()` ohne Client-Check | DSGVO Art. 25 | HOCH | `if (import.meta.client)` Guard |
43
+ | Server-Side Cookie-Read ohne Consent | § 25 TDDDG | KRITISCH | `useCookie` mit Consent-Pruefung |
44
+ | Hydration-Mismatch zeigt Banner kurz | UX / Vertrauen | MITTEL | `v-if="mounted"` + `useState('mounted', () => false)` |
45
+ | Drittland-CDN fuer Vue-Vendor-Bundle | Art. 44 DSGVO | HOCH | Self-host Bundle, EU-CDN |
46
+
47
+ ## Code-Pattern (sanitized)
48
+
49
+ ### Nuxt 3 Pattern
50
+
51
+ ```typescript
52
+ // File: plugins/consent.client.ts (Pflicht: .client.ts Suffix → nur Client)
53
+ import { defineNuxtPlugin } from '#app';
54
+
55
+ export default defineNuxtPlugin(() => {
56
+ const STORAGE_KEY = 'cookie-consent';
57
+ const raw = localStorage.getItem(STORAGE_KEY);
58
+ if (!raw) return;
59
+ try {
60
+ const consent = JSON.parse(raw);
61
+ if (consent.analytics) {
62
+ // Lazy-Load Tracker-Modul erst hier
63
+ import('~/utils/analytics').then(m => m.init());
64
+ }
65
+ } catch {
66
+ /* ignore */
67
+ }
68
+ });
69
+ ```
70
+
71
+ ```vue
72
+ <!-- File: components/CookieBanner.vue -->
73
+ <script setup lang="ts">
74
+ const mounted = useState('cookie-banner-mounted', () => false);
75
+ const visible = useState('cookie-banner-visible', () => false);
76
+
77
+ onMounted(() => {
78
+ mounted.value = true;
79
+ if (!localStorage.getItem('cookie-consent')) {
80
+ visible.value = true;
81
+ }
82
+ });
83
+
84
+ function persist(consent: { analytics: boolean; marketing: boolean }) {
85
+ const final = { necessary: true, ...consent, version: '1.0', timestamp: new Date().toISOString() };
86
+ localStorage.setItem('cookie-consent', JSON.stringify(final));
87
+ visible.value = false;
88
+ if (consent.analytics) import('~/utils/analytics').then(m => m.init());
89
+ }
90
+ </script>
91
+
92
+ <template>
93
+ <ClientOnly>
94
+ <Teleport to="body">
95
+ <aside v-if="mounted && visible" role="dialog" class="cookie-banner">
96
+ <p>Cookie-Hinweis-Text. <NuxtLink to="/datenschutz">Datenschutz</NuxtLink></p>
97
+ <button @click="persist({ analytics: false, marketing: false })">Nur Notwendige</button>
98
+ <button @click="persist({ analytics: true, marketing: true })">Alle akzeptieren</button>
99
+ </aside>
100
+ </Teleport>
101
+ </ClientOnly>
102
+ </template>
103
+ ```
104
+
105
+ ```typescript
106
+ // File: nuxt.config.ts
107
+ export default defineNuxtConfig({
108
+ ssr: true,
109
+ app: {
110
+ head: {
111
+ htmlAttrs: { lang: 'de' },
112
+ // KEINE Tracker-Scripts hier — bleiben aussen
113
+ },
114
+ },
115
+ routeRules: {
116
+ '/api/track/**': { cors: false }, // Same-Origin enforced
117
+ },
118
+ });
119
+ ```
120
+
121
+ ### Vue-only Pattern (kein SSR)
122
+
123
+ ```typescript
124
+ // File: src/main.ts
125
+ import { createApp } from 'vue';
126
+ import App from './App.vue';
127
+
128
+ // KEIN Tracker-Init hier
129
+ const app = createApp(App);
130
+
131
+ window.addEventListener('consent:granted', async (e: any) => {
132
+ if (e.detail?.analytics) {
133
+ const m = await import('./trackers/analytics');
134
+ m.init();
135
+ }
136
+ });
137
+
138
+ app.mount('#app');
139
+ ```
140
+
141
+ ## AVV / DPA
142
+
143
+ Nuxt SSR + Vercel/Netlify Edge:
144
+ - SSR-Function-Region MUSS auf EU gepinnt sein (`vercel.json` `regions: ['fra1']`)
145
+ - AVV mit Hosting-Provider Pflicht
146
+ - Bei Nitro-Self-Host: keine zusaetzliche AVV, aber Hosting-AVV bleibt
147
+
148
+ Vue-only Static:
149
+ - Hosting-AVV
150
+ - Optional: Form-Service / Backend-API (separate AVV)
151
+
152
+ ## DSE-Wording-Vorlage
153
+
154
+ ```markdown
155
+ ### Server-Side Rendering und Hosting
156
+
157
+ Diese Webseite verwendet Server-Side Rendering (SSR) bei Nuxt 3. Initiale
158
+ HTML-Generierung findet auf <placeholder-hosting-provider>-Servern in der
159
+ Region <placeholder-eu-region> statt.
160
+
161
+ **Verarbeitete Daten beim Initial-Render:**
162
+ - IP-Adresse (anonymisiert auf /24 in Server-Logs)
163
+ - User-Agent
164
+ - Sprach-Header (`Accept-Language`)
165
+ - Referrer (ohne Query-String)
166
+
167
+ **Rechtsgrundlage:** Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an
168
+ sicherem Webseitenbetrieb).
169
+ **Speicherdauer Logs:** 14 Tage, danach Loeschung.
170
+ ```
171
+
172
+ ## Verify-Commands (Live-Probe)
173
+
174
+ ```bash
175
+ # 1. SSR-HTML enthaelt KEINEN Tracker-Script
176
+ curl -sS https://<placeholder-domain>/ | grep -ic "<script[^>]*analytics\|gtag\|fbq"
177
+ # Erwartung: 0
178
+
179
+ # 2. Banner nicht im initial SSR-HTML (vermeidet Flash)
180
+ curl -sS https://<placeholder-domain>/ | grep -ic "cookie-banner"
181
+ # Erwartung: 0 (wird via ClientOnly nachgeladen)
182
+
183
+ # 3. Region-Check (Nuxt SSR Edge)
184
+ curl -sI https://<placeholder-domain>/ | grep -i "x-vercel-id\|server"
185
+ # Erwartung: fra1 / cdg1 / ams1 etc. (EU-Region)
186
+
187
+ # 4. Hydration ohne Mismatch
188
+ # Browser-Console: kein Vue-Warning "[Vue warn]: Hydration mismatch"
189
+ ```
190
+
191
+ ## Cross-References
192
+
193
+ - AEGIS-Scanner: `ssr-data-leak-checker.ts`, `tracking-scan.ts`, `region-pinning-checker.ts`
194
+ - Skill-Reference: `references/dsgvo.md` Art. 44 (Drittland), § 25 TDDDG
195
+ - BGH-Rechtsprechung: `references/bgh-urteile.md`
196
+ - EDPB: `references/eu-edpb-guidelines.md` (Schrems II Folgen)
197
+ - Audit-Pattern: `references/audit-patterns.md` Phase 3 (Drittland-Audit)