@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,135 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Next.js (Vercel) — Framework
4
+ last-checked: 2026-05-02
5
+ purpose: Pattern fuer ENV-Driven Tracking-Loading mit Build-Arg-Pitfall-Schutz.
6
+ ---
7
+
8
+ # Next.js — ENV-Driven Tracking (Pattern)
9
+
10
+ ## 1. Default-Verhalten / Pitfalls
11
+
12
+ `NEXT_PUBLIC_*`-ENV-Vars werden zur **Build-Zeit** im Client-Bundle eingelogged (string-replace).
13
+ Wenn das Deployment-Tool (Dokploy / Coolify / Nixpacks / Railway) die ENV nur als
14
+ **Runtime-ENV** durchreicht aber nicht als `--build-arg` weitergibt, landet `undefined` im Bundle.
15
+
16
+ ## 2. Compliance-Risiken
17
+
18
+ | Risiko | Wirkung | Fix |
19
+ |---|---|---|
20
+ | Build-Arg-Pitfall | Tracker-URL leer → Tracker laeuft nicht | Build-Arg-Konfiguration |
21
+ | Tracker laedt vor Consent | § 25 TDDDG-Verstoss | ConsentGate |
22
+ | Tracker-URL hardcoded | Drift bei Subdomain-Wechsel | env-driven mit Default |
23
+ | Bundle leakt Brand-Codename | Public-OPSec-Issue | env-driven mit Brand-eigener Subdomain |
24
+
25
+ ## 3. Code-Pattern (sanitized)
26
+
27
+ ```ts
28
+ // File: src/components/analytics/UmamiScript.tsx
29
+ 'use client';
30
+
31
+ import Script from 'next/script';
32
+ import { useConsent } from '@/lib/consent';
33
+
34
+ const ANALYTICS_HOST = (
35
+ process.env.UMAMI_HOST ||
36
+ process.env.NEXT_PUBLIC_ANALYTICS_HOST ||
37
+ 'https://metrics.example.com' // Default = Brand-eigene Subdomain
38
+ ).replace(/\/+$/, '');
39
+
40
+ const WEBSITE_ID = process.env.NEXT_PUBLIC_UMAMI_WEBSITE_ID;
41
+
42
+ export default function UmamiScript() {
43
+ const { hasConsented } = useConsent();
44
+
45
+ if (!hasConsented('analytics') || !WEBSITE_ID) {
46
+ return null;
47
+ }
48
+
49
+ return (
50
+ <Script
51
+ defer
52
+ src={`${ANALYTICS_HOST}/script.js`}
53
+ data-website-id={WEBSITE_ID}
54
+ strategy="afterInteractive"
55
+ />
56
+ );
57
+ }
58
+ ```
59
+
60
+ ```dockerfile
61
+ # Dockerfile (builder-Stage)
62
+ FROM node:22-alpine AS builder
63
+
64
+ # Pflicht: NEXT_PUBLIC_*-Vars muessen ARG + ENV im Build-Stage sein
65
+ ARG NEXT_PUBLIC_UMAMI_WEBSITE_ID
66
+ ARG NEXT_PUBLIC_ANALYTICS_HOST
67
+ ENV NEXT_PUBLIC_UMAMI_WEBSITE_ID=$NEXT_PUBLIC_UMAMI_WEBSITE_ID
68
+ ENV NEXT_PUBLIC_ANALYTICS_HOST=$NEXT_PUBLIC_ANALYTICS_HOST
69
+
70
+ # ... rest
71
+ ```
72
+
73
+ ```yaml
74
+ # Dokploy Build-Args (oder vergleichbares Tool)
75
+ buildArgs:
76
+ NEXT_PUBLIC_UMAMI_WEBSITE_ID: "abc-123"
77
+ NEXT_PUBLIC_ANALYTICS_HOST: "https://metrics.example.com"
78
+ ```
79
+
80
+ ## 4. Server-Component-Variante (besser, kein Bundle-Leak)
81
+
82
+ ```ts
83
+ // File: src/app/layout.tsx (Server-Component)
84
+ import { headers } from 'next/headers';
85
+
86
+ export default async function RootLayout({ children }) {
87
+ const analyticsHost = process.env.UMAMI_HOST; // server-only, kein NEXT_PUBLIC_
88
+
89
+ return (
90
+ <html>
91
+ <head>
92
+ {analyticsHost && (
93
+ <script
94
+ defer
95
+ src={`${analyticsHost}/script.js`}
96
+ data-website-id={process.env.UMAMI_WEBSITE_ID}
97
+ />
98
+ )}
99
+ </head>
100
+ <body>{children}</body>
101
+ </html>
102
+ );
103
+ }
104
+ ```
105
+
106
+ Server-Component-Variante:
107
+ - Keine NEXT_PUBLIC_-Pflicht (server-only env)
108
+ - Container-Runtime-ENV reicht (kein Build-Arg)
109
+ - Kein Code-Var-Leak im Public-Bundle
110
+
111
+ ## 5. DSE-Wording-Vorlage
112
+
113
+ > Wir verwenden Umami (selbst-gehostete Webanalyse) auf `metrics.example.com`. Daten
114
+ > werden ohne Cookies erhoben + ohne Personenbezug ueber DAU-Hash. Erhebung erfolgt
115
+ > mit Ihrer Einwilligung (Art. 6 Abs. 1 lit. a DSGVO + § 25 Abs. 1 TDDDG).
116
+
117
+ ## 6. Verify-Commands
118
+
119
+ ```bash
120
+ # 1. Bundle-Check (NEXT_PUBLIC_-Pfad)
121
+ docker exec <container> grep -rE "metrics.example.com|UMAMI_WEBSITE_ID" \
122
+ /app/.next/server/chunks/ /app/.next/static/ 2>&1 | head -3
123
+
124
+ # 2. SSR-Render-Check (Server-Component-Pfad)
125
+ curl -s https://example.com | grep -oE 'metrics.example.com'
126
+
127
+ # 3. Pre-Consent-Loading-Pruefung
128
+ curl -s https://example.com | grep -oE '<script[^>]*metrics.example.com[^>]*>'
129
+ # Erwartung: kein direkter Script-Tag ohne ConsentGate-Wrapper
130
+ ```
131
+
132
+ ## 7. Az.-Anker
133
+
134
+ - EuGH C-673/17 Planet49 (Cookie-Einwilligung)
135
+ - BGH I ZR 7/16 (DSGVO-Pflichtinformation als UWG-Schutzgesetz)
@@ -0,0 +1,93 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ purpose: Next.js (App Router 14+) Strict-Dynamic-CSP via middleware/proxy.ts
4
+ references: audit-patterns.md HIGH-RISK-CSP-Migration, references/templates/proxy-strict-dynamic.ts.example
5
+ last-checked: 2026-05-01
6
+ ---
7
+
8
+ # Next.js — Strict-Dynamic-CSP via middleware/proxy
9
+
10
+ ## Anlass
11
+
12
+ `script-src 'unsafe-inline'` ist die häufigste CSP-Schwäche in Next.js-Sites. Strict-Dynamic + nonce ersetzt das ohne legitime inline-Scripts zu brechen.
13
+
14
+ ## Pflicht-Migration-Strategy (HIGH-RISK)
15
+
16
+ Diese Migration darf NIE direct-push sein:
17
+ 1. Feature-Branch erstellen
18
+ 2. middleware.ts mit nonce-Generation + CSP-Header
19
+ 3. layout.tsx liest `headers().get('x-nonce')` und gibt es an inline-Scripts
20
+ 4. Stripe-Elements + Supabase-OAuth + Google-Maps + GA-Snippets jeweils mit `nonce={nonce}`-Prop
21
+ 5. Intensive Tests aller Interaktiv-Features
22
+ 6. Stakeholder-Review
23
+ 7. Merge nur nach Approval
24
+
25
+ ## Code-Pattern
26
+
27
+ Siehe vollständiges Snippet: `references/templates/proxy-strict-dynamic.ts.example`
28
+
29
+ Kern-Idee:
30
+ ```ts
31
+ // middleware.ts (Next.js 14+)
32
+ const nonce = btoa(crypto.getRandomValues(new Uint8Array(16)).join(''));
33
+ response.headers.set('Content-Security-Policy',
34
+ `script-src 'self' 'nonce-${nonce}' 'strict-dynamic' https:`);
35
+ response.headers.set('x-nonce', nonce);
36
+ ```
37
+
38
+ ```tsx
39
+ // layout.tsx
40
+ import { headers } from 'next/headers';
41
+ const nonce = headers().get('x-nonce') ?? '';
42
+ return <Script id="bootstrap" nonce={nonce}>...</Script>;
43
+ ```
44
+
45
+ ## CSP-Direktiven-Checkliste
46
+
47
+ | Direktive | Empfehlung | Warum |
48
+ |-----------|------------|-------|
49
+ | `default-src 'self'` | Pflicht | Restriktiver Default |
50
+ | `script-src 'self' 'nonce-XXX' 'strict-dynamic' https:` | Pflicht | XSS-Schutz |
51
+ | `style-src 'self' 'nonce-XXX'` | Empfohlen | inline-Style nur mit Nonce |
52
+ | `img-src 'self' data: https://<your-cdn>` | Pflicht | Bild-Quellen begrenzt |
53
+ | `connect-src 'self' https://<api> https://<analytics>` | Pflicht | API-Whitelist |
54
+ | `frame-src 'self' https://<embed>` | Pflicht | iFrame-Whitelist |
55
+ | `frame-ancestors 'none'` | Pflicht | Clickjacking-Schutz |
56
+ | `object-src 'none'` | Pflicht | Flash-Disable |
57
+ | `base-uri 'self'` | Pflicht | Base-Tag-Hijack-Schutz |
58
+ | `form-action 'self'` | Pflicht | Form-Action-Beschränkung |
59
+ | `upgrade-insecure-requests` | Empfohlen | HTTPS-Auto-Upgrade |
60
+
61
+ ## Defense-in-Depth Headers (zusätzlich zur CSP)
62
+
63
+ ```ts
64
+ response.headers.set('X-Frame-Options', 'DENY');
65
+ response.headers.set('X-Content-Type-Options', 'nosniff');
66
+ response.headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
67
+ response.headers.set('Strict-Transport-Security',
68
+ 'max-age=63072000; includeSubDomains; preload');
69
+ response.headers.set('Permissions-Policy',
70
+ 'camera=(), microphone=(), geolocation=(self), interest-cohort=()');
71
+ ```
72
+
73
+ ## Verify-Commands
74
+
75
+ ```bash
76
+ # CSP-Header prüfen
77
+ curl -sIS https://<your-domain> | grep -i 'content-security-policy'
78
+ # erwarte: 'nonce-...' + 'strict-dynamic'; KEIN 'unsafe-inline'
79
+
80
+ # Mozilla Observatory-Score
81
+ curl -s "https://http-observatory.security.mozilla.org/api/v1/analyze?host=<your-domain>" \
82
+ -X POST | jq .grade
83
+ # erwarte: A oder A+
84
+
85
+ # CSP-Reporting (optional, für Drift-Detection)
86
+ # response.headers.set('Content-Security-Policy-Report-Only', '...; report-uri /api/csp-report');
87
+ ```
88
+
89
+ ## Az.-Anker (CSP allgemein)
90
+
91
+ - DSGVO Art. 32 — TOMs (CSP ist anerkannte TOM)
92
+ - ENISA + BSI-Empfehlungen für moderne Web-Sicherheit
93
+ - OWASP Top 10 2023 — A03:2021 Injection
@@ -0,0 +1,121 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Stripe Inc. (USA)
4
+ provider-AVV-status: Standardvertrag verfügbar (Stripe DPA + SCC)
5
+ last-checked: 2026-05-01
6
+ ---
7
+
8
+ # Stripe — PCI-DSS-konformer Checkout + DSE-Wording
9
+
10
+ ## 1. PCI-DSS-Strategie: Stripe-hosted Checkout (Pflicht für KMU)
11
+
12
+ Pflicht-Strategy: **Stripe Elements oder Stripe Checkout** — Karten-Daten passieren **nie** den eigenen Server.
13
+
14
+ - ✅ `stripe-js` mit `<CardElement />`: Karten-Daten gehen direkt vom Browser zu Stripe
15
+ - ✅ `Stripe.redirectToCheckout()`: hosted-Page bei Stripe
16
+ - ❌ NICHT: Karten-Daten über eigenen Server entgegennehmen — würde PCI-DSS-Audit-Pflicht triggern (Self-Audit oder QSA)
17
+
18
+ ## 2. Compliance-Risiken
19
+
20
+ | Risiko | Wirkung | Fix |
21
+ |--------|---------|-----|
22
+ | Sub-Processor in USA | Drittland-Transfer | DPA + SCC + DSE-Erwähnung |
23
+ | Risiko-Score-Cookies | TDDDG § 25 | Pre-Consent: kein Stripe-Skript |
24
+ | Webhook-Signatur-Prüfung fehlt | Unauthorized Charge / IDOR | `stripe.webhooks.constructEvent()` Pflicht |
25
+ | `card.number` im Server-Log | PCI-DSS-Verstoss + Datenschutz | Logger sanitisieren |
26
+
27
+ ## 3. Code-Pattern (sanitized)
28
+
29
+ ```ts
30
+ // File: src/app/api/stripe/webhook/route.ts
31
+ // Webhook-Signatur-Verifikation (CWE-345 Schutz)
32
+ import Stripe from 'stripe';
33
+ import { NextRequest, NextResponse } from 'next/server';
34
+
35
+ export const runtime = 'nodejs';
36
+
37
+ const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, { apiVersion: '2025-06-30.basil' });
38
+
39
+ export async function POST(req: NextRequest) {
40
+ const sig = req.headers.get('stripe-signature');
41
+ if (!sig) return NextResponse.json({ error: 'missing signature' }, { status: 400 });
42
+
43
+ const buf = await req.text(); // raw body Pflicht für Signatur
44
+ let event: Stripe.Event;
45
+ try {
46
+ event = stripe.webhooks.constructEvent(buf, sig, process.env.STRIPE_WEBHOOK_SECRET!);
47
+ } catch (err) {
48
+ return NextResponse.json({ error: `Webhook signature mismatch: ${err}` }, { status: 400 });
49
+ }
50
+
51
+ // Idempotency: bei replay-Webhook keine doppelte Aktion
52
+ // ... handle event types ...
53
+
54
+ return NextResponse.json({ received: true });
55
+ }
56
+ ```
57
+
58
+ ```tsx
59
+ // File: src/components/checkout/StripeButton.tsx
60
+ // Pre-consent OHNE Stripe-Skript-Load
61
+ 'use client';
62
+ import { useEffect, useState } from 'react';
63
+ import { loadStripe } from '@stripe/stripe-js';
64
+
65
+ export function StripeButton({ priceId }: { priceId: string }) {
66
+ const [stripe, setStripe] = useState<any>(null);
67
+
68
+ useEffect(() => {
69
+ // Erst nach Consent (oder hier explizit beim Klick erst loadStripe rufen)
70
+ loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY!).then(setStripe);
71
+ }, []);
72
+
73
+ async function handleCheckout() {
74
+ if (!stripe) return;
75
+ const res = await fetch('/api/stripe/checkout-session', { method: 'POST', body: JSON.stringify({ priceId }) });
76
+ const { sessionId } = await res.json();
77
+ await stripe.redirectToCheckout({ sessionId });
78
+ }
79
+
80
+ return <button onClick={handleCheckout}>Zahlungspflichtig bestellen</button>;
81
+ // ^^^ Pflicht-Wording § 312j Abs. 3 BGB
82
+ }
83
+ ```
84
+
85
+ ## 4. AVV / DPA
86
+
87
+ - **DPA-Link**: https://stripe.com/legal/dpa
88
+ - **SCC**: Modul 2 + 3 (Stripe als Processor + Sub-Processor-Liste)
89
+ - **Sub-Processors**: https://stripe.com/legal/data-processing-providers
90
+
91
+ ## 5. DSE-Wording-Vorlage
92
+
93
+ > **Zahlungsabwicklung (Stripe).** Für Zahlungen nutzen wir den Service von
94
+ > Stripe Payments Europe Limited (1 Grand Canal Street Lower, Grand Canal
95
+ > Dock, Dublin, Irland) sowie Stripe Inc. (354 Oyster Point Boulevard,
96
+ > South San Francisco, CA 94080, USA) als Auftragsverarbeiter im Sinne
97
+ > von Art. 28 DSGVO. Karten-Daten werden direkt von Ihrem Browser an
98
+ > Stripe übermittelt — wir verarbeiten diese nicht selbst. Für die
99
+ > Datenübermittlung in die USA gelten die EU-Standardvertragsklauseln
100
+ > (Modul 2 + 3) sowie das EU-US Data Privacy Framework (Stripe Inc. ist
101
+ > DPF-zertifiziert). Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO
102
+ > (Vertragserfüllung). Datenschutz Stripe: https://stripe.com/de/privacy.
103
+
104
+ ## 6. Verify-Commands
105
+
106
+ ```bash
107
+ # Webhook-Konfiguration
108
+ stripe webhooks list
109
+
110
+ # Test-Webhook lokal
111
+ stripe listen --forward-to https://<your-domain>/api/stripe/webhook
112
+
113
+ # Verify Pflicht-Header an Webhook-Endpoint
114
+ curl -X POST https://<your-domain>/api/stripe/webhook -H "stripe-signature: invalid"
115
+ # erwarte: 400 mit "signature mismatch"
116
+ ```
117
+
118
+ ## 7. Az.-Anker
119
+
120
+ - BGH I ZR 161/24 (Kuendigungsbutton, 22.05.2025) — § 312k betrifft Stripe-Subscription-Modelle
121
+ - BGH VIII ZR 70/08 (Widerrufsbelehrung) — Pflicht-Belehrung vor Zahlung
@@ -0,0 +1,294 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Ruby on Rails (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: Rails Cookies-Helper + Concern-Pattern fuer Tracker-Authorization.
6
+ ---
7
+
8
+ # Rails — Cookie-Banner (Pattern)
9
+
10
+ ## Trigger / Detection
11
+
12
+ Repo enthaelt:
13
+ - `rails` in `Gemfile` (Version >= 7.x empfohlen)
14
+ - `app/controllers/application_controller.rb`
15
+ - `app/views/layouts/application.html.erb`
16
+ - Optional: `app/javascript/` (Hotwire/Stimulus) oder Webpacker
17
+ - Optional: `config/initializers/cookies_serializer.rb`
18
+
19
+ ## Default-Verhalten (was passiert ohne Konfiguration)
20
+
21
+ - Default `cookies` Helper signiert/verschluesselt Cookies → Banner-JS kann nicht lesen
22
+ - Tracker-Tags in `application.html.erb` `<head>` direkt eingebunden
23
+ - Session-Cookie ohne explizite `same_site` Setzung
24
+ - Cookies ohne `secure: true` Default in Development → Drift zu Prod
25
+ - Default-Logger schreibt Klartext-IP
26
+
27
+ ## Compliance-Risiken
28
+
29
+ | Risiko | Norm | Severity | Fix |
30
+ |---|---|---|---|
31
+ | Tracker-Tag in Layout-`<head>` | § 25 TDDDG | KRITISCH | Conditional `if cookies[:consent]&.dig('analytics')` |
32
+ | Encrypted Consent-Cookie unleserlich fuer JS | UX/DSGVO | MITTEL | Plain `cookies[:cookie_consent]` (nicht signed) |
33
+ | Session-Cookie ohne SameSite | Art. 32 DSGVO | HOCH | `config.action_dispatch.cookies_same_site_protection = :lax` |
34
+ | Klartext-IP in Production-Log | Art. 5 lit. f | HOCH | Custom `Rails.logger` Filter |
35
+ | `protect_from_forgery` nicht erzwungen | Art. 32 DSGVO | KRITISCH | nicht `with: :null_session` global |
36
+
37
+ ## Code-Pattern (sanitized)
38
+
39
+ ```ruby
40
+ # File: config/initializers/cookies.rb
41
+ Rails.application.config.action_dispatch.cookies_same_site_protection = :lax
42
+ Rails.application.config.action_dispatch.use_cookies_with_metadata = true
43
+ ```
44
+
45
+ ```ruby
46
+ # File: app/controllers/concerns/consent_concern.rb
47
+ module ConsentConcern
48
+ extend ActiveSupport::Concern
49
+
50
+ CONSENT_DEFAULT = {
51
+ 'necessary' => true,
52
+ 'analytics' => false,
53
+ 'marketing' => false
54
+ }.freeze
55
+
56
+ included do
57
+ helper_method :user_consent, :analytics_consented?, :marketing_consented?
58
+ before_action :load_consent
59
+ end
60
+
61
+ def user_consent
62
+ @user_consent ||= CONSENT_DEFAULT
63
+ end
64
+
65
+ def analytics_consented?
66
+ user_consent['analytics'] == true
67
+ end
68
+
69
+ def marketing_consented?
70
+ user_consent['marketing'] == true
71
+ end
72
+
73
+ private
74
+
75
+ def load_consent
76
+ raw = cookies[:cookie_consent]
77
+ return unless raw
78
+
79
+ parsed = JSON.parse(raw) rescue nil
80
+ return unless parsed.is_a?(Hash)
81
+
82
+ @user_consent = CONSENT_DEFAULT.merge(parsed)
83
+ end
84
+ end
85
+ ```
86
+
87
+ ```ruby
88
+ # File: app/controllers/application_controller.rb
89
+ class ApplicationController < ActionController::Base
90
+ include ConsentConcern
91
+
92
+ protect_from_forgery with: :exception
93
+
94
+ before_action :set_security_headers
95
+
96
+ private
97
+
98
+ def set_security_headers
99
+ response.headers['X-Content-Type-Options'] = 'nosniff'
100
+ response.headers['Referrer-Policy'] = 'strict-origin-when-cross-origin'
101
+ response.headers['Permissions-Policy'] = 'geolocation=(), camera=(), microphone=()'
102
+ end
103
+ end
104
+ ```
105
+
106
+ ```ruby
107
+ # File: app/controllers/consent_controller.rb
108
+ class ConsentController < ApplicationController
109
+ skip_before_action :verify_authenticity_token, only: [:create], if: -> { csrf_token_via_header? }
110
+
111
+ def create
112
+ consent = consent_params.merge(
113
+ 'necessary' => true,
114
+ 'version' => '1.0',
115
+ 'timestamp' => Time.current.iso8601
116
+ )
117
+
118
+ # Server-Log fuer Nachweispflicht
119
+ ConsentLog.create!(
120
+ ip_hash: ip_hash(request.remote_ip),
121
+ user_agent: (request.user_agent || '').first(200),
122
+ consent: consent.to_json
123
+ )
124
+
125
+ cookies[:cookie_consent] = {
126
+ value: consent.to_json,
127
+ expires: 12.months.from_now,
128
+ secure: Rails.env.production?,
129
+ httponly: false, # Banner-JS muss lesen
130
+ same_site: :lax,
131
+ path: '/'
132
+ }
133
+
134
+ head :no_content
135
+ end
136
+
137
+ private
138
+
139
+ def consent_params
140
+ params.require(:consent).permit(:analytics, :marketing).to_h.transform_values { |v| v == true || v == 'true' }
141
+ end
142
+
143
+ def ip_hash(ip)
144
+ salt = Rails.application.credentials.dig(:ip_hash_salt) || ''
145
+ Digest::SHA256.hexdigest(ip + salt)[0...16]
146
+ end
147
+
148
+ def csrf_token_via_header?
149
+ request.headers['X-CSRF-Token'].present?
150
+ end
151
+ end
152
+ ```
153
+
154
+ ```ruby
155
+ # File: config/routes.rb (Auszug)
156
+ Rails.application.routes.draw do
157
+ resource :consent, only: [:create]
158
+ # ...
159
+ end
160
+ ```
161
+
162
+ ```erb
163
+ <%# File: app/views/layouts/_cookie_banner.html.erb %>
164
+ <% unless cookies[:cookie_consent] %>
165
+ <aside id="cookie-banner" role="dialog" aria-label="Cookie-Einwilligung" class="cookie-banner">
166
+ <p>
167
+ Wir nutzen Cookies fuer notwendige Funktionen. Mit Ihrer Einwilligung
168
+ zusaetzlich fuer Webanalyse. Details:
169
+ <%= link_to 'Datenschutzerklaerung', privacy_path %>.
170
+ </p>
171
+ <div class="cookie-actions">
172
+ <button type="button" data-action="reject-all" class="btn-secondary">
173
+ Nur Notwendige
174
+ </button>
175
+ <button type="button" data-action="accept-all" class="btn-primary">
176
+ Alle akzeptieren
177
+ </button>
178
+ </div>
179
+ </aside>
180
+
181
+ <script>
182
+ (() => {
183
+ const csrf = document.querySelector('meta[name="csrf-token"]')?.content;
184
+ const submit = (analytics, marketing) => {
185
+ fetch('<%= consent_path %>', {
186
+ method: 'POST',
187
+ headers: {
188
+ 'Content-Type': 'application/json',
189
+ 'X-CSRF-Token': csrf,
190
+ Accept: 'application/json'
191
+ },
192
+ body: JSON.stringify({ consent: { analytics, marketing } })
193
+ }).then(() => {
194
+ document.getElementById('cookie-banner').remove();
195
+ if (analytics) {
196
+ const s = document.createElement('script');
197
+ s.src = 'https://<placeholder-eu-analytics-host>/script.js';
198
+ s.async = true;
199
+ document.head.appendChild(s);
200
+ }
201
+ });
202
+ };
203
+
204
+ document.querySelector('[data-action="reject-all"]').onclick = () => submit(false, false);
205
+ document.querySelector('[data-action="accept-all"]').onclick = () => submit(true, true);
206
+ })();
207
+ </script>
208
+ <% end %>
209
+ ```
210
+
211
+ ```erb
212
+ <%# File: app/views/layouts/application.html.erb %>
213
+ <!DOCTYPE html>
214
+ <html lang="de">
215
+ <head>
216
+ <meta charset="utf-8">
217
+ <%= csrf_meta_tags %>
218
+ <%= csp_meta_tag %>
219
+ <title><%= content_for?(:title) ? yield(:title) : '<placeholder-site-name>' %></title>
220
+
221
+ <%# Tracker NUR conditional %>
222
+ <% if analytics_consented? %>
223
+ <script src="https://<placeholder-eu-analytics-host>/script.js" async></script>
224
+ <% end %>
225
+ </head>
226
+ <body>
227
+ <%= yield %>
228
+ <%= render 'layouts/cookie_banner' %>
229
+ </body>
230
+ </html>
231
+ ```
232
+
233
+ ## AVV / DPA
234
+
235
+ - Hosting-Provider (Heroku EU / Fly.io / Render) — Art. 28 DSGVO
236
+ - Datenbank (Postgres EU / RDS Frankfurt) — AVV
237
+ - Analytics-Provider (Plausible EU / Matomo) — AVV
238
+ - Mailer (SES EU / Postmark) — AVV
239
+
240
+ ## DSE-Wording-Vorlage
241
+
242
+ ```markdown
243
+ ### Cookies (Rails-Anwendung)
244
+
245
+ Diese Webseite verwendet folgende Cookies:
246
+
247
+ **Notwendige Cookies:**
248
+ - `_<placeholder-app>_session` — Session-Verwaltung, Session-Dauer (signed/encrypted)
249
+ - `_csrf_token` — CSRF-Schutz, Session-Dauer
250
+ - `cookie_consent` — Speicherung Ihrer Einwilligung, 12 Monate (Klartext-JSON, damit JS lesen kann)
251
+
252
+ **Analyse-Cookies (Opt-In, mit Einwilligung):**
253
+ - gesetzt durch <placeholder-analytics-provider>
254
+ - Speicherdauer: <placeholder-days> Tage
255
+ - EU-Hosting: <placeholder-eu-country>
256
+
257
+ **Rechtsgrundlage:** § 25 TDDDG i.V.m. Art. 6 Abs. 1 lit. a DSGVO
258
+ (fuer Opt-In-Cookies) bzw. lit. f DSGVO (fuer notwendige Cookies).
259
+ **Widerruf:** [Cookie-Einstellungen](#cookie-settings) im Footer.
260
+ ```
261
+
262
+ ## Verify-Commands (Live-Probe)
263
+
264
+ ```bash
265
+ # 1. Banner sichtbar bei Erstbesuch
266
+ curl -sS https://<placeholder-domain>/ | grep -ic "cookie-banner"
267
+
268
+ # 2. cookie_consent NICHT signed (JS-readable)
269
+ curl -X POST https://<placeholder-domain>/consent \
270
+ -H "Content-Type: application/json" \
271
+ -H "X-CSRF-Token: <placeholder-csrf>" \
272
+ -d '{"consent":{"analytics":false,"marketing":false}}' -i \
273
+ | grep -i "set-cookie:.*cookie_consent"
274
+ # Erwartung: JSON-String, NICHT base64-encrypted
275
+
276
+ # 3. Tracker erst nach Consent
277
+ curl -sS https://<placeholder-domain>/ | grep -ic "<placeholder-eu-analytics-host>"
278
+ # Erwartung: 0
279
+
280
+ curl -sS -H 'Cookie: cookie_consent=%7B%22analytics%22%3Atrue%7D' https://<placeholder-domain>/ \
281
+ | grep -ic "<placeholder-eu-analytics-host>"
282
+ # Erwartung: >=1
283
+
284
+ # 4. Security-Headers
285
+ curl -sI https://<placeholder-domain>/ | grep -iE "x-content-type-options|referrer-policy"
286
+ ```
287
+
288
+ ## Cross-References
289
+
290
+ - AEGIS-Scanner: `cookie-flags-checker.ts`, `consent-flow-checker.ts`, `csrf-config-checker.ts`
291
+ - Skill-Reference: `references/dsgvo.md` § 25 TDDDG, Art. 7 DSGVO
292
+ - BGH-Rechtsprechung: `references/bgh-urteile.md` BGH I ZR 7/16
293
+ - OLG Koeln 6 U 80/23 (Button-Gleichwertigkeit)
294
+ - Audit-Pattern: `references/audit-patterns.md` Phase 2 (Cookie-Audit)