@renoxar/koolie 1.25.0 → 2.0.0

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 (232) hide show
  1. package/.github/workflows/publish.yml +177 -0
  2. package/.koolie/QUELLREPOSITORIUM.md +9 -14
  3. package/.koolie/core/CHANGELOG.md +59 -0
  4. package/.koolie/core/LICENSE-HINWEIS.md +5 -6
  5. package/.koolie/core/OWNERS.md +2 -2
  6. package/.koolie/core/VERSION +1 -1
  7. package/.koolie/core/build/doc/00-kopf.md +6 -6
  8. package/.koolie/core/build/doc/01-executive-summary.md +8 -8
  9. package/.koolie/core/build/doc/03-ziele-nichtziele.md +2 -2
  10. package/.koolie/core/build/doc/04-geltungsbereich.md +4 -4
  11. package/.koolie/core/build/doc/05-glossar.md +3 -3
  12. package/.koolie/core/build/doc/07-architektur.md +2 -2
  13. package/.koolie/core/build/doc/07a-abbildungsschicht.md +9 -9
  14. package/.koolie/core/build/doc/08-trennung.md +3 -3
  15. package/.koolie/core/build/doc/09-betriebsmodi.md +8 -8
  16. package/.koolie/core/build/doc/15-referenzstruktur.md +56 -27
  17. package/.koolie/core/build/doc/16-agentenanweisung.md +2 -2
  18. package/.koolie/core/build/doc/20-referenz-skills.md +46 -46
  19. package/.koolie/core/build/doc/25-governance.md +9 -1
  20. package/.koolie/core/build/doc/26-qs-test.md +32 -3
  21. package/.koolie/core/build/doc/27-pilot.md +2 -2
  22. package/.koolie/core/build/doc/28-uebernahme.md +9 -1
  23. package/.koolie/core/build/doc/30-roadmap.md +3 -1
  24. package/.koolie/core/build/doc/31-anhaenge.md +1 -1
  25. package/.koolie/core/checklists/01-preflight.md +3 -3
  26. package/.koolie/core/checklists/02-privacy-context.md +1 -1
  27. package/.koolie/core/checklists/03-before-code-change.md +2 -2
  28. package/.koolie/core/checklists/04-review-ai-code.md +1 -1
  29. package/.koolie/core/checklists/05-testing.md +1 -1
  30. package/.koolie/core/checklists/06-security.md +1 -1
  31. package/.koolie/core/checklists/08-merge-request.md +1 -1
  32. package/.koolie/core/checklists/09-onboarding.md +2 -2
  33. package/.koolie/core/checklists/10-project-adoption.md +8 -8
  34. package/.koolie/core/checklists/11-framework-release.md +14 -14
  35. package/.koolie/core/clientmap.py +2 -2
  36. package/.koolie/core/clients/README.md +54 -52
  37. package/.koolie/core/clients/_template/CLIENT_PACK.md +19 -19
  38. package/.koolie/core/clients/claude-code/CLIENT_PACK.md +108 -164
  39. package/.koolie/core/clients/claude-code/manifest.json +5 -5
  40. package/.koolie/core/clients/claude-code/root-template/.claude/README.md +9 -9
  41. package/.koolie/core/clients/cursor/CLIENT_PACK.md +66 -60
  42. package/.koolie/core/clients/cursor/manifest.json +3 -3
  43. package/.koolie/core/clients/cursor/root-template/.cursor/README.md +3 -3
  44. package/.koolie/core/clients/devin-desktop/CLIENT_PACK.md +62 -64
  45. package/.koolie/core/clients/devin-desktop/manifest.json +5 -5
  46. package/.koolie/core/clients/devin-desktop/root-template/.devin/README.md +9 -9
  47. package/.koolie/core/clients/kiro/CLIENT_PACK.md +55 -48
  48. package/.koolie/core/clients/kiro/manifest.json +4 -4
  49. package/.koolie/core/clients/kiro/root-template/.kiro/README.md +3 -3
  50. package/.koolie/core/clients/openai-codex/CLIENT_PACK.md +98 -103
  51. package/.koolie/core/clients/openai-codex/manifest.json +3 -3
  52. package/.koolie/core/clients/openai-codex/root-template/.codex/README.md +2 -2
  53. package/.koolie/core/decision-trees/02-may-ai-do-task.md +2 -2
  54. package/.koolie/core/decision-trees/03-analyze-or-modify.md +12 -12
  55. package/.koolie/core/decision-trees/04-required-review.md +1 -1
  56. package/.koolie/core/docs/ADOPTION_GUIDE.md +281 -385
  57. package/.koolie/core/docs/DOCUMENTATION_STANDARD.md +44 -36
  58. package/.koolie/core/docs/PLACEHOLDER_REGISTRY.md +8 -8
  59. package/.koolie/core/docs/ROADMAP.md +34 -17
  60. package/.koolie/core/docs/RUNTIME_GLOSSARY.md +34 -35
  61. package/.koolie/core/examples/example-ergebnisbericht.md +1 -1
  62. package/.koolie/core/examples/example-mr-description.md +2 -2
  63. package/.koolie/core/framework/core/00-principles.md +1 -1
  64. package/.koolie/core/framework/core/01-governance.md +8 -8
  65. package/.koolie/core/framework/core/02-privacy.md +12 -12
  66. package/.koolie/core/framework/core/03-security.md +13 -11
  67. package/.koolie/core/framework/core/05-working-model.md +22 -22
  68. package/.koolie/core/framework/core/06-prompting-rules.md +5 -5
  69. package/.koolie/core/framework/core/07-review-rules.md +1 -1
  70. package/.koolie/core/framework/core/08-skill-conventions.md +11 -11
  71. package/.koolie/core/framework/core/09-risk-model.md +6 -6
  72. package/.koolie/core/framework/core/10-error-escalation.md +1 -1
  73. package/.koolie/core/framework/org-policies/MAPPING_CLASSIFICATION.md +1 -1
  74. package/.koolie/core/framework/overlay-patterns/general.md +63 -75
  75. package/.koolie/core/framework/role-packs/README.md +16 -28
  76. package/.koolie/core/framework/role-packs/_template/ROLE_PACK.md +3 -3
  77. package/.koolie/core/framework/role-packs/requirements-engineering/ROLE_PACK.md +23 -22
  78. package/.koolie/core/framework/role-packs/requirements-engineering/runtime/30-role-requirements-engineering.md +5 -5
  79. package/.koolie/core/framework/role-packs/requirements-engineering/skills/{role-re-ticket → koolie-ticket}/CHANGELOG.md +2 -1
  80. package/.koolie/core/framework/role-packs/requirements-engineering/skills/{role-re-ticket → koolie-ticket}/EXAMPLES.md +5 -5
  81. package/.koolie/core/framework/role-packs/requirements-engineering/skills/{role-re-ticket → koolie-ticket}/SKILL.md +9 -9
  82. package/.koolie/core/framework/role-packs/requirements-engineering/skills/koolie-ticket/TESTS.md +22 -0
  83. package/.koolie/core/framework/role-packs/software-development/ROLE_PACK.md +16 -16
  84. package/.koolie/core/framework/role-packs/software-development/runtime/30-role-software-development.md +1 -1
  85. package/.koolie/core/framework/runtime/agents/{fw-reviewer.md → koolie-reviewer.md} +2 -2
  86. package/.koolie/core/framework/runtime/permissions.json +13 -13
  87. package/.koolie/core/framework/runtime/root-instruction.md +5 -5
  88. package/.koolie/core/framework/runtime/rules/10-privacy-security.md +2 -2
  89. package/.koolie/core/framework/runtime/rules/15-development-rules.md +1 -1
  90. package/.koolie/core/framework/runtime/rules/16-plan-spezifikation.md +1 -1
  91. package/.koolie/core/framework/runtime/rules/20-project-overlay.md +2 -2
  92. package/.koolie/core/framework/skills/{fw-bugfix-prepare → koolie-bugfix-prepare}/CHANGELOG.md +2 -1
  93. package/.koolie/core/framework/skills/{fw-bugfix-prepare → koolie-bugfix-prepare}/EXAMPLES.md +8 -8
  94. package/.koolie/core/framework/skills/{fw-bugfix-prepare → koolie-bugfix-prepare}/SKILL.md +21 -21
  95. package/.koolie/core/framework/skills/koolie-bugfix-prepare/TESTS.md +15 -0
  96. package/.koolie/core/framework/skills/{fw-change-analyze → koolie-change-analyze}/CHANGELOG.md +2 -1
  97. package/.koolie/core/framework/skills/{fw-change-analyze → koolie-change-analyze}/EXAMPLES.md +6 -6
  98. package/.koolie/core/framework/skills/{fw-change-analyze → koolie-change-analyze}/SKILL.md +12 -12
  99. package/.koolie/core/framework/skills/koolie-change-analyze/TESTS.md +16 -0
  100. package/.koolie/core/framework/skills/{fw-change-small → koolie-change-small}/CHANGELOG.md +2 -1
  101. package/.koolie/core/framework/skills/{fw-change-small → koolie-change-small}/EXAMPLES.md +4 -4
  102. package/.koolie/core/framework/skills/{fw-change-small → koolie-change-small}/SKILL.md +15 -15
  103. package/.koolie/core/framework/skills/koolie-change-small/TESTS.md +13 -0
  104. package/.koolie/core/framework/skills/{fw-code-explain → koolie-code-explain}/CHANGELOG.md +2 -1
  105. package/.koolie/core/framework/skills/{fw-code-explain → koolie-code-explain}/EXAMPLES.md +4 -4
  106. package/.koolie/core/framework/skills/{fw-code-explain → koolie-code-explain}/SKILL.md +10 -10
  107. package/.koolie/core/framework/skills/koolie-code-explain/TESTS.md +11 -0
  108. package/.koolie/core/framework/skills/{fw-docs-update → koolie-docs-update}/CHANGELOG.md +2 -1
  109. package/.koolie/core/framework/skills/{fw-docs-update → koolie-docs-update}/EXAMPLES.md +3 -3
  110. package/.koolie/core/framework/skills/{fw-docs-update → koolie-docs-update}/SKILL.md +8 -8
  111. package/.koolie/core/framework/skills/koolie-docs-update/TESTS.md +12 -0
  112. package/.koolie/core/framework/skills/{fw-error-analyze → koolie-error-analyze}/CHANGELOG.md +2 -1
  113. package/.koolie/core/framework/skills/{fw-error-analyze → koolie-error-analyze}/EXAMPLES.md +6 -6
  114. package/.koolie/core/framework/skills/{fw-error-analyze → koolie-error-analyze}/SKILL.md +15 -15
  115. package/.koolie/core/framework/skills/koolie-error-analyze/TESTS.md +12 -0
  116. package/.koolie/core/framework/skills/{fw-mr-description → koolie-mr-description}/CHANGELOG.md +2 -1
  117. package/.koolie/core/framework/skills/{fw-mr-description → koolie-mr-description}/EXAMPLES.md +6 -6
  118. package/.koolie/core/framework/skills/{fw-mr-description → koolie-mr-description}/SKILL.md +8 -8
  119. package/.koolie/core/framework/skills/koolie-mr-description/TESTS.md +12 -0
  120. package/.koolie/core/framework/skills/{fw-overlay-pflege → koolie-overlay-pflege}/CHANGELOG.md +2 -1
  121. package/.koolie/core/framework/skills/{fw-overlay-pflege → koolie-overlay-pflege}/EXAMPLES.md +4 -4
  122. package/.koolie/core/framework/skills/{fw-overlay-pflege → koolie-overlay-pflege}/SKILL.md +8 -8
  123. package/.koolie/core/framework/skills/koolie-overlay-pflege/TESTS.md +13 -0
  124. package/.koolie/core/framework/skills/{fw-plan → koolie-plan}/CHANGELOG.md +2 -1
  125. package/.koolie/core/framework/skills/{fw-plan → koolie-plan}/EXAMPLES.md +7 -7
  126. package/.koolie/core/framework/skills/{fw-plan → koolie-plan}/SKILL.md +14 -14
  127. package/.koolie/core/framework/skills/koolie-plan/TESTS.md +14 -0
  128. package/.koolie/core/framework/skills/{fw-refactor → koolie-refactor}/CHANGELOG.md +2 -1
  129. package/.koolie/core/framework/skills/{fw-refactor → koolie-refactor}/EXAMPLES.md +4 -4
  130. package/.koolie/core/framework/skills/{fw-refactor → koolie-refactor}/SKILL.md +12 -12
  131. package/.koolie/core/framework/skills/koolie-refactor/TESTS.md +14 -0
  132. package/.koolie/core/framework/skills/{fw-repo-analyze → koolie-repo-analyze}/CHANGELOG.md +2 -1
  133. package/.koolie/core/framework/skills/{fw-repo-analyze → koolie-repo-analyze}/EXAMPLES.md +4 -4
  134. package/.koolie/core/framework/skills/{fw-repo-analyze → koolie-repo-analyze}/SKILL.md +8 -8
  135. package/.koolie/core/framework/skills/koolie-repo-analyze/TESTS.md +11 -0
  136. package/.koolie/core/framework/skills/{fw-review-support → koolie-review-support}/CHANGELOG.md +2 -1
  137. package/.koolie/core/framework/skills/{fw-review-support → koolie-review-support}/EXAMPLES.md +3 -3
  138. package/.koolie/core/framework/skills/{fw-review-support → koolie-review-support}/SKILL.md +7 -7
  139. package/.koolie/core/framework/skills/koolie-review-support/TESTS.md +13 -0
  140. package/.koolie/core/framework/skills/{fw-tests → koolie-tests}/CHANGELOG.md +2 -1
  141. package/.koolie/core/framework/skills/{fw-tests → koolie-tests}/EXAMPLES.md +5 -5
  142. package/.koolie/core/framework/skills/{fw-tests → koolie-tests}/SKILL.md +11 -11
  143. package/.koolie/core/framework/skills/koolie-tests/TESTS.md +12 -0
  144. package/.koolie/core/framework/tech-packs/README.md +2 -2
  145. package/.koolie/core/framework/tech-packs/_template/TECH_PACK.md +2 -2
  146. package/.koolie/core/governance/ADOPTION_REGISTRY.md +22 -58
  147. package/.koolie/core/governance/CHANGE_REQUEST_TEMPLATE.md +1 -1
  148. package/.koolie/core/governance/DECISION_LOG.md +7 -1
  149. package/.koolie/core/governance/EXCEPTION_PROCESS.md +1 -1
  150. package/.koolie/core/governance/FEEDBACK_PROCESS.md +1 -1
  151. package/.koolie/core/governance/FRAMEWORK_DEV_PROFILE.md +64 -66
  152. package/.koolie/core/governance/PRIORITY_HIERARCHY.md +13 -13
  153. package/.koolie/core/governance/RACI.md +3 -3
  154. package/.koolie/core/governance/RELEASE_PROCESS.md +101 -108
  155. package/.koolie/core/governance/change-requests/CR-2026-173-oeffentlicher-auftritt-koolie-praefix.md +67 -0
  156. package/.koolie/core/install.py +99 -0
  157. package/.koolie/core/koexistenz.py +2 -2
  158. package/.koolie/core/onboarding/GUIDE.md +7 -7
  159. package/.koolie/core/onboarding/KNOWLEDGE_CHECK.md +1 -1
  160. package/.koolie/core/onboarding/MENTOR_CHECKLIST.md +3 -3
  161. package/.koolie/core/onboarding/QUICKSTART.md +2 -2
  162. package/.koolie/core/onboarding/REFERENCE.md +14 -14
  163. package/.koolie/core/onboarding/exercises/EXERCISES.md +8 -8
  164. package/.koolie/core/onboarding/exercises/README.md +47 -65
  165. package/.koolie/core/pilot/PILOT_CONCEPT.md +1 -1
  166. package/.koolie/core/prompts/01-understand-codebase.md +11 -7
  167. package/.koolie/core/prompts/02-impact-analysis.md +17 -7
  168. package/.koolie/core/prompts/03-implementation-planning.md +10 -6
  169. package/.koolie/core/prompts/04-code-generation.md +11 -5
  170. package/.koolie/core/prompts/05-test-generation.md +13 -7
  171. package/.koolie/core/prompts/06-refactoring.md +14 -8
  172. package/.koolie/core/prompts/07-debugging.md +13 -11
  173. package/.koolie/core/prompts/08-security-review.md +2 -2
  174. package/.koolie/core/prompts/09-performance-analysis.md +2 -2
  175. package/.koolie/core/prompts/10-documentation.md +6 -4
  176. package/.koolie/core/prompts/11-merge-request-review.md +7 -5
  177. package/.koolie/core/prompts/12-developer-training.md +5 -3
  178. package/.koolie/core/prompts/README.md +17 -15
  179. package/.koolie/core/templates/MR_AI_DISCLOSURE.md +2 -2
  180. package/.koolie/core/templates/PLAN_TEMPLATE.md +2 -2
  181. package/.koolie/core/templates/SKILL_TEMPLATE.md +3 -3
  182. package/.koolie/core/templates/project-overlay/OVERLAY.md +28 -22
  183. package/.koolie/core/templates/project-overlay/documents/architecture/decisions/README.md +1 -1
  184. package/.koolie/core/tests/EDGE_CASES.md +4 -7
  185. package/.koolie/core/tests/TEST_CATALOG.md +33 -33
  186. package/.koolie/core/tests/protocols/2026-10-02-oeffentlicher-auftritt-2.0.0.md +42 -0
  187. package/.koolie/core/tests/scripts/hook-check-secrets.py +2 -2
  188. package/.koolie/core/tests/scripts/hook-overlay-status.py +1 -1
  189. package/.koolie/core/tests/scripts/probe-pruefungen.py +4 -2
  190. package/.koolie/core/tests/scripts/pruefungen/berechtigungen.py +7 -7
  191. package/.koolie/core/tests/scripts/pruefungen/bestand.py +20 -3
  192. package/.koolie/core/tests/scripts/pruefungen/dokumente.py +88 -0
  193. package/.koolie/core/tests/scripts/pruefungen/gemeinsam.py +1 -1
  194. package/.koolie/core/tests/scripts/pruefungen/hooks.py +1 -1
  195. package/.koolie/core/tests/scripts/pruefungen/overlay.py +5 -5
  196. package/.koolie/core/tests/scripts/pruefungen/testkatalog.py +5 -5
  197. package/.koolie/core/tests/scripts/pruefungen/werkzeuge.py +81 -2
  198. package/.koolie/core/tests/scripts/sonden/teil02_packs_mandat_mcp.py +6 -6
  199. package/.koolie/core/tests/scripts/sonden/teil03_pruefungen_26_bis_36.py +11 -11
  200. package/.koolie/core/tests/scripts/sonden/teil04_pruefungen_37_bis_45.py +11 -11
  201. package/.koolie/core/tests/scripts/sonden/teil05_pruefungen_46_bis_55.py +4 -4
  202. package/.koolie/core/tests/scripts/sonden/teil06_pruefungen_57_bis_65.py +33 -33
  203. package/.koolie/core/tests/scripts/sonden/teil07_overlay_und_lieferung.py +3 -3
  204. package/.koolie/core/tests/scripts/sonden/teil08_pruefungen_66_bis_80.py +3 -3
  205. package/.koolie/core/tests/scripts/sonden/teil10_pruefungen_83_bis_95.py +3 -3
  206. package/.koolie/core/tests/scripts/sonden/teil11_pruefungen_104_und_105.py +2 -2
  207. package/.koolie/core/tests/scripts/sonden/teil14_modi_ausnahmen_skills.py +1 -1
  208. package/.koolie/core/tests/scripts/sonden/teil16_koexistenz.py +5 -5
  209. package/.koolie/core/tests/scripts/sonden/teil17_paketquellen.py +33 -0
  210. package/.koolie/core/tests/scripts/sonden/teil19_skillnamen.py +97 -0
  211. package/.koolie/core/tests/scripts/sonden/teil20_kennungen.py +70 -0
  212. package/.koolie/core/tests/scripts/validate-framework.py +15 -6
  213. package/.koolie/core/tests/scripts/validate-output.py +1 -1
  214. package/CONTRIBUTING.md +16 -10
  215. package/QUICKSTART.en.md +44 -51
  216. package/QUICKSTART.md +44 -50
  217. package/package.json +2 -2
  218. package/paketquellen/README.md +11 -11
  219. package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/TESTS.md +0 -22
  220. package/.koolie/core/framework/skills/fw-bugfix-prepare/TESTS.md +0 -15
  221. package/.koolie/core/framework/skills/fw-change-analyze/TESTS.md +0 -16
  222. package/.koolie/core/framework/skills/fw-change-small/TESTS.md +0 -13
  223. package/.koolie/core/framework/skills/fw-code-explain/TESTS.md +0 -11
  224. package/.koolie/core/framework/skills/fw-docs-update/TESTS.md +0 -12
  225. package/.koolie/core/framework/skills/fw-error-analyze/TESTS.md +0 -12
  226. package/.koolie/core/framework/skills/fw-mr-description/TESTS.md +0 -12
  227. package/.koolie/core/framework/skills/fw-overlay-pflege/TESTS.md +0 -13
  228. package/.koolie/core/framework/skills/fw-plan/TESTS.md +0 -14
  229. package/.koolie/core/framework/skills/fw-refactor/TESTS.md +0 -14
  230. package/.koolie/core/framework/skills/fw-repo-analyze/TESTS.md +0 -11
  231. package/.koolie/core/framework/skills/fw-review-support/TESTS.md +0 -13
  232. package/.koolie/core/framework/skills/fw-tests/TESTS.md +0 -12
@@ -3,123 +3,101 @@
3
3
  | Attribut | Wert |
4
4
  |---|---|
5
5
  | ID | `FW-DOC-ADOPT` |
6
- | Version | `0.7.0` |
6
+ | Version | `0.8.0` |
7
7
  | Status | `pilot` |
8
8
  | Owner (Rolle) | `<FRAMEWORK_OWNER>` |
9
9
  | Checkliste | `.koolie/core/checklists/10-project-adoption.md` (verbindlicher Nachweis) |
10
10
 
11
- > Kennungen in diesem Dokument: `D-…` ist ein Decision Record in `.koolie/core/governance/DECISION_LOG.md`, `K-…` ein offener Klärungspunkt in derselben Datei, `CR-…` ein Änderungsantrag unter `.koolie/core/governance/change-requests/`. Zum Handeln braucht man sie nicht – sie sagen, wo die Begründung steht.
12
-
13
11
  ## 1. Grundprinzip
14
12
 
15
- Der gesamte unveränderliche Kern liegt in **einem** Verzeichnis: `.koolie/core/`. Es
16
- wird als Release in das Wurzelverzeichnis des Projekt-Repositorys kopiert und bleibt
17
- byte-gleich zum Release. Änderungswünsche laufen als Änderungsantrag an den Framework Owner
18
- (`.koolie/core/governance/FEEDBACK_PROCESS.md`), nicht als lokale Bearbeitung.
13
+ Der unveränderliche Kern liegt in **einem** Verzeichnis: `.koolie/core/`. Er wird als Release in
14
+ die Wurzel des Projekt-Repositorys kopiert und bleibt byte-gleich zum Release. Änderungswünsche
15
+ gehen als Änderungsantrag an den Framework Owner (`.koolie/core/governance/FEEDBACK_PROCESS.md`),
16
+ nicht als lokale Bearbeitung.
19
17
 
20
- Zwei Ladeorte lassen sich nicht mitbündeln, weil sie Werkzeugkonvention sind und nicht
21
- konfigurierbar `[DOK]`:
18
+ Zwei Dinge kann der Kern nicht mitbringen, weil der KI-Client sie nur an festen Orten sucht `[DOK]`:
22
19
 
23
20
  | Bestandteil | Rolle |
24
21
  |---|---|
25
- | Wurzel-Anweisungsdatei | Zentrale Agentenanweisung, wird vom Client automatisch geladen |
26
- | Laufzeitschicht | Regelablage, Skill-Ablage, Agentenprofile, Berechtigungsdatei, Hook-Konfiguration |
27
-
28
- **Laufzeitschicht** heißt alles, was der KI-Client selbst lädt und ausführt: die Regeltexte,
29
- die Skills, die Agentenprofile, die Berechtigungen und die Hooks. Der Client findet sie nur an
30
- den Orten, die er kennt – deshalb heißen und liegen sie je Client anders. Die tatsächlichen
31
- Pfade stehen in
32
- `.koolie/core/docs/RUNTIME_GLOSSARY.md` und im `CLIENT_PACK.md` des gewählten Packs.
22
+ | Wurzel-Anweisungsdatei | die zentrale Agentenanweisung, die der Client beim Start lädt |
23
+ | Laufzeitschicht | Regeln, Skills, Agentenprofile, Berechtigungen und Hooks, die der Client selbst lädt und ausführt |
33
24
 
34
- Deshalb liegen diese Bestandteile **im Kern** – `.koolie/core/framework/runtime/`,
35
- `.koolie/core/framework/skills/` und `.koolie/core/templates/` –, und
36
- `.koolie/core/install.py` legt sie in der Form des gewählten Clients an ihrem Platz an.
37
- Welcher Client gilt, entscheidet `--client`; `--list-clients` zeigt die verfügbaren.
25
+ Name und Ort hängen vom Client ab; die Pfade je Client stehen in
26
+ `.koolie/core/docs/RUNTIME_GLOSSARY.md` und im `CLIENT_PACK.md` des Packs. Die Quellen liegen
27
+ trotzdem im Kern (`framework/runtime/`, `framework/skills/`, `templates/`), und
28
+ `.koolie/core/install.py` legt sie in der Form des gewählten Clients an. Welcher Client gilt,
29
+ entscheidet `--client`; `--list-clients` zeigt die verfügbaren. Wer eine gemeinsame Quelle ändern
30
+ will, ändert sie im Kern, nicht im Pack.
38
31
 
39
- > Das `root-template/` eines Client Packs enthält **nur die README der Laufzeitschicht**;
40
- > `seed_paths` ist in allen Manifesten leer (`CR-2026-010`). Wer eine gemeinsame Quelle
41
- > ändern will, ändert sie im Kern, nicht im Pack.
42
-
43
- **Projektspezifisch sind ausschließlich:**
32
+ **Dem Projekt gehören nur:**
44
33
 
45
34
  | Bestandteil | Ebene |
46
35
  |---|---|
47
36
  | `.koolie/project-overlay/` einschließlich `forbidden-terms.txt` | 4 |
48
- | `20-project-overlay.md` in der Regelablage (plus optionale `2N-overlay-*`) | 4 |
37
+ | `20-project-overlay.md` in der Regelablage (und optionale `2N-overlay-*`) | 4 |
49
38
  | die ausgefüllten Werte in der Berechtigungsdatei | 3/4 |
50
- | die **Entscheidung**, welche Packs aktiviert sind (Overlay Abschnitt 1) | 5/6 |
39
+ | die Entscheidung, welche Packs aktiviert sind (Overlay Abschnitt 1) | 5/6 |
51
40
  | `prj-*`-Skills in der Skill-Ablage | 4 |
52
- | die **Entscheidung**, welches Client Pack verwendet wird | – |
41
+ | die Entscheidung, welches Client Pack verwendet wird | – |
53
42
 
54
- Alles andere ist Core. Ein Projektwechsel tauscht nur die Overlay-Bestandteile; der Core
55
- bleibt unberührt (P10, Baum 6).
43
+ Alles andere ist Kern. Wechselt ein Team das Projekt, tauscht es nur das Overlay (P10, Baum 6).
56
44
 
57
45
  ## 2. Neuaufnahme (Schrittfolge)
58
46
 
59
47
  1. **Voraussetzungen der Organisation:** Werkzeugfreigabe, Datenschutz- und Vertragsprüfung,
60
- dokumentierte Team-Einstellungen (`.koolie/core/framework/org-policies/`;
61
- Klärungspunkte K-05/K-06).
62
-
63
- **Schritt 2 und 3 in einem Zug – über eine Paketquelle (D-532, D-533):** Im
64
- Projektverzeichnis holt `uvx koolie` (oder `pipx run koolie`, `npx @renoxar/koolie`)
65
- Koolie aus PyPI beziehungsweise npm und startet denselben Dialog wie der Starter – mit
66
- dem aktuellen Verzeichnis als Vorgabe. Dauerhaft installiert (`pipx install koolie`,
67
- `uv tool install koolie`, `npm install -g @renoxar/koolie`) heißt der Befehl `koolie`
68
- und nimmt dieselben Argumente wie `install.py`, etwa
69
- `koolie --target /pfad/zum/projekt --client <client>`. `pip install koolie` installiert
70
- nur den Befehl; liegt er außerhalb des `PATH`, trägt `python -m koolie`. Jedes Paket
71
- trägt genau den Baum des Release-Archivs (D-520).
72
-
73
- **Schritt 2 und 3 in einem Zug – der Starter (D-362):** Im entpackten
74
- Release-Archiv liegen in der Wurzel `install.cmd` (Windows) und `install.command`
75
- (macOS). Sie suchen ein Python ab 3.8 (D-363), fragen Projektverzeichnis, Client,
76
- Overlay-Muster und Lieferumfang ab und rufen dann genau einen Befehl auf, der auch
77
- direkt geht:
48
+ dokumentierte Team-Einstellungen (`.koolie/core/framework/org-policies/`; die Projektwerte
49
+ stehen im Overlay).
50
+
51
+ Die Schritte 2 und 3 gehen auch in einem Zug – auf zwei Wegen:
52
+
53
+ **Über eine Paketquelle.** Im Projektverzeichnis holt `uvx koolie` (oder `pipx run koolie`,
54
+ `npx @renoxar/koolie`) Koolie aus PyPI beziehungsweise npm und startet einen Dialog mit dem
55
+ aktuellen Verzeichnis als Vorgabe. Dauerhaft installiert (`pipx install koolie`,
56
+ `uv tool install koolie`, `npm install -g @renoxar/koolie`) heißt der Befehl `koolie` und nimmt
57
+ dieselben Argumente wie `install.py`, etwa `koolie --target /pfad/zum/projekt --client <client>`.
58
+ `pip install koolie` installiert nur den Befehl; liegt er außerhalb des `PATH`, geht
59
+ `python -m koolie`. Jedes Paket enthält genau den Baum des Release-Archivs.
60
+
61
+ **Mit dem Starter.** In der Wurzel des entpackten Release-Archivs liegen `install.cmd` (Windows)
62
+ und `install.command` (macOS). Sie suchen ein Python ab 3.8, fragen Projektverzeichnis, Client,
63
+ Overlay-Muster und Lieferumfang ab und rufen dann diesen Befehl auf, der auch direkt geht:
78
64
 
79
65
  ```bash
80
66
  python .koolie/core/install.py --target /pfad/zum/projekt --client <client> [--overlay general] [--lieferumfang nutzung]
81
67
  ```
82
68
 
83
- **Der Lieferumfang (D-367):** `voll` – die Vorgabe – kopiert den ganzen
84
- Kern. `nutzung` lässt die **Nachweisschicht** weg: Änderungsanträge
85
- (`governance/change-requests/`), Abnahmeprotokolle (`tests/protocols/`), Erhebungen
86
- (`tests/erhebungen/`) und den Bau des Hauptdokuments (`build/`) – zusammen der größere
87
- Teil der Dateien. Alles zur Nutzung bleibt, auch Hooks und Validator. Die Wahl steht danach in
88
- `.koolie/core/LIEFERUMFANG` und **gilt beim Heben weiter**; gewechselt wird nur mit
89
- ausdrücklichem `--lieferumfang`. Der Validator nennt in einem reduzierten Projekt das
90
- Weggelassene in `HINWEIS`-Zeilen, die weder als Fehler noch als Warnung zählen. ⚠️
91
- Preis: Verweise auf Protokolle zeigen dort ins Leere – die Belege stehen im
69
+ `--target` kopiert nur `.koolie/core/` – aus einem Klon das Versionierte, aus dem Archiv alles
70
+ außer Bytecode und `build/out/` – und ruft dann das kopierte `install.py` im Projekt auf.
71
+ Scheitert es, wird der kopierte Kern wieder entfernt. Python und PyYAML installiert der Starter
72
+ nicht, und die Schritte ab 4 bleiben Handarbeit.
73
+
74
+ **Lieferumfang:** `voll` (Vorgabe) kopiert den ganzen Kern. `nutzung` lässt die Nachweisschicht
75
+ weg – Änderungsanträge, Abnahmeprotokolle, Erhebungen und den Bau des Hauptdokuments, zusammen
76
+ der größere Teil der Dateien. Alles zur Nutzung bleibt, auch Hooks und Validator. Die Wahl steht
77
+ in `.koolie/core/LIEFERUMFANG` und gilt beim Heben weiter; gewechselt wird nur mit ausdrücklichem
78
+ `--lieferumfang`. In einem reduzierten Projekt nennt der Validator das Weggelassene in
79
+ `HINWEIS`-Zeilen. Verweise auf Protokolle zeigen dort ins Leere; die Belege stehen im
92
80
  Release-Archiv.
93
81
 
94
- `--target` kopiert **nur** `.koolie/core/` – aus einem Klon nur das Verfolgte, aus dem
95
- Archiv alles außer Bytecode und `build/out/` – und ruft danach das **kopierte**
96
- `install.py` im Projekt auf; scheitert es dort, wird der kopierte Kern wieder entfernt.
97
- Der Warnhinweis unten zu `.koolie/` betrifft diesen Weg nicht. **Was der Starter nicht
98
- tut:** Er installiert kein Python und kein PyYAML, und er ersetzt die Schritte ab 4
99
- nicht. ⚠️ Unter Windows muss der Pfad zum Projekt kurz genug sein, dass kein Pfad im
100
- Kern die Grenze von 259 Zeichen reißt – ab 146 Zeichen Projektpfad (Stand `1.8.0`) hält
101
- `--target` vor der ersten Kopie mit dieser Begründung an (D-368). ⚠️ Beim ersten Start
102
- warnt das System vor dem unsignierten Starter (SmartScreen, Gatekeeper); unter macOS
103
- ist der sichere Weg `sh install.command` im Terminal. Der macOS-Starter ist unter
104
- Git Bash und Linux geprüft, auf macOS selbst noch nicht (`CR-2026-140`).
105
-
106
- 2. **Kern kopieren (Handweg):** Das Verzeichnis `.koolie/core/` in das Wurzelverzeichnis des
107
- Projekt-Repositorys kopieren. Bei Monorepos in das Wurzelverzeichnis des Workspace, den
108
- der KI-Client öffnet (A-01).
82
+ ⚠️ Unter Windows muss der Projektpfad so kurz sein, dass kein Pfad im Kern 259 Zeichen
83
+ überschreitet; sonst hält `--target` vor der ersten Kopie an. Beim ersten Start warnt das
84
+ System vor dem unsignierten Starter (SmartScreen, Gatekeeper); unter macOS ist
85
+ `sh install.command` im Terminal der sichere Weg. Der macOS-Starter ist unter Git Bash und
86
+ Linux geprüft, auf macOS selbst noch nicht.
87
+
88
+ 2. **Kern kopieren (von Hand):** `.koolie/core/` in die Wurzel des Projekt-Repositorys kopieren,
89
+ bei einem Monorepo in die Wurzel des Workspace, den der KI-Client öffnet.
109
90
 
110
91
  ```bash
111
92
  mkdir -p /pfad/zum/projekt/.koolie
112
93
  cp -r .koolie/core /pfad/zum/projekt/.koolie/
113
94
  ```
114
95
 
115
- ⚠️ **Nur `.koolie/core/` kopieren – nie ganz `.koolie/`.** Daneben liegt das
116
- Kennzeichen des Framework-Repositoriums (`.koolie/QUELLREPOSITORIUM.md`), im
117
- Release-Archiv ebenso wie in einem Klon. Mitkopiert hält der Validator das Projekt für
118
- das Framework-Repositorium: Prüfung 79 verlangt die Lizenz in der Projektwurzel, und
119
- sobald die Datei committet ist, misst Prüfung 81 die Zeilenenden jedes Projektträgers –
120
- keine der Meldungen nennt die Ursache. Aus einem Klon kommt zusätzlich dessen eigenes
121
- Overlay mit (`.koolie/project-overlay/`). `install.py` meldet ein mitkopiertes
122
- Kennzeichen; die Abhilfe ist, die Datei zu entfernen (D-354).
96
+ ⚠️ **Nur `.koolie/core/` kopieren, nie ganz `.koolie/`.** Daneben liegt das Kennzeichen des
97
+ Framework-Repositoriums (`.koolie/QUELLREPOSITORIUM.md`). Kopiert hält der Validator das Projekt
98
+ für das Framework selbst und meldet Fehler, die die Ursache nicht nennen; aus einem Klon kommt
99
+ außerdem dessen Overlay mit. `install.py` meldet ein mitkopiertes Kennzeichen – dann die Datei
100
+ löschen.
123
101
 
124
102
  3. **Wurzelbestandteile anlegen:**
125
103
 
@@ -131,109 +109,77 @@ bleibt unberührt (P10, Baum 6).
131
109
  python .koolie/core/install.py --client <client> --overlay general
132
110
  ```
133
111
 
134
- **Das Overlay-Muster `general` ist wählbar, nicht Standard** (D-126, D-355). Ohne
135
- `--overlay` beginnt das Projekt mit dem leeren Overlay. Mit ihm füllt
136
- `install.py` drei Pfadplatzhalter, deren Wert sich ohne Kenntnis des Projekts sicher
137
- angeben lässt – `<CI_CONFIG_PATHS>`, `<QUALITY_GATE_CONFIG_PATHS>` und
138
- `<EXCLUDED_PATHS>` –, und zwar **einmal** und in **allen drei** Trägern: Overlay,
139
- Laufzeitfassung und Berechtigungsdatei. **Das Muster sperrt, es gibt nichts frei:**
140
- Erlaubte Pfade, Befehle, Rollen und Freigaben bleiben Schlitze, und ein Overlay aus dem
141
- Muster ist **nicht** aktivierungsreif. Was es füllt und warum, steht in
142
- `.koolie/core/framework/overlay-patterns/general.md`; `--overlay` ohne Namen zählt die
143
- Muster auf. ⚠️ **Liegt die Saat schon, bricht `--overlay` ab** – vorhandene Saat gehört
144
- dem Projekt, und mit `--update` gibt es das Muster nicht.
145
-
146
- **Das Muster bringt außerdem sechs Dokumente mit** (D-359, D-360):
147
- allgemeine Praktiken für Coding Guidelines, Definition of Ready, Definition of Done,
148
- Qualität, Sicherheit und Branching – nur, was auf jedes Projekt passt, ohne Werkzeuge und
149
- Schwellenwerte. Sie liegen danach unter `.koolie/project-overlay/documents/<typ>/` und
150
- stehen im Manifest mit Status `entwurf`. **Verbindlich werden sie erst durch den
151
- Overlay Owner:** prüfen, anpassen, im Manifest auf `aktuell` setzen, Freigabe eintragen
152
- und in der Laufzeitfassung als K1-Dokumente führen. Bis dahin liest der KI-Client sie
153
- nicht als Vorgabe.
154
-
155
- Das Skript legt die Wurzel-Anweisungsdatei, ihre `.example`-Vorlage für nutzerlokale
156
- Ergänzungen, die Laufzeitschicht und – sofern noch nicht vorhanden – `.koolie/project-overlay/`
157
- an. **Die Saatdateien – Berechtigungsdatei und Overlay – werden nie überschrieben**, auch
158
- bei `--update` nicht.
159
-
160
- **Belegt das Projekt einen Pfad des Frameworks schon, bricht die Erstinstallation ab** und
161
- nennt die betroffenen Dateien (D-46). Der wahrscheinliche Fall ist die
162
- Wurzel-Anweisungsdatei: Ihr Name ist die Konvention des Clients, nicht die Erfindung des
163
- Frameworks – ein Projekt, das bereits mit diesem Client arbeitet, führt sie meistens. Wie
164
- der vorhandene Inhalt übernommen wird, steht in Schritt 3a.
165
-
166
- **Vor der Wahl des Client Packs** die Fähigkeitsmatrix des Kandidaten lesen
167
- (`.koolie/core/clients/<client>/CLIENT_PACK.md`): Sie weist aus, welche Zusagen
168
- des Frameworks dieser Client technisch erzwingt und welche nur als Anweisung im Kontext
169
- stehen.
170
-
171
- Übernimm die `.gitignore` des Framework-Repositorys **nicht** unverändert: Dort sind
172
- die Wurzel-Anweisungsdatei, die Laufzeitschicht und `.koolie/project-overlay/` ausgeschlossen,
173
- weil sie im Framework-Repository Erzeugnisse sind. Im Projekt gehören sie in die
174
- Versionierung.
175
-
176
- **Eine Zeile gehört umgekehrt hinein** (D-97):
112
+ Vor der Wahl des Client Packs dessen Fähigkeitsmatrix lesen
113
+ (`.koolie/core/clients/<client>/CLIENT_PACK.md`): Sie zeigt, welche Zusagen der Client
114
+ technisch erzwingt und welche nur als Anweisung wirken.
115
+
116
+ Das Skript legt die Wurzel-Anweisungsdatei, ihre `.example`-Vorlage für persönliche
117
+ Ergänzungen, die Laufzeitschicht und – falls noch nicht vorhanden – `.koolie/project-overlay/`
118
+ an. **Berechtigungsdatei und Overlay werden nie überschrieben**, auch bei `--update` nicht.
119
+
120
+ **Das Overlay-Muster `general` ist wählbar, nicht Standard.** Ohne `--overlay` beginnt das
121
+ Projekt mit einem leeren Overlay. Mit ihm füllt `install.py` drei Pfadplatzhalter, deren Wert
122
+ sich ohne Kenntnis des Projekts sicher angeben lässt – `<CI_CONFIG_PATHS>`,
123
+ `<QUALITY_GATE_CONFIG_PATHS>` und `<EXCLUDED_PATHS>` –, in Overlay, Laufzeitfassung und
124
+ Berechtigungsdatei zugleich. Das Muster sperrt nur, es gibt nichts frei; ein Overlay daraus ist
125
+ noch nicht aktivierungsreif. Dazu kommen sechs Musterdokumente – Coding Guidelines, Definition
126
+ of Ready, Definition of Done, Qualität, Sicherheit, Branching – unter
127
+ `.koolie/project-overlay/documents/<typ>/` mit Status `entwurf`. Verbindlich werden sie erst,
128
+ wenn der Overlay Owner sie prüft, im Manifest auf `aktuell` setzt, freigibt und in der
129
+ Laufzeitfassung als K1-Dokumente führt. Einzelheiten:
130
+ `.koolie/core/framework/overlay-patterns/general.md`. Liegt schon ein Overlay im Projekt, bricht
131
+ `--overlay` ab.
132
+
133
+ **Belegt das Projekt schon einen Pfad des Frameworks, bricht die Installation ab** und nennt die
134
+ Dateien. Meist ist es die Wurzel-Anweisungsdatei, weil das Projekt bereits mit dem Client
135
+ arbeitet. Wie ihr Inhalt übernommen wird, steht in Schritt 3a.
136
+
137
+ **`.gitignore`:** Die des Framework-Repositorys nicht übernehmen – sie schließt
138
+ Wurzel-Anweisungsdatei, Laufzeitschicht und Overlay aus, die im Projekt versioniert werden.
139
+ Hinein gehört dagegen diese Zeile, weil die Werkzeuge des Kerns bei jedem Lauf Bytecode
140
+ erzeugen:
177
141
 
178
142
  ```gitignore
179
- # Bytecode der Python-Werkzeuge des Kerns – ein Erzeugnis, kein Quelltext
180
143
  __pycache__/
181
144
  ```
182
145
 
183
- `install.py` importiert `clientmap.py`, Validator und Hook laufen als Skript: Bei
184
- jedem Lauf entsteht Bytecode unter `.koolie/core/`. Versioniert ändert er sich mit
185
- jedem Lauf und überlebt den Kern, aus dem er entstanden ist. **Prüfung 45 verlangt die
186
- Zeile und meldet außerdem bereits versionierten Bytecode** – denn die Zeile allein
187
- entfernt ihn nicht: Git liest die `.gitignore` für bereits verfolgte Dateien nicht.
188
- Der Weg dorthin ist `git rm -r --cached .koolie/core/**/__pycache__`, **danach** die
189
- Zeile.
146
+ Ist Bytecode schon versioniert, entfernt die Zeile ihn nicht. Zuerst
147
+ `git rm -r --cached .koolie/core/**/__pycache__`, dann die Zeile. Der Validator meldet beides
148
+ (Prüfung 45).
190
149
 
191
- 3a. **Vorhandene Anweisungsdatei übernehmen** (nur, wenn Schritt 3 abgebrochen ist).
192
-
193
- Das Framework beansprucht die Wurzel-Anweisungsdatei für Ebene 1. Ihr bisheriger Inhalt
194
- geht nicht verloren, er wechselt die Ebene:
150
+ 3a. **Vorhandene Anweisungsdatei übernehmen** (nur, wenn Schritt 3 abgebrochen ist). Die
151
+ Wurzel-Anweisungsdatei gehört dem Kern. Ihr bisheriger Inhalt geht nicht verloren, er zieht um:
195
152
 
196
153
  | Bisheriger Inhalt | Neuer Ort |
197
154
  |---|---|
198
- | Projektwissen – Stack, Befehle, Architektur, Konventionen | `.koolie/project-overlay/OVERLAY.md`, in den passenden Abschnitt |
155
+ | Projektwissen – Stack, Befehle, Architektur, Konventionen | `.koolie/project-overlay/OVERLAY.md`, passender Abschnitt |
199
156
  | Projektspezifische **Regeln** an den Agenten | eine eigene Regeldatei `2N-overlay-<name>.md` in der Regelablage (Ebene 4) |
200
- | Persönliche Gewohnheiten einzelner Personen | die `.example`-Vorlage für nutzerlokale Ergänzungen, nicht das Repositorium |
201
- | Abschnitte, die ein **anderes Werkzeug** erzeugt und pflegt | siehe den Hinweis unten |
202
-
203
- Erst danach die alte Datei entfernen und Schritt 3 wiederholen.
204
-
205
- > **Führt das Projekt bereits ein anderes Agenten-Framework**, gilt Abschnitt 8.2: Koolie
206
- > trägt Ebene 1, das andere Rahmenwerk seine Prozessartefakte in eigener Ablage. Erzeugt es
207
- > Abschnitte in der Wurzel-Anweisung, gehört es auf eine eigene Datei umgestellt, bevor
208
- > Koolie übernommen wird – die Wurzel-Anweisung gehört dem Kern (D-514, D-515).
209
-
210
- 4. **Overlay ausfüllen:** `.koolie/project-overlay/OVERLAY.md` vollständig; Laufzeitfassung
211
- `20-project-overlay.md` in der Regelablage synchron halten; Werte in der
212
- Berechtigungsdatei eintragen, ohne die Kernregeln im Block `_core_rules_integrity` zu entfernen; Manifest und
213
- Dokumente einpflegen.
214
-
215
- **Mehr als ein Technologiestrang? Die Berechtigungsdatei hat drei Befehlsschlitze.**
216
- `<BUILD_COMMAND>`, `<TEST_COMMAND>` und `<LINT_COMMAND>` – einen vierten Eintrag kann
217
- ein Overlay dort nicht erzeugen, und die Datei wird nach der Erstinstallation nie
218
- wieder geschrieben (D-76). Ein Projekt mit Backend **und** Frontend hat aber sechs
219
- Build-, Test- und Prüfbefehle. Drei Sätze regeln den Fall:
220
-
221
- - **Je Platzhalter genau eine Tabellenzeile** in Abschnitt 5 oder 6, mit spitzen
222
- Klammern in der Platzhalterspalte und dem Befehl in der Zelle rechts daneben. Stehen
223
- zwei Zeilen für denselben Platzhalter, ist nicht entschieden, welcher Befehl für den
224
- Schlitz gilt – Prüfung 42 meldet es (D-91).
225
- - **Den Schlitz bekommt der Befehl, der auf den Arbeitsplätzen des Projekts tatsächlich
226
- läuft.** Ein Schlitz, der einen nicht ausführbaren Befehl trägt, sichert nichts ab
227
- und verdeckt, welcher Befehl wirklich läuft (Befund am Übungsrepository:
228
- `.koolie/core/tests/protocols/2026-09-15-herrichtung-uebungsrepositorium.md`).
229
- - **Die übrigen Befehle bleiben gelistet und wirken über die Regelschicht.** Das ist
230
- eine Anweisung an den KI-Client und keine technische Schranke; die Tabelle sagt es,
231
- damit niemand mehr erwartet. **Ein Eintrag von Hand in die Berechtigungsdatei ist
232
- kein Ersatz:** Prüfung 42 meldet jeden Befehl, den kein Platzhalter erklärt (D-90).
233
-
234
- 5. **Packs aktivieren.** Kein Pack ist nach der Installation aktiv — auch nicht das
235
- Referenzpack `software-development`. Je benötigtem Pack: Rolle im Overlay Abschnitt 1
236
- aufführen, dann Laufzeitfassung und – falls vorhanden – Skills kopieren:
157
+ | Persönliche Gewohnheiten | die `.example`-Vorlage für persönliche Ergänzungen, nicht das Repositorium |
158
+ | Abschnitte, die ein **anderes Werkzeug** erzeugt | siehe Abschnitt 8.2 |
159
+
160
+ Danach die alte Datei löschen und Schritt 3 wiederholen. Führt das Projekt bereits ein anderes
161
+ Agenten-Rahmenwerk, das Abschnitte in die Wurzel-Anweisung schreibt, wird es vorher auf eine
162
+ eigene Datei umgestellt.
163
+
164
+ 4. **Overlay ausfüllen:** `.koolie/project-overlay/OVERLAY.md` vollständig; die Laufzeitfassung
165
+ `20-project-overlay.md` synchron halten; Werte in die Berechtigungsdatei eintragen, ohne die
166
+ Kernregeln im Block `_core_rules_integrity` zu entfernen; Manifest und Dokumente einpflegen.
167
+
168
+ **Mehr als ein Technologiestrang?** Die Berechtigungsdatei hat drei Befehlsschlitze –
169
+ `<BUILD_COMMAND>`, `<TEST_COMMAND>`, `<LINT_COMMAND>` –, ein Projekt mit Backend und Frontend
170
+ aber sechs Befehle. So gehen sie zusammen:
171
+
172
+ - **Je Platzhalter genau eine Tabellenzeile** in Abschnitt 5 oder 6 des Overlays, mit dem
173
+ Platzhalter in spitzen Klammern und dem Befehl rechts daneben (Prüfung 42).
174
+ - **Den Schlitz bekommt der Befehl, der auf den Arbeitsplätzen tatsächlich läuft.** Ein Schlitz
175
+ mit einem Befehl, der nicht läuft, sichert nichts ab.
176
+ - **Die übrigen Befehle bleiben gelistet und wirken über die Regelschicht** – als Anweisung,
177
+ nicht als technische Schranke. Von Hand in die Berechtigungsdatei eintragen hilft nicht;
178
+ Prüfung 42 meldet jeden Befehl, den kein Platzhalter erklärt.
179
+
180
+ 5. **Packs aktivieren.** Nach der Installation ist kein Pack aktiv, auch nicht das Referenzpack
181
+ `software-development`. Je benötigtem Pack die Rolle im Overlay Abschnitt 1 eintragen, dann
182
+ die Laufzeitfassung und – falls vorhanden – die Skills kopieren:
237
183
 
238
184
  ```bash
239
185
  # <regelablage> ist der Pfad aus dem manifest.json des gewählten Client Packs
@@ -241,12 +187,12 @@ bleibt unberührt (P10, Baum 6).
241
187
  cp $P/runtime/30-role-software-development.md <regelablage>/
242
188
  ```
243
189
 
244
- Einmal aktiviert, hält `install.py --update` diese Bestandteile auf dem Stand des
245
- Releases; `--check` meldet lokale Abweichungen.
190
+ Danach hält `install.py --update` diese Bestandteile auf dem Stand des Releases; `--check`
191
+ meldet lokale Abweichungen.
246
192
 
247
- 6. **Projektlokale Härtung:** `.koolie/project-overlay/forbidden-terms.txt` mit den realen Projekt-,
248
- Kunden-, Behörden-, Produkt- und Systemnamen füllen (bleibt projektlokal); gegebenenfalls
249
- zusätzliche Verweigerungsregeln in der Berechtigungsdatei.
193
+ 6. **Projektlokal härten:** `.koolie/project-overlay/forbidden-terms.txt` mit den echten Projekt-,
194
+ Kunden-, Behörden-, Produkt- und Systemnamen füllen (bleibt projektlokal); bei Bedarf weitere
195
+ Verbote in der Berechtigungsdatei.
250
196
 
251
197
  7. **Validieren und testen:**
252
198
 
@@ -255,110 +201,102 @@ bleibt unberührt (P10, Baum 6).
255
201
  python .koolie/core/install.py --check
256
202
  ```
257
203
 
258
- Der erste Lauf prüft Struktur, Inhalte und die **Aktivierungsreife eines Kandidaten**:
259
- Er erwartet einen Overlay-Status, der noch **nicht** `aktiv` ist; `aktiv` setzt erst
260
- Schritt 9, und erst dort gilt `--strict-overlay` (D-57). Der zweite
261
- prüft, ob eine Core-Datei lokal verändert wurde – das wäre eine Bearbeitung an der
262
- falschen Stelle. Anschließend die Basistests des Testkatalogs auf dem Übungsrepository
263
- ausführen und das Übungsrepository für das Onboarding erzeugen
264
- (`.koolie/core/onboarding/exercises/README.md`).
204
+ Der erste Befehl prüft Struktur, Inhalte und ob das Overlay aktivierungsreif ist; er erwartet
205
+ einen Status, der noch nicht `aktiv` ist. Der zweite prüft, ob eine Kerndatei lokal verändert
206
+ wurde. Danach die Basistests des Testkatalogs auf dem Übungsrepository fahren und das
207
+ Übungsrepository für das Onboarding anlegen (`.koolie/core/onboarding/exercises/README.md`).
265
208
 
266
- 8. **Organisation im Projekt:** Rollen zuordnen (außerhalb des Repos), Eskalationskanäle,
209
+ 8. **Organisation im Projekt:** Rollen zuordnen (außerhalb des Repositorys), Eskalationskanäle,
267
210
  Ablageorte für Berichte und Pläne, Feedbackkanal.
268
211
 
269
- 9. **Overlay aktivieren:** Checkliste 10 abschließen, Overlay-Status `aktiv` an **jeder**
270
- Stelle, an der das Overlay ihn erklärt, dann
271
- `validate-framework.py --strict-overlay` als Nachprüfung des aktiven Zustands; Meldung
272
- an den Framework Owner (Bestandsliste). **Erst danach** beginnt der erste Agentenlauf
273
- mit Schreibrechten.
212
+ 9. **Overlay aktivieren:** Checkliste 10 abschließen, den Overlay-Status an jeder Stelle, an der
213
+ das Overlay ihn führt, auf `aktiv` setzen, dann `validate-framework.py --strict-overlay` und
214
+ `install.py --probe` laufen lassen und das Projekt beim Framework Owner melden (Bestandsliste).
215
+ **Erst danach** arbeitet der Agent mit Schreibrechten.
274
216
 
275
- 10. **Menschen befähigen:** Onboarding vor produktiver Nutzung; Pilotparameter setzen, wenn das
276
- Projekt als Pilot läuft.
217
+ 10. **Menschen befähigen:** Onboarding vor der produktiven Nutzung; Pilotparameter setzen, wenn
218
+ das Projekt als Pilot läuft.
277
219
 
278
220
  ## 3. Aktualisierung auf ein neues Framework-Release
279
221
 
280
- 1. Release-Notes und Migrationshinweise lesen
281
- (`.koolie/core/CHANGELOG.md` des neuen Releases).
222
+ 1. Die Release-Notes und Migrationshinweise im `CHANGELOG.md` des neuen Releases lesen.
282
223
 
283
- 2. Das Verzeichnis `.koolie/core/` durch das neue ersetzen – **nur dieses Verzeichnis**:
284
- Eine Kopie von ganz `.koolie/` aus einem Klon des Frameworks ersetzt das Overlay des
285
- Projekts durch das des Frameworks, und zwar **ohne Meldung** (Abschnitt 2, Schritt 2;
286
- D-354). Dann die Wurzelbestandteile nachziehen:
224
+ 2. **Heben.** Am einfachsten aus dem neuen Release heraus – mit `uvx koolie` im Projekt, mit dem
225
+ Starter oder direkt:
226
+
227
+ ```bash
228
+ python .koolie/core/install.py --target /pfad/zum/projekt --update
229
+ ```
230
+
231
+ Der alte Kern wird als Ganzes ersetzt und erst entfernt, wenn `--update` im Projekt geklappt
232
+ hat; sonst liegt er wieder an seinem Platz. Der Lieferumfang bleibt, wie er war.
233
+
234
+ **Von Hand:** `.koolie/core/` im Projekt löschen, das neue Verzeichnis hineinkopieren – nur
235
+ dieses, nie ganz `.koolie/` (Abschnitt 2, Schritt 2) – und im Projekt aufrufen:
287
236
 
288
237
  ```bash
289
238
  python .koolie/core/install.py --update
290
239
  ```
291
240
 
292
- **Oder beides in einem Befehl aus dem neuen Release heraus** (D-362):
293
- `python .koolie/core/install.py --target /pfad/zum/projekt --update` – oder der
294
- Starter, der ein vorhandenes Projekt erkennt und das Heben anbietet. Das Verzeichnis
295
- wird als Ganzes ersetzt, nicht Datei für Datei, und erst nach erfolgreichem
296
- `--update` im Projekt ist der alte Kern weg; scheitert es, liegt er wieder an seinem
297
- Platz. Der Lieferumfang bleibt dabei, wie er war (`.koolie/core/LIEFERUMFANG`,
298
- D-367); wer wechseln will, nennt `--lieferumfang voll` oder `nutzung` ausdrücklich. ⚠️
299
- **Nur `--target` kennt den Lieferumfang:** Wer ein reduziertes Projekt von Hand hebt
300
- (`rm -rf` und Kopie), bekommt den ganzen Kern und verliert die Datei – das Projekt ist
301
- danach wieder `voll`.
302
-
303
- **Das Client Pack wird erkannt, nicht vermutet.** `install.py` liest, welche Laufzeitschicht im Wurzelverzeichnis liegt, und aktualisiert dieses Pack – `--client` ist dafür nicht nötig und sollte weggelassen werden. Die erste Ausgabezeile nennt das erkannte Pack; stimmt es nicht, bricht der Lauf ab, statt eine zweite Laufzeitschicht anzulegen (D-45). Findet die Erkennung nichts – etwa bei einer unvollständigen Installation –, ist `--client <pack>` anzugeben.
304
-
305
- `--update` überschreibt die Core-Dateien im Wurzelverzeichnis (Wurzel-Anweisungsdatei,
306
- Regelablage `00-`, `10-`, `15-`, die `*-TEMPLATE`-Vorlagen, Skill-Ablage `fw-*`,
307
- Agentenprofile; bei `openai-codex` zusätzlich die Hook-Datei und die
308
- Befehlsregeldatei) **und die Bestandteile aktivierter Packs**, deren
309
- Quelle im Kern liegt (Regelablage `30-`, `40-` sowie Skill-Ablage `role-*`, `tech-*`).
310
- Welche Datei dazuzählt, steht im `manifest.json` des Client Packs. Unberührt bleiben die
311
- Projektbestandteile: Berechtigungsdatei (bei `devin-desktop` und `claude-code` samt
312
- Hook-Konfiguration), Overlay, `prj-*`-Skills und projekteigene Packs. Die
313
- Berechtigungsdatei wird bewusst nicht angefasst, weil sie Projektwerte enthält – prüfe
314
- nach dem Wechsel, ob die Kernregeln noch vollständig sind, und trage Hook-Änderungen
315
- aus den Migrationshinweisen von Hand nach. ⚠️ Bei `openai-codex` ändert `--update`
316
- die Hook-Datei und damit ihren Hash: Der Schutz-Hook läuft erst wieder, wenn ihm
317
- erneut vertraut wurde (`.koolie/core/clients/openai-codex/CLIENT_PACK.md` Abschnitt 1b).
318
-
319
- 3. Overlay-Bestandteile gegen die Migrationshinweise prüfen (neue Pflichtfelder, geänderte
320
- Platzhalter, deprecatete Skills). Nennt ein Release einen geänderten Kernpfad, betrifft
321
- das nicht nur die Berechtigungsdatei: Das Overlay, seine Laufzeitfassung, projekteigene
322
- Packs, `prj-*`-Skills, `README`, Onboarding-Material und die `.gitignore` verweisen
323
- ebenfalls darauf. Beim Wechsel von 0.4.0 auf 0.10.0 waren es 74 Nennungen in 19
324
- Projektdateien (`.koolie/core/tests/protocols/2026-09-10-FW-RE-02.md`). Der Validator
325
- meldet davon nur, was er als Verweis erkennt – die Suche über das Projekt gehört dazu.
326
-
327
- **Feste Versionswerte in Projektdateien sind dabei die unauffälligste Stelle.** Eine
328
- Merge-Request-Vorlage, ein `README` oder ein Onboarding-Dokument, das die Framework- oder
329
- Overlay-Version als **Wert** statt als Platzhalter nennt, veraltet mit dem nächsten Release,
330
- ohne dass eine Prüfung anschlägt – der Validator kennt die Projektvorlage nicht.
331
- Empfehlung: An dieser Stelle Platzhalter eintragen
332
- (`<Inhalt der Datei .koolie/core/VERSION>`), keine Werte.
333
-
334
- **Die Musterdokumente des Overlay-Musters `general` erreichen ein bestehendes Projekt
335
- nicht** – das Muster wirkt nur bei der Erstinstallation (D-126, D-359). Wer eines davon
336
- übernehmen will, kopiert es aus
337
- `.koolie/core/framework/overlay-patterns/general/documents/<typ>/` in die
338
- Dokumentablage des Overlays, registriert es im Manifest wie jedes andere Dokument
339
- (`.koolie/project-overlay/OVERLAY.md` Abschnitt 19) und prüft es vorher gegen die
340
- vorhandenen Dokumente desselben Typs: Zwei Coding Guidelines nebeneinander sind zwei
341
- Register.
342
-
343
- 4. Validator (`--strict-overlay`) und Basistests erneut ausführen; bei MAJOR-Releases
241
+ Von Hand geht der Lieferumfang `nutzung` verloren; das Projekt ist danach wieder `voll`.
242
+
243
+ **Das Client Pack wird erkannt.** `install.py` sieht, welche Laufzeitschicht im Projekt liegt,
244
+ und aktualisiert dieses Pack; `--client` ist nicht nötig. Die erste Ausgabezeile nennt das
245
+ erkannte Pack. Findet die Erkennung nichts, etwa bei einer unvollständigen Installation, ist
246
+ `--client <pack>` anzugeben.
247
+
248
+ **Was `--update` schreibt:** die Kerndateien in der Wurzel – Wurzel-Anweisungsdatei, Regeln
249
+ `00-`, `10-`, `15-`, die `*-TEMPLATE`-Vorlagen, die `koolie-*`-Skills, die Agentenprofile, bei
250
+ `openai-codex` auch Hook-Datei und Befehlsregeldatei – und die Bestandteile aktivierter Packs
251
+ (Regeln `30-`, `40-` und ihre Skills). Welche Dateien das sind, steht im `manifest.json` des
252
+ Packs.
253
+
254
+ **Was `--update` nicht schreibt:** Berechtigungsdatei (bei `devin-desktop` und `claude-code`
255
+ samt Hooks), Overlay, `prj-*`-Skills und projekteigene Packs. Die Berechtigungsdatei trägt
256
+ Projektwerte; nach dem Heben prüfen, ob die Kernregeln vollständig sind, und Hook-Änderungen
257
+ aus den Migrationshinweisen von Hand nachtragen.
258
+
259
+ ⚠️ Bei `openai-codex` ändert `--update` die Hook-Datei und damit ihren Hash. Der Schutz-Hook
260
+ läuft erst wieder, wenn ihm erneut vertraut wurde
261
+ (`.koolie/core/clients/openai-codex/CLIENT_PACK.md` Abschnitt 1b).
262
+
263
+ **Wechsel auf 2.0.0: neue Skillnamen.** Die mitgelieferten Skills heißen jetzt `koolie-<name>`
264
+ statt `fw-<name>`, `role-re-ticket` heißt `koolie-ticket` und das Agentenprofil
265
+ `koolie-reviewer`. `--update` benennt die Skillordner um, entfernt das alte Agentenprofil und
266
+ ersetzt die alten Namen einmalig in der Berechtigungsdatei – das ist die einzige Stelle, an der
267
+ es die Berechtigungsdatei anfasst. Die Ausgabe listet jede Änderung. Ins Overlay schreibt es
268
+ nicht; es nennt die Dateien, in denen noch ein alter Name steht (etwa `/fw-plan`), zum Anpassen
269
+ von Hand.
270
+
271
+ 3. **Projektdateien nachziehen.** Overlay, Laufzeitfassung, projekteigene Packs, `prj-*`-Skills,
272
+ `README`, Onboarding-Material und `.gitignore` können auf geänderte Kernpfade, Platzhalter oder
273
+ Skillnamen verweisen. Der Validator findet nur, was er als Verweis erkennt – eine Suche über das
274
+ Projekt gehört dazu.
275
+
276
+ Feste Versionswerte in Projektdateien fallen dabei am wenigsten auf: Nennt eine
277
+ Merge-Request-Vorlage oder ein `README` die Framework-Version als Wert, veraltet sie mit dem
278
+ nächsten Release. Besser einen Platzhalter eintragen (`<Inhalt der Datei .koolie/core/VERSION>`).
279
+
280
+ Die Musterdokumente des Overlay-Musters `general` kommen bei einem Update nicht ins Projekt.
281
+ Wer eines übernehmen will, kopiert es aus
282
+ `.koolie/core/framework/overlay-patterns/general/documents/<typ>/`, registriert es im Manifest
283
+ (`.koolie/project-overlay/OVERLAY.md` Abschnitt 19) und gleicht es vorher mit den vorhandenen
284
+ Dokumenten desselben Typs ab.
285
+
286
+ 4. Validator (`--strict-overlay`) und Basistests erneut ausführen; bei einem MAJOR-Release
344
287
  zusätzlich FW-RE-01/02.
345
288
 
346
- 5. Overlay-Änderungsverlauf ergänzen (neue kompatible Framework-Version); Team über relevante
347
- Änderungen informieren; Onboarding-Materialstand prüfen.
289
+ 5. Den Overlay-Änderungsverlauf ergänzen, das Team informieren, das Onboarding-Material prüfen.
348
290
 
349
- 6. **Die Hebung im Projekt committen** – Kern, Laufzeitschicht und Overlay in einem Commit.
350
- Erst dann ist der neue Stand dauerhaft; ein gehobener, aber nicht committeter Arbeitsbaum
351
- ist ein Zustand, kein Stand (D-343).
291
+ 6. **Kern, Laufzeitschicht und Overlay in einem Commit festhalten.** Erst dann ist der neue Stand
292
+ dauerhaft.
352
293
 
353
294
  ## 4. Mehrere Repositories, ein Projekt
354
295
 
355
- **Entscheidend ist, wo die Sitzung startet – nicht, wo das Framework liegt.** Gemessen am
356
- 2026-09-26 für alle drei Client Packs (D-408, `.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md`):
357
- Eine Installation wirkt technisch nur für eine Sitzung, die **im Verzeichnis der Installation**
358
- startet. Startet die Sitzung in einem Repository darunter, laden bei allen drei Packs weder
359
- Berechtigungen noch Hooks, bei `devin-desktop` und `openai-codex` auch die Wurzel-Anweisung nicht.
360
- **Nichts meldet es** – die Sitzung verhält sich, als gäbe es das Framework nicht, oder kennt bei
361
- `claude-code` sogar ihre Regeln und hat keine Durchsetzung.
296
+ **Entscheidend ist, wo die Sitzung startet, nicht wo das Framework liegt.** Eine Installation
297
+ wirkt nur für eine Sitzung, die im Verzeichnis der Installation startet. Startet sie in einem
298
+ Repository darunter, laden weder Berechtigungen noch Hooks – und nichts meldet es. Gemessen am
299
+ 2026-09-26 (`.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md`):
362
300
 
363
301
  | Client Pack (Clientversion) | Sitzung im Verzeichnis der Installation | Sitzung im Repository darunter: Wurzel-Anweisung | … Berechtigungen und Hooks | Eigene Installation im Repository |
364
302
  |---|---|---|---|---|
@@ -368,22 +306,19 @@ Berechtigungen noch Hooks, bei `devin-desktop` und `openai-codex` auch die Wurze
368
306
 
369
307
  **Drei Einsatzszenarien:**
370
308
 
371
- 1. **Ein Repository** – Installation in dessen Wurzel. Der Normalfall.
372
- 2. **Lose ausgecheckte Repositories** – **je Repository eine eigene Installation**, die Sitzung
373
- startet im Repository. Das Overlay kann gemeinsam gepflegt und je Repository ausgerollt werden
374
- (unten). Eine zusätzliche Installation im gemeinsamen Arbeitsbereich schadet nicht, trägt aber
375
- nichts für Sitzungen, die in einem Repository starten.
376
- 3. **Ein Multimodul-Projekt in einem Repository** – eine Installation in der Wurzel, die Sitzung
377
- startet immer dort. Unterschiede der Module tragen Technology Packs mit Pfad-Ladebedingung (bei
378
- `openai-codex` ohne Ladebedingung, D-348).
309
+ 1. **Ein Repository:** Installation in dessen Wurzel. Der Normalfall.
310
+ 2. **Mehrere lose Repositories:** je Repository eine eigene Installation; die Sitzung startet im
311
+ Repository. Das Overlay kann gemeinsam gepflegt und je Repository ausgerollt werden.
312
+ 3. **Ein Multimodul-Projekt in einem Repository:** eine Installation in der Wurzel, die Sitzung
313
+ startet dort. Unterschiede der Module tragen Technology Packs mit Pfad-Ladebedingung (bei
314
+ `openai-codex` ohne Ladebedingung).
379
315
 
380
- ⚠️ **Eine einzige Installation über mehreren Repositories** trägt nur, solange jede Sitzung im
381
- Arbeitsbereich startet – eine Bedingung, die kein Werkzeug prüft (`K-159`). Sie ist nicht zu
382
- empfehlen, wenn Menschen Repositories einzeln öffnen.
316
+ ⚠️ Eine einzige Installation über mehreren Repositories trägt nur, solange jede Sitzung im
317
+ gemeinsamen Arbeitsbereich startet. Das prüft kein Werkzeug; wenn Menschen Repositories einzeln
318
+ öffnen, ist davon abzuraten.
383
319
 
384
- Das Overlay KANN geteilt gepflegt und je Repository ausgerollt werden;
385
- das Heben des Kerns ist ein Kopiervorgang plus Skriptaufruf und damit skriptbar – am
386
- einfachsten mit `--target` aus dem neuen Release heraus, das nur den Kern kopiert:
320
+ Mehrere Repositories lassen sich in einer Schleife heben; `--target` kopiert nur den Kern, das
321
+ Overlay jedes Repositorys bleibt:
387
322
 
388
323
  ```bash
389
324
  for repo in repo-a repo-b; do
@@ -391,127 +326,91 @@ for repo in repo-a repo-b; do
391
326
  done
392
327
  ```
393
328
 
394
- Von Hand sieht dieselbe Schleife so aus:
395
-
396
- ```bash
397
- for repo in repo-a repo-b; do
398
- rm -rf "$repo/.koolie/core" # ersetzen, nicht überkopieren: sonst bleiben entfernte Dateien liegen
399
- mkdir -p "$repo/.koolie"
400
- cp -r .koolie/core "$repo/.koolie/"
401
- (cd "$repo" && python .koolie/core/install.py --update)
402
- done
403
- ```
404
-
405
- Die Pfadlisten (Abschnitt 4 des Overlays) sind je Repository spezifisch und werden nicht
406
- mitkopiert — `install.py` überschreibt `.koolie/project-overlay/` nie. ⚠️ **Das gilt nur,
407
- solange die Schleife `.koolie/core` kopiert:** Ein `cp -r .koolie` überschreibt das Overlay,
408
- bevor `install.py` läuft, und `install.py` meldet es danach als unberührt (D-354).
409
-
410
329
  ## 5. Deinstallation oder Werkzeugwechsel
411
330
 
412
- **Deaktivierung:** Overlay-Status `inaktiv` (das Werkzeug arbeitet nur noch lesend), danach
413
- Entfernen der Laufzeitschicht, wenn gewünscht. Das Verzeichnis
414
- `.koolie/core/` kann als Nachweis im Repository bleiben.
415
-
416
- **Werkzeugwechsel:** Die kanonische Ebene `.koolie/core/framework/` bleibt unverändert —
417
- sie ist werkzeugneutral. Ein anderer KI-Client wird als **Client Pack** unter
418
- `.koolie/core/clients/<client>/` angelegt: eine `CLIENT_PACK.md` mit Pfadabbildung und
419
- Fähigkeitsmatrix und ein `manifest.json` mit der maschinenlesbaren Abbildung. **Die
420
- Wurzelartefakte kommen aus dem Kern**, nicht aus dem Pack (`.koolie/core/clients/README.md`,
421
- Abschnitt 5).
331
+ **Deaktivieren:** Overlay-Status auf `inaktiv` setzen – das Werkzeug arbeitet dann nur noch
332
+ lesend –, danach bei Bedarf die Laufzeitschicht entfernen. `.koolie/core/` kann als Nachweis im
333
+ Repository bleiben.
422
334
 
423
- Vor dem Wechsel ist die **Fähigkeitsmatrix** des Zielclients auszuwerten: Sie weist je Zusage
424
- aus, ob der Client sie technisch erzwingt oder ob sie nur noch als Anweisung im Kontext steht.
425
- Eine Kernzusage, die der Zielclient nicht technisch durchsetzt, ist begründungspflichtig, im
426
- Overlay als Ausnahme zu führen und durch `<SECURITY_CONTACT>` freizugeben. Ein Wechsel, der
427
- diese Prüfung überspringt, senkt das Schutzniveau, ohne dass es jemand bemerkt.
335
+ **Werkzeug wechseln:** Die Regeln unter `.koolie/core/framework/` sind werkzeugneutral und bleiben.
336
+ Für einen neuen KI-Client entsteht ein Client Pack unter `.koolie/core/clients/<client>/`
337
+ (`.koolie/core/clients/README.md`, Abschnitt 5). Vorher die Fähigkeitsmatrix des Zielclients
338
+ auswerten: Eine Kernzusage, die er nicht technisch durchsetzt, ist zu begründen, im Overlay als
339
+ Ausnahme zu führen und durch `<SECURITY_CONTACT>` freizugeben. Wer das überspringt, senkt das
340
+ Schutzniveau, ohne dass es jemand merkt.
428
341
 
429
342
  ## 6. Warum der Kern gebündelt ist
430
343
 
431
- Liegt der gesamte Kern in einem Ordner, muss bei der Übernahme und beim Heben niemand
432
- entscheiden, welches Verzeichnis zum Framework und welches zum Projekt gehört, und das
433
- Wurzelverzeichnis des Projekts bleibt übersichtlich.
434
-
435
- Die Bündelung ändert nichts an der Ebenenhierarchie und an keiner inhaltlichen Regel. Sie
436
- trennt physisch, was ohnehin logisch getrennt war: **Der Kern ist ein Ordner, den man
437
- ersetzt. Das Projekt ist alles daneben.**
344
+ Liegt der Kern in einem Ordner, muss beim Übernehmen und Heben niemand entscheiden, was zum
345
+ Framework und was zum Projekt gehört, und die Wurzel des Projekts bleibt übersichtlich. **Der Kern
346
+ ist ein Ordner, den man ersetzt. Das Projekt ist alles daneben.**
438
347
 
439
348
  ## 7. Was das Framework kostet – gemessen
440
349
 
441
- **Für Entscheider:** Das Framework verteuert eine Aufgabe des KI-Clients, weil es Regeln in jeden
442
- Modellaufruf lädt und mehr verlangt – Fundstellen, einen Ergebnisbericht, den passenden Skill.
443
- Gemessen am 2026-09-26 im Übungsrepository, je Client Pack derselbe Auftrag mit und ohne
444
- Installation, jeder dreimal (D-409, `.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md`).
445
- Mittelwerte; die Fixlast-Zeilen mit angelegtem Cache; die gemessenen Modelle nennt das Protokoll:
350
+ Koolie verteuert eine Aufgabe des KI-Clients: Es lädt Regeln in jeden Modellaufruf und verlangt
351
+ mehr – Fundstellen, einen Ergebnisbericht, den passenden Skill. Gemessen am 2026-09-26 im
352
+ Übungsrepository, je Client Pack derselbe Auftrag mit und ohne Installation, jeder dreimal
353
+ (`.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md`). Mittelwerte; die feste Last
354
+ mit angelegtem Cache:
446
355
 
447
356
  | Client Pack | Aufgabe | Eingabe-Token ohne → mit | Kosten je Aufgabe ohne → mit (USD) | Faktor Kosten |
448
357
  |---|---|---|---|---|
449
- | `claude-code` | nur „OK“ antworten (Fixlast) | 32.330 → 47.232 | 0,007 → 0,010 (erster Aufruf einer Sitzung: 0,137 → 0,285) | 1,4 (2,1) |
358
+ | `claude-code` | nur „OK“ antworten (feste Last) | 32.330 → 47.232 | 0,007 → 0,010 (erster Aufruf einer Sitzung: 0,137 → 0,285) | 1,4 (2,1) |
450
359
  | | kleine Änderung als Diff | 65.466 → 99.443 | 0,065 → 0,184 | 2,8 |
451
360
  | | Analyse über mehrere Dateien | 104.503 → 173.236 | 0,137 → 0,284 | 2,1 |
452
- | `devin-desktop` | Fixlast (seit 1.12.1 mit geladener Regelablage, `K-156`) | 23.556 → 31.913 | 0,012 → 0,016 | 1,3 |
361
+ | `devin-desktop` | feste Last | 23.556 → 31.913 | 0,012 → 0,016 | 1,3 |
453
362
  | | kleine Änderung als Diff | 47.983 → 81.585 | 0,051 → 0,123 | 2,4 |
454
363
  | | Analyse über mehrere Dateien | 167.503 → 295.203 | 0,272 → 0,494 | 1,8 |
455
- | `openai-codex` | Fixlast | 15.346 → 19.755 | 0,006 → 0,011 | 1,7 |
364
+ | `openai-codex` | feste Last | 15.346 → 19.755 | 0,006 → 0,011 | 1,7 |
456
365
  | | kleine Änderung als Diff | 63.503 → 107.119 | 0,021 → 0,049 | 2,4 |
457
366
  | | Analyse über mehrere Dateien | 89.826 → 135.566 | 0,035 → 0,062 | 1,8 |
458
367
 
459
368
  **Was daraus folgt:**
460
369
 
461
- - **Die feste Last je Modellaufruf ist klein und kommt fast immer aus dem Cache:** rund 15.000
462
- Token bei `claude-code`, 4.400 bei `openai-codex`, 8.400 bei `devin-desktop` – dort mit der
463
- Regelablage, die bis `1.12.0` nicht lud (`K-156`; mit `1.12.1` nachgemessen: 8.344). Der Cache
464
- kostet ein Zehntel des Eingabepreises; teuer ist nur
465
- der **erste** Aufruf einer Sitzung, der ihn anlegt.
466
- - **Eine kleine Aufgabe wird rund zwei- bis dreimal so teuer, eine größere rund doppelt so teuer.**
467
- Den Unterschied macht weniger die feste Last als die Arbeitsweise: Die Sitzung liest den Skill und
468
- Framework-Dokumente, belegt mit Fundstellen und schreibt einen Ergebnisbericht – die Ausgabe ist
469
- bei der kleinen Änderung rund dreimal so lang.
470
- - **In Beträgen:** Je hundert kleine Aufgaben rund 3 bis 12 USD mehr, je hundert Analysen rund 3 bis
471
- 22 USD mehr, je nach Client (Listenpreise vom 2026-09-26). Die Laufzeit steigt um bis zu das
370
+ - **Die feste Last ist klein und kommt fast immer aus dem Cache:** rund 15.000 Token bei
371
+ `claude-code`, 8.400 bei `devin-desktop`, 4.400 bei `openai-codex`. Der Cache kostet ein Zehntel
372
+ des Eingabepreises; teuer ist nur der erste Aufruf einer Sitzung.
373
+ - **Eine kleine Aufgabe wird zwei- bis dreimal so teuer, eine größere rund doppelt so teuer.** Den
374
+ Unterschied macht die Arbeitsweise: Die Sitzung liest den Skill, belegt mit Fundstellen und
375
+ schreibt einen Ergebnisbericht.
376
+ - **In Beträgen:** je hundert kleine Aufgaben rund 3 bis 12 USD mehr, je hundert Analysen rund 3
377
+ bis 22 USD mehr, je nach Client (Listenpreise vom 2026-09-26). Die Laufzeit steigt bis auf das
472
378
  Doppelte.
473
- - **Gesenkt wird nur, wo keine Schranke nachgibt** (`K-144`). Die feste Last ist nicht der Hebel;
474
- eine kürzere Zuordnung von Arbeitsschritt zu Skill ist vorgeschlagen und nicht umgesetzt.
475
379
 
476
- **Was die Zahlen nicht sagen:** Sie stammen aus drei Aufgaben in einem Repository an einem Tag, je
477
- dreimal gefahren; die Spannen stehen im Protokoll. Die Preise sind Listenpreise der API – für
478
- `claude-code` die Kostenangabe des Clients, für `devin-desktop` dessen Preisliste, für
479
- `openai-codex` dieselbe Preisliste als Ersatzquelle, weil der Client keinen Preis nennt. **Ein Abo
480
- rechnet anders ab**; dort zählt der Verbrauch am Kontingent, und dafür sind die Token die
481
- richtige Größe. **Der Nutzen ist nicht gemessen** – ob weniger Nacharbeit, weniger Fehler oder ein
482
- verhindertes Leck die Mehrkosten aufwiegt, sagt keine dieser Zahlen.
380
+ **Was die Zahlen nicht sagen:** Sie stammen aus drei Aufgaben in einem Repository an einem Tag;
381
+ die Spannen stehen im Protokoll. Die Preise sind Listenpreise der API. Ein Abo rechnet anders ab –
382
+ dort zählt der Verbrauch am Kontingent, und dafür sind die Token die richtige Größe. **Den Nutzen
383
+ messen sie nicht:** ob weniger Nacharbeit, weniger Fehler oder ein verhindertes Leck die
384
+ Mehrkosten aufwiegen.
483
385
 
484
386
  ## 8. Einsatzarchitektur, Koexistenz und Vergleich
485
387
 
486
- Koolie ist die **Regel- und Nachweisschicht im Repositorium** – kein Sandkasten und keine
487
- GRC-Plattform (D-478). Es wirkt über Dateien, die im Projekt liegen, und über den Client, der sie
488
- lädt. Was außerhalb davon liegt, muss die Umgebung tragen (D-513).
388
+ Koolie ist die Regel- und Nachweisschicht im Repositorium – kein Sandkasten und keine
389
+ GRC-Plattform. Es wirkt über Dateien im Projekt und über den Client, der sie lädt. Was außerhalb
390
+ davon liegt, muss die Umgebung tragen.
489
391
 
490
392
  ### 8.1 Was Koolie trägt – und was die Umgebung tragen muss
491
393
 
492
394
  | Schicht | Trägt | Was Koolie beiträgt | Was fehlt, wenn nur Koolie da ist |
493
395
  |---|---|---|---|
494
396
  | Regeln, Skills, Nachweise | Koolie | Ebenen 1 bis 7, Testblätter, Validator, Protokolle | – |
495
- | Berechtigungen und Schutz-Hook des Projekts | Koolie | Berechtigungsdatei und Hook je Client Pack, Wirksamkeitsprobe `install.py --probe` | Die Dateien liegen im Projekt; ein Mensch kann sie ändern, und sie wirken nur für eine Sitzung, die im Projekt startet (D-407) |
496
- | Verwaltete Einstellungen des Clients | Administration | Nichts; das Pack nennt die Schalter (etwa `disableBypassPermissionsMode`, `syncClaudeAiSkills`) | Ein Schutz, den weder Agent noch Projekt abschalten kann, und der auch außerhalb des Projektverzeichnisses gilt |
397
+ | Berechtigungen und Schutz-Hook des Projekts | Koolie | Berechtigungsdatei und Hook je Client Pack, Wirksamkeitsprobe `install.py --probe` | Die Dateien liegen im Projekt; ein Mensch kann sie ändern, und sie wirken nur für eine Sitzung, die im Projekt startet |
398
+ | Verwaltete Einstellungen des Clients | Administration | Das Pack nennt die Schalter (etwa `disableBypassPermissionsMode`, `syncClaudeAiSkills`) | Ein Schutz, den weder Agent noch Projekt abschalten kann und der auch außerhalb des Projekts gilt |
497
399
  | Branch-Schutz, Pflicht-Review, CI | Plattform | Die CI- und Quality-Gate-Pfade sind für den Agenten gesperrt (Prüfung 89) | Eine Prüfung, die der Agent weder erzeugen noch umgehen kann |
498
- | Isolation (Container, Netz, Dateisystem) | Laufzeit | Nichts | Schutz gegen einen Agenten, der aktiv umgeht |
400
+ | Isolation (Container, Netz, Dateisystem) | Laufzeit | – | Schutz gegen einen Agenten, der aktiv umgeht |
499
401
 
500
- **Die Arbeit am Kern in einer isolierten Laufzeit** (K-32): Schließt eine Isolationsschicht den
501
- Schreibweg über die Shell, gibt es für eine Änderung am Kern nur die registrierte, befristete
502
- Ausnahme nach `governance/EXCEPTION_PROCESS.md` – dieselbe Bauform wie das Mandat (D-447). Koolie
503
- baut dafür keine eigene Pfadsperre für die Shell (D-497).
402
+ Schließt eine Isolationsschicht den Schreibweg über die Shell, gibt es für eine Änderung am Kern
403
+ nur die registrierte, befristete Ausnahme nach `governance/EXCEPTION_PROCESS.md`.
504
404
 
505
405
  ### 8.2 Koexistenz mit einem anderen Agenten-Rahmenwerk
506
406
 
507
- **Gemessen am 2026-09-30** an OpenSpec 1.13.2 und GitHub Spec Kit (D-514): Keines der beiden
508
- schreibt beim Anlegen in die Wurzel-Anweisung, und keines ändert eine Datei von Koolie – in beiden
509
- Reihenfolgen, auch nicht beim erzwungenen Aktualisieren. Beide legen ihre Skills aber in **dieselbe
510
- Ablage** wie Koolie – die Skill-Ablage des Clients, mit den Präfixen `openspec-` und `speckit-`. Abgegrenzt wird nach
511
- Gegenstand: Koolie trägt Ebene 1 (Sicherheit, Berechtigungen, Schutz-Hook), das fremde Rahmenwerk
512
- seine Prozessartefakte in seiner eigenen Ablage.
407
+ OpenSpec und GitHub Spec Kit schreiben beim Anlegen nicht in die Wurzel-Anweisung und ändern keine
408
+ Datei von Koolie, auch umgekehrt nicht (gemessen am 2026-09-30 mit OpenSpec 1.13.2). Beide legen
409
+ ihre Skills aber in **dieselbe Ablage** wie Koolie, mit den Präfixen `openspec-` und `speckit-`.
410
+ Die Aufteilung: Koolie trägt Ebene 1 – Sicherheit, Berechtigungen, Schutz-Hook –, das andere
411
+ Rahmenwerk seine Prozessartefakte in eigener Ablage.
513
412
 
514
- 1. `install.py` meldet ein erkanntes Rahmenwerk am Ende jedes Laufs – eine Auskunft, keine Schranke.
413
+ 1. `install.py` meldet ein erkanntes Rahmenwerk am Ende jedes Laufs.
515
414
  2. Die fremden Skills im Overlay-Manifest deklarieren, damit der Validator sie nicht nach den
516
415
  Regeln für Koolie-Skills prüft (Prüfung 111):
517
416
 
@@ -519,27 +418,25 @@ seine Prozessartefakte in seiner eigenen Ablage.
519
418
  fremde_skills: openspec-, speckit-
520
419
  ```
521
420
 
522
- Ein Präfix, das einen Koolie-Skill treffen könnte (`fw-`, `prj-`, `role-`, `tech-`), nimmt nichts
523
- aus.
421
+ Ein Präfix, das einen Koolie-Skill treffen könnte (`koolie-`, `prj-`), nimmt nichts aus.
524
422
  3. Jeden fremden Skill in der Berechtigungsdatei einem Korb zuordnen, etwa `Skill(openspec-*)` in
525
- `ask` – sonst fällt sein Aufruf in die Rückfrage (Prüfung 72, D-238).
423
+ `ask` – sonst fällt sein Aufruf in die Rückfrage (Prüfung 72).
526
424
 
527
425
  **Die Wurzel-Anweisung gehört dem Kern.** Schreibt ein Generator markierte Abschnitte hinein
528
- (`<!-- NAME:START -->` … `<!-- NAME:END -->`), würde `install.py --update` sie überschreiben, und
529
- der Generator schriebe sie beim nächsten Lauf zurück. 🔴 **Bis `1.21.0` geschah genau das, ohne
530
- Meldung.** Seither bricht die Aktualisierung davor ab (D-515), und Prüfung 111 warnt vorher. Den
531
- Generator auf eine eigene Datei umstellen, die bei Bedarf lädt: Jeder Block in der Wurzel-Anweisung
532
- zählt ins Budget der stets geladenen Texte (Prüfung 4, K-185).
426
+ (`<!-- NAME:START -->` … `<!-- NAME:END -->`), bricht `install.py --update` ab, statt sie zu
427
+ überschreiben, und Prüfung 111 warnt vorher. Abhilfe: den Generator auf eine eigene Datei
428
+ umstellen, die bei Bedarf lädt. Jeder Block in der Wurzel-Anweisung zählt außerdem ins Budget der
429
+ stets geladenen Texte (Prüfung 4).
533
430
 
534
431
  ### 8.3 Koolie gegen eine gute Standardkonfiguration – gemessen
535
432
 
536
- **Die Frage** (K-193): Was trägt Koolie zusätzlich zu dem, was ein Team mit einer guten
537
- Standardkonfiguration ohnehin hat? Gemessen am 2026-09-30 mit `claude-code` 2.1.285 und Opus 5.5
538
- (D-516, Protokoll `tests/protocols/2026-09-30-einsatzarchitektur.md`):
433
+ Was trägt Koolie zusätzlich zu dem, was ein Team mit einer guten Standardkonfiguration ohnehin hat?
434
+ Gemessen am 2026-09-30 mit `claude-code` 2.1.285 und Opus 5.5
435
+ (Protokoll `tests/protocols/2026-09-30-einsatzarchitektur.md`):
539
436
 
540
- - **Referenz R:** Einstellungen außerhalb des Repositoriums (Secret-Pfade, die Laufzeitschicht des
541
- Clients, die Wurzel-Anweisungsdatei und CI-Dateien gesperrt, Modus ohne Rückfragen abgeschaltet),
542
- eine kurze Wurzel-Anweisungsdatei mit Teamregeln, ein Remote mit Branch-Schutz und Secret-Scan.
437
+ - **Referenz R:** Einstellungen außerhalb des Repositoriums (Secret-Pfade, Laufzeitschicht,
438
+ Wurzel-Anweisungsdatei und CI-Dateien gesperrt, Modus ohne Rückfragen abgeschaltet), eine kurze
439
+ Wurzel-Anweisungsdatei mit Teamregeln, ein Remote mit Branch-Schutz und Secret-Scan.
543
440
  - **R+K:** dasselbe, dazu Koolie mit ausgefülltem Overlay.
544
441
  - Jede Rückfrage beantwortete ein Stellvertreter mit „ja“ – der unaufmerksame Mensch. Was dann noch
545
442
  gesperrt bleibt, sperrt die Technik.
@@ -554,18 +451,17 @@ Standardkonfiguration ohnehin hat? Gemessen am 2026-09-30 mit `claude-code` 2.1.
554
451
  | Kosten je Lauf (Mittel, Listenpreis) | | 0,20 USD (Änderung 0,29) | 0,33 USD (Änderung 0,52) |
555
452
  | Rückfragen je kleiner Änderung | | 3,8 | 5,0 |
556
453
 
557
- **Was daraus folgt:** Mit Regeltexten hielt in beiden Gruppen fast immer schon das Modell – auch die
558
- kurze Wurzel-Anweisungsdatei der Referenz genügte dafür. Den Unterschied macht die Technik, wenn die Regel nicht
559
- greift: Einen Unterprozess, der eine Secret-Datei liest, erfasst die Berechtigungsschicht des Clients
560
- nicht; der Schutz-Hook von Koolie schon. Der Preis sind rund 65 bis 80 Prozent mehr Kosten je Lauf,
561
- bei der Änderung rund die Hälfte mehr Zeit und etwas mehr Rückfragen; zu Fehlblockaden kam es bei
562
- der normalen Änderung nicht.
454
+ **Was daraus folgt:** Mit Regeltexten hielt in beiden Gruppen fast immer schon das Modell – dafür
455
+ genügte auch die kurze Anweisungsdatei der Referenz. Den Unterschied macht die Technik, wenn die
456
+ Regel nicht greift: Einen Unterprozess, der eine Secret-Datei liest, erfasst die
457
+ Berechtigungsschicht des Clients nicht, der Schutz-Hook von Koolie schon. Der Preis: rund 65 bis
458
+ 80 Prozent mehr Kosten je Lauf, bei der Änderung rund die Hälfte mehr Zeit und etwas mehr
459
+ Rückfragen; Fehlblockaden gab es nicht.
563
460
 
564
461
  **Was die Zahlen nicht sagen:** Ein Client, ein Modell, ein Tag; je Sicherheitsfall ein Lauf je
565
- Gruppe, fünf Wiederholungen nur bei der Änderung. Die Einstellungen der Referenz lagen in einer
566
- Datei außerhalb des Repositoriums, nicht in verwalteten Einstellungen; ein Agent, der aktiv umgeht,
567
- ist nicht gemessen. **Eine Aussage über Überlegenheit tragen die Zahlen nicht** – nur die Aussage,
568
- dass Koolie eine gute Standardkonfiguration ergänzt und nicht ersetzt.
462
+ Gruppe. Die Einstellungen der Referenz lagen in einer Datei außerhalb des Repositoriums, nicht in
463
+ verwalteten Einstellungen; ein Agent, der aktiv umgeht, ist nicht gemessen. Die Zahlen belegen
464
+ keine Überlegenheit – nur, dass Koolie eine gute Standardkonfiguration ergänzt und nicht ersetzt.
569
465
 
570
466
  ## 9. Befehle im Überblick
571
467