@aegis-scan/skills 0.5.0 → 0.5.2
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.
- package/ATTRIBUTION.md +93 -0
- package/package.json +1 -1
- package/sbom.cdx.json +1 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
- package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
- package/skills/defensive/permoon-fork/README.md +40 -0
- package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
- package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
- package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
- package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
- package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
- package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
- package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
- package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
- package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
- package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
- package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
- package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
- package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
- package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
- package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
- package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
- package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
- package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
- package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
- package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
- package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
- package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
- package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
- package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
- package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
- package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
- package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
- package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
- package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
- package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
- package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
- package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
- package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
- package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
- package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
- package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
- package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
- package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
- package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
- package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
- package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
- package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
- package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
- package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
- package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
- package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
- package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
- package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
- package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
- package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
- package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
- package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
- package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
- package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
- package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
- package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
- package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
- package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
- package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
- package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
- package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
- package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
- package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
- package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
- package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
- package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
- package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
- package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
- package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
- package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
- package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
- package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
- package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
- package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
- package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
- package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
- package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
- package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
- package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
- package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
- package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
- package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
- package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
- package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
- package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
- package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
- package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
- package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
- package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
- package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
- package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
- package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
- package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
- package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
- package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
- package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
- package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# Vereinbarung über gemeinsame Verantwortlichkeit nach Art. 26 DSGVO (Joint Controller Agreement)
|
|
2
|
+
|
|
3
|
+
**Version**: v1.0 (2026-05-05)
|
|
4
|
+
**Vorlagen-Typ**: Gemeinsame Verantwortlichkeit (Art. 26 DSGVO) — **NICHT Auftragsverarbeitung** (Art. 28 DSGVO; siehe `AVV-standard-DE.md`)
|
|
5
|
+
**Disclaimer**: Diese Vorlage stellt keine Rechtsberatung im Sinne § 2 RDG dar. Vor produktiver Verwendung individuelle anwaltliche Prüfung erforderlich. Die Abgrenzung Auftragsverarbeitung ↔ gemeinsame Verantwortlichkeit ist hochsensibel; eine Fehl-Klassifizierung kann erhebliche aufsichtsrechtliche Folgen haben (siehe EuGH "Fashion ID" C-40/17, "Wirtschaftsakademie Schleswig-Holstein" C-210/16, "Jehovan todistajat" C-25/17).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Vorabgrenzung — Wann gilt Art. 26 DSGVO?
|
|
10
|
+
|
|
11
|
+
**Gemeinsame Verantwortlichkeit** liegt vor, wenn **zwei oder mehr Verantwortliche gemeinsam die Zwecke und Mittel der Verarbeitung festlegen** (Art. 26 Abs. 1 DSGVO).
|
|
12
|
+
|
|
13
|
+
| Konstellation | Klassifikation | Vertrags-Vorlage |
|
|
14
|
+
|---------------|----------------|------------------|
|
|
15
|
+
| Eine Partei legt Zwecke + Mittel fest, andere Partei verarbeitet weisungsgebunden | **Auftragsverarbeitung** Art. 28 | `AVV-standard-DE.md` |
|
|
16
|
+
| Beide Parteien legen Zwecke ODER Mittel **gemeinsam** fest | **gemeinsame Verantwortung** Art. 26 | dieses Dokument |
|
|
17
|
+
| Beide Parteien verarbeiten dieselben Daten, aber **getrennt** und für **eigene Zwecke** | **getrennte Verantwortlichkeiten** (kein Art. 26-Vertrag) | i. d. R. nur Datenschutzhinweise |
|
|
18
|
+
| Konzern-interne Datenflüsse | Einzelfall: oft Art. 26 oder gemeinsame Verarbeitungsverbund | Joint-Controller-Vertrag oder BCR |
|
|
19
|
+
|
|
20
|
+
**Typische Anwendungsfälle Art. 26 DSGVO**:
|
|
21
|
+
- Social-Plugin-Einbindung auf Website (Fashion ID)
|
|
22
|
+
- Co-Marketing-Aktion zweier Unternehmen mit gemeinsamem Lead-Pool
|
|
23
|
+
- Plattform-Anbieter + Plattform-Nutzer mit geteilter Daten-Hoheit (Wirtschaftsakademie / Facebook-Fanpage)
|
|
24
|
+
- Konzern-interne Geschäftspartner-Datenbank
|
|
25
|
+
- Forschungs-Konsortium mit gemeinsamer Datenbank
|
|
26
|
+
- Affiliate-Partnerprogramm mit Tracking
|
|
27
|
+
- Federated-Identity-Anbindungen
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Vertragsparteien
|
|
32
|
+
|
|
33
|
+
**Gemeinsam Verantwortlicher A** (im Folgenden: „Verantwortlicher A"):
|
|
34
|
+
|
|
35
|
+
> <Firma / Name>
|
|
36
|
+
> <Anschrift>
|
|
37
|
+
> <Vertretungsberechtigt>
|
|
38
|
+
> <USt-IdNr / HRB>
|
|
39
|
+
> Datenschutzbeauftragter: <Name + Kontakt>
|
|
40
|
+
|
|
41
|
+
**Gemeinsam Verantwortlicher B** (im Folgenden: „Verantwortlicher B"):
|
|
42
|
+
|
|
43
|
+
> <Firma / Name>
|
|
44
|
+
> <Anschrift>
|
|
45
|
+
> <Vertretungsberechtigt>
|
|
46
|
+
> <USt-IdNr / HRB>
|
|
47
|
+
> Datenschutzbeauftragter: <Name + Kontakt>
|
|
48
|
+
|
|
49
|
+
> *Bei mehr als zwei Parteien: weitere Verantwortliche analog (Verantwortlicher C, D, …).*
|
|
50
|
+
|
|
51
|
+
— im Folgenden gemeinsam: „die Parteien" oder „gemeinsam Verantwortliche" —
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Präambel
|
|
56
|
+
|
|
57
|
+
Die Parteien beabsichtigen die **gemeinsame Verarbeitung** personenbezogener Daten im Rahmen der in **§ 1** beschriebenen Verarbeitungs-Tätigkeit. Da die Parteien gemeinsam Zwecke und Mittel der Verarbeitung festlegen, sind sie **gemeinsam Verantwortliche** im Sinne des Art. 26 DSGVO. Diese Vereinbarung regelt in transparenter Form die Verteilung der DSGVO-Pflichten und ist Vertragsbestandteil. Wesentliche Inhalte werden den betroffenen Personen gemäß Art. 26 Abs. 2 Satz 2 DSGVO in geeigneter Form zur Verfügung gestellt.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## § 1 Gegenstand der gemeinsamen Verarbeitung
|
|
62
|
+
|
|
63
|
+
**§ 1.1 Beschreibung**: Gegenstand der gemeinsamen Verarbeitung ist:
|
|
64
|
+
|
|
65
|
+
> <z. B. „Co-Marketing-Kampagne zur Akquise gemeinsamer Leads über eine geteilte Landing-Page mit Lead-Formular, dessen Eingaben in einem gemeinsamen CRM-System beider Parteien gespeichert und beworben werden."
|
|
66
|
+
>
|
|
67
|
+
> oder „Betrieb einer Affiliate-Plattform, auf der Verantwortlicher A die Tracking-Infrastruktur stellt und Verantwortlicher B Affiliate-Partner verwaltet; beide Parteien werten Conversion-Daten gemeinsam aus.">
|
|
68
|
+
|
|
69
|
+
**§ 1.2 Festlegung gemeinsamer Zwecke und Mittel**: Die gemeinsam festgelegten Zwecke und Mittel umfassen:
|
|
70
|
+
|
|
71
|
+
a) Zwecke:
|
|
72
|
+
> <z. B. „Lead-Akquise, Marketing-Erfolgsmessung, gemeinsame Direktansprache der Betroffenen.">
|
|
73
|
+
|
|
74
|
+
b) Mittel:
|
|
75
|
+
> <z. B. „Gemeinsame Datenbank XYZ; gemeinsam definierte Datenfelder; gemeinsame Tracking-Pixel; gemeinsam vereinbarte Speicherdauer.">
|
|
76
|
+
|
|
77
|
+
**§ 1.3 Rechtsgrundlage**: Die Verarbeitung stützt sich auf folgende Rechtsgrundlage(n) nach Art. 6 DSGVO (jeweils zu spezifizieren):
|
|
78
|
+
|
|
79
|
+
- ☐ Einwilligung (Art. 6 Abs. 1 lit. a) — Wer holt sie ein? <…>
|
|
80
|
+
- ☐ Vertragserfüllung (Art. 6 Abs. 1 lit. b) — Welcher Vertrag? <…>
|
|
81
|
+
- ☐ Rechtliche Verpflichtung (Art. 6 Abs. 1 lit. c) — Welche? <…>
|
|
82
|
+
- ☐ Berechtigtes Interesse (Art. 6 Abs. 1 lit. f) — Interesse + Abwägung <…>
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## § 2 Aufgabenverteilung — Wer übernimmt welche DSGVO-Pflicht? (Art. 26 Abs. 1 Satz 2 DSGVO)
|
|
87
|
+
|
|
88
|
+
**§ 2.1 Information der Betroffenen (Art. 13/14 DSGVO)**:
|
|
89
|
+
|
|
90
|
+
| Pflicht | Verantwortlicher A | Verantwortlicher B |
|
|
91
|
+
|---------|---------------------|---------------------|
|
|
92
|
+
| Bereitstellung Datenschutzinformation auf Website / im UI | ☐ | ☐ |
|
|
93
|
+
| Bereitstellung "wesentlicher Inhalt" dieses Joint-Controller-Vertrags an Betroffene (Art. 26 Abs. 2 S. 2) | ☐ | ☐ |
|
|
94
|
+
| Pflege der Datenschutzhinweise | ☐ | ☐ |
|
|
95
|
+
|
|
96
|
+
**§ 2.2 Betroffenenrechte (Art. 15–22 DSGVO)**:
|
|
97
|
+
|
|
98
|
+
> Wichtig: Die betroffene Person kann nach Art. 26 Abs. 3 DSGVO ihre Rechte gegenüber **jedem** der Verantwortlichen geltend machen. Die interne Aufgabenverteilung berührt diesen Außenrechtsschutz nicht.
|
|
99
|
+
|
|
100
|
+
| Pflicht | Verantwortlicher A | Verantwortlicher B | Frist |
|
|
101
|
+
|---------|---------------------|---------------------|-------|
|
|
102
|
+
| Erstkontakt / Empfang von Anfragen | ☐ Single-Point-of-Contact (SPOC) | ☐ Empfangsweiterleitung an SPOC | 1 Werktag |
|
|
103
|
+
| Auskunft (Art. 15) | ☐ | ☐ | 30 Tage |
|
|
104
|
+
| Berichtigung (Art. 16) | ☐ | ☐ | 30 Tage |
|
|
105
|
+
| Löschung (Art. 17) | ☐ | ☐ | 30 Tage |
|
|
106
|
+
| Einschränkung (Art. 18) | ☐ | ☐ | 30 Tage |
|
|
107
|
+
| Datenübertragbarkeit (Art. 20) | ☐ | ☐ | 30 Tage |
|
|
108
|
+
| Widerspruch (Art. 21) | ☐ | ☐ | 30 Tage |
|
|
109
|
+
| Recht auf nicht-automatisierte Entscheidung (Art. 22) | ☐ | ☐ | unverzüglich |
|
|
110
|
+
|
|
111
|
+
**§ 2.3 Datenpannen (Art. 33/34 DSGVO)**:
|
|
112
|
+
|
|
113
|
+
| Pflicht | Verantwortlicher A | Verantwortlicher B | Frist |
|
|
114
|
+
|---------|---------------------|---------------------|-------|
|
|
115
|
+
| Erstmeldung an die jeweils andere Partei | ☐ | ☐ | unverzüglich, max. 24h |
|
|
116
|
+
| Meldung an Aufsichtsbehörde (Art. 33) | ☐ federführend | ☐ unterstützend | 72h |
|
|
117
|
+
| Benachrichtigung Betroffener (Art. 34) | ☐ federführend | ☐ unterstützend | unverzüglich |
|
|
118
|
+
|
|
119
|
+
**§ 2.4 Sicherheit der Verarbeitung (Art. 32 DSGVO)**:
|
|
120
|
+
|
|
121
|
+
| Pflicht | Verantwortlicher A | Verantwortlicher B |
|
|
122
|
+
|---------|---------------------|---------------------|
|
|
123
|
+
| TOMs für eigene Systeme | ☐ | ☐ |
|
|
124
|
+
| TOMs für gemeinsame Systeme — federführend | ☐ | ☐ |
|
|
125
|
+
| Periodische TOM-Reviews | ☐ jährlich | ☐ jährlich |
|
|
126
|
+
|
|
127
|
+
**§ 2.5 Verfahrensverzeichnis (Art. 30 DSGVO)**: Beide Parteien führen jeweils ihr eigenes Verzeichnis und vermerken die gemeinsame Verarbeitung darin mit Verweis auf diese Vereinbarung.
|
|
128
|
+
|
|
129
|
+
**§ 2.6 Datenschutz-Folgenabschätzung (Art. 35 DSGVO)**: Bei hohem Risiko führt **<Verantwortlicher A / B / gemeinsam>** die DSFA federführend durch; die jeweils andere Partei wirkt mit.
|
|
130
|
+
|
|
131
|
+
**§ 2.7 Drittlands-Übermittlung**: Übermittlungen in Drittländer erfolgen nur mit beidseitiger Zustimmung + geeigneten Garantien (siehe SCC-Anhänge der AVV-Layer).
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## § 3 Sicherheits-Maßnahmen
|
|
136
|
+
|
|
137
|
+
**§ 3.1**: Die gemeinsam Verantwortlichen treffen TOMs nach Art. 32 DSGVO mindestens auf dem in **`AVV-anhang-TOMs.md`** beschriebenen Niveau.
|
|
138
|
+
|
|
139
|
+
**§ 3.2**: Schnittstellen zwischen den Systemen der Parteien sind verschlüsselt (TLS ≥ 1.2); Authentifizierung erfolgt mittels gegenseitig vereinbarter Mechanismen (API-Schlüssel, OAuth2 mit kurzlebigen Tokens, mTLS).
|
|
140
|
+
|
|
141
|
+
**§ 3.3 Audit-Recht der Parteien gegeneinander**: Jede Partei hat das Recht, die TOM-Einhaltung der anderen Partei für die gemeinsame Verarbeitung zu auditieren — analog **`AVV-anhang-Audit-Klausel-Varianten.md`** (Variante A/B/C).
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## § 4 Pflichten gegenüber Betroffenen (Art. 26 Abs. 2 Satz 2 DSGVO)
|
|
146
|
+
|
|
147
|
+
**§ 4.1 Wesentlicher Inhalt der Vereinbarung**: Den Betroffenen werden folgende wesentliche Inhalte dieser Vereinbarung in geeigneter Form (i. d. R. Datenschutzerklärung der primären Kontaktstelle) zur Verfügung gestellt:
|
|
148
|
+
|
|
149
|
+
- ☐ Identität der gemeinsam Verantwortlichen
|
|
150
|
+
- ☐ Zweck(e) der gemeinsamen Verarbeitung
|
|
151
|
+
- ☐ Gegenstand der Verarbeitung
|
|
152
|
+
- ☐ Aufgabenverteilung — wer übernimmt welche DSGVO-Pflicht (zumindest: wer ist primärer Ansprechpartner für Betroffenenrechte)
|
|
153
|
+
- ☐ Hinweis: Betroffener kann Rechte gegenüber **jedem** der Verantwortlichen geltend machen
|
|
154
|
+
- ☐ Kontakt-Informationen Datenschutzbeauftragte beider Parteien
|
|
155
|
+
|
|
156
|
+
**§ 4.2 Single Point of Contact (SPOC)**: Trotz beidseitiger Verpflichtung benennen die Parteien einen primären Ansprechpartner für Betroffenenrechte:
|
|
157
|
+
|
|
158
|
+
> Primärer Ansprechpartner: **<Verantwortlicher A / B>**
|
|
159
|
+
> Kontakt: <Email + Postanschrift>
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## § 5 Aufzeichnungspflichten
|
|
164
|
+
|
|
165
|
+
**§ 5.1 Beide Parteien führen**:
|
|
166
|
+
|
|
167
|
+
- ☐ Verfahrensverzeichnis für die gemeinsame Verarbeitung (Art. 30 DSGVO)
|
|
168
|
+
- ☐ Audit-Log über Datenschutz-relevante Vorgänge
|
|
169
|
+
- ☐ Dokumentation aller Betroffenenrechts-Anfragen + Antworten
|
|
170
|
+
- ☐ Dokumentation aller Datenpannen-Meldungen (intern + an Aufsichtsbehörde)
|
|
171
|
+
- ☐ Nachweis der Einhaltung der TOMs (jährlicher TOM-Review)
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## § 6 Sub-Auftragsverarbeiter
|
|
176
|
+
|
|
177
|
+
**§ 6.1**: Setzen die Parteien Auftragsverarbeiter zur Unterstützung der gemeinsamen Verarbeitung ein, schließen sie jeweils separate Auftragsverarbeitungsverträge nach Art. 28 DSGVO ab — entsprechend `AVV-standard-DE.md`.
|
|
178
|
+
|
|
179
|
+
**§ 6.2**: Über den Einsatz neuer Auftragsverarbeiter im Bereich der gemeinsamen Verarbeitung informieren sich die Parteien gegenseitig mit angemessenem Vorlauf (mindestens 30 Kalendertage).
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## § 7 Haftung und Schadensersatz (Art. 82 DSGVO)
|
|
184
|
+
|
|
185
|
+
**§ 7.1**: Im Außenverhältnis haften die Parteien gegenüber Betroffenen nach Art. 82 DSGVO als Gesamtschuldner.
|
|
186
|
+
|
|
187
|
+
**§ 7.2 Innenausgleich**: Im Innenverhältnis trägt jede Partei den Anteil am Schaden, der ihrem Verantwortungsbeitrag entspricht. Liegt eine ausschließliche Pflichtverletzung einer Partei vor, trägt diese den Schaden allein.
|
|
188
|
+
|
|
189
|
+
**§ 7.3 Bußgelder (Art. 83 DSGVO)**: Bußgelder trägt diejenige Partei, der die Pflichtverletzung zuzurechnen ist. Bei beiderseitigem Verschulden anteilig nach Verschuldensgrad.
|
|
190
|
+
|
|
191
|
+
**§ 7.4 Freistellung**: Wird eine Partei von einem Betroffenen oder einer Aufsichtsbehörde für eine Pflicht in Anspruch genommen, die nach § 2 dieser Vereinbarung der anderen Partei zugewiesen ist, stellt die jeweils zuständige Partei die andere Partei von Ansprüchen frei.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## § 8 Laufzeit, Kündigung und Beendigung
|
|
196
|
+
|
|
197
|
+
**§ 8.1 Laufzeit**: Diese Vereinbarung tritt am <Startdatum> in Kraft und gilt für die Dauer der gemeinsamen Verarbeitung, mindestens für die Laufzeit der zugrundeliegenden Geschäftsbeziehung.
|
|
198
|
+
|
|
199
|
+
**§ 8.2 Ordentliche Kündigung**: Mit Frist von <3 / 6> Monaten zum Quartalsende.
|
|
200
|
+
|
|
201
|
+
**§ 8.3 Außerordentliche Kündigung**: jede Partei bei wesentlicher Pflichtverletzung der anderen Partei, insbesondere wiederholten DSGVO-Verstößen oder Verweigerung der Mitwirkungspflichten.
|
|
202
|
+
|
|
203
|
+
**§ 8.4 Beendigungsfolgen**:
|
|
204
|
+
- Gemeinsame Verarbeitung wird eingestellt.
|
|
205
|
+
- Daten werden zwischen den Parteien aufgeteilt nach gemeinsamer Vereinbarung — jede Partei nimmt die ihr zustehenden Daten in eigene Verantwortung; Daten ohne klare Zuordnung werden gemeinsam gelöscht.
|
|
206
|
+
- Aufzeichnungen + Audit-Logs werden 3 Jahre über das Vertragsende hinaus aufbewahrt (Beweissicherung für Aufsichtsanfragen).
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## § 9 Schlussbestimmungen
|
|
211
|
+
|
|
212
|
+
**§ 9.1 Schriftform**: Änderungen bedürfen der Textform.
|
|
213
|
+
|
|
214
|
+
**§ 9.2 Salvatorische Klausel**: Unwirksamkeit einer Bestimmung berührt nicht die übrigen.
|
|
215
|
+
|
|
216
|
+
**§ 9.3 Anwendbares Recht**: Recht der Bundesrepublik Deutschland; zwingende DSGVO-Vorschriften haben Vorrang.
|
|
217
|
+
|
|
218
|
+
**§ 9.4 Gerichtsstand**: <Sitz Verantwortlicher A / B / nach Vereinbarung>.
|
|
219
|
+
|
|
220
|
+
**§ 9.5 Vertragsanlagen**:
|
|
221
|
+
|
|
222
|
+
| Anlage | Inhalt |
|
|
223
|
+
|--------|--------|
|
|
224
|
+
| 1 | Aufgabenverteilungs-Matrix (§ 2 — separat als Tabelle ausgefüllt) |
|
|
225
|
+
| 2 | Datenschutzinformation für Betroffene (zu veröffentlichen — Art. 26 Abs. 2 S. 2) |
|
|
226
|
+
| 3 | TOM-Katalog (siehe `AVV-anhang-TOMs.md`) |
|
|
227
|
+
| 4 | Liste eingesetzter Auftragsverarbeiter beider Parteien (siehe `AVV-anhang-Sub-Processor-List.md` analog) |
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
**Ort, Datum, Unterschriften**:
|
|
232
|
+
|
|
233
|
+
> _______________________________
|
|
234
|
+
> Verantwortlicher A: <Name, Funktion>
|
|
235
|
+
> Ort, Datum
|
|
236
|
+
|
|
237
|
+
> _______________________________
|
|
238
|
+
> Verantwortlicher B: <Name, Funktion>
|
|
239
|
+
> Ort, Datum
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Anlage 2 — Datenschutzinformation für Betroffene (Mustertext)
|
|
244
|
+
|
|
245
|
+
> **Information nach Art. 13 + Art. 26 Abs. 2 S. 2 DSGVO — Gemeinsame Verantwortlichkeit**
|
|
246
|
+
>
|
|
247
|
+
> Wir, **<Verantwortlicher A>** (Firma, Anschrift, Kontakt-Email) und **<Verantwortlicher B>** (Firma, Anschrift, Kontakt-Email), verarbeiten Ihre personenbezogenen Daten **gemeinsam verantwortlich** im Sinne des Art. 26 DSGVO im Rahmen folgender Verarbeitung: **<Beschreibung>**.
|
|
248
|
+
>
|
|
249
|
+
> **Zwecke**: <Zwecke>
|
|
250
|
+
> **Rechtsgrundlage**: <Art. 6 Abs. 1 lit. a / b / f DSGVO>
|
|
251
|
+
> **Datenkategorien**: <…>
|
|
252
|
+
> **Speicherdauer**: <…>
|
|
253
|
+
>
|
|
254
|
+
> **Aufgabenverteilung zwischen uns**:
|
|
255
|
+
> - Erstkontakt für Ihre Datenschutzrechte: **<Verantwortlicher A>** unter <Email>
|
|
256
|
+
> - Datenpannen-Meldung an die Aufsichtsbehörde: federführend **<Verantwortlicher A / B>**
|
|
257
|
+
> - Sicherheit der gemeinsamen Systeme: gemeinsam
|
|
258
|
+
>
|
|
259
|
+
> **Wichtig**: Sie können Ihre Rechte aus Art. 15–22 DSGVO **gegenüber jedem von uns** geltend machen — wir leiten Ihre Anfrage intern weiter und antworten gemeinsam.
|
|
260
|
+
>
|
|
261
|
+
> **Datenschutzbeauftragte**:
|
|
262
|
+
> - <Verantwortlicher A>: <Name + Email>
|
|
263
|
+
> - <Verantwortlicher B>: <Name + Email>
|
|
264
|
+
>
|
|
265
|
+
> **Beschwerderecht**: Sie haben das Recht, Beschwerde bei einer Datenschutzaufsichtsbehörde einzulegen — i. d. R. derjenigen Ihres gewöhnlichen Aufenthalts.
|
|
@@ -12,57 +12,71 @@ echo "▎ brutaler-anwalt Health-Check"
|
|
|
12
12
|
echo "▎ Skill-Dir: $SKILL_DIR"
|
|
13
13
|
echo
|
|
14
14
|
|
|
15
|
-
# 1. Brand-Leak-Check — operator-
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
#
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
15
|
+
# 1. Brand-Leak-Check — operator-internal QA gate.
|
|
16
|
+
# Reads the brand-pattern from the BRUTALER_ANWALT_BRAND_PATTERN env-var
|
|
17
|
+
# (operator's local shell or a local .envrc). Default is empty: public
|
|
18
|
+
# users who install the skill see this check as a silent no-op. The
|
|
19
|
+
# pattern is never embedded in tracked code -- it must not appear in
|
|
20
|
+
# the source-of-truth of the published @aegis-scan/skills tarball.
|
|
21
|
+
# Operator-local fallback: read from scripts/scrub-terms.local.txt
|
|
22
|
+
# (relative to the repo root that contains this script's package).
|
|
23
|
+
# Note: grep -l returns exit 1 on no-match — we tolerate that via
|
|
24
|
+
# subshell+|| true so set -euo pipefail does not abort the script.
|
|
25
|
+
echo "1/10 Brand-Leak-Check…"
|
|
26
|
+
BRAND_PATTERN="${BRUTALER_ANWALT_BRAND_PATTERN:-}"
|
|
27
|
+
if [[ -z "$BRAND_PATTERN" ]]; then
|
|
28
|
+
# Fallback: try to read from the operator-local gitignored file at the
|
|
29
|
+
# project root (only resolvable when this script is run from inside the
|
|
30
|
+
# AEGIS monorepo, NOT when the skill is installed standalone).
|
|
31
|
+
candidate="$SKILL_DIR/../../../../../../scripts/scrub-terms.local.txt"
|
|
32
|
+
if [[ -f "$candidate" ]]; then
|
|
33
|
+
BRAND_PATTERN=$(grep -v '^[[:space:]]*#' "$candidate" | grep -v '^[[:space:]]*$' | tr '\n' '|' | sed 's/|$//')
|
|
33
34
|
fi
|
|
34
|
-
else
|
|
35
|
-
BRAND_PATTERN="placeholder-codename-example|placeholder-internal-project"
|
|
36
35
|
fi
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
| wc -l | tr -d ' ')
|
|
40
|
-
if [[ "$brand_hits" == "0" ]]; then
|
|
41
|
-
echo " ✓ keine Brand-Leaks (Pattern: $BRAND_PATTERN)"
|
|
36
|
+
if [[ -z "$BRAND_PATTERN" ]]; then
|
|
37
|
+
echo " ✓ no brand-pattern configured (operator-internal QA skipped)"
|
|
42
38
|
else
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
brand_hits=$( (grep -rEnli "$BRAND_PATTERN" \
|
|
40
|
+
"$SKILL_DIR/SKILL.md" "$SKILL_DIR/README.md" "$SKILL_DIR/LICENSE" "$SKILL_DIR/CHANGELOG.md" "$SKILL_DIR/references/" 2>/dev/null || true) \
|
|
41
|
+
| wc -l | tr -d ' ')
|
|
42
|
+
if [[ "$brand_hits" == "0" ]]; then
|
|
43
|
+
echo " ✓ keine Brand-Leaks"
|
|
44
|
+
else
|
|
45
|
+
echo " ✗ $brand_hits Brand-Leak-Treffer:"
|
|
46
|
+
grep -rEni "$BRAND_PATTERN" \
|
|
47
|
+
"$SKILL_DIR/SKILL.md" "$SKILL_DIR/README.md" "$SKILL_DIR/LICENSE" "$SKILL_DIR/CHANGELOG.md" "$SKILL_DIR/references/" 2>/dev/null | head -10 || true
|
|
48
|
+
issues=$((issues + 1))
|
|
49
|
+
fi
|
|
47
50
|
fi
|
|
48
51
|
|
|
49
52
|
# 2. Az.-Provenance — every entry should have a Source-URL
|
|
50
|
-
echo "2/
|
|
53
|
+
echo "2/10 Az.-Provenance-Check…"
|
|
54
|
+
# Az.-Eintraege = ### Headers, ABER nicht Pattern-Sections (### Wenn ...)
|
|
55
|
+
# und nicht die Audit-Trigger-Sections die thematisch sind, keine Az.
|
|
51
56
|
az_count=$( (grep -cE "^### " "$SKILL_DIR/references/bgh-urteile.md" 2>/dev/null || echo 0) | head -1)
|
|
57
|
+
pattern_count=$( (grep -cE "^### Wenn " "$SKILL_DIR/references/bgh-urteile.md" 2>/dev/null || echo 0) | head -1)
|
|
58
|
+
real_az=$((az_count - pattern_count))
|
|
52
59
|
# Source-Verlinkung in beliebigem Markdown-Format: **Source**, "Source:", oder eingebetteter http(s)-Link.
|
|
53
|
-
src_count=$( (grep -cE "\*\*Source\*\*|Source:|https?://(juris|curia|dejure|openjur|rewis|edpb|gesetze-im-internet|eur-lex|bverwg|bag-urteil|nrwe|wettbewerbszentrale|noerr|twobirds|bird-bird|alro-recht)" "$SKILL_DIR/references/bgh-urteile.md" 2>/dev/null || echo 0) | head -1)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
60
|
+
src_count=$( (grep -cE "\*\*Source\*\*|Source:|https?://(juris|curia|dejure|openjur|rewis|edpb|gesetze-im-internet|eur-lex|bverwg|bag-urteil|nrwe|wettbewerbszentrale|noerr|twobirds|bird-bird|alro-recht|bfdi|datenschutz-berlin|lfd\.niedersachsen|taylorwessing|lto|llp-law|lennmed|medien-internet-und-recht|dataprotection\.ie|edpb\.europa|heise|bafin)" "$SKILL_DIR/references/bgh-urteile.md" 2>/dev/null || echo 0) | head -1)
|
|
61
|
+
# Tolerated unsourced: VERDACHT-HALLUZINATION + DPF-Klage-anhaengig (intentionally unsourced)
|
|
62
|
+
tolerated_count=$( (grep -cE "VERDACHT-HALLUZINATION|unverifiziert, da Verfahren" "$SKILL_DIR/references/bgh-urteile.md" 2>/dev/null || echo 0) | head -1)
|
|
63
|
+
expected_src=$((real_az - tolerated_count))
|
|
64
|
+
echo " Az.-Eintraege (echte): $real_az · Source-Verlinkungen: $src_count · Toleriert (Halluzin/anhaengig): $tolerated_count"
|
|
65
|
+
if [[ "$src_count" -lt "$expected_src" ]]; then
|
|
66
|
+
diff=$((expected_src - src_count))
|
|
57
67
|
echo " ⚠ $diff Eintraege ohne Source-Verlinkung — Provenance-Disziplin §5 pruefen"
|
|
58
68
|
issues=$((issues + 1))
|
|
59
69
|
else
|
|
60
|
-
echo " ✓ alle Eintraege haben Source-Verlinkung"
|
|
70
|
+
echo " ✓ alle Az.-Eintraege haben Source-Verlinkung (modulo $tolerated_count tolerierte)"
|
|
61
71
|
fi
|
|
62
72
|
|
|
63
73
|
# 3. Verzeichnis-Vollstaendigkeit
|
|
64
|
-
echo "3/
|
|
65
|
-
required=("SKILL.md" "README.md" "LICENSE" "CHANGELOG.md" \
|
|
74
|
+
echo "3/10 Verzeichnis-Vollstaendigkeit…"
|
|
75
|
+
required=("SKILL.md" "README.md" "LICENSE" "CHANGELOG.md" "settings.json" \
|
|
76
|
+
".claude-plugin/plugin.json" \
|
|
77
|
+
"hooks/post_write.py" "hooks/session_start.py" "hooks/prompt_submit.py" "hooks/triggers.json" \
|
|
78
|
+
"commands/cold-start.md" "commands/health.md" \
|
|
79
|
+
"references/INDEX.md" \
|
|
66
80
|
"references/audit-patterns.md" "references/dsgvo.md" "references/it-recht.md" \
|
|
67
81
|
"references/vertragsrecht.md" "references/checklisten.md" "references/branchenrecht.md" \
|
|
68
82
|
"references/bgh-urteile.md" "references/abmahn-templates.md" "references/aegis-integration.md" \
|
|
@@ -86,7 +100,7 @@ else
|
|
|
86
100
|
fi
|
|
87
101
|
|
|
88
102
|
# 4. SKILL.md Reference-Loading-Map → File-Vorhandensein
|
|
89
|
-
echo "4/
|
|
103
|
+
echo "4/10 Reference-Loading-Map konsistent…"
|
|
90
104
|
map_files=$(grep -oE 'references/[a-z_-]+\.md' "$SKILL_DIR/SKILL.md" 2>/dev/null | sort -u)
|
|
91
105
|
for f in $map_files; do
|
|
92
106
|
if [[ ! -f "$SKILL_DIR/$f" ]]; then
|
|
@@ -96,18 +110,146 @@ for f in $map_files; do
|
|
|
96
110
|
done
|
|
97
111
|
echo " ✓ alle in SKILL.md referenzierten Files vorhanden"
|
|
98
112
|
|
|
99
|
-
# 5. Templates ohne Brand-Leak —
|
|
100
|
-
#
|
|
101
|
-
echo "5/
|
|
102
|
-
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
|
|
113
|
+
# 5. Templates ohne Brand-Leak — reuses BRAND_PATTERN from check 1 above.
|
|
114
|
+
# Public users with no pattern configured see this as a silent no-op.
|
|
115
|
+
echo "5/10 Templates anonymisiert…"
|
|
116
|
+
if [[ -z "$BRAND_PATTERN" ]]; then
|
|
117
|
+
echo " ✓ no brand-pattern configured (operator-internal QA skipped)"
|
|
118
|
+
else
|
|
119
|
+
template_brand_hits=$( (grep -rEnli "$BRAND_PATTERN" \
|
|
120
|
+
"$SKILL_DIR/references/templates/" 2>/dev/null || true) | wc -l | tr -d ' ')
|
|
121
|
+
if [[ "$template_brand_hits" == "0" ]]; then
|
|
122
|
+
echo " ✓ alle Templates anonymisiert"
|
|
123
|
+
else
|
|
124
|
+
echo " ✗ Templates enthalten Brand-Refs (sollten anonym sein):"
|
|
125
|
+
grep -rEni "$BRAND_PATTERN" \
|
|
126
|
+
"$SKILL_DIR/references/templates/" 2>/dev/null | head -10 || true
|
|
127
|
+
issues=$((issues + 1))
|
|
128
|
+
fi
|
|
129
|
+
fi
|
|
130
|
+
|
|
131
|
+
# 6. Az-Cross-File-Konsistenz (V4.0-Lesson, post-E.1-Cleanup-Lesson 2026-05-02)
|
|
132
|
+
# Detekt: bekannte verworfene Az. die als AKTIVE Citation auftauchen (nicht als Doku-Note)
|
|
133
|
+
# Toleriert: Provenance-Notes / VERDACHT-HALLUZINATION-Tags / „verworfen" / Lesson-Kontext.
|
|
134
|
+
echo "6/10 Az-Cross-File-Konsistenz (aktive Drifts)…"
|
|
135
|
+
DRIFT_FOUND=0
|
|
136
|
+
# 6a. OLG Hamm 4 U 75/23 — aktive Citation = ohne Doku-Marker im selben File
|
|
137
|
+
hamm_active=$( (grep -rEn "OLG Hamm.*4 U 75/23|Hamm 4 U 75/23" \
|
|
138
|
+
"$SKILL_DIR/references/" "$SKILL_DIR/SKILL.md" 2>/dev/null || true) \
|
|
139
|
+
| (grep -vE "verworfen|Vorgaenger-Eintrag|Provenance-Note|Lesson|halluzin|Halluzin|war \*\*OLG Hamm|tatsaechlich 11 U 88|→ 11 U 88|→ tatsaechlich" || true) \
|
|
140
|
+
| wc -l | tr -d ' ')
|
|
141
|
+
if [[ "$hamm_active" -gt "0" ]]; then
|
|
142
|
+
echo " ✗ OLG Hamm 4 U 75/23 in $hamm_active aktiven Citation(s) — sollte 11 U 88/22 sein:"
|
|
143
|
+
grep -rEn "OLG Hamm.*4 U 75/23|Hamm 4 U 75/23" "$SKILL_DIR/references/" "$SKILL_DIR/SKILL.md" 2>/dev/null \
|
|
144
|
+
| grep -vE "verworfen|Vorgaenger-Eintrag|Provenance-Note|Lesson|halluzin|Halluzin|war \*\*OLG Hamm" | head -3 || true
|
|
145
|
+
DRIFT_FOUND=$((DRIFT_FOUND + 1))
|
|
146
|
+
fi
|
|
147
|
+
# 6b. LG Berlin 16 O 9/22 — analog
|
|
148
|
+
# grep -v exits with 1 when ALL lines are filtered out (legitimate match → no active drift).
|
|
149
|
+
# Use `|| true` defensively after the grep -v + wrap in subshell.
|
|
150
|
+
lgb_active=$( (grep -rEn "16 O 9/22" "$SKILL_DIR/references/" "$SKILL_DIR/SKILL.md" 2>/dev/null || true) \
|
|
151
|
+
| (grep -vE "VERDACHT-HALLUZINATION|halluzin|Halluzin|verworfen|nicht zitieren|Lesson|existiert nicht|ersetzt durch|→ BGH I ZR 218/07" || true) \
|
|
152
|
+
| wc -l | tr -d ' ')
|
|
153
|
+
if [[ "$lgb_active" -gt "0" ]]; then
|
|
154
|
+
echo " ✗ LG Berlin 16 O 9/22 in $lgb_active aktiven Citation(s) — Halluzination, BGH I ZR 218/07 verwenden"
|
|
155
|
+
DRIFT_FOUND=$((DRIFT_FOUND + 1))
|
|
156
|
+
fi
|
|
157
|
+
if [[ "$DRIFT_FOUND" == "0" ]]; then
|
|
158
|
+
echo " ✓ keine aktiven Cross-File-Az-Drifts"
|
|
159
|
+
else
|
|
160
|
+
issues=$((issues + 1))
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# 7. Hooks executable + lint-clean (v4.3.0+)
|
|
164
|
+
echo "7/10 Hooks Python-syntax-clean…"
|
|
165
|
+
hook_errors=0
|
|
166
|
+
for hook in "$SKILL_DIR"/hooks/*.py; do
|
|
167
|
+
[[ -f "$hook" ]] || continue
|
|
168
|
+
if ! python3 -c "import py_compile; py_compile.compile('$hook', doraise=True)" 2>/dev/null; then
|
|
169
|
+
echo " ✗ Syntax-Fehler in $(basename "$hook")"
|
|
170
|
+
hook_errors=$((hook_errors + 1))
|
|
171
|
+
fi
|
|
172
|
+
if [[ ! -x "$hook" ]]; then
|
|
173
|
+
echo " ⚠ $(basename "$hook") nicht executable (chmod +x noetig)"
|
|
174
|
+
fi
|
|
175
|
+
done
|
|
176
|
+
if [[ "$hook_errors" == "0" ]]; then
|
|
177
|
+
echo " ✓ alle hooks/*.py sind syntax-clean"
|
|
178
|
+
else
|
|
179
|
+
issues=$((issues + 1))
|
|
180
|
+
fi
|
|
181
|
+
|
|
182
|
+
# 8. triggers.json regex-valid (v4.3.0+)
|
|
183
|
+
echo "8/10 triggers.json regex-valid…"
|
|
184
|
+
triggers_file="$SKILL_DIR/hooks/triggers.json"
|
|
185
|
+
if [[ ! -f "$triggers_file" ]]; then
|
|
186
|
+
echo " ✗ hooks/triggers.json fehlt"
|
|
187
|
+
issues=$((issues + 1))
|
|
188
|
+
else
|
|
189
|
+
if ! python3 -c "
|
|
190
|
+
import json, re, sys
|
|
191
|
+
with open('$triggers_file') as f:
|
|
192
|
+
data = json.load(f)
|
|
193
|
+
errors = []
|
|
194
|
+
for t in data.get('triggers', []):
|
|
195
|
+
try:
|
|
196
|
+
re.compile(t['pattern'])
|
|
197
|
+
except re.error as e:
|
|
198
|
+
errors.append((t.get('name', '?'), str(e)))
|
|
199
|
+
if errors:
|
|
200
|
+
for name, err in errors:
|
|
201
|
+
print(f'invalid regex {name}: {err}', file=sys.stderr)
|
|
202
|
+
sys.exit(1)
|
|
203
|
+
print(f'OK {len(data[\"triggers\"])} triggers')
|
|
204
|
+
" 2>&1; then
|
|
205
|
+
echo " ✗ triggers.json hat invalid Regex-Patterns"
|
|
206
|
+
issues=$((issues + 1))
|
|
207
|
+
else
|
|
208
|
+
triggers_count=$(python3 -c "import json; print(len(json.load(open('$triggers_file'))['triggers']))")
|
|
209
|
+
echo " ✓ alle $triggers_count Trigger-Patterns regex-valid"
|
|
210
|
+
fi
|
|
211
|
+
fi
|
|
212
|
+
|
|
213
|
+
# 9. .claude-plugin/plugin.json schema-valid + version match
|
|
214
|
+
echo "9/10 plugin.json schema-valid + version-match…"
|
|
215
|
+
plugin_file="$SKILL_DIR/.claude-plugin/plugin.json"
|
|
216
|
+
if [[ ! -f "$plugin_file" ]]; then
|
|
217
|
+
echo " ✗ .claude-plugin/plugin.json fehlt"
|
|
218
|
+
issues=$((issues + 1))
|
|
106
219
|
else
|
|
107
|
-
|
|
108
|
-
grep -
|
|
109
|
-
|
|
220
|
+
plugin_version=$(python3 -c "import json; print(json.load(open('$plugin_file')).get('version', 'unset'))")
|
|
221
|
+
skill_version=$(grep -oE 'Version:\*\* v?[0-9]+\.[0-9]+\.[0-9]+' "$SKILL_DIR/README.md" 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
|
|
222
|
+
if [[ -z "$skill_version" ]]; then
|
|
223
|
+
skill_version=$(grep -oE '^## \[[0-9]+\.[0-9]+\.[0-9]+\]' "$SKILL_DIR/CHANGELOG.md" 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
|
|
224
|
+
fi
|
|
225
|
+
if [[ "$plugin_version" == "$skill_version" ]]; then
|
|
226
|
+
echo " ✓ plugin.json v$plugin_version == README v$skill_version"
|
|
227
|
+
else
|
|
228
|
+
echo " ✗ Version-Mismatch: plugin.json=v$plugin_version, README/CHANGELOG=v$skill_version"
|
|
229
|
+
issues=$((issues + 1))
|
|
230
|
+
fi
|
|
231
|
+
fi
|
|
232
|
+
|
|
233
|
+
# 10. settings.json WebFetch-Allowlist >= 30 Tier-1 Domains
|
|
234
|
+
echo "10/10 settings.json WebFetch-Allowlist…"
|
|
235
|
+
settings_file="$SKILL_DIR/settings.json"
|
|
236
|
+
if [[ ! -f "$settings_file" ]]; then
|
|
237
|
+
echo " ✗ settings.json fehlt"
|
|
110
238
|
issues=$((issues + 1))
|
|
239
|
+
else
|
|
240
|
+
domains_count=$(python3 -c "
|
|
241
|
+
import json
|
|
242
|
+
with open('$settings_file') as f:
|
|
243
|
+
data = json.load(f)
|
|
244
|
+
allowlist = data.get('permissions', {}).get('allow', [])
|
|
245
|
+
print(sum(1 for p in allowlist if p.startswith('WebFetch(domain:')))
|
|
246
|
+
")
|
|
247
|
+
if [[ "$domains_count" -ge "30" ]]; then
|
|
248
|
+
echo " ✓ $domains_count Tier-1/2-Domains in Allowlist"
|
|
249
|
+
else
|
|
250
|
+
echo " ✗ Nur $domains_count Domains — Mindest-Erwartung 30 Tier-1/2-Quellen"
|
|
251
|
+
issues=$((issues + 1))
|
|
252
|
+
fi
|
|
111
253
|
fi
|
|
112
254
|
|
|
113
255
|
echo
|