failproofai 0.0.6-beta.0 → 0.0.6-beta.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.
Files changed (191) hide show
  1. package/.next/standalone/.failproofai/policies/review-policies.mjs +113 -0
  2. package/.next/standalone/.next/BUILD_ID +1 -1
  3. package/.next/standalone/.next/build-manifest.json +5 -5
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/required-server-files.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  7. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  13. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  14. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  15. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  16. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  18. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  19. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  22. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  23. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  24. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  25. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  26. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  27. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  28. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  29. package/.next/standalone/.next/server/app/index.html +1 -1
  30. package/.next/standalone/.next/server/app/index.rsc +15 -15
  31. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  32. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  33. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  34. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +10 -10
  35. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  36. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  37. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  38. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  41. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +8 -8
  42. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  45. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  46. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  49. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  50. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  51. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  54. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  55. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  56. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72weg._.js +1 -1
  58. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +1 -1
  59. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0a.nuas._.js → [root-of-the-server]__05akje6._.js} +2 -2
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0.~fd7s._.js → [root-of-the-server]__0i5kvry._.js} +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0okos0k._.js +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +6 -6
  67. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +2 -2
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +2 -2
  70. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +1 -1
  71. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +1 -1
  72. package/.next/standalone/.next/server/middleware-build-manifest.js +5 -5
  73. package/.next/standalone/.next/server/pages/404.html +2 -2
  74. package/.next/standalone/.next/server/pages/500.html +1 -1
  75. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/server-reference-manifest.json +9 -9
  77. package/.next/standalone/.next/static/chunks/{0teq8wdh3po1n.js → 00j0rr7rh8ef8.js} +1 -1
  78. package/.next/standalone/.next/static/chunks/{0maq.q1t.ri85.js → 05j1px0r8yzh6.js} +2 -2
  79. package/.next/standalone/.next/static/chunks/0badv41uxa56..js +4 -0
  80. package/.next/standalone/.next/static/chunks/{0hplx-8c-4vpv.js → 0ijk_kek9_wyx.js} +1 -1
  81. package/.next/standalone/.next/static/chunks/{0uc0um_uz51m_.js → 0npb~873.wvg3.js} +1 -1
  82. package/.next/standalone/.next/static/chunks/{0hctoh28rg838.js → 0xpl.oscrakvx.js} +1 -1
  83. package/.next/standalone/.next/static/chunks/{0.z51twd.0l5z.js → 1052sguyd-.ka.js} +1 -1
  84. package/.next/standalone/.next/static/chunks/{09e7drilkf1sn.js → 12simlrcfk3g2.js} +1 -1
  85. package/.next/standalone/.next/static/chunks/{0ul6fk-z.6k-0.js → 14cl9poem30dq.js} +1 -1
  86. package/.next/standalone/.next/static/chunks/{turbopack-0r26pc8h0y_-e.js → turbopack-0o7k.hakttp4k.js} +1 -1
  87. package/.next/standalone/CHANGELOG.md +19 -0
  88. package/.next/standalone/README.md +2 -2
  89. package/.next/standalone/bun.lock +43 -85
  90. package/.next/standalone/dist/cli.mjs +91 -4
  91. package/.next/standalone/docs/ar/built-in-policies.mdx +124 -87
  92. package/.next/standalone/docs/ar/custom-policies.mdx +72 -72
  93. package/.next/standalone/docs/ar/examples.mdx +86 -33
  94. package/.next/standalone/docs/ar/getting-started.mdx +82 -29
  95. package/.next/standalone/docs/built-in-policies.mdx +38 -1
  96. package/.next/standalone/docs/custom-policies.mdx +1 -1
  97. package/.next/standalone/docs/de/built-in-policies.mdx +93 -56
  98. package/.next/standalone/docs/de/custom-policies.mdx +56 -56
  99. package/.next/standalone/docs/de/examples.mdx +72 -18
  100. package/.next/standalone/docs/de/getting-started.mdx +72 -20
  101. package/.next/standalone/docs/es/built-in-policies.mdx +115 -78
  102. package/.next/standalone/docs/es/custom-policies.mdx +55 -55
  103. package/.next/standalone/docs/es/examples.mdx +73 -19
  104. package/.next/standalone/docs/es/getting-started.mdx +72 -20
  105. package/.next/standalone/docs/examples.mdx +54 -0
  106. package/.next/standalone/docs/fr/built-in-policies.mdx +83 -46
  107. package/.next/standalone/docs/fr/custom-policies.mdx +51 -51
  108. package/.next/standalone/docs/fr/examples.mdx +78 -24
  109. package/.next/standalone/docs/fr/getting-started.mdx +65 -13
  110. package/.next/standalone/docs/getting-started.mdx +52 -0
  111. package/.next/standalone/docs/he/built-in-policies.mdx +156 -117
  112. package/.next/standalone/docs/he/custom-policies.mdx +75 -75
  113. package/.next/standalone/docs/he/examples.mdx +87 -33
  114. package/.next/standalone/docs/he/getting-started.mdx +84 -33
  115. package/.next/standalone/docs/hi/built-in-policies.mdx +101 -60
  116. package/.next/standalone/docs/hi/custom-policies.mdx +71 -70
  117. package/.next/standalone/docs/hi/examples.mdx +90 -36
  118. package/.next/standalone/docs/hi/getting-started.mdx +80 -27
  119. package/.next/standalone/docs/i18n/README.ar.md +69 -69
  120. package/.next/standalone/docs/i18n/README.de.md +46 -46
  121. package/.next/standalone/docs/i18n/README.es.md +42 -42
  122. package/.next/standalone/docs/i18n/README.fr.md +39 -39
  123. package/.next/standalone/docs/i18n/README.he.md +83 -83
  124. package/.next/standalone/docs/i18n/README.hi.md +69 -69
  125. package/.next/standalone/docs/i18n/README.it.md +72 -72
  126. package/.next/standalone/docs/i18n/README.ja.md +71 -71
  127. package/.next/standalone/docs/i18n/README.ko.md +52 -52
  128. package/.next/standalone/docs/i18n/README.pt-br.md +44 -44
  129. package/.next/standalone/docs/i18n/README.ru.md +66 -66
  130. package/.next/standalone/docs/i18n/README.tr.md +82 -83
  131. package/.next/standalone/docs/i18n/README.vi.md +70 -71
  132. package/.next/standalone/docs/i18n/README.zh.md +51 -51
  133. package/.next/standalone/docs/it/built-in-policies.mdx +118 -81
  134. package/.next/standalone/docs/it/custom-policies.mdx +69 -69
  135. package/.next/standalone/docs/it/examples.mdx +93 -39
  136. package/.next/standalone/docs/it/getting-started.mdx +73 -21
  137. package/.next/standalone/docs/ja/built-in-policies.mdx +98 -61
  138. package/.next/standalone/docs/ja/custom-policies.mdx +71 -71
  139. package/.next/standalone/docs/ja/examples.mdx +76 -22
  140. package/.next/standalone/docs/ja/getting-started.mdx +65 -13
  141. package/.next/standalone/docs/ko/built-in-policies.mdx +137 -100
  142. package/.next/standalone/docs/ko/custom-policies.mdx +67 -67
  143. package/.next/standalone/docs/ko/examples.mdx +87 -33
  144. package/.next/standalone/docs/ko/getting-started.mdx +61 -9
  145. package/.next/standalone/docs/pt-br/built-in-policies.mdx +94 -57
  146. package/.next/standalone/docs/pt-br/custom-policies.mdx +56 -56
  147. package/.next/standalone/docs/pt-br/examples.mdx +78 -24
  148. package/.next/standalone/docs/pt-br/getting-started.mdx +64 -12
  149. package/.next/standalone/docs/ru/built-in-policies.mdx +142 -105
  150. package/.next/standalone/docs/ru/custom-policies.mdx +82 -81
  151. package/.next/standalone/docs/ru/examples.mdx +77 -22
  152. package/.next/standalone/docs/ru/getting-started.mdx +74 -22
  153. package/.next/standalone/docs/tr/built-in-policies.mdx +104 -67
  154. package/.next/standalone/docs/tr/custom-policies.mdx +59 -60
  155. package/.next/standalone/docs/tr/examples.mdx +97 -42
  156. package/.next/standalone/docs/tr/getting-started.mdx +75 -23
  157. package/.next/standalone/docs/vi/built-in-policies.mdx +110 -72
  158. package/.next/standalone/docs/vi/custom-policies.mdx +68 -68
  159. package/.next/standalone/docs/vi/examples.mdx +93 -38
  160. package/.next/standalone/docs/vi/getting-started.mdx +74 -22
  161. package/.next/standalone/docs/zh/built-in-policies.mdx +132 -95
  162. package/.next/standalone/docs/zh/custom-policies.mdx +49 -49
  163. package/.next/standalone/docs/zh/examples.mdx +90 -36
  164. package/.next/standalone/docs/zh/getting-started.mdx +73 -21
  165. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  166. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  167. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -7
  168. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  169. package/.next/standalone/node_modules/next/dist/server/config-schema.js +10 -2
  170. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  171. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  172. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  173. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  174. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  175. package/.next/standalone/node_modules/next/dist/server/render.js +27 -20
  176. package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  177. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  178. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  179. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  180. package/.next/standalone/node_modules/next/package.json +15 -15
  181. package/.next/standalone/package.json +2 -2
  182. package/.next/standalone/server.js +1 -1
  183. package/.next/standalone/src/hooks/builtin-policies.ts +106 -1
  184. package/README.md +2 -2
  185. package/dist/cli.mjs +91 -4
  186. package/package.json +2 -2
  187. package/src/hooks/builtin-policies.ts +106 -1
  188. package/.next/standalone/.next/static/chunks/0w9lwqy0-v1dk.js +0 -4
  189. /package/.next/standalone/.next/static/{8mygPGI5bzrtWK36ZYO59 → A9pNTZdoYJTVyPAYwQMx5}/_buildManifest.js +0 -0
  190. /package/.next/standalone/.next/static/{8mygPGI5bzrtWK36ZYO59 → A9pNTZdoYJTVyPAYwQMx5}/_clientMiddlewareManifest.js +0 -0
  191. /package/.next/standalone/.next/static/{8mygPGI5bzrtWK36ZYO59 → A9pNTZdoYJTVyPAYwQMx5}/_ssgManifest.js +0 -0
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  title: Benutzerdefinierte Richtlinien
3
- description: "Schreibe eigene Richtlinien in JavaScript – Konventionen durchsetzen, Drift verhindern, Fehler erkennen, externe Systeme integrieren"
3
+ description: "Schreibe eigene Richtlinien in JavaScript – setze Konventionen durch, verhindere Abweichungen, erkenne Fehler und integriere externe Systeme"
4
4
  icon: code
5
5
  ---
6
6
 
7
- Benutzerdefinierte Richtlinien ermöglichen es dir, Regeln für jedes Agentenverhalten zu schreiben: Projektkonventionen durchsetzen, Drift verhindern, destruktive Operationen absichern, feststeckende Agenten erkennen oder Slack, Genehmigungsworkflows und mehr integrieren. Sie verwenden dasselbe Hook-Event-System und dieselben `allow`-, `deny`-, `instruct`-Entscheidungen wie eingebaute Richtlinien.
7
+ Benutzerdefinierte Richtlinien ermöglichen es dir, Regeln für jedes Agentenverhalten zu schreiben: Projektkonventionen durchsetzen, Abweichungen verhindern, destruktive Operationen absichern, feststeckende Agenten erkennen oder Integrationen mit Slack, Genehmigungsworkflows und mehr umsetzen. Sie verwenden dasselbe Hook-Event-System und dieselben `allow`-, `deny`- und `instruct`-Entscheidungen wie integrierte Richtlinien.
8
8
 
9
9
  ---
10
10
 
@@ -44,23 +44,23 @@ failproofai policies --install --custom ./my-policies.js
44
44
  Lege `*policies.{js,mjs,ts}`-Dateien in `.failproofai/policies/` ab – sie werden automatisch geladen, ohne Flags oder Konfigurationsänderungen. Das funktioniert wie Git-Hooks: Datei ablegen, fertig.
45
45
 
46
46
  ```
47
- # Projektebene in Git eingecheckt, mit dem Team geteilt
47
+ # Projektebene in Git eingecheckt, wird mit dem Team geteilt
48
48
  .failproofai/policies/security-policies.mjs
49
49
  .failproofai/policies/workflow-policies.mjs
50
50
 
51
- # Benutzerebene persönlich, gilt für alle Projekte
51
+ # Benutzerebene persönlich, gilt für alle Projekte
52
52
  ~/.failproofai/policies/my-policies.mjs
53
53
  ```
54
54
 
55
- **Funktionsweise:**
56
- - Sowohl Projekt- als auch Benutzerverzeichnisse werden durchsucht (Vereinigung – kein „erste Scope gewinnt")
55
+ **So funktioniert es:**
56
+ - Sowohl Projekt- als auch Benutzerverzeichnisse werden durchsucht (Vereinigung – kein „First-scope-wins")
57
57
  - Dateien werden innerhalb jedes Verzeichnisses alphabetisch geladen. Mit `01-`, `02-` als Präfix lässt sich die Reihenfolge steuern
58
58
  - Nur Dateien, die auf `*policies.{js,mjs,ts}` passen, werden geladen; andere Dateien werden ignoriert
59
59
  - Jede Datei wird unabhängig geladen (fail-open pro Datei)
60
- - Funktioniert zusammen mit explizitem `--custom` und eingebauten Richtlinien
60
+ - Funktioniert zusammen mit expliziten `--custom`- und integrierten Richtlinien
61
61
 
62
62
  <Tip>
63
- Konventionsrichtlinien sind der einfachste Weg, Richtlinien im Team zu teilen. Checke `.failproofai/policies/` in Git ein und alle Teammitglieder erhalten sie automatisch.
63
+ Konventionsrichtlinien sind der einfachste Weg, einen Qualitätsstandard für deine Organisation aufzubauen. Checke `.failproofai/policies/` in Git ein, und jedes Teammitglied erhält automatisch dieselben Regeln – kein Setup pro Entwickler nötig. Wenn dein Team neue Fehlerquellen entdeckt, füge eine Richtlinie hinzu und pushe sie. Mit der Zeit entstehen so lebendige Qualitätsstandards, die mit jedem Beitrag besser werden.
64
64
  </Tip>
65
65
 
66
66
  ### Option 2: Expliziter Dateipfad
@@ -69,7 +69,7 @@ Konventionsrichtlinien sind der einfachste Weg, Richtlinien im Team zu teilen. C
69
69
  # Mit einer benutzerdefinierten Richtliniendatei installieren
70
70
  failproofai policies --install --custom ./my-policies.js
71
71
 
72
- # Den Richtliniendateipfad ersetzen
72
+ # Den Pfad zur Richtliniendatei ersetzen
73
73
  failproofai policies --install --custom ./new-policies.js
74
74
 
75
75
  # Den benutzerdefinierten Richtlinienpfad aus der Konfiguration entfernen
@@ -78,13 +78,13 @@ failproofai policies --uninstall --custom
78
78
 
79
79
  Der aufgelöste absolute Pfad wird in `policies-config.json` als `customPoliciesPath` gespeichert. Die Datei wird bei jedem Hook-Event neu geladen – es gibt kein Caching zwischen Events.
80
80
 
81
- ### Beide Varianten kombiniert
81
+ ### Beide Varianten zusammen verwenden
82
82
 
83
83
  Konventionsrichtlinien und die explizite `--custom`-Datei können nebeneinander existieren. Ladereihenfolge:
84
84
 
85
- 1. Explizite `customPoliciesPath`-Datei (sofern konfiguriert)
86
- 2. Projekt-Konventionsdateien (`{cwd}/.failproofai/policies/`, alphabetisch)
87
- 3. Benutzer-Konventionsdateien (`~/.failproofai/policies/`, alphabetisch)
85
+ 1. Explizite `customPoliciesPath`-Datei (falls konfiguriert)
86
+ 2. Projektkonventionsdateien (`{cwd}/.failproofai/policies/`, alphabetisch)
87
+ 3. Benutzerkonventionsdateien (`~/.failproofai/policies/`, alphabetisch)
88
88
 
89
89
  ---
90
90
 
@@ -103,40 +103,40 @@ Registriert eine Richtlinie. Kann mehrfach aufgerufen werden, um mehrere Richtli
103
103
  ```ts
104
104
  customPolicies.add({
105
105
  name: string; // erforderlich – eindeutiger Bezeichner
106
- description?: string; // erscheint in der `failproofai policies`-Ausgabe
107
- match?: { events?: HookEventType[] }; // nach Event-Typ filtern; weglassen für alle Events
106
+ description?: string; // wird in der Ausgabe von `failproofai policies` angezeigt
107
+ match?: { events?: HookEventType[] }; // nach Event-Typ filtern; weglassen, um alle abzugleichen
108
108
  fn: (ctx: PolicyContext) => PolicyResult | Promise<PolicyResult>;
109
109
  });
110
110
  ```
111
111
 
112
112
  ### Entscheidungs-Hilfsfunktionen
113
113
 
114
- | Funktion | Wirkung | Verwendung |
115
- |----------|---------|------------|
116
- | `allow()` | Operation lautlos zulassen | Die Aktion ist sicher, keine Meldung erforderlich |
114
+ | Funktion | Wirkung | Verwenden, wenn |
115
+ |----------|---------|-----------------|
116
+ | `allow()` | Operation lautlos erlauben | Die Aktion ist sicher, keine Meldung erforderlich |
117
117
  | `deny(message)` | Operation blockieren | Der Agent soll diese Aktion nicht ausführen |
118
- | `instruct(message)` | Kontext hinzufügen ohne zu blockieren | Dem Agenten zusätzlichen Kontext geben, um ihn auf Kurs zu halten |
118
+ | `instruct(message)` | Kontext hinzufügen, ohne zu blockieren | Dem Agenten zusätzlichen Kontext geben, damit er auf Kurs bleibt |
119
119
 
120
- `deny(message)` – die Nachricht erscheint für Claude mit dem Präfix `"Blocked by failproofai:"`. Ein einzelnes `deny` bricht alle weitere Auswertung ab.
120
+ `deny(message)` – die Nachricht wird Claude mit dem Präfix `"Blocked by failproofai:"` angezeigt. Ein einzelnes `deny` bricht die gesamte weitere Auswertung ab.
121
121
 
122
- `instruct(message)` – die Nachricht wird dem Kontext von Claude für den aktuellen Tool-Aufruf angehängt. Alle `instruct`-Nachrichten werden gesammelt und gemeinsam zugestellt.
122
+ `instruct(message)` – die Nachricht wird dem Kontext von Claude für den aktuellen Tool-Aufruf hinzugefügt. Alle `instruct`-Nachrichten werden gesammelt und gemeinsam übermittelt.
123
123
 
124
124
  <Tip>
125
- Zu jeder `deny`- oder `instruct`-Nachricht können zusätzliche Hinweise hinzugefügt werden, indem ein `hint`-Feld in `policyParams` gesetzt wird – ohne Codeänderung. Das funktioniert auch für benutzerdefinierte (`custom/`), Projekt-Konventions- (`.failproofai-project/`) und Benutzer-Konventionsrichtlinien (`.failproofai-user/`). Siehe [Konfiguration → hint](/de/configuration#hint-cross-cutting) für Details.
125
+ Du kannst jeder `deny`- oder `instruct`-Nachricht zusätzliche Hinweise hinzufügen, indem du ein `hint`-Feld in `policyParams` setzt – ohne Codeänderung. Das funktioniert auch für benutzerdefinierte (`custom/`), Projektkonventions- (`.failproofai-project/`) und Benutzerkonventionsrichtlinien (`.failproofai-user/`). Weitere Details unter [Konfiguration → hint](/de/configuration#hint-cross-cutting).
126
126
  </Tip>
127
127
 
128
128
  ### Informative Allow-Nachrichten
129
129
 
130
- `allow(message)` erlaubt die Operation **und** sendet eine informative Nachricht zurück an Claude. Die Nachricht wird als `additionalContext` in der stdout-Antwort des Hook-Handlers zugestellt – derselbe Mechanismus wie bei `instruct`, aber semantisch anders: Es ist eine Statusmeldung, keine Warnung.
130
+ `allow(message)` erlaubt die Operation **und** sendet eine informative Nachricht an Claude. Die Nachricht wird als `additionalContext` in der stdout-Antwort des Hook-Handlers übermittelt – derselbe Mechanismus wie bei `instruct`, aber semantisch anders: Es handelt sich um eine Statusmeldung, nicht um eine Warnung.
131
131
 
132
- | Funktion | Wirkung | Verwendung |
133
- |----------|---------|------------|
134
- | `allow(message)` | Zulassen und Kontext an Claude senden | Bestätigen, dass eine Prüfung bestanden wurde, oder erklären, warum sie übersprungen wurde |
132
+ | Funktion | Wirkung | Verwenden, wenn |
133
+ |----------|---------|-----------------|
134
+ | `allow(message)` | Erlauben und Kontext an Claude senden | Bestätigen, dass eine Prüfung bestanden wurde, oder erklären, warum eine Prüfung übersprungen wurde |
135
135
 
136
136
  Anwendungsfälle:
137
- - **Statusbestätigungen:** `allow("All CI checks passed.")` – teilt Claude mit, dass alles grün ist
137
+ - **Statusbestätigungen:** `allow("All CI checks passed.")` – teilt Claude mit, dass alles in Ordnung ist
138
138
  - **Fail-open-Erklärungen:** `allow("GitHub CLI not installed, skipping CI check.")` – erklärt Claude, warum eine Prüfung übersprungen wurde, damit er den vollen Kontext hat
139
- - **Mehrere Nachrichten werden akkumuliert:** Geben mehrere Richtlinien je ein `allow(message)` zurück, werden alle Nachrichten mit Zeilenumbrüchen verbunden und gemeinsam zugestellt
139
+ - **Mehrere Nachrichten werden akkumuliert:** Wenn mehrere Richtlinien jeweils `allow(message)` zurückgeben, werden alle Nachrichten mit Zeilenumbrüchen verbunden und gemeinsam übermittelt
140
140
 
141
141
  ```js
142
142
  customPolicies.add({
@@ -155,30 +155,30 @@ customPolicies.add({
155
155
  });
156
156
  ```
157
157
 
158
- ### `PolicyContext`-Felder
158
+ ### Felder von `PolicyContext`
159
159
 
160
160
  | Feld | Typ | Beschreibung |
161
161
  |------|-----|--------------|
162
162
  | `eventType` | `string` | `"PreToolUse"`, `"PostToolUse"`, `"Notification"`, `"Stop"` |
163
163
  | `toolName` | `string \| undefined` | Das aufgerufene Tool (z. B. `"Bash"`, `"Write"`, `"Read"`) |
164
164
  | `toolInput` | `Record<string, unknown> \| undefined` | Die Eingabeparameter des Tools |
165
- | `payload` | `Record<string, unknown>` | Vollständiger roher Event-Payload von Claude Code |
165
+ | `payload` | `Record<string, unknown>` | Vollständige rohe Event-Nutzlast von Claude Code |
166
166
  | `session` | `SessionMetadata \| undefined` | Sitzungskontext (siehe unten) |
167
167
 
168
- ### `SessionMetadata`-Felder
168
+ ### Felder von `SessionMetadata`
169
169
 
170
170
  | Feld | Typ | Beschreibung |
171
171
  |------|-----|--------------|
172
- | `sessionId` | `string` | Claude Code-Sitzungskennung |
172
+ | `sessionId` | `string` | Claude Code-Sitzungsbezeichner |
173
173
  | `cwd` | `string` | Arbeitsverzeichnis der Claude Code-Sitzung |
174
174
  | `transcriptPath` | `string` | Pfad zur JSONL-Transkriptdatei der Sitzung |
175
175
 
176
176
  ### Event-Typen
177
177
 
178
- | Event | Wann es ausgelöst wird | Inhalt von `toolInput` |
179
- |-------|----------------------|----------------------|
178
+ | Event | Wann ausgelöst | Inhalt von `toolInput` |
179
+ |-------|---------------|------------------------|
180
180
  | `PreToolUse` | Bevor Claude ein Tool ausführt | Die Eingabe des Tools (z. B. `{ command: "..." }` für Bash) |
181
- | `PostToolUse` | Nachdem ein Tool abgeschlossen wurde | Die Eingabe des Tools + `tool_result` (die Ausgabe) |
181
+ | `PostToolUse` | Nachdem ein Tool abgeschlossen ist | Die Eingabe des Tools + `tool_result` (die Ausgabe) |
182
182
  | `Notification` | Wenn Claude eine Benachrichtigung sendet | `{ message: "...", notification_type: "idle" \| "permission_prompt" \| ... }` – Hooks müssen immer `allow()` zurückgeben, Benachrichtigungen können nicht blockiert werden |
183
183
  | `Stop` | Wenn die Claude-Sitzung endet | Leer |
184
184
 
@@ -188,18 +188,18 @@ customPolicies.add({
188
188
 
189
189
  Richtlinien werden in dieser Reihenfolge ausgewertet:
190
190
 
191
- 1. Eingebaute Richtlinien (in Definitionsreihenfolge)
191
+ 1. Integrierte Richtlinien (in Definitionsreihenfolge)
192
192
  2. Explizite benutzerdefinierte Richtlinien aus `customPoliciesPath` (in `.add()`-Reihenfolge)
193
- 3. Konventionsrichtlinien aus dem Projekt `.failproofai/policies/` (Dateien alphabetisch, `.add()`-Reihenfolge innerhalb)
193
+ 3. Konventionsrichtlinien aus dem Projekt unter `.failproofai/policies/` (Dateien alphabetisch, `.add()`-Reihenfolge innerhalb)
194
194
  4. Konventionsrichtlinien aus dem Benutzerverzeichnis `~/.failproofai/policies/` (Dateien alphabetisch, `.add()`-Reihenfolge innerhalb)
195
195
 
196
196
  <Note>
197
- Das erste `deny` bricht alle nachfolgenden Richtlinien ab. Alle `instruct`-Nachrichten werden gesammelt und gemeinsam zugestellt.
197
+ Das erste `deny` bricht alle nachfolgenden Richtlinien ab. Alle `instruct`-Nachrichten werden gesammelt und gemeinsam übermittelt.
198
198
  </Note>
199
199
 
200
200
  ---
201
201
 
202
- ## Transitive Importe
202
+ ## Transitive Imports
203
203
 
204
204
  Benutzerdefinierte Richtliniendateien können lokale Module über relative Pfade importieren:
205
205
 
@@ -218,13 +218,13 @@ customPolicies.add({
218
218
  });
219
219
  ```
220
220
 
221
- Alle transitiv erreichbaren relativen Importe von der Einstiegsdatei werden aufgelöst. Dies wird umgesetzt, indem `from "failproofai"`-Importe auf den tatsächlichen dist-Pfad umgeschrieben und temporäre `.mjs`-Dateien erstellt werden, um ESM-Kompatibilität sicherzustellen.
221
+ Alle relativen Imports, die von der Einstiegsdatei aus erreichbar sind, werden aufgelöst. Dies wird implementiert, indem `from "failproofai"`-Imports auf den tatsächlichen dist-Pfad umgeschrieben und temporäre `.mjs`-Dateien erstellt werden, um ESM-Kompatibilität sicherzustellen.
222
222
 
223
223
  ---
224
224
 
225
- ## Event-Typ-Filterung
225
+ ## Filterung nach Event-Typ
226
226
 
227
- Mit `match.events` lässt sich einschränken, wann eine Richtlinie ausgelöst wird:
227
+ Verwende `match.events`, um einzuschränken, wann eine Richtlinie ausgelöst wird:
228
228
 
229
229
  ```js
230
230
  customPolicies.add({
@@ -238,26 +238,26 @@ customPolicies.add({
238
238
  });
239
239
  ```
240
240
 
241
- `match` ganz weglassen, um bei jedem Event-Typ auszulösen.
241
+ Lass `match` vollständig weg, um bei jedem Event-Typ ausgelöst zu werden.
242
242
 
243
243
  ---
244
244
 
245
- ## Fehlerbehandlung und Fehlerverhalten
245
+ ## Fehlerbehandlung und Fehlermodi
246
246
 
247
- Benutzerdefinierte Richtlinien sind **fail-open**: Fehler blockieren niemals eingebaute Richtlinien oder bringen den Hook-Handler zum Absturz.
247
+ Benutzerdefinierte Richtlinien sind **fail-open**: Fehler blockieren niemals integrierte Richtlinien oder bringen den Hook-Handler zum Absturz.
248
248
 
249
249
  | Fehler | Verhalten |
250
250
  |--------|-----------|
251
- | `customPoliciesPath` nicht gesetzt | Keine expliziten benutzerdefinierten Richtlinien werden ausgeführt; Konventionsrichtlinien und eingebaute Richtlinien laufen normal weiter |
252
- | Datei nicht gefunden | Warnung wird in `~/.failproofai/hook.log` protokolliert; eingebaute Richtlinien laufen weiter |
251
+ | `customPoliciesPath` nicht gesetzt | Keine expliziten benutzerdefinierten Richtlinien werden ausgeführt; Konventionsrichtlinien und integrierte Richtlinien laufen normal weiter |
252
+ | Datei nicht gefunden | Warnung wird in `~/.failproofai/hook.log` protokolliert; integrierte Richtlinien laufen weiter |
253
253
  | Syntax-/Importfehler (explizit) | Fehler wird in `~/.failproofai/hook.log` protokolliert; explizite benutzerdefinierte Richtlinien werden übersprungen |
254
254
  | Syntax-/Importfehler (Konvention) | Fehler wird protokolliert; diese Datei wird übersprungen, andere Konventionsdateien werden weiterhin geladen |
255
255
  | `fn` wirft zur Laufzeit | Fehler wird protokolliert; dieser Hook wird als `allow` behandelt; andere Hooks laufen weiter |
256
- | `fn` dauert länger als 10 s | Timeout wird protokolliert; wird als `allow` behandelt |
256
+ | `fn` dauert länger als 10 Sekunden | Timeout wird protokolliert; wird als `allow` behandelt |
257
257
  | Konventionsverzeichnis fehlt | Keine Konventionsrichtlinien werden ausgeführt; kein Fehler |
258
258
 
259
259
  <Tip>
260
- Zum Debuggen von benutzerdefinierten Richtlinienfehlern die Log-Datei beobachten:
260
+ Um Fehler in benutzerdefinierten Richtlinien zu debuggen, beobachte die Protokolldatei:
261
261
 
262
262
  ```bash
263
263
  tail -f ~/.failproofai/hook.log
@@ -272,7 +272,7 @@ tail -f ~/.failproofai/hook.log
272
272
  // my-policies.js
273
273
  import { customPolicies, allow, deny, instruct } from "failproofai";
274
274
 
275
- // Verhindert, dass der Agent in das secrets/-Verzeichnis schreibt
275
+ // Verhindert, dass der Agent in das Verzeichnis secrets/ schreibt
276
276
  customPolicies.add({
277
277
  name: "block-secrets-dir",
278
278
  description: "Prevent agent from writing to secrets/ directory",
@@ -300,7 +300,7 @@ customPolicies.add({
300
300
  },
301
301
  });
302
302
 
303
- // Verhindert ungeplante Abhängigkeitsänderungen während des Freeze
303
+ // Verhindert ungeplante Abhängigkeitsänderungen während eines Freeze
304
304
  customPolicies.add({
305
305
  name: "dependency-freeze",
306
306
  description: "Prevent unplanned dependency changes during freeze period",
@@ -323,14 +323,14 @@ export { customPolicies };
323
323
 
324
324
  ## Beispiele
325
325
 
326
- Das Verzeichnis `examples/` enthält direkt ausführbare Richtliniendateien:
326
+ Das Verzeichnis `examples/` enthält fertige Richtliniendateien:
327
327
 
328
328
  | Datei | Inhalt |
329
329
  |-------|--------|
330
- | `examples/policies-basic.js` | Fünf Starter-Richtlinien für häufige Agenten-Fehlermodi |
331
- | `examples/policies-advanced/index.js` | Fortgeschrittene Muster: transitive Importe, asynchrone Aufrufe, Ausgabebereinigung und Sitzungsend-Hooks |
332
- | `examples/convention-policies/security-policies.mjs` | Konventionsbasierte Sicherheitsrichtlinien (blockiert .env-Schreibzugriffe, verhindert Umschreiben der Git-Historie) |
333
- | `examples/convention-policies/workflow-policies.mjs` | Konventionsbasierte Workflow-Richtlinien (Test-Erinnerungen, Protokollierung von Datei-Schreibzugriffen) |
330
+ | `examples/policies-basic.js` | Fünf Einstiegsrichtlinien für häufige Agenten-Fehlerszenarien |
331
+ | `examples/policies-advanced/index.js` | Fortgeschrittene Muster: transitive Imports, asynchrone Aufrufe, Ausgabebereinigung und Sitzungsende-Hooks |
332
+ | `examples/convention-policies/security-policies.mjs` | Konventionsbasierte Sicherheitsrichtlinien (blockiert .env-Schreibzugriffe, verhindert das Umschreiben der Git-Historie) |
333
+ | `examples/convention-policies/workflow-policies.mjs` | Konventionsbasierte Workflow-Richtlinien (Test-Erinnerungen, Protokollierung von Dateiänderungen) |
334
334
 
335
335
  ### Explizite Dateibeispiele verwenden
336
336
 
@@ -4,13 +4,13 @@ description: "So richten Sie Hooks für Claude Code und das Agents SDK ein"
4
4
  icon: book-open
5
5
  ---
6
6
 
7
- Sofort einsatzbereite Beispiele für häufige Szenarien. Jedes zeigt, wie die Installation funktioniert und was zu erwarten ist.
7
+ Sofort verwendbare Beispiele für häufige Szenarien. Jedes zeigt, wie man es installiert und was zu erwarten ist.
8
8
 
9
9
  ---
10
10
 
11
11
  ## Hooks für Claude Code einrichten
12
12
 
13
- Failproof AI integriert sich mit Claude Code über dessen [Hooks-System](https://docs.anthropic.com/en/docs/claude-code/hooks). Wenn Sie `failproofai policies --install` ausführen, werden Hook-Befehle in der `settings.json` von Claude Code registriert, die bei jedem Tool-Aufruf ausgelöst werden.
13
+ Failproof AI integriert sich mit Claude Code über dessen [Hooks-System](https://docs.anthropic.com/en/docs/claude-code/hooks). Wenn Sie `failproofai policies --install` ausführen, registriert es Hook-Befehle in der `settings.json` von Claude Code, die bei jedem Tool-Aufruf ausgelöst werden.
14
14
 
15
15
  <Steps>
16
16
  <Step title="failproofai installieren">
@@ -28,14 +28,14 @@ Failproof AI integriert sich mit Claude Code über dessen [Hooks-System](https:/
28
28
  cat ~/.claude/settings.json | grep failproofai
29
29
  ```
30
30
 
31
- Sie sollten Hook-Einträge für `PreToolUse`-, `PostToolUse`-, `Notification`- und `Stop`-Ereignisse sehen.
31
+ Sie sollten Hook-Einträge für `PreToolUse`, `PostToolUse`, `Notification` und `Stop`-Ereignisse sehen.
32
32
  </Step>
33
33
  <Step title="Claude Code starten">
34
34
  ```bash
35
35
  claude
36
36
  ```
37
37
 
38
- Richtlinien werden nun automatisch bei jedem Tool-Aufruf ausgeführt. Versuchen Sie, Claude aufzufordern, `sudo rm -rf /` auszuführen – der Befehl wird blockiert.
38
+ Richtlinien werden jetzt automatisch bei jedem Tool-Aufruf ausgeführt. Bitten Sie Claude, `sudo rm -rf /` auszuführen – es wird blockiert.
39
39
  </Step>
40
40
  </Steps>
41
41
 
@@ -43,7 +43,7 @@ Failproof AI integriert sich mit Claude Code über dessen [Hooks-System](https:/
43
43
 
44
44
  ## Hooks für das Agents SDK einrichten
45
45
 
46
- Wenn Sie mit dem [Agents SDK](https://docs.anthropic.com/en/docs/agents-sdk) entwickeln, können Sie dasselbe Hook-System programmgesteuert verwenden.
46
+ Wenn Sie mit dem [Agents SDK](https://docs.anthropic.com/en/docs/agents-sdk) entwickeln, können Sie dasselbe Hook-System programmatisch verwenden.
47
47
 
48
48
  <Steps>
49
49
  <Step title="failproofai in Ihrem Projekt installieren">
@@ -52,7 +52,7 @@ Wenn Sie mit dem [Agents SDK](https://docs.anthropic.com/en/docs/agents-sdk) ent
52
52
  ```
53
53
  </Step>
54
54
  <Step title="Hooks in Ihrem Agenten konfigurieren">
55
- Übergeben Sie Hook-Befehle beim Erstellen Ihres Agentenprozesses. Die Hooks werden genauso wie in Claude Code ausgelöst – über stdin/stdout JSON:
55
+ Übergeben Sie Hook-Befehle beim Erstellen Ihres Agentenprozesses. Die Hooks werden genauso ausgelöst wie in Claude Code – über stdin/stdout JSON:
56
56
 
57
57
  ```bash
58
58
  failproofai --hook PreToolUse # wird vor jedem Tool aufgerufen
@@ -104,19 +104,19 @@ Was dies bewirkt:
104
104
 
105
105
  ## Geheimnis-Leaks verhindern
106
106
 
107
- Verhindert, dass Agenten Anmeldedaten in der Tool-Ausgabe sehen oder weitergeben.
107
+ Verhindert, dass Agenten Anmeldeinformationen in der Tool-Ausgabe sehen oder weitergeben.
108
108
 
109
109
  ```bash
110
110
  failproofai policies --install sanitize-api-keys sanitize-jwt sanitize-connection-strings sanitize-bearer-tokens
111
111
  ```
112
112
 
113
- Diese Richtlinien werden bei `PostToolUse` ausgelöst – nachdem ein Tool ausgeführt wurde, bereinigen sie die Ausgabe, bevor der Agent sie sieht.
113
+ Diese werden bei `PostToolUse` ausgelöst – nachdem ein Tool ausgeführt wurde, bereinigen sie die Ausgabe, bevor der Agent sie sieht.
114
114
 
115
115
  ---
116
116
 
117
117
  ## Slack-Benachrichtigungen erhalten, wenn Agenten Aufmerksamkeit benötigen
118
118
 
119
- Verwenden Sie den Notification-Hook, um Leerlauf-Benachrichtigungen an Slack weiterzuleiten.
119
+ Verwenden Sie den Benachrichtigungs-Hook, um Leerlauf-Warnungen an Slack weiterzuleiten.
120
120
 
121
121
  ```javascript
122
122
  import { customPolicies, allow, instruct } from "failproofai";
@@ -150,7 +150,7 @@ customPolicies.add({
150
150
  });
151
151
  ```
152
152
 
153
- Installation:
153
+ Installieren:
154
154
 
155
155
  ```bash
156
156
  SLACK_WEBHOOK_URL=https://hooks.slack.com/... failproofai policies --install --custom ./slack-alerts.js
@@ -160,7 +160,7 @@ SLACK_WEBHOOK_URL=https://hooks.slack.com/... failproofai policies --install --c
160
160
 
161
161
  ## Agenten auf einem Branch halten
162
162
 
163
- Verhindert, dass Agenten Branches wechseln oder in geschützte Branches pushen.
163
+ Verhindert, dass Agenten Branches wechseln oder auf geschützte Branches pushen.
164
164
 
165
165
  ```javascript
166
166
  import { customPolicies, allow, deny } from "failproofai";
@@ -182,7 +182,7 @@ customPolicies.add({
182
182
 
183
183
  ---
184
184
 
185
- ## Tests vor Commits verlangen
185
+ ## Tests vor Commits voraussetzen
186
186
 
187
187
  Erinnert Agenten daran, vor dem Committen Tests auszuführen.
188
188
 
@@ -231,7 +231,7 @@ Erstellen Sie `.failproofai/policies-config.json` in Ihrem Repository:
231
231
  }
232
232
  ```
233
233
 
234
- Dann committen Sie die Datei:
234
+ Dann committen:
235
235
 
236
236
  ```bash
237
237
  git add .failproofai/policies-config.json
@@ -242,12 +242,66 @@ Jedes Teammitglied, das failproofai installiert hat, übernimmt diese Regeln aut
242
242
 
243
243
  ---
244
244
 
245
+ ## Einen organisationsweiten Qualitätsstandard mit Convention-Richtlinien aufbauen
246
+
247
+ Das wirkungsvollste Setup: Committen Sie `.failproofai/policies/` in Ihr Repository mit auf Ihr Projekt zugeschnittenen Richtlinien. Jedes Teammitglied erhält sie automatisch – keine Installationsbefehle, keine Konfigurationsänderungen.
248
+
249
+ <Steps>
250
+ <Step title="Verzeichnis erstellen und Richtlinien hinzufügen">
251
+ ```bash
252
+ mkdir -p .failproofai/policies
253
+ ```
254
+
255
+ ```js
256
+ // .failproofai/policies/team-policies.mjs
257
+ import { customPolicies, allow, deny, instruct } from "failproofai";
258
+
259
+ // Bevorzugten Paketmanager Ihres Teams durchsetzen
260
+ // (oder stattdessen die integrierte prefer-package-manager-Richtlinie aktivieren)
261
+ customPolicies.add({
262
+ name: "enforce-bun",
263
+ match: { events: ["PreToolUse"] },
264
+ fn: async (ctx) => {
265
+ if (ctx.toolName !== "Bash") return allow();
266
+ const cmd = String(ctx.toolInput?.command ?? "");
267
+ if (/\bnpm\b/.test(cmd)) return deny("Use bun instead of npm.");
268
+ return allow();
269
+ },
270
+ });
271
+
272
+ // Den Agenten daran erinnern, vor dem Committen Tests auszuführen
273
+ customPolicies.add({
274
+ name: "test-before-commit",
275
+ match: { events: ["PreToolUse"] },
276
+ fn: async (ctx) => {
277
+ if (ctx.toolName !== "Bash") return allow();
278
+ if (/git\s+commit/.test(ctx.toolInput?.command ?? "")) {
279
+ return instruct("Run tests before committing.");
280
+ }
281
+ return allow();
282
+ },
283
+ });
284
+ ```
285
+ </Step>
286
+ <Step title="In Git committen">
287
+ ```bash
288
+ git add .failproofai/policies/
289
+ git commit -m "Add team quality policies"
290
+ ```
291
+ </Step>
292
+ <Step title="Kontinuierlich verbessern">
293
+ Wenn Ihr Team auf neue Fehlerquellen stößt, fügen Sie Richtlinien hinzu und pushen Sie. Jeder erhält die Aktualisierung beim nächsten `git pull`. Diese Richtlinien werden zu einem lebendigen Qualitätsstandard, der mit Ihrem Team wächst.
294
+ </Step>
295
+ </Steps>
296
+
297
+ ---
298
+
245
299
  ## Weitere Beispiele
246
300
 
247
301
  Das Verzeichnis [`examples/`](https://github.com/exospherehost/failproofai/tree/main/examples) im Repository enthält:
248
302
 
249
- | Datei | Inhalt |
250
- |-------|--------|
251
- | `policies-basic.js` | Grundlegende Richtlinien blockiert Schreibzugriffe auf Produktion, Force-Push und weitergeleitete Skripte |
252
- | `policies-notification.js` | Slack-Benachrichtigungen bei Leerlauf-Meldungen und Sitzungsende |
253
- | `policies-advanced/index.js` | Transitive Imports, asynchrone Hooks, PostToolUse-Ausgabebereinigung, Stop-Ereignisbehandlung |
303
+ | Datei | Was es zeigt |
304
+ |-------|--------------|
305
+ | `policies-basic.js` | Einstiegsrichtlinien – Schreibzugriffe auf Produktion, Force-Push und Piped-Skripte blockieren |
306
+ | `policies-notification.js` | Slack-Benachrichtigungen für Leerlauf-Meldungen und Sitzungsende |
307
+ | `policies-advanced/index.js` | Transitive Imports, asynchrone Hooks, PostToolUse-Ausgabebereinigung, Stop-Event-Behandlung |
@@ -7,7 +7,7 @@ icon: rocket
7
7
  ## Voraussetzungen
8
8
 
9
9
  - **Node.js** >= 20.9.0
10
- - **Bun** >= 1.3.0 (optional – wird nur beim Erstellen aus dem Quellcode benötigt)
10
+ - **Bun** >= 1.3.0 (optional – nur für das Erstellen aus dem Quellcode erforderlich)
11
11
 
12
12
  ---
13
13
 
@@ -31,13 +31,13 @@ bun add -g failproofai
31
31
 
32
32
  <Steps>
33
33
  <Step title="Policies aktivieren">
34
- Policies sind Regeln, die vor und nach jedem Tool-Aufruf eines Agenten ausgeführt werden. Sie erkennen destruktive Befehle, den Abfluss von Geheimnissen und andere Fehlerquellen, bevor diese Schaden anrichten können.
34
+ Policies sind Regeln, die vor und nach jedem Werkzeugaufruf eines Agenten ausgeführt werden. Sie erkennen destruktive Befehle, das Durchsickern von Geheimnissen und andere Fehlerquellen, bevor Schaden entsteht.
35
35
 
36
36
  ```bash
37
37
  failproofai policies --install
38
38
  ```
39
39
 
40
- Dadurch werden Hook-Einträge in die `settings.json` von Claude Code geschrieben. Die Installation kann auch auf ein einzelnes Projekt beschränkt oder auf bestimmte Policies begrenzt werden:
40
+ Dadurch werden Hook-Einträge in die `settings.json` von Claude Code geschrieben. Sie können auch für ein einzelnes Projekt installieren oder bestimmte Policies auswählen:
41
41
 
42
42
  ```bash
43
43
  failproofai policies --install --scope project
@@ -51,23 +51,23 @@ bun add -g failproofai
51
51
 
52
52
  Zeigt alle Policies an, ob sie aktiviert sind und welche Parameter konfiguriert wurden.
53
53
  </Step>
54
- <Step title="Dashboard öffnen">
54
+ <Step title="Dashboard starten">
55
55
  ```bash
56
56
  failproofai
57
57
  ```
58
58
 
59
- Öffnet ein lokales Dashboard unter `http://localhost:8020`, in dem Sessions durchsucht, Tool-Aufrufe inspiziert und Policies verwaltet werden können.
59
+ Öffnet ein lokales Dashboard unter `http://localhost:8020`, in dem Sie Sitzungen durchsuchen, Werkzeugaufrufe untersuchen und Policies verwalten können.
60
60
  </Step>
61
- <Step title="Agenten starten">
62
- Claude Code wie gewohnt starten. Wenn der Agent etwas Riskantes versucht, greift failproofai automatisch ein. Der Agent kann unbeaufsichtigt laufen gelassen werden im Dashboard lässt sich anschließend nachvollziehen, was passiert ist.
61
+ <Step title="Agenten ausführen">
62
+ Starten Sie Claude Code wie gewohnt. Wenn der Agent etwas Riskantes versucht, greift failproofai automatisch ein. Lassen Sie ihn unbeaufsichtigt laufen und überprüfen Sie anschließend im Dashboard, was passiert ist.
63
63
  </Step>
64
64
  </Steps>
65
65
 
66
66
  ---
67
67
 
68
- ## So funktionieren Policies
68
+ ## Wie Policies funktionieren
69
69
 
70
- Jedes Mal, wenn ein Agent ein Tool ausführt, ruft Claude Code failproofai als Unterprozess auf:
70
+ Jedes Mal, wenn ein Agent ein Werkzeug ausführt, ruft Claude Code failproofai als Subprozess auf:
71
71
 
72
72
  ```text
73
73
  Claude Code → failproofai --hook PreToolUse → reads stdin JSON
@@ -78,26 +78,78 @@ Claude Code → failproofai --hook PreToolUse → reads stdin JSON
78
78
  Jede Policy gibt eine von drei Entscheidungen zurück:
79
79
 
80
80
  - **allow** – der Agent fährt normal fort
81
- - **deny** – die Aktion wird blockiert, der Agent wird über den Grund informiert
82
- - **instruct** – dem Prompt des Agenten wird zusätzlicher Kontext hinzugefügt
81
+ - **deny** – die Aktion wird blockiert und dem Agenten wird der Grund mitgeteilt
82
+ - **instruct** – dem Prompt des Agenten werden zusätzliche Informationen hinzugefügt
83
83
 
84
84
  <Note>
85
- Policies laufen im lokalen Prozess. Es werden keine Daten an einen externen Dienst gesendet.
85
+ Policies laufen in Ihrem lokalen Prozess. Es werden keine Daten an einen externen Dienst übertragen.
86
86
  </Note>
87
87
 
88
88
  ---
89
89
 
90
+ ## Team-Policies mit konventionsbasierten Policies einrichten
91
+
92
+ Der schnellste Weg, Qualitätsstandards im gesamten Team zu etablieren, ist die `.failproofai/policies/`-Konvention. Legen Sie Policy-Dateien in dieses Verzeichnis ab und sie werden automatisch geladen – ohne Flags, ohne Konfigurationsänderungen, ohne Installationsbefehle.
93
+
94
+ <Steps>
95
+ <Step title="Policies-Verzeichnis erstellen">
96
+ ```bash
97
+ mkdir -p .failproofai/policies
98
+ ```
99
+ </Step>
100
+ <Step title="Policy-Dateien hinzufügen">
101
+ Kopieren Sie die Starter-Beispiele oder schreiben Sie Ihre eigenen:
102
+
103
+ ```bash
104
+ cp node_modules/failproofai/examples/convention-policies/*.mjs .failproofai/policies/
105
+ ```
106
+
107
+ Oder erstellen Sie eine neue:
108
+
109
+ ```js
110
+ // .failproofai/policies/team-policies.mjs
111
+ import { customPolicies, allow, deny, instruct } from "failproofai";
112
+
113
+ customPolicies.add({
114
+ name: "test-before-commit",
115
+ match: { events: ["PreToolUse"] },
116
+ fn: async (ctx) => {
117
+ if (ctx.toolName !== "Bash") return allow();
118
+ if (/git\s+commit/.test(ctx.toolInput?.command ?? "")) {
119
+ return instruct("Run tests before committing.");
120
+ }
121
+ return allow();
122
+ },
123
+ });
124
+ ```
125
+ </Step>
126
+ <Step title="In Git einchecken">
127
+ ```bash
128
+ git add .failproofai/policies/
129
+ git commit -m "Add team quality policies"
130
+ ```
131
+
132
+ Jedes Teammitglied, das failproofai installiert hat, übernimmt diese Policies automatisch. Es ist keine individuelle Einrichtung pro Entwickler erforderlich.
133
+ </Step>
134
+ </Steps>
135
+
136
+ <Tip>
137
+ Checken Sie `.failproofai/policies/` in Ihr Repository ein, damit das gesamte Team dieselben Standards teilt. Sobald Ihr Team neue Fehlerquellen entdeckt, fügen Sie Policies hinzu und pushen Sie – alle erhalten die Aktualisierung beim nächsten `git pull`. Mit der Zeit werden diese Policies zu einem lebendigen Qualitätsstandard, der sich kontinuierlich verbessert.
138
+ </Tip>
139
+
140
+ ---
141
+
90
142
  ## Datenspeicherung
91
143
 
92
- Alle Konfigurationen und Logs verbleiben auf dem eigenen Rechner:
144
+ Alle Konfigurationen und Protokolle verbleiben auf Ihrem Rechner:
93
145
 
94
- | Pfad | Inhalt |
95
- |------|--------|
146
+ | Pfad | Gespeicherte Inhalte |
147
+ |------|----------------------|
96
148
  | `~/.failproofai/policies-config.json` | Globale Policy-Konfiguration |
97
- | `~/.failproofai/hook-activity.jsonl` | Hook-Ausführungshistorie |
98
- | `~/.failproofai/hook.log` | Debug-Log für Fehler in benutzerdefinierten Hooks |
99
- | `.failproofai/policies-config.json` | Projektspezifische Konfiguration (committed) |
100
- | `.failproofai/policies-config.local.json` | Persönliche Überschreibungen (gitignored) |
149
+ | `~/.failproofai/hook-activity.jsonl` | Hook-Ausführungsverlauf |
150
+ | `~/.failproofai/hook.log` | Debug-Protokoll für benutzerdefinierte Hook-Fehler |
151
+ | `.failproofai/policies-config.json` | Projektspezifische Konfiguration (eingecheckt) |
152
+ | `.failproofai/policies-config.local.json` | Persönliche Überschreibungen (per gitignore ausgeschlossen) |
101
153
 
102
154
  ---
103
155
 
@@ -128,7 +180,7 @@ Entfernt Hook-Einträge aus `~/.claude/settings.json`. Konfigurationsdateien in
128
180
  </Card>
129
181
 
130
182
  <Card title="Agenten-Monitor" icon="chart-line" href="/de/dashboard">
131
- Sessions überwachen und Policy-Aktivitäten einsehen
183
+ Sitzungen überwachen und Policy-Aktivität einsehen
132
184
  </Card>
133
185
 
134
186
  </CardGroup>