@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,371 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Strapi v4 / v5 (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: Strapi Plugin Pattern fuer DSA Art. 16 Notice-and-Action Compliance.
6
+ ---
7
+
8
+ # Strapi — Notice-and-Action Plugin Pattern (DSA Art. 16)
9
+
10
+ ## Trigger / Detection
11
+
12
+ Repo enthaelt:
13
+ - `@strapi/strapi` mit User-Generated-Content (Comments, Submissions, Reviews)
14
+ - Optional: `src/plugins/notice-and-action/` Custom-Plugin
15
+ - Service-Provider faellt unter DSA (Digital Services Act EU 2022/2065)
16
+ - Optional: `src/api/dsa-report/` Content-Type fuer Reports
17
+
18
+ DSA Art. 16: Hosting-Provider muessen einen Mechanismus zur Meldung rechtswidriger Inhalte bereitstellen ("Notice-and-Action"). Pflicht seit 17. Februar 2024 fuer alle Hosting-Provider (auch kleine).
19
+
20
+ ## Default-Verhalten (was passiert ohne Konfiguration)
21
+
22
+ - Strapi hat keinen Built-in DSA-Report-Mechanismus
23
+ - User koennen Inhalte nicht strukturiert melden → manuelle E-Mail-Bearbeitung
24
+ - Keine Transparenz-Berichte → DSA Art. 15 Verstoss bei aktiveren Diensten
25
+ - Kein Audit-Trail fuer Moderations-Entscheidungen
26
+ - Keine Begruendung-Pflicht-Antwort an Reporter
27
+
28
+ ## Compliance-Risiken
29
+
30
+ | Risiko | Norm | Severity | Fix |
31
+ |---|---|---|---|
32
+ | Kein Notice-and-Action-Mechanismus | DSA Art. 16 | KRITISCH | Plugin mit Report-Endpoint |
33
+ | Reporter erhaelt keine Bestaetigung | DSA Art. 16 Abs. 5 | HOCH | Auto-Confirmation-Mail |
34
+ | Keine Begruendung an Uploader bei Removal | DSA Art. 17 | HOCH | Statement-of-Reasons-Workflow |
35
+ | Keine Transparenz-Reports | DSA Art. 15/24 | MITTEL (HOCH bei VLOP) | Annual-Report-Worker |
36
+ | Trusted-Flagger-Privileg fehlt | DSA Art. 22 | NIEDRIG (Optional) | Role-based Priority |
37
+ | Kein Beschwerde-System | DSA Art. 20 | HOCH | Internal-Complaint-Endpoint |
38
+
39
+ ## Code-Pattern (sanitized)
40
+
41
+ ```javascript
42
+ // File: src/api/dsa-report/content-types/dsa-report/schema.json
43
+ {
44
+ "kind": "collectionType",
45
+ "collectionName": "dsa_reports",
46
+ "info": {
47
+ "singularName": "dsa-report",
48
+ "pluralName": "dsa-reports",
49
+ "displayName": "DSA Report"
50
+ },
51
+ "options": {
52
+ "draftAndPublish": false
53
+ },
54
+ "attributes": {
55
+ "reportedContentType": {
56
+ "type": "enumeration",
57
+ "enum": ["comment", "submission", "upload", "review"],
58
+ "required": true
59
+ },
60
+ "reportedContentId": {
61
+ "type": "string",
62
+ "required": true
63
+ },
64
+ "category": {
65
+ "type": "enumeration",
66
+ "enum": [
67
+ "illegal_hate_speech",
68
+ "terrorism_extremism",
69
+ "child_sexual_abuse_material",
70
+ "intellectual_property_violation",
71
+ "data_protection_violation",
72
+ "consumer_protection_violation",
73
+ "other_illegal"
74
+ ],
75
+ "required": true
76
+ },
77
+ "explanation": {
78
+ "type": "text",
79
+ "required": true,
80
+ "maxLength": 5000
81
+ },
82
+ "reporterEmail": {
83
+ "type": "email",
84
+ "required": true,
85
+ "private": true
86
+ },
87
+ "reporterIpHash": {
88
+ "type": "string",
89
+ "maxLength": 16,
90
+ "private": true
91
+ },
92
+ "isTrustedFlagger": {
93
+ "type": "boolean",
94
+ "default": false
95
+ },
96
+ "status": {
97
+ "type": "enumeration",
98
+ "enum": ["received", "in_review", "actioned", "rejected", "appealed"],
99
+ "default": "received"
100
+ },
101
+ "actionTaken": {
102
+ "type": "enumeration",
103
+ "enum": ["none", "removed", "demoted", "warning", "account_suspended"]
104
+ },
105
+ "statementOfReasons": {
106
+ "type": "text",
107
+ "maxLength": 5000
108
+ },
109
+ "submittedAt": {
110
+ "type": "datetime",
111
+ "required": true
112
+ },
113
+ "actionedAt": {
114
+ "type": "datetime"
115
+ }
116
+ }
117
+ }
118
+ ```
119
+
120
+ ```javascript
121
+ // File: src/api/dsa-report/controllers/dsa-report.js
122
+ 'use strict';
123
+
124
+ const crypto = require('crypto');
125
+
126
+ module.exports = ({ strapi }) => ({
127
+ async create(ctx) {
128
+ const {
129
+ reportedContentType,
130
+ reportedContentId,
131
+ category,
132
+ explanation,
133
+ reporterEmail,
134
+ } = ctx.request.body.data ?? {};
135
+
136
+ // Validation
137
+ if (!reportedContentType || !reportedContentId || !category || !explanation || !reporterEmail) {
138
+ return ctx.badRequest('Pflichtfelder fehlen');
139
+ }
140
+ if (typeof explanation !== 'string' || explanation.length < 50) {
141
+ return ctx.badRequest('Begruendung mindestens 50 Zeichen');
142
+ }
143
+
144
+ // IP-Hash
145
+ const ip = ctx.request.ip
146
+ ?? ctx.request.header['x-forwarded-for']?.split(',')[0]
147
+ ?? '';
148
+ const salt = strapi.config.get('server.ipHashSalt', '');
149
+ const ipHash = crypto.createHash('sha256').update(`${ip}${salt}`).digest('hex').slice(0, 16);
150
+
151
+ // Trusted-Flagger-Check (sofern Email auf Allowlist)
152
+ const trustedList = strapi.config.get('server.trustedFlaggers', []);
153
+ const isTrusted = trustedList.includes(reporterEmail.toLowerCase());
154
+
155
+ const report = await strapi.entityService.create('api::dsa-report.dsa-report', {
156
+ data: {
157
+ reportedContentType,
158
+ reportedContentId,
159
+ category,
160
+ explanation: explanation.slice(0, 5000),
161
+ reporterEmail,
162
+ reporterIpHash: ipHash,
163
+ isTrustedFlagger: isTrusted,
164
+ status: 'received',
165
+ submittedAt: new Date(),
166
+ },
167
+ });
168
+
169
+ // Auto-Confirmation an Reporter (DSA Art. 16 Abs. 5)
170
+ await strapi.plugins.email.services.email.send({
171
+ to: reporterEmail,
172
+ subject: `Bestaetigung Ihrer Meldung [Ref: ${report.id}]`,
173
+ text: buildConfirmationMail(report),
174
+ });
175
+
176
+ // Optional: Trusted-Flagger gehen sofort in Priority-Queue
177
+ if (isTrusted) {
178
+ await strapi.service('api::dsa-report.dsa-report').prioritize(report.id);
179
+ }
180
+
181
+ return {
182
+ data: {
183
+ id: report.id,
184
+ status: 'received',
185
+ submittedAt: report.submittedAt,
186
+ },
187
+ };
188
+ },
189
+
190
+ async findOne(ctx) {
191
+ // Reporter darf nur eigene Reports sehen
192
+ const { id } = ctx.params;
193
+ const report = await strapi.entityService.findOne('api::dsa-report.dsa-report', id, {
194
+ fields: ['status', 'category', 'submittedAt', 'actionedAt', 'statementOfReasons', 'actionTaken'],
195
+ });
196
+ if (!report) return ctx.notFound();
197
+ return { data: report };
198
+ },
199
+ });
200
+
201
+ function buildConfirmationMail(report) {
202
+ return `
203
+ Wir haben Ihre Meldung erhalten.
204
+
205
+ Referenz: ${report.id}
206
+ Eingegangen am: ${report.submittedAt}
207
+ Kategorie: ${report.category}
208
+
209
+ Wir werden Ihre Meldung gemaess DSA Art. 16 unverzueglich pruefen und Ihnen
210
+ das Ergebnis mit Begruendung mitteilen.
211
+
212
+ Bei Fragen: <placeholder-email>
213
+ `.trim();
214
+ }
215
+ ```
216
+
217
+ ```javascript
218
+ // File: src/api/dsa-report/services/dsa-report.js
219
+ 'use strict';
220
+
221
+ const { createCoreService } = require('@strapi/strapi').factories;
222
+
223
+ module.exports = createCoreService('api::dsa-report.dsa-report', ({ strapi }) => ({
224
+ async actionReport(reportId, action, statementOfReasons) {
225
+ const report = await strapi.entityService.findOne('api::dsa-report.dsa-report', reportId);
226
+ if (!report) throw new Error('Report not found');
227
+
228
+ // 1. Action ausfuehren
229
+ if (action === 'removed') {
230
+ await strapi.entityService.delete(
231
+ `api::${report.reportedContentType}.${report.reportedContentType}`,
232
+ report.reportedContentId,
233
+ );
234
+ }
235
+
236
+ // 2. Report-Status aktualisieren
237
+ await strapi.entityService.update('api::dsa-report.dsa-report', reportId, {
238
+ data: {
239
+ status: 'actioned',
240
+ actionTaken: action,
241
+ statementOfReasons,
242
+ actionedAt: new Date(),
243
+ },
244
+ });
245
+
246
+ // 3. Reporter informieren
247
+ await strapi.plugins.email.services.email.send({
248
+ to: report.reporterEmail,
249
+ subject: `Ihre Meldung wurde bearbeitet [Ref: ${reportId}]`,
250
+ text: `Status: ${action}\n\nBegruendung:\n${statementOfReasons}`,
251
+ });
252
+
253
+ // 4. Uploader informieren (DSA Art. 17 Statement of Reasons)
254
+ if (action === 'removed') {
255
+ await this.notifyUploader(report.reportedContentType, report.reportedContentId, statementOfReasons);
256
+ }
257
+ },
258
+
259
+ async prioritize(reportId) {
260
+ // Trusted-Flagger-Reports priorisieren in Moderations-Queue
261
+ await strapi.entityService.update('api::dsa-report.dsa-report', reportId, {
262
+ data: { status: 'in_review' },
263
+ });
264
+ },
265
+
266
+ async notifyUploader(contentType, contentId, reason) {
267
+ const content = await strapi.entityService.findOne(`api::${contentType}.${contentType}`, contentId, {
268
+ populate: ['author'],
269
+ });
270
+ if (!content?.author?.email) return;
271
+
272
+ await strapi.plugins.email.services.email.send({
273
+ to: content.author.email,
274
+ subject: 'Ihr Inhalt wurde wegen einer Meldung entfernt',
275
+ text: `
276
+ Ihr Inhalt (${contentType} #${contentId}) wurde aufgrund einer Meldung entfernt.
277
+
278
+ Begruendung:
279
+ ${reason}
280
+
281
+ Sie haben das Recht zur Beschwerde gemaess DSA Art. 20 binnen 6 Monaten.
282
+ Beschwerde-Endpoint: <placeholder-domain>/api/dsa-complaints
283
+ `.trim(),
284
+ });
285
+ },
286
+ }));
287
+ ```
288
+
289
+ ```javascript
290
+ // File: src/api/dsa-report/routes/dsa-report.js
291
+ module.exports = {
292
+ routes: [
293
+ {
294
+ method: 'POST',
295
+ path: '/dsa-reports',
296
+ handler: 'dsa-report.create',
297
+ config: { auth: false }, // Auch Nicht-User koennen melden
298
+ },
299
+ {
300
+ method: 'GET',
301
+ path: '/dsa-reports/:id',
302
+ handler: 'dsa-report.findOne',
303
+ config: { auth: false }, // Nur via Reference-ID + Email-Match
304
+ },
305
+ ],
306
+ };
307
+ ```
308
+
309
+ ## AVV / DPA
310
+
311
+ - Strapi-Hosting — Art. 28 DSGVO
312
+ - Datenbank fuer Reports — AVV mit Backup-Rotation
313
+ - Mailer fuer Bestaetigungen + Statement-of-Reasons — AVV mit EU-Hosting
314
+
315
+ ## DSE-Wording-Vorlage
316
+
317
+ ```markdown
318
+ ### Meldung rechtswidriger Inhalte (DSA Art. 16)
319
+
320
+ Sie koennen rechtswidrige Inhalte auf dieser Plattform jederzeit melden.
321
+
322
+ **Meldekanal:** [Inhalt melden](https://<placeholder-domain>/report) oder
323
+ E-Mail an <placeholder-email>.
324
+
325
+ **Was geschieht mit Ihrer Meldung:**
326
+
327
+ 1. **Bestaetigung** binnen 24 Stunden mit Referenz-Nummer
328
+ 2. **Pruefung** durch unser Moderations-Team (Trusted-Flagger werden priorisiert)
329
+ 3. **Entscheidung** mit Begruendung an Sie und ggf. an den Uploader
330
+ 4. **Beschwerde-Recht** binnen 6 Monaten gemaess DSA Art. 20
331
+
332
+ **Verarbeitete Daten Ihrer Meldung:**
333
+ - E-Mail-Adresse (zur Antwort)
334
+ - IP-Hash (Anti-Spam)
335
+ - Beschreibung der gemeldeten Verletzung
336
+ - Referenz auf gemeldeten Inhalt
337
+
338
+ **Speicherdauer:** 5 Jahre nach Abschluss (Beweisfunktion bei Rechtsstreit).
339
+ **Rechtsgrundlage:** Art. 6 Abs. 1 lit. c DSGVO (gesetzliche Verpflichtung
340
+ DSA Art. 16) + lit. f (berechtigtes Interesse Plattform-Sicherheit).
341
+ ```
342
+
343
+ ## Verify-Commands (Live-Probe)
344
+
345
+ ```bash
346
+ # 1. Report-Endpoint erreichbar
347
+ curl -X POST https://<placeholder-domain>/api/dsa-reports \
348
+ -H "Content-Type: application/json" \
349
+ -d '{"data":{"reportedContentType":"comment","reportedContentId":"42","category":"illegal_hate_speech","explanation":"<placeholder-min-50-chars-explanation-text>","reporterEmail":"reporter@example.com"}}' -i
350
+ # Erwartung: 200 mit { id, status: "received" }
351
+
352
+ # 2. Bestaetigungs-Mail wird gesendet
353
+ # (Mail-Provider-Logs pruefen)
354
+
355
+ # 3. Validation: zu kurze Begruendung blockt
356
+ curl -X POST https://<placeholder-domain>/api/dsa-reports \
357
+ -d '{"data":{"category":"other_illegal","explanation":"kurz","reporterEmail":"x@x.de"}}' -i
358
+ # Erwartung: 400
359
+
360
+ # 4. Trusted-Flagger-Privileg
361
+ # Setze Email auf trusted-flaggers-Allowlist und sende Report
362
+ # Erwartung: status sofort "in_review"
363
+ ```
364
+
365
+ ## Cross-References
366
+
367
+ - AEGIS-Scanner: `dsa-compliance-checker.ts`, `cms-pii-checker.ts`, `audit-trail-checker.ts`
368
+ - Skill-Reference: `references/dsgvo.md` (Datenschutz-Aspekt)
369
+ - DSA: VO (EU) 2022/2065 Art. 14, 16, 17, 20, 22 (Notice-and-Action, Statement of Reasons, Beschwerde, Trusted Flagger)
370
+ - BGH-Rechtsprechung: `references/bgh-urteile.md`
371
+ - Audit-Pattern: `references/audit-patterns.md` Phase 5 (CMS-Audit), Phase 8 (DSA-Compliance)
@@ -0,0 +1,234 @@
1
+ ---
2
+ license: MIT (snippet)
3
+ provider: Svelte / SvelteKit (Open-Source)
4
+ last-checked: 2026-05-05
5
+ purpose: SvelteKit Cookie-Banner mit Stores fuer Consent-State + global +layout.svelte Mount.
6
+ ---
7
+
8
+ # Svelte/SvelteKit — Cookie-Banner (Pattern)
9
+
10
+ ## Trigger / Detection
11
+
12
+ Repo enthaelt:
13
+ - `svelte` und/oder `@sveltejs/kit` in `package.json`
14
+ - `svelte.config.js` mit Adapter-Config
15
+ - `src/routes/+layout.svelte` als globales Layout
16
+ - `src/lib/stores/*.ts` Svelte-Stores (`writable`/`readable`)
17
+ - Optional: `+layout.server.ts` fuer Server-Cookie-Read
18
+
19
+ ## Default-Verhalten (was passiert ohne Konfiguration)
20
+
21
+ - SvelteKit SSR rendered initial HTML serverseitig → Banner-Logik die `localStorage` braucht muss `browser`-Guard nutzen
22
+ - Tracker-Imports im Top-Level `+layout.svelte` `<script>` werden gebundelt + im SSR-HTML referenziert
23
+ - Ohne `+layout.server.ts` sieht Server keinen Consent-Cookie → kann Tracker nicht filtern
24
+ - Stores haben kein Persist von Default → Reload zeigt Banner erneut
25
+
26
+ ## Compliance-Risiken
27
+
28
+ | Risiko | Norm | Severity | Fix |
29
+ |---|---|---|---|
30
+ | Tracker-Bundle in initial-load | § 25 TDDDG | KRITISCH | Dynamic-Import nach Consent |
31
+ | `localStorage`-Access ohne `browser`-Guard | SSR-Crash | HOCH | `import { browser } from '$app/environment'` |
32
+ | Banner doppelt gerendered (SSR + Hydration) | UX / DSGVO Klarheit | MITTEL | `{#if mounted}` Pattern |
33
+ | Cookie ohne `Secure; SameSite=Lax` | Art. 32 DSGVO | HOCH | `event.cookies.set(..., { secure, sameSite })` |
34
+ | Drittland-Adapter ohne EU-Region | Art. 44 DSGVO | KRITISCH | Adapter-Region konfigurieren |
35
+
36
+ ## Code-Pattern (sanitized)
37
+
38
+ ```typescript
39
+ // File: src/lib/stores/consent.ts
40
+ import { writable, derived } from 'svelte/store';
41
+ import { browser } from '$app/environment';
42
+
43
+ export type Consent = {
44
+ necessary: true;
45
+ analytics: boolean;
46
+ marketing: boolean;
47
+ timestamp: string | null;
48
+ version: '1.0';
49
+ };
50
+
51
+ const defaultConsent: Consent = {
52
+ necessary: true,
53
+ analytics: false,
54
+ marketing: false,
55
+ timestamp: null,
56
+ version: '1.0',
57
+ };
58
+
59
+ function createConsentStore() {
60
+ const initial: Consent = { ...defaultConsent };
61
+
62
+ if (browser) {
63
+ const stored = localStorage.getItem('cookie-consent');
64
+ if (stored) {
65
+ try {
66
+ Object.assign(initial, JSON.parse(stored));
67
+ } catch {
68
+ /* ignore */
69
+ }
70
+ }
71
+ }
72
+
73
+ const { subscribe, set, update } = writable<Consent>(initial);
74
+
75
+ return {
76
+ subscribe,
77
+ grant(partial: Partial<Pick<Consent, 'analytics' | 'marketing'>>) {
78
+ update(c => {
79
+ const next: Consent = {
80
+ ...c,
81
+ ...partial,
82
+ timestamp: new Date().toISOString(),
83
+ };
84
+ if (browser) {
85
+ localStorage.setItem('cookie-consent', JSON.stringify(next));
86
+ fetch('/api/consent-log', {
87
+ method: 'POST',
88
+ headers: { 'Content-Type': 'application/json' },
89
+ body: JSON.stringify(next),
90
+ });
91
+ }
92
+ return next;
93
+ });
94
+ },
95
+ revoke() {
96
+ const reset: Consent = { ...defaultConsent, timestamp: new Date().toISOString() };
97
+ if (browser) {
98
+ localStorage.setItem('cookie-consent', JSON.stringify(reset));
99
+ }
100
+ set(reset);
101
+ },
102
+ };
103
+ }
104
+
105
+ export const consent = createConsentStore();
106
+ export const hasDecided = derived(consent, $c => $c.timestamp !== null);
107
+ ```
108
+
109
+ ```svelte
110
+ <!-- File: src/lib/components/CookieBanner.svelte -->
111
+ <script lang="ts">
112
+ import { onMount } from 'svelte';
113
+ import { consent, hasDecided } from '$lib/stores/consent';
114
+ import { browser } from '$app/environment';
115
+
116
+ let mounted = false;
117
+
118
+ onMount(() => {
119
+ mounted = true;
120
+ });
121
+
122
+ function acceptAll() {
123
+ consent.grant({ analytics: true, marketing: true });
124
+ }
125
+
126
+ function rejectAll() {
127
+ consent.grant({ analytics: false, marketing: false });
128
+ }
129
+ </script>
130
+
131
+ {#if mounted && !$hasDecided}
132
+ <aside role="dialog" aria-label="Cookie-Einwilligung" class="cookie-banner">
133
+ <p>
134
+ Wir nutzen Cookies fuer notwendige Funktionen. Mit Ihrer Einwilligung
135
+ zusaetzlich fuer Webanalyse. Details:
136
+ <a href="/datenschutz">Datenschutzerklaerung</a>.
137
+ </p>
138
+ <div class="cookie-actions">
139
+ <!-- Buttons gleichwertig (OLG Koeln 6 U 80/23) -->
140
+ <button on:click={rejectAll} class="btn-secondary">Nur Notwendige</button>
141
+ <button on:click={acceptAll} class="btn-primary">Alle akzeptieren</button>
142
+ </div>
143
+ </aside>
144
+ {/if}
145
+
146
+ <style>
147
+ .cookie-banner {
148
+ position: fixed;
149
+ bottom: 0;
150
+ left: 0;
151
+ right: 0;
152
+ background: #fff;
153
+ border-top: 1px solid #ccc;
154
+ padding: 1rem;
155
+ z-index: 9999;
156
+ }
157
+ </style>
158
+ ```
159
+
160
+ ```svelte
161
+ <!-- File: src/routes/+layout.svelte -->
162
+ <script lang="ts">
163
+ import CookieBanner from '$lib/components/CookieBanner.svelte';
164
+ import { consent } from '$lib/stores/consent';
165
+ import { browser } from '$app/environment';
166
+
167
+ // Dynamic-Tracker-Load nach Consent-Aenderung
168
+ if (browser) {
169
+ consent.subscribe(async ($c) => {
170
+ if ($c.analytics) {
171
+ const m = await import('$lib/trackers/analytics');
172
+ m.init();
173
+ }
174
+ });
175
+ }
176
+ </script>
177
+
178
+ <slot />
179
+ <CookieBanner />
180
+ ```
181
+
182
+ ## AVV / DPA
183
+
184
+ - Hosting-Adapter (Vercel / Netlify / Node) — Art. 28 DSGVO
185
+ - Edge-Adapter Region MUSS auf EU gepinnt sein
186
+ - Analytics-Provider (EU) — AVV
187
+ - Form-Backends — separate AVV pro Service
188
+
189
+ ## DSE-Wording-Vorlage
190
+
191
+ ```markdown
192
+ ### Cookie-Einwilligung (SvelteKit)
193
+
194
+ Diese Webseite verwendet einen Cookie-Banner zur Einholung Ihrer
195
+ Einwilligung gem. § 25 Abs. 1 TDDDG. Ihre Entscheidung wird im
196
+ Browser-Speicher (`localStorage`) gespeichert und zusaetzlich serverseitig
197
+ zur Nachweispflicht (Art. 7 Abs. 1 DSGVO) protokolliert.
198
+
199
+ **Server-Side-Log enthaelt:**
200
+ - Hash der IP-Adresse (SHA-256, gekuerzt)
201
+ - Zeitstempel
202
+ - Gewaehlte Kategorien
203
+ - User-Agent
204
+
205
+ **Speicherdauer Server-Log:** 6 Jahre (Beweisfunktion bei Rechtsstreit).
206
+ **Loeschung Browser-Storage:** ueber [Cookie-Einstellungen](#cookie-settings)
207
+ im Footer oder Browser-Einstellungen.
208
+ ```
209
+
210
+ ## Verify-Commands (Live-Probe)
211
+
212
+ ```bash
213
+ # 1. Banner sichtbar bei Erstbesuch
214
+ curl -sS https://<placeholder-domain>/ | grep -ic "cookie-banner"
215
+
216
+ # 2. Tracker-Bundle nicht im initial HTML
217
+ curl -sS https://<placeholder-domain>/ | grep -oE '<script[^>]*src="[^"]+"' | grep -i "analytics\|tracker"
218
+ # Erwartung: leer
219
+
220
+ # 3. SvelteKit-Region-Pinning
221
+ curl -sI https://<placeholder-domain>/ | grep -i "x-vercel-id"
222
+ # Erwartung: fra1 / cdg1 etc.
223
+
224
+ # 4. Hydration-Check (Browser DevTools-Console)
225
+ # Erwartung: kein "[svelte] hydration_mismatch" warning
226
+ ```
227
+
228
+ ## Cross-References
229
+
230
+ - AEGIS-Scanner: `cookie-audit.ts`, `tracking-scan.ts`, `consent-flow-checker.ts`, `ssr-data-leak-checker.ts`
231
+ - Skill-Reference: `references/dsgvo.md` § 25 TDDDG, Art. 7 DSGVO
232
+ - BGH-Rechtsprechung: `references/bgh-urteile.md` BGH I ZR 7/16
233
+ - OLG Koeln 6 U 80/23 (Button-Gleichwertigkeit)
234
+ - Audit-Pattern: `references/audit-patterns.md` Phase 2 (Cookie-Audit)