@renoxar/koolie 1.25.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.
- package/.gitattributes +16 -0
- package/.gitignore +51 -0
- package/.koolie/QUELLREPOSITORIUM.md +18 -0
- package/.koolie/core/CHANGELOG.md +11832 -0
- package/.koolie/core/LICENSE +674 -0
- package/.koolie/core/LICENSE-HINWEIS.md +98 -0
- package/.koolie/core/OWNERS.md +36 -0
- package/.koolie/core/VERSION +1 -0
- package/.koolie/core/banner.py +397 -0
- package/.koolie/core/build/README.md +34 -0
- package/.koolie/core/build/assemble.py +354 -0
- package/.koolie/core/build/build-docx.py +194 -0
- package/.koolie/core/build/doc/00-kopf.md +18 -0
- package/.koolie/core/build/doc/01-executive-summary.md +24 -0
- package/.koolie/core/build/doc/02-zielbild.md +13 -0
- package/.koolie/core/build/doc/03-ziele-nichtziele.md +28 -0
- package/.koolie/core/build/doc/04-geltungsbereich.md +25 -0
- package/.koolie/core/build/doc/05-glossar.md +47 -0
- package/.koolie/core/build/doc/06-leitprinzipien.md +5 -0
- package/.koolie/core/build/doc/07-architektur.md +60 -0
- package/.koolie/core/build/doc/07a-abbildungsschicht.md +66 -0
- package/.koolie/core/build/doc/08-trennung.md +24 -0
- package/.koolie/core/build/doc/09-betriebsmodi.md +18 -0
- package/.koolie/core/build/doc/10-arbeitsablauf.md +5 -0
- package/.koolie/core/build/doc/11-datenschutz.md +5 -0
- package/.koolie/core/build/doc/12-sicherheit.md +5 -0
- package/.koolie/core/build/doc/13-risiko.md +5 -0
- package/.koolie/core/build/doc/14-rollen.md +9 -0
- package/.koolie/core/build/doc/15-referenzstruktur.md +124 -0
- package/.koolie/core/build/doc/16-agentenanweisung.md +8 -0
- package/.koolie/core/build/doc/17-overlay.md +29 -0
- package/.koolie/core/build/doc/18-skill-standard.md +5 -0
- package/.koolie/core/build/doc/19-skill-template.md +5 -0
- package/.koolie/core/build/doc/20-referenz-skills.md +70 -0
- package/.koolie/core/build/doc/21-prompts.md +53 -0
- package/.koolie/core/build/doc/22-checklisten.md +49 -0
- package/.koolie/core/build/doc/23-entscheidungsbaeume.md +29 -0
- package/.koolie/core/build/doc/24-onboarding.md +33 -0
- package/.koolie/core/build/doc/25-governance.md +35 -0
- package/.koolie/core/build/doc/26-qs-test.md +9 -0
- package/.koolie/core/build/doc/27-pilot.md +13 -0
- package/.koolie/core/build/doc/28-uebernahme.md +5 -0
- package/.koolie/core/build/doc/29-grenzen.md +87 -0
- package/.koolie/core/build/doc/30-roadmap.md +5 -0
- package/.koolie/core/build/doc/31-anhaenge.md +151 -0
- package/.koolie/core/build/doc/32-abschluss.md +92 -0
- package/.koolie/core/build/ref-a4.docx +0 -0
- package/.koolie/core/checklists/01-preflight.md +54 -0
- package/.koolie/core/checklists/02-privacy-context.md +51 -0
- package/.koolie/core/checklists/03-before-code-change.md +51 -0
- package/.koolie/core/checklists/04-review-ai-code.md +58 -0
- package/.koolie/core/checklists/05-testing.md +48 -0
- package/.koolie/core/checklists/06-security.md +50 -0
- package/.koolie/core/checklists/07-new-dependency.md +57 -0
- package/.koolie/core/checklists/08-merge-request.md +47 -0
- package/.koolie/core/checklists/09-onboarding.md +52 -0
- package/.koolie/core/checklists/10-project-adoption.md +74 -0
- package/.koolie/core/checklists/11-framework-release.md +71 -0
- package/.koolie/core/checklists/README.md +28 -0
- package/.koolie/core/clientmap.py +1358 -0
- package/.koolie/core/clients/README.md +113 -0
- package/.koolie/core/clients/_template/CLIENT_PACK.md +197 -0
- package/.koolie/core/clients/claude-code/CLIENT_PACK.md +383 -0
- package/.koolie/core/clients/claude-code/manifest.json +232 -0
- package/.koolie/core/clients/claude-code/root-template/.claude/README.md +127 -0
- package/.koolie/core/clients/cursor/CLIENT_PACK.md +229 -0
- package/.koolie/core/clients/cursor/manifest.json +330 -0
- package/.koolie/core/clients/cursor/root-template/.cursor/README.md +36 -0
- package/.koolie/core/clients/devin-desktop/CLIENT_PACK.md +251 -0
- package/.koolie/core/clients/devin-desktop/manifest.json +163 -0
- package/.koolie/core/clients/devin-desktop/root-template/.devin/README.md +79 -0
- package/.koolie/core/clients/kiro/CLIENT_PACK.md +223 -0
- package/.koolie/core/clients/kiro/manifest.json +300 -0
- package/.koolie/core/clients/kiro/root-template/.kiro/README.md +37 -0
- package/.koolie/core/clients/openai-codex/CLIENT_PACK.md +257 -0
- package/.koolie/core/clients/openai-codex/manifest.json +208 -0
- package/.koolie/core/clients/openai-codex/root-template/.codex/README.md +35 -0
- package/.koolie/core/decision-trees/01-context-allowed.md +46 -0
- package/.koolie/core/decision-trees/02-may-ai-do-task.md +47 -0
- package/.koolie/core/decision-trees/03-analyze-or-modify.md +50 -0
- package/.koolie/core/decision-trees/04-required-review.md +49 -0
- package/.koolie/core/decision-trees/05-stop-or-escalate.md +47 -0
- package/.koolie/core/decision-trees/06-rule-placement.md +58 -0
- package/.koolie/core/decision-trees/README.md +14 -0
- package/.koolie/core/docs/ADOPTION_GUIDE.md +582 -0
- package/.koolie/core/docs/DOCUMENTATION_STANDARD.md +91 -0
- package/.koolie/core/docs/PLACEHOLDER_REGISTRY.md +79 -0
- package/.koolie/core/docs/ROADMAP.md +848 -0
- package/.koolie/core/docs/RUNTIME_GLOSSARY.md +113 -0
- package/.koolie/core/examples/README.md +11 -0
- package/.koolie/core/examples/example-ergebnisbericht.md +31 -0
- package/.koolie/core/examples/example-mr-description.md +31 -0
- package/.koolie/core/examples/example-overlay-runtime.md +48 -0
- package/.koolie/core/framework/core/00-principles.md +93 -0
- package/.koolie/core/framework/core/01-governance.md +58 -0
- package/.koolie/core/framework/core/02-privacy.md +141 -0
- package/.koolie/core/framework/core/03-security.md +86 -0
- package/.koolie/core/framework/core/04-quality.md +48 -0
- package/.koolie/core/framework/core/05-working-model.md +199 -0
- package/.koolie/core/framework/core/06-prompting-rules.md +51 -0
- package/.koolie/core/framework/core/07-review-rules.md +52 -0
- package/.koolie/core/framework/core/08-skill-conventions.md +115 -0
- package/.koolie/core/framework/core/09-risk-model.md +87 -0
- package/.koolie/core/framework/core/10-error-escalation.md +53 -0
- package/.koolie/core/framework/org-policies/MAPPING_CLASSIFICATION.md +16 -0
- package/.koolie/core/framework/org-policies/README.md +29 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/branching-strategy/muster-general.md +43 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/coding-guidelines/muster-general.md +82 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-done/muster-general.md +52 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/definition-of-ready/muster-general.md +54 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/quality/muster-general.md +59 -0
- package/.koolie/core/framework/overlay-patterns/general/documents/security/muster-general.md +52 -0
- package/.koolie/core/framework/overlay-patterns/general.md +150 -0
- package/.koolie/core/framework/role-packs/README.md +63 -0
- package/.koolie/core/framework/role-packs/_template/ROLE_PACK.md +58 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/ROLE_PACK.md +158 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/runtime/30-role-requirements-engineering.md +88 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/CHANGELOG.md +10 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/EXAMPLES.md +148 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/SKILL.md +195 -0
- package/.koolie/core/framework/role-packs/requirements-engineering/skills/role-re-ticket/TESTS.md +22 -0
- package/.koolie/core/framework/role-packs/software-development/ROLE_PACK.md +95 -0
- package/.koolie/core/framework/role-packs/software-development/runtime/30-role-software-development.md +26 -0
- package/.koolie/core/framework/runtime/agents/fw-reviewer.md +34 -0
- package/.koolie/core/framework/runtime/client-settings.json +3 -0
- package/.koolie/core/framework/runtime/hooks.json +20 -0
- package/.koolie/core/framework/runtime/mcp-config.example.json +4 -0
- package/.koolie/core/framework/runtime/permissions.json +106 -0
- package/.koolie/core/framework/runtime/root-instruction-local.example.md +19 -0
- package/.koolie/core/framework/runtime/root-instruction.md +116 -0
- package/.koolie/core/framework/runtime/rules/00-framework-core.md +49 -0
- package/.koolie/core/framework/runtime/rules/10-privacy-security.md +49 -0
- package/.koolie/core/framework/runtime/rules/15-development-rules.md +41 -0
- package/.koolie/core/framework/runtime/rules/16-plan-spezifikation.md +32 -0
- package/.koolie/core/framework/runtime/rules/20-project-overlay.md +60 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/CHANGELOG.md +14 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/EXAMPLES.md +57 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/SKILL.md +177 -0
- package/.koolie/core/framework/skills/fw-bugfix-prepare/TESTS.md +15 -0
- package/.koolie/core/framework/skills/fw-change-analyze/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-change-analyze/EXAMPLES.md +66 -0
- package/.koolie/core/framework/skills/fw-change-analyze/SKILL.md +167 -0
- package/.koolie/core/framework/skills/fw-change-analyze/TESTS.md +16 -0
- package/.koolie/core/framework/skills/fw-change-small/CHANGELOG.md +13 -0
- package/.koolie/core/framework/skills/fw-change-small/EXAMPLES.md +68 -0
- package/.koolie/core/framework/skills/fw-change-small/SKILL.md +175 -0
- package/.koolie/core/framework/skills/fw-change-small/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-code-explain/CHANGELOG.md +11 -0
- package/.koolie/core/framework/skills/fw-code-explain/EXAMPLES.md +61 -0
- package/.koolie/core/framework/skills/fw-code-explain/SKILL.md +163 -0
- package/.koolie/core/framework/skills/fw-code-explain/TESTS.md +11 -0
- package/.koolie/core/framework/skills/fw-docs-update/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-docs-update/EXAMPLES.md +59 -0
- package/.koolie/core/framework/skills/fw-docs-update/SKILL.md +160 -0
- package/.koolie/core/framework/skills/fw-docs-update/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-error-analyze/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-error-analyze/EXAMPLES.md +67 -0
- package/.koolie/core/framework/skills/fw-error-analyze/SKILL.md +160 -0
- package/.koolie/core/framework/skills/fw-error-analyze/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-mr-description/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-mr-description/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-mr-description/SKILL.md +170 -0
- package/.koolie/core/framework/skills/fw-mr-description/TESTS.md +12 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/CHANGELOG.md +7 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/EXAMPLES.md +48 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/SKILL.md +147 -0
- package/.koolie/core/framework/skills/fw-overlay-pflege/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-plan/CHANGELOG.md +14 -0
- package/.koolie/core/framework/skills/fw-plan/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-plan/SKILL.md +168 -0
- package/.koolie/core/framework/skills/fw-plan/TESTS.md +14 -0
- package/.koolie/core/framework/skills/fw-refactor/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-refactor/EXAMPLES.md +70 -0
- package/.koolie/core/framework/skills/fw-refactor/SKILL.md +173 -0
- package/.koolie/core/framework/skills/fw-refactor/TESTS.md +14 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/CHANGELOG.md +10 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/EXAMPLES.md +52 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/SKILL.md +149 -0
- package/.koolie/core/framework/skills/fw-repo-analyze/TESTS.md +11 -0
- package/.koolie/core/framework/skills/fw-review-support/CHANGELOG.md +12 -0
- package/.koolie/core/framework/skills/fw-review-support/EXAMPLES.md +69 -0
- package/.koolie/core/framework/skills/fw-review-support/SKILL.md +179 -0
- package/.koolie/core/framework/skills/fw-review-support/TESTS.md +13 -0
- package/.koolie/core/framework/skills/fw-tests/CHANGELOG.md +9 -0
- package/.koolie/core/framework/skills/fw-tests/EXAMPLES.md +65 -0
- package/.koolie/core/framework/skills/fw-tests/SKILL.md +169 -0
- package/.koolie/core/framework/skills/fw-tests/TESTS.md +12 -0
- package/.koolie/core/framework/tech-packs/README.md +15 -0
- package/.koolie/core/framework/tech-packs/_template/TECH_PACK.md +61 -0
- package/.koolie/core/governance/ADOPTION_REGISTRY.md +89 -0
- package/.koolie/core/governance/CHANGE_REQUEST_TEMPLATE.md +60 -0
- package/.koolie/core/governance/DECISION_LOG.md +779 -0
- package/.koolie/core/governance/EXCEPTION_PROCESS.md +31 -0
- package/.koolie/core/governance/FEEDBACK_PROCESS.md +34 -0
- package/.koolie/core/governance/FRAMEWORK_DEV_PROFILE.md +135 -0
- package/.koolie/core/governance/INCIDENT_HANDLING.md +47 -0
- package/.koolie/core/governance/PRIORITY_HIERARCHY.md +61 -0
- package/.koolie/core/governance/RACI.md +37 -0
- package/.koolie/core/governance/RELEASE_PROCESS.md +183 -0
- package/.koolie/core/governance/change-requests/CR-2026-001-definition-release-1-0-0.md +67 -0
- package/.koolie/core/governance/change-requests/CR-2026-002-client-packs.md +63 -0
- package/.koolie/core/governance/change-requests/CR-2026-003-install-client-schalter.md +70 -0
- package/.koolie/core/governance/change-requests/CR-2026-004-client-pack-claude-code.md +82 -0
- package/.koolie/core/governance/change-requests/CR-2026-005-kern-neutralisierung.md +75 -0
- package/.koolie/core/governance/change-requests/CR-2026-006-gemeinsame-skill-quelle.md +77 -0
- package/.koolie/core/governance/change-requests/CR-2026-007-geteilte-kernbestandteile.md +80 -0
- package/.koolie/core/governance/change-requests/CR-2026-008-berechtigungen-und-hooks.md +85 -0
- package/.koolie/core/governance/change-requests/CR-2026-009-umbenennung-leitwerk.md +77 -0
- package/.koolie/core/governance/change-requests/CR-2026-010-restduplikation.md +73 -0
- package/.koolie/core/governance/change-requests/CR-2026-011-hauptdokument.md +72 -0
- package/.koolie/core/governance/change-requests/CR-2026-012-schreibschutz-kernverzeichnis.md +106 -0
- package/.koolie/core/governance/change-requests/CR-2026-013-validator-blindstellen.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-014-kurzform-langform.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-015-versionskette.md +150 -0
- package/.koolie/core/governance/change-requests/CR-2026-016-ap2-claude-code.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-017-ladebedingungen-claude-code.md +173 -0
- package/.koolie/core/governance/change-requests/CR-2026-018-quellenliste-claude-code.md +121 -0
- package/.koolie/core/governance/change-requests/CR-2026-019-strukturentscheidungen-fortschreiben.md +143 -0
- package/.koolie/core/governance/change-requests/CR-2026-020-akteursbezeichnung.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-021-hook-interpreter.md +113 -0
- package/.koolie/core/governance/change-requests/CR-2026-022-artefaktversionen.md +73 -0
- package/.koolie/core/governance/change-requests/CR-2026-023-shell-lesesperre.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-024-clientbindungen.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-025-betriebsmodi.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-026-fail-closed.md +134 -0
- package/.koolie/core/governance/change-requests/CR-2026-027-zeichenlimit-einstufung.md +105 -0
- package/.koolie/core/governance/change-requests/CR-2026-028-berechtigungsmodi.md +130 -0
- package/.koolie/core/governance/change-requests/CR-2026-029-hook-ablageort.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-030-lesende-werkzeuge.md +143 -0
- package/.koolie/core/governance/change-requests/CR-2026-031-regelquellen-ausserhalb.md +182 -0
- package/.koolie/core/governance/change-requests/CR-2026-032-fremde-skill-ablage.md +151 -0
- package/.koolie/core/governance/change-requests/CR-2026-033-modusabhaengige-durchsetzung.md +131 -0
- package/.koolie/core/governance/change-requests/CR-2026-034-nachweisbedingungen.md +116 -0
- package/.koolie/core/governance/change-requests/CR-2026-035-readme-in-der-regelablage.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-036-ortsangaben-hook-konfiguration.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-037-meldender-hook-clientgebunden.md +133 -0
- package/.koolie/core/governance/change-requests/CR-2026-038-importsteuerung.md +159 -0
- package/.koolie/core/governance/change-requests/CR-2026-039-normative-saetze-in-kommentaren.md +124 -0
- package/.koolie/core/governance/change-requests/CR-2026-040-erh01-ist-clientgebunden.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-041-s5-nicht-abbildbar.md +128 -0
- package/.koolie/core/governance/change-requests/CR-2026-042-abwesenheitsnachweis-suchwerkzeug.md +102 -0
- package/.koolie/core/governance/change-requests/CR-2026-043-validator-gibt-trefferwerte-aus.md +135 -0
- package/.koolie/core/governance/change-requests/CR-2026-044-aktivierungspruefung-clientgebunden.md +112 -0
- package/.koolie/core/governance/change-requests/CR-2026-045-update-verliert-die-clientwahl.md +116 -0
- package/.koolie/core/governance/change-requests/CR-2026-046-erstinstallation-ueberschreibt-projektdatei.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-047-zusagen-je-zugriffskanal.md +133 -0
- package/.koolie/core/governance/change-requests/CR-2026-048-modusgrenze-ohne-durchsetzung.md +137 -0
- package/.koolie/core/governance/change-requests/CR-2026-049-sondenlauf-kodierungsabhaengig.md +126 -0
- package/.koolie/core/governance/change-requests/CR-2026-050-allowed-tools-und-verworfene-permissions.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-051-quellenkarte-und-ueberholter-stand.md +110 -0
- package/.koolie/core/governance/change-requests/CR-2026-052-drei-regelkonflikte.md +166 -0
- package/.koolie/core/governance/change-requests/CR-2026-053-lesesperre-und-entwicklungsprofil.md +144 -0
- package/.koolie/core/governance/change-requests/CR-2026-054-aktivierung-verlangt-aktivitaet.md +124 -0
- package/.koolie/core/governance/change-requests/CR-2026-055-domain-ausnahme-ohne-mechanismus.md +173 -0
- package/.koolie/core/governance/change-requests/CR-2026-056-eingabeschema-und-pfadidentitaet.md +245 -0
- package/.koolie/core/governance/change-requests/CR-2026-057-disallowed-tools-und-s3.md +148 -0
- package/.koolie/core/governance/change-requests/CR-2026-058-unteragent-reichweite.md +203 -0
- package/.koolie/core/governance/change-requests/CR-2026-059-unteragent-tiefe-und-widerspruch.md +125 -0
- package/.koolie/core/governance/change-requests/CR-2026-060-stumme-brueche.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-061-berechtigungsdatei-ohne-pruefung.md +169 -0
- package/.koolie/core/governance/change-requests/CR-2026-062-werkzeugabbildung-des-frontmatters.md +178 -0
- package/.koolie/core/governance/change-requests/CR-2026-063-skillaufruf-ohne-freigabe.md +207 -0
- package/.koolie/core/governance/change-requests/CR-2026-064-pruefregister-nicht-nachgezaehlt.md +141 -0
- package/.koolie/core/governance/change-requests/CR-2026-065-devin-suchwerkzeuge-erhoben.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-066-schlitzdeckung-ohne-abgleich.md +153 -0
- package/.koolie/core/governance/change-requests/CR-2026-067-hookblock-und-praeparationsregister.md +140 -0
- package/.koolie/core/governance/change-requests/CR-2026-068-sondenlauf-nebenlaeufig.md +106 -0
- package/.koolie/core/governance/change-requests/CR-2026-069-bytecode-des-kerns.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-070-d11-zaehler.md +114 -0
- package/.koolie/core/governance/change-requests/CR-2026-071-strukturentscheidungen-bestaetigen.md +322 -0
- package/.koolie/core/governance/change-requests/CR-2026-072-modulstatus-heben.md +315 -0
- package/.koolie/core/governance/change-requests/CR-2026-073-nicht-skill-traeger-heben.md +246 -0
- package/.koolie/core/governance/change-requests/CR-2026-074-restliche-nicht-skill-traeger-heben.md +271 -0
- package/.koolie/core/governance/change-requests/CR-2026-075-ap2-zielversion-devin-desktop.md +335 -0
- package/.koolie/core/governance/change-requests/CR-2026-076-erster-sitzungstest.md +455 -0
- package/.koolie/core/governance/change-requests/CR-2026-077-sitzungstest-schranken.md +425 -0
- package/.koolie/core/governance/change-requests/CR-2026-078-planung-nach-1-0-0.md +294 -0
- package/.koolie/core/governance/change-requests/CR-2026-079-umbenennung-vorziehen.md +233 -0
- package/.koolie/core/governance/change-requests/CR-2026-080-clientbindung-des-kerns.md +321 -0
- package/.koolie/core/governance/change-requests/CR-2026-081-produktnamen-im-kern.md +297 -0
- package/.koolie/core/governance/change-requests/CR-2026-082-sitzungstest-pi-ds-2.md +145 -0
- package/.koolie/core/governance/change-requests/CR-2026-083-sitzungstest-ne-sc.md +300 -0
- package/.koolie/core/governance/change-requests/CR-2026-084-trockenlauf-gegen-den-committeten-stand.md +117 -0
- package/.koolie/core/governance/change-requests/CR-2026-085-vorbedingungen-sitzungstest-5.md +182 -0
- package/.koolie/core/governance/change-requests/CR-2026-086-grenzfaelle-gegen-die-fassungen.md +164 -0
- package/.koolie/core/governance/change-requests/CR-2026-087-produktbeobachtung-quellenliste.md +206 -0
- package/.koolie/core/governance/change-requests/CR-2026-088-vorbedingungen-testblaetter.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-089-herrichtung-uebungsrepositorium.md +226 -0
- package/.koolie/core/governance/change-requests/CR-2026-090-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +255 -0
- package/.koolie/core/governance/change-requests/CR-2026-091-sitzungstest-5.md +163 -0
- package/.koolie/core/governance/change-requests/CR-2026-092-pruefmittelwort-und-buendelschnitt.md +226 -0
- package/.koolie/core/governance/change-requests/CR-2026-093-sechzehnte-praeparation.md +151 -0
- package/.koolie/core/governance/change-requests/CR-2026-094-testblaetter-buendel-1.md +113 -0
- package/.koolie/core/governance/change-requests/CR-2026-095-pruefapparat-filter.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-096-vorbedingungen-buendel-2.md +225 -0
- package/.koolie/core/governance/change-requests/CR-2026-097-testblaetter-buendel-2.md +162 -0
- package/.koolie/core/governance/change-requests/CR-2026-098-anforderungen-auslieferung.md +93 -0
- package/.koolie/core/governance/change-requests/CR-2026-099-k74-und-vorbedingungen-buendel-3.md +119 -0
- package/.koolie/core/governance/change-requests/CR-2026-100-testblaetter-buendel-3.md +120 -0
- package/.koolie/core/governance/change-requests/CR-2026-101-k77-eigener-posten.md +165 -0
- package/.koolie/core/governance/change-requests/CR-2026-102-k77-entschieden.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-103-vorbedingungen-buendel-4.md +76 -0
- package/.koolie/core/governance/change-requests/CR-2026-104-herrichtung-buendel-4.md +82 -0
- package/.koolie/core/governance/change-requests/CR-2026-105-messapparat-buendel-4.md +227 -0
- package/.koolie/core/governance/change-requests/CR-2026-106-uebergabe-einchecken.md +91 -0
- package/.koolie/core/governance/change-requests/CR-2026-107-uebergabe-im-release-commit.md +111 -0
- package/.koolie/core/governance/change-requests/CR-2026-108-testblaetter-buendel-4.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-109-berichtsweg-des-aufraeumers.md +108 -0
- package/.koolie/core/governance/change-requests/CR-2026-110-vorbedingungen-des-nachlaufs.md +184 -0
- package/.koolie/core/governance/change-requests/CR-2026-111-der-apparat-auf-dem-weg-der-wiederaufnahme.md +127 -0
- package/.koolie/core/governance/change-requests/CR-2026-112-der-arbeitsplatz-im-kern.md +103 -0
- package/.koolie/core/governance/change-requests/CR-2026-113-nachlauf-buendel-4.md +103 -0
- package/.koolie/core/governance/change-requests/CR-2026-114-vorbedingungen-buendel-5.md +317 -0
- package/.koolie/core/governance/change-requests/CR-2026-115-herrichtung-buendel-5.md +244 -0
- package/.koolie/core/governance/change-requests/CR-2026-116-messtag-buendel-5.md +178 -0
- package/.koolie/core/governance/change-requests/CR-2026-117-sammelzellen-zentraler-katalog.md +251 -0
- package/.koolie/core/governance/change-requests/CR-2026-118-quellenzuordnung-matrixzeilen.md +115 -0
- package/.koolie/core/governance/change-requests/CR-2026-119-umbenennung-koolie.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-120-ap2-rest-devin-desktop.md +96 -0
- package/.koolie/core/governance/change-requests/CR-2026-121-verify-marker-abschaffen.md +185 -0
- package/.koolie/core/governance/change-requests/CR-2026-122-umbenennung-koolie-lauf.md +131 -0
- package/.koolie/core/governance/change-requests/CR-2026-123-vortrag-und-namensabsatz.md +170 -0
- package/.koolie/core/governance/change-requests/CR-2026-124-hauptdokument-ap11.md +237 -0
- package/.koolie/core/governance/change-requests/CR-2026-125-word-fassung-und-blinder-fleck.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-126-lizenz-gpl3.md +112 -0
- package/.koolie/core/governance/change-requests/CR-2026-127-gegenzeichnung-rollenfrage.md +96 -0
- package/.koolie/core/governance/change-requests/CR-2026-128-freigabelauf-1.0.0.md +278 -0
- package/.koolie/core/governance/change-requests/CR-2026-129-archiv-zeilenenden.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-130-reihenfolge-des-hebens.md +204 -0
- package/.koolie/core/governance/change-requests/CR-2026-131-chronik-und-vorlage.md +194 -0
- package/.koolie/core/governance/change-requests/CR-2026-132-erhebung-openai-codex.md +185 -0
- package/.koolie/core/governance/change-requests/CR-2026-133-bau-openai-codex.md +97 -0
- package/.koolie/core/governance/change-requests/CR-2026-134-uebergabe-lokal.md +117 -0
- package/.koolie/core/governance/change-requests/CR-2026-135-pfadlisten-nul-getrennt.md +139 -0
- package/.koolie/core/governance/change-requests/CR-2026-136-overlay-werte-einordnung.md +156 -0
- package/.koolie/core/governance/change-requests/CR-2026-137-kopierweg-kern.md +144 -0
- package/.koolie/core/governance/change-requests/CR-2026-138-overlay-muster-general.md +118 -0
- package/.koolie/core/governance/change-requests/CR-2026-139-overlay-muster-dokumente.md +105 -0
- package/.koolie/core/governance/change-requests/CR-2026-140-installer-je-zielsystem.md +120 -0
- package/.koolie/core/governance/change-requests/CR-2026-141-lieferumfang.md +123 -0
- package/.koolie/core/governance/change-requests/CR-2026-142-dokumentationsstandard.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-143-klasse-b-core-laufzeit.md +89 -0
- package/.koolie/core/governance/change-requests/CR-2026-144-klasse-b-governance.md +90 -0
- package/.koolie/core/governance/change-requests/CR-2026-145-klasse-b-skills.md +81 -0
- package/.koolie/core/governance/change-requests/CR-2026-146-code-pack-posten.md +84 -0
- package/.koolie/core/governance/change-requests/CR-2026-147-regel-register-posten.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-148-mehrprojekt-tokenlast.md +70 -0
- package/.koolie/core/governance/change-requests/CR-2026-149-regelablage-pfadtoken.md +71 -0
- package/.koolie/core/governance/change-requests/CR-2026-150-client-pack-kiro.md +76 -0
- package/.koolie/core/governance/change-requests/CR-2026-151-skill-anweisungen.md +71 -0
- package/.koolie/core/governance/change-requests/CR-2026-152-testblaetter-modellwechsel.md +78 -0
- package/.koolie/core/governance/change-requests/CR-2026-153-attributionszeile.md +88 -0
- package/.koolie/core/governance/change-requests/CR-2026-154-auffindbarkeit.md +102 -0
- package/.koolie/core/governance/change-requests/CR-2026-155-client-pack-cursor.md +80 -0
- package/.koolie/core/governance/change-requests/CR-2026-156-mandat-und-reibung.md +100 -0
- package/.koolie/core/governance/change-requests/CR-2026-157-mcp-anbindung.md +93 -0
- package/.koolie/core/governance/change-requests/CR-2026-158-registerpflege.md +69 -0
- package/.koolie/core/governance/change-requests/CR-2026-159-powershell.md +49 -0
- package/.koolie/core/governance/change-requests/CR-2026-160-messapparat.md +59 -0
- package/.koolie/core/governance/change-requests/CR-2026-161-pruefwerkzeuge.md +52 -0
- package/.koolie/core/governance/change-requests/CR-2026-162-schutzschicht.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-163-pfadsemantik.md +61 -0
- package/.koolie/core/governance/change-requests/CR-2026-164-modi-ausnahmen.md +65 -0
- package/.koolie/core/governance/change-requests/CR-2026-165-installer-banner.md +406 -0
- package/.koolie/core/governance/change-requests/CR-2026-166-nachlauf-aufzeichnungen.md +59 -0
- package/.koolie/core/governance/change-requests/CR-2026-167-einsatzarchitektur.md +60 -0
- package/.koolie/core/governance/change-requests/CR-2026-168-paketquellen.md +64 -0
- package/.koolie/core/governance/change-requests/CR-2026-169-modusbindung-messfragen.md +58 -0
- package/.koolie/core/governance/change-requests/CR-2026-170-erste-veroeffentlichung.md +62 -0
- package/.koolie/core/governance/change-requests/CR-2026-171-befehl-im-projektverzeichnis.md +57 -0
- package/.koolie/core/governance/change-requests/CR-2026-172-auftritt-npm-suche.md +58 -0
- package/.koolie/core/install.py +2402 -0
- package/.koolie/core/install_dialog.py +227 -0
- package/.koolie/core/koexistenz.py +112 -0
- package/.koolie/core/mandat.py +605 -0
- package/.koolie/core/onboarding/COMPLETION_CRITERIA.md +37 -0
- package/.koolie/core/onboarding/GUIDE.md +103 -0
- package/.koolie/core/onboarding/KNOWLEDGE_CHECK.md +48 -0
- package/.koolie/core/onboarding/MENTOR_CHECKLIST.md +40 -0
- package/.koolie/core/onboarding/QUICKSTART.md +50 -0
- package/.koolie/core/onboarding/REFERENCE.md +69 -0
- package/.koolie/core/onboarding/exercises/EXERCISES.md +78 -0
- package/.koolie/core/onboarding/exercises/README.md +120 -0
- package/.koolie/core/pilot/METRICS.md +59 -0
- package/.koolie/core/pilot/PILOT_CONCEPT.md +42 -0
- package/.koolie/core/prompts/01-understand-codebase.md +99 -0
- package/.koolie/core/prompts/02-impact-analysis.md +104 -0
- package/.koolie/core/prompts/03-implementation-planning.md +102 -0
- package/.koolie/core/prompts/04-code-generation.md +100 -0
- package/.koolie/core/prompts/05-test-generation.md +103 -0
- package/.koolie/core/prompts/06-refactoring.md +102 -0
- package/.koolie/core/prompts/07-debugging.md +97 -0
- package/.koolie/core/prompts/08-security-review.md +92 -0
- package/.koolie/core/prompts/09-performance-analysis.md +89 -0
- package/.koolie/core/prompts/10-documentation.md +91 -0
- package/.koolie/core/prompts/11-merge-request-review.md +94 -0
- package/.koolie/core/prompts/12-developer-training.md +90 -0
- package/.koolie/core/prompts/README.md +88 -0
- package/.koolie/core/templates/MR_AI_DISCLOSURE.md +37 -0
- package/.koolie/core/templates/PLAN_TEMPLATE.md +57 -0
- package/.koolie/core/templates/SKILL_TEMPLATE.md +159 -0
- package/.koolie/core/templates/project-overlay/OVERLAY.md +315 -0
- package/.koolie/core/templates/project-overlay/documents/README.md +43 -0
- package/.koolie/core/templates/project-overlay/documents/ai-governance/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/ai-process-model/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/architecture/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/architecture/decisions/README.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/branching-strategy/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/coding-guidelines/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/definition-of-done/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/definition-of-ready/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/deployment/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/glossary/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/quality/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/roadmap/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/roles/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/documents/security/.gitkeep.md +3 -0
- package/.koolie/core/templates/project-overlay/exceptions/EXCEPTIONS.md +9 -0
- package/.koolie/core/templates/project-overlay/forbidden-terms.txt +8 -0
- package/.koolie/core/templates/project-overlay/overlay-manifest.yaml +73 -0
- package/.koolie/core/templates/rules/21-overlay-TEMPLATE.md.template +28 -0
- package/.koolie/core/templates/rules/40-tech-TEMPLATE.md.template +33 -0
- package/.koolie/core/tests/EDGE_CASES.md +67 -0
- package/.koolie/core/tests/TEST_CATALOG.md +170 -0
- package/.koolie/core/tests/erhebungen/README.md +326 -0
- package/.koolie/core/tests/erhebungen/ablage.py +357 -0
- package/.koolie/core/tests/erhebungen/apparat/__init__.py +22 -0
- package/.koolie/core/tests/erhebungen/apparat/baum.py +214 -0
- package/.koolie/core/tests/erhebungen/apparat/belege.py +91 -0
- package/.koolie/core/tests/erhebungen/apparat/clients.py +321 -0
- package/.koolie/core/tests/erhebungen/apparat/freigabe.py +74 -0
- package/.koolie/core/tests/erhebungen/apparat/kontingent.py +64 -0
- package/.koolie/core/tests/erhebungen/apparat/laeufer.py +155 -0
- package/.koolie/core/tests/erhebungen/apparat/reihe.py +202 -0
- package/.koolie/core/tests/erhebungen/apparat/selbsttest.py +280 -0
- package/.koolie/core/tests/erhebungen/apparat/stand.py +30 -0
- package/.koolie/core/tests/erhebungen/apparat/vorpruefung.py +70 -0
- package/.koolie/core/tests/erhebungen/auswerten-b4.py +468 -0
- package/.koolie/core/tests/erhebungen/auswerten-b5.py +517 -0
- package/.koolie/core/tests/erhebungen/auswerten-dd.py +172 -0
- package/.koolie/core/tests/erhebungen/baeume-b4.py +334 -0
- package/.koolie/core/tests/erhebungen/baeume-b5.py +339 -0
- package/.koolie/core/tests/erhebungen/baeume_loeschen.py +138 -0
- package/.koolie/core/tests/erhebungen/cc-overlay-fuellen.py +277 -0
- package/.koolie/core/tests/erhebungen/dossier-b4.py +178 -0
- package/.koolie/core/tests/erhebungen/dossier-b5.py +202 -0
- package/.koolie/core/tests/erhebungen/historie-bauen-b4.py +642 -0
- package/.koolie/core/tests/erhebungen/k-bauen-b3.py +841 -0
- package/.koolie/core/tests/erhebungen/lauf-dd.py +146 -0
- package/.koolie/core/tests/erhebungen/lauf.py +114 -0
- package/.koolie/core/tests/erhebungen/mcp-waechter.py +278 -0
- package/.koolie/core/tests/erhebungen/messbaum-schnitt.py +256 -0
- package/.koolie/core/tests/erhebungen/messen.py +72 -0
- package/.koolie/core/tests/erhebungen/node-waechter.py +74 -0
- package/.koolie/core/tests/erhebungen/packaktivierung.py +403 -0
- package/.koolie/core/tests/erhebungen/prompts-schreiben-b4.py +210 -0
- package/.koolie/core/tests/erhebungen/prompts-schreiben-b5.py +251 -0
- package/.koolie/core/tests/erhebungen/reihe-b4.py +171 -0
- package/.koolie/core/tests/erhebungen/reihe-b5.py +172 -0
- package/.koolie/core/tests/erhebungen/stand-b4.py +135 -0
- package/.koolie/core/tests/erhebungen/stand-b5.py +137 -0
- package/.koolie/core/tests/erhebungen/trust-b4.py +56 -0
- package/.koolie/core/tests/erhebungen/trust-b5.py +56 -0
- package/.koolie/core/tests/erhebungen/turn2-schreiben-b4.py +105 -0
- package/.koolie/core/tests/erhebungen/umgebungen-bauen-b4.py +377 -0
- package/.koolie/core/tests/erhebungen/umgebungen-bauen-b5.py +363 -0
- package/.koolie/core/tests/erhebungen/zaehlen46.py +74 -0
- package/.koolie/core/tests/erhebungen/zustand-b4.py +82 -0
- package/.koolie/core/tests/erhebungen/zustand-b5.py +82 -0
- package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code-wirkungsnachweise.md +194 -0
- package/.koolie/core/tests/protocols/2026-09-10-AP2-claude-code.md +468 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-020-akteursbezeichnung.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-021-hook-interpreter.md +138 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-022-artefaktversionen.md +87 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-023-shell-lesesperre.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-10-CR-2026-024-clientbindungen.md +98 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-DS-03.md +90 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-01.md +105 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-02.md +123 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-KO-04.md +73 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-RE-02.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01-wiederholung.md +108 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-VN-01.md +249 -0
- package/.koolie/core/tests/protocols/2026-09-10-FW-ZA-05.md +99 -0
- package/.koolie/core/tests/protocols/2026-09-11-AP2-devin-desktop.md +257 -0
- package/.koolie/core/tests/protocols/2026-09-11-CR-2026-026-fail-closed.md +113 -0
- package/.koolie/core/tests/protocols/2026-09-11-erhebungen-K21-K26.md +243 -0
- package/.koolie/core/tests/protocols/2026-09-11-wirkungsnachweise-0.26.0.md +101 -0
- package/.koolie/core/tests/protocols/2026-09-12-B01-allowed-tools.md +152 -0
- package/.koolie/core/tests/protocols/2026-09-12-B04-B05-gegenpruefung.md +204 -0
- package/.koolie/core/tests/protocols/2026-09-12-erhebungen-K28-S5-B9-bypass.md +268 -0
- package/.koolie/core/tests/protocols/2026-09-12-mehrprojekt-arbeitsbereich.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.26.1.md +126 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.27.0.md +114 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.28.0.md +129 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.29.0.md +121 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.30.0.md +112 -0
- package/.koolie/core/tests/protocols/2026-09-12-wirkungsnachweise-0.31.0.md +107 -0
- package/.koolie/core/tests/protocols/2026-09-13-B06-gegenpruefung.md +370 -0
- package/.koolie/core/tests/protocols/2026-09-13-B07-B09-gegenpruefung.md +211 -0
- package/.koolie/core/tests/protocols/2026-09-13-B08-B11-gegenpruefung.md +179 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-disallowed-tools.md +147 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent-tiefe.md +139 -0
- package/.koolie/core/tests/protocols/2026-09-13-erhebung-unteragent.md +214 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-berechtigungsdatei.md +253 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-stumme-brueche.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-13-gegenpruefung-werkzeugabbildung.md +219 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.32.0.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.33.0.md +169 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.34.0.md +187 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.35.0.md +187 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.36.0.md +137 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.37.0.md +112 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.38.0.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.39.0.md +188 -0
- package/.koolie/core/tests/protocols/2026-09-13-wirkungsnachweise-0.40.0.md +214 -0
- package/.koolie/core/tests/protocols/2026-09-14-erhebung-devin-werkzeuge.md +267 -0
- package/.koolie/core/tests/protocols/2026-09-14-erhebung-skillaufruf.md +238 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-pruefregister.md +156 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-schlitzdeckung.md +206 -0
- package/.koolie/core/tests/protocols/2026-09-14-gegenpruefung-skillwahl.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-14-migrationslauf-pilot.md +134 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.41.0.md +175 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.42.0.md +180 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.43.0.md +165 -0
- package/.koolie/core/tests/protocols/2026-09-14-wirkungsnachweise-0.44.0.md +130 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-d11-zaehlregeln.md +311 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-modulstatus.md +524 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-nicht-skill-traeger.md +225 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-restliche-nicht-skill-traeger.md +345 -0
- package/.koolie/core/tests/protocols/2026-09-15-gegenpruefung-strukturentscheidungen.md +392 -0
- package/.koolie/core/tests/protocols/2026-09-15-herrichtung-uebungsrepositorium.md +213 -0
- package/.koolie/core/tests/protocols/2026-09-15-migrationslauf-pilot-0.46.0.md +143 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.45.0.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.46.0.md +193 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.47.0.md +149 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.49.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.50.0.md +183 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.51.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-15-wirkungsnachweise-0.52.0.md +168 -0
- package/.koolie/core/tests/protocols/2026-09-16-AP2-zielversion-devin-desktop.md +231 -0
- package/.koolie/core/tests/protocols/2026-09-16-wirkungsnachweise-0.53.0.md +350 -0
- package/.koolie/core/tests/protocols/2026-09-17-nachtrag-migrationshinweis-0.54.1.md +121 -0
- package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-pi-ds.md +523 -0
- package/.koolie/core/tests/protocols/2026-09-17-sitzungstest-schranken.md +433 -0
- package/.koolie/core/tests/protocols/2026-09-17-wirkungsnachweise-0.54.0.md +159 -0
- package/.koolie/core/tests/protocols/2026-09-18-FW-AK-01.md +442 -0
- package/.koolie/core/tests/protocols/2026-09-18-FW-KO-05.md +231 -0
- package/.koolie/core/tests/protocols/2026-09-18-herrichtung-uebungsrepositorium.md +273 -0
- package/.koolie/core/tests/protocols/2026-09-18-nachtrag-preis-umbenennung-0.56.1.md +102 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-5.md +349 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-ne-sc.md +430 -0
- package/.koolie/core/tests/protocols/2026-09-18-sitzungstest-pi-ds-2.md +499 -0
- package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-sitzungstest-5-zweiter-durchgang.md +170 -0
- package/.koolie/core/tests/protocols/2026-09-18-vorbedingungen-testblaetter.md +184 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.55.0.md +202 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.0.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.56.2.md +154 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.0.md +228 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.57.1.md +262 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.58.0.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.59.0.md +150 -0
- package/.koolie/core/tests/protocols/2026-09-18-wirkungsnachweise-0.60.0.md +340 -0
- package/.koolie/core/tests/protocols/2026-09-19-herrichtung-buendel-4.md +235 -0
- package/.koolie/core/tests/protocols/2026-09-19-k77-zurechenbarkeit.md +236 -0
- package/.koolie/core/tests/protocols/2026-09-19-pruefapparat-filter.md +50 -0
- package/.koolie/core/tests/protocols/2026-09-19-pruefmittelwort-und-buendelschnitt.md +239 -0
- package/.koolie/core/tests/protocols/2026-09-19-sechzehnte-praeparation.md +135 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-1.md +250 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-2.md +229 -0
- package/.koolie/core/tests/protocols/2026-09-19-testblaetter-buendel-3.md +293 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-2.md +236 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-3.md +253 -0
- package/.koolie/core/tests/protocols/2026-09-19-vorbedingungen-buendel-4.md +138 -0
- package/.koolie/core/tests/protocols/2026-09-20-messapparat-buendel-4.md +433 -0
- package/.koolie/core/tests/protocols/2026-09-20-testblaetter-buendel-4.md +321 -0
- package/.koolie/core/tests/protocols/2026-09-20-uebergabe-im-release-commit.md +146 -0
- package/.koolie/core/tests/protocols/2026-09-20-vorbedingungen-nachlauf-b4.md +259 -0
- package/.koolie/core/tests/protocols/2026-09-21-arbeitsplatz-im-kern.md +127 -0
- package/.koolie/core/tests/protocols/2026-09-21-nachlauf-buendel-4.md +157 -0
- package/.koolie/core/tests/protocols/2026-09-21-vorbedingungen-buendel-5.md +247 -0
- package/.koolie/core/tests/protocols/2026-09-21-wiederaufnahme-nachlauf-b4.md +190 -0
- package/.koolie/core/tests/protocols/2026-09-22-ap2-rest-devin-desktop.md +614 -0
- package/.koolie/core/tests/protocols/2026-09-22-hauptdokument-ap11.md +443 -0
- package/.koolie/core/tests/protocols/2026-09-22-herrichtung-buendel-5.md +224 -0
- package/.koolie/core/tests/protocols/2026-09-22-messtag-buendel-5.md +327 -0
- package/.koolie/core/tests/protocols/2026-09-22-quellenzuordnung-matrixzeilen.md +230 -0
- package/.koolie/core/tests/protocols/2026-09-22-sammelzellen-zentraler-katalog.md +354 -0
- package/.koolie/core/tests/protocols/2026-09-22-umbenennung-koolie.md +296 -0
- package/.koolie/core/tests/protocols/2026-09-22-verify-marker-abschaffen.md +283 -0
- package/.koolie/core/tests/protocols/2026-09-22-vortrag-und-name.md +261 -0
- package/.koolie/core/tests/protocols/2026-09-22-wirkungsnachweise-0.86.0.md +158 -0
- package/.koolie/core/tests/protocols/2026-09-23-archiv-zeilenenden.md +113 -0
- package/.koolie/core/tests/protocols/2026-09-23-bau-openai-codex.md +168 -0
- package/.koolie/core/tests/protocols/2026-09-23-chronik-und-vorlage.md +224 -0
- package/.koolie/core/tests/protocols/2026-09-23-erhebung-openai-codex.md +309 -0
- package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0-vorbereitung.md +119 -0
- package/.koolie/core/tests/protocols/2026-09-23-freigabelauf-1.0.0.md +150 -0
- package/.koolie/core/tests/protocols/2026-09-23-gegenzeichnung-rollenfrage.md +198 -0
- package/.koolie/core/tests/protocols/2026-09-23-reihenfolge-des-hebens.md +220 -0
- package/.koolie/core/tests/protocols/2026-09-23-word-fassung-und-blinder-fleck.md +307 -0
- package/.koolie/core/tests/protocols/2026-09-24-kopierweg-kern.md +98 -0
- package/.koolie/core/tests/protocols/2026-09-24-overlay-werte-einordnung.md +111 -0
- package/.koolie/core/tests/protocols/2026-09-24-pfadlisten-nul-getrennt.md +128 -0
- package/.koolie/core/tests/protocols/2026-09-24-uebergabe-lokal.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-25-code-pack-posten.md +86 -0
- package/.koolie/core/tests/protocols/2026-09-25-dokumentationsstandard.md +101 -0
- package/.koolie/core/tests/protocols/2026-09-25-installer-je-zielsystem.md +134 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-core-laufzeit.md +126 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-governance.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-25-klasse-b-skills.md +91 -0
- package/.koolie/core/tests/protocols/2026-09-25-lieferumfang.md +76 -0
- package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-dokumente.md +107 -0
- package/.koolie/core/tests/protocols/2026-09-25-overlay-muster-general.md +100 -0
- package/.koolie/core/tests/protocols/2026-09-25-regel-register-posten.md +87 -0
- package/.koolie/core/tests/protocols/2026-09-26-attributionszeile.md +83 -0
- package/.koolie/core/tests/protocols/2026-09-26-auffindbarkeit.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-26-bau-cursor.md +68 -0
- package/.koolie/core/tests/protocols/2026-09-26-bau-kiro.md +75 -0
- package/.koolie/core/tests/protocols/2026-09-26-mehrprojekt-tokenlast.md +174 -0
- package/.koolie/core/tests/protocols/2026-09-26-regelablage-pfadtoken.md +133 -0
- package/.koolie/core/tests/protocols/2026-09-26-skill-anweisungen.md +111 -0
- package/.koolie/core/tests/protocols/2026-09-26-testblaetter-modellwechsel.md +106 -0
- package/.koolie/core/tests/protocols/2026-09-27-mandat-und-reibung.md +58 -0
- package/.koolie/core/tests/protocols/2026-09-28-mcp-anbindung.md +72 -0
- package/.koolie/core/tests/protocols/2026-09-29-messapparat.md +75 -0
- package/.koolie/core/tests/protocols/2026-09-29-powershell.md +58 -0
- package/.koolie/core/tests/protocols/2026-09-29-pruefwerkzeuge.md +64 -0
- package/.koolie/core/tests/protocols/2026-09-29-registerpflege.md +228 -0
- package/.koolie/core/tests/protocols/2026-09-29-schutzschicht.md +95 -0
- package/.koolie/core/tests/protocols/2026-09-30-einsatzarchitektur.md +104 -0
- package/.koolie/core/tests/protocols/2026-09-30-modi-ausnahmen.md +77 -0
- package/.koolie/core/tests/protocols/2026-09-30-nachlauf-banner.md +85 -0
- package/.koolie/core/tests/protocols/2026-09-30-paketquellen.md +65 -0
- package/.koolie/core/tests/protocols/2026-09-30-pfadsemantik.md +79 -0
- package/.koolie/core/tests/protocols/2026-10-01-auftritt-und-suche.md +58 -0
- package/.koolie/core/tests/protocols/2026-10-01-befehl-im-projektverzeichnis.md +47 -0
- package/.koolie/core/tests/protocols/2026-10-01-erste-veroeffentlichung.md +60 -0
- package/.koolie/core/tests/protocols/2026-10-01-modusbindung-messfragen.md +107 -0
- package/.koolie/core/tests/protocols/README.md +14 -0
- package/.koolie/core/tests/scripts/hook-check-secrets.py +1307 -0
- package/.koolie/core/tests/scripts/hook-overlay-status.py +120 -0
- package/.koolie/core/tests/scripts/mermaid_renderer.py +67 -0
- package/.koolie/core/tests/scripts/overlay_status.py +130 -0
- package/.koolie/core/tests/scripts/probe-pruefungen.py +110 -0
- package/.koolie/core/tests/scripts/pruefungen/__init__.py +4 -0
- package/.koolie/core/tests/scripts/pruefungen/berechtigungen.py +1559 -0
- package/.koolie/core/tests/scripts/pruefungen/bestand.py +1433 -0
- package/.koolie/core/tests/scripts/pruefungen/dokumente.py +1262 -0
- package/.koolie/core/tests/scripts/pruefungen/gemeinsam.py +784 -0
- package/.koolie/core/tests/scripts/pruefungen/hooks.py +1188 -0
- package/.koolie/core/tests/scripts/pruefungen/overlay.py +1251 -0
- package/.koolie/core/tests/scripts/pruefungen/packs.py +1314 -0
- package/.koolie/core/tests/scripts/pruefungen/register.py +950 -0
- package/.koolie/core/tests/scripts/pruefungen/testkatalog.py +1202 -0
- package/.koolie/core/tests/scripts/pruefungen/werkzeuge.py +957 -0
- package/.koolie/core/tests/scripts/sonden/__init__.py +4 -0
- package/.koolie/core/tests/scripts/sonden/apparat.py +653 -0
- package/.koolie/core/tests/scripts/sonden/teil01_grundbestand_und_installation.py +999 -0
- package/.koolie/core/tests/scripts/sonden/teil02_packs_mandat_mcp.py +942 -0
- package/.koolie/core/tests/scripts/sonden/teil03_pruefungen_26_bis_36.py +1184 -0
- package/.koolie/core/tests/scripts/sonden/teil04_pruefungen_37_bis_45.py +1491 -0
- package/.koolie/core/tests/scripts/sonden/teil05_pruefungen_46_bis_55.py +1447 -0
- package/.koolie/core/tests/scripts/sonden/teil06_pruefungen_57_bis_65.py +739 -0
- package/.koolie/core/tests/scripts/sonden/teil07_overlay_und_lieferung.py +1014 -0
- package/.koolie/core/tests/scripts/sonden/teil08_pruefungen_66_bis_80.py +1325 -0
- package/.koolie/core/tests/scripts/sonden/teil09_pruefmittel_81_und_82.py +505 -0
- package/.koolie/core/tests/scripts/sonden/teil10_pruefungen_83_bis_95.py +1218 -0
- package/.koolie/core/tests/scripts/sonden/teil11_pruefungen_104_und_105.py +149 -0
- package/.koolie/core/tests/scripts/sonden/teil12_pruefungen_106_und_107.py +136 -0
- package/.koolie/core/tests/scripts/sonden/teil13_pfad_und_mustersemantik.py +150 -0
- package/.koolie/core/tests/scripts/sonden/teil14_modi_ausnahmen_skills.py +204 -0
- package/.koolie/core/tests/scripts/sonden/teil15_banner_und_nachlauf.py +193 -0
- package/.koolie/core/tests/scripts/sonden/teil16_koexistenz.py +114 -0
- package/.koolie/core/tests/scripts/sonden/teil17_paketquellen.py +115 -0
- package/.koolie/core/tests/scripts/sonden/teil18_modusbindung_m3_m5.py +113 -0
- package/.koolie/core/tests/scripts/validate-framework.py +1104 -0
- package/.koolie/core/tests/scripts/validate-output.py +296 -0
- package/.koolie/core/wirksamkeit.py +430 -0
- package/CONTRIBUTING.md +119 -0
- package/LICENSE +674 -0
- package/QUICKSTART.en.md +135 -0
- package/QUICKSTART.md +129 -0
- package/README.en.md +108 -0
- package/README.md +107 -0
- package/install.cmd +44 -0
- package/install.command +46 -0
- package/package.json +21 -0
- package/paketquellen/README.md +41 -0
- package/paketquellen/bauen.py +411 -0
- package/paketquellen/koolie.cmd +23 -0
- package/paketquellen/koolie_befehl.py +82 -0
- package/paketquellen/npm/koolie.js +26 -0
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
wirksamkeit.py - Die Wirksamkeitsprobe: Greift die Schutzschicht im Zielprojekt?
|
|
4
|
+
|
|
5
|
+
Aufruf (aus dem Wurzelverzeichnis des Projekts, mit dem Kern des Projekts):
|
|
6
|
+
|
|
7
|
+
python .koolie/core/install.py --probe # mit Startmeldung des Clients
|
|
8
|
+
python .koolie/core/install.py --probe --ohne-client # nur Hook, Konfiguration, Vertrauen
|
|
9
|
+
|
|
10
|
+
Exit-Code 0 = jede Muss-Kontrolle traegt, 1 = mindestens eine Muss-Kontrolle fehlt.
|
|
11
|
+
|
|
12
|
+
WARUM ES DIESE PROBE GIBT (K-195, D-488). Validator, 'install.py --check' und Pruefung 96
|
|
13
|
+
pruefen Dateien. Ob der Schutz-Hook in DIESEM Projekt laeuft und sperrt, ob die
|
|
14
|
+
Konfiguration laedt und ob der Client dem Projekt vertraut, prueft keines von ihnen - und
|
|
15
|
+
jede dieser Stellen ist schon einmal still ausgefallen: ein Hook mit einer Sperrform, die
|
|
16
|
+
der Client nicht liest (D-347), ein Agentenprofil, auf das der Client still verzichtet
|
|
17
|
+
(D-414), ein Vertrauenseintrag, ohne den bei openai-codex gar nichts laedt (K-118).
|
|
18
|
+
|
|
19
|
+
DIE PROBE KOMMT OHNE MODELL AUS:
|
|
20
|
+
- Der Hook wird mit dem Befehl aufgerufen, der in der Konfiguration des Projekts steht,
|
|
21
|
+
mit synthetischen Ereignissen: Lesen, Schreiben, Ausfuehren auf .env und - wo das
|
|
22
|
+
Pack MCP abbildet - ein MCP-Aufruf mit einem Koederwert. Jede muss gesperrt werden.
|
|
23
|
+
Ein harmloser Zugriff muss durchgehen.
|
|
24
|
+
- Die Startmeldung von claude-code wird mit einer Modelladresse abgerufen, die nicht
|
|
25
|
+
erreichbar ist (ANTHROPIC_BASE_URL auf einen geschlossenen Port). Der Client meldet
|
|
26
|
+
Werkzeuge, MCP-Server und Hooks, bevor er das Modell ruft, und der Modellaufruf
|
|
27
|
+
scheitert - gemessen am 2026-09-29 (Clientversion 2.1.284). Es entstehen keine Kosten.
|
|
28
|
+
|
|
29
|
+
EINE SPERRE WIRD AN IHREM TEXT ERKANNT, NICHT AM EXIT-CODE (D-490). Der Messapparat hat
|
|
30
|
+
seit 1.19.0 einen Hook als sperrend gewertet, wenn er mit Exit 2 endete. Unter Windows
|
|
31
|
+
startet 'cmd' den Befehl mit dem unaufgeloesten $CLAUDE_PROJECT_DIR, Python findet die
|
|
32
|
+
Datei nicht - und endet mit Exit 2. Ein Baum OHNE Hook-Skript bestand. Hier gilt deshalb:
|
|
33
|
+
Die Variable wird vor dem Aufruf ersetzt, eine Sperre muss den Hinweis 'Gesperrt:' tragen,
|
|
34
|
+
und die Gegenprobe muss mit Exit 0 ohne Hinweis durchgehen - das kann ein fehlendes Skript
|
|
35
|
+
nicht.
|
|
36
|
+
|
|
37
|
+
WAS DIE PROBE NICHT KANN - und sie sagt es als 'unerhoben', nie als Erfolg (D-276):
|
|
38
|
+
- Ob der Client den Hook bei einem echten Werkzeugaufruf startet. Die Startmeldung
|
|
39
|
+
belegt bei claude-code, dass die Hooks der Projektdatei geladen sind (der
|
|
40
|
+
Statushook laeuft); fuer die uebrigen Packs ist keine Startmeldung ohne Modell erhoben.
|
|
41
|
+
- Das Vertrauen des Schutz-Hooks bei openai-codex (ein Hash, den jede Hebung aendert).
|
|
42
|
+
Alle Befunde nennen Kategorien, keine Werte (D-39).
|
|
43
|
+
"""
|
|
44
|
+
from __future__ import annotations
|
|
45
|
+
|
|
46
|
+
import io
|
|
47
|
+
import json
|
|
48
|
+
import os
|
|
49
|
+
import re
|
|
50
|
+
import shutil
|
|
51
|
+
import subprocess
|
|
52
|
+
import sys
|
|
53
|
+
|
|
54
|
+
HOOK_SKRIPT = "hook-check-secrets.py"
|
|
55
|
+
SPERRHINWEIS = "Gesperrt:"
|
|
56
|
+
# Zusammengesetzt, damit der Inhaltsscan des Validators den Koeder nicht als Fund meldet.
|
|
57
|
+
KOEDER = "pass" + "word=" + "KOOLIE-PROBE-0000-synthetisch"
|
|
58
|
+
# Ein geschlossener Port: Der Client scheitert am Modellaufruf, nachdem er die
|
|
59
|
+
# Startmeldung geschrieben hat. Gemessen am 2026-09-29.
|
|
60
|
+
TOTE_MODELLADRESSE = "http" + "://" + "127.0.0.1:9"
|
|
61
|
+
|
|
62
|
+
MUSS, WARNUNG, UNERHOBEN, OK = "MUSS", "WARNUNG", "UNERHOBEN", "OK"
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class Ergebnis:
|
|
66
|
+
def __init__(self) -> None:
|
|
67
|
+
self.zeilen: list[tuple[str, str, str]] = []
|
|
68
|
+
|
|
69
|
+
def add(self, stufe: str, kontrolle: str, text: str) -> None:
|
|
70
|
+
self.zeilen.append((stufe, kontrolle, text))
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def verletzt(self) -> list:
|
|
74
|
+
return [z for z in self.zeilen if z[0] == MUSS]
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
# --------------------------------------------------------------- Hook-Konfiguration
|
|
78
|
+
|
|
79
|
+
def hook_datei(man: dict) -> str:
|
|
80
|
+
p = man.get("runtime_placeholders", {})
|
|
81
|
+
return p.get("<HOOKS_FILE>") or man.get("permissions_file", "")
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def schutzhook_eintraege(daten) -> list[tuple[str, str]]:
|
|
85
|
+
"""(Matcher, Befehl) jedes Eintrags, der den Schutz-Hook aufruft - formatunabhaengig.
|
|
86
|
+
|
|
87
|
+
Alle fuenf Packs fuehren den Matcher im selben Objekt wie den Befehl oder eine Ebene
|
|
88
|
+
darueber (claude-code, devin-desktop, openai-codex: {matcher, hooks: [{command}]};
|
|
89
|
+
cursor: {command, matcher}; kiro: {matcher, action: {command}}).
|
|
90
|
+
"""
|
|
91
|
+
gefunden = []
|
|
92
|
+
|
|
93
|
+
def befehle(obj):
|
|
94
|
+
if isinstance(obj, dict):
|
|
95
|
+
for k, v in obj.items():
|
|
96
|
+
if k == "command" and isinstance(v, str):
|
|
97
|
+
yield v
|
|
98
|
+
else:
|
|
99
|
+
yield from befehle(v)
|
|
100
|
+
elif isinstance(obj, list):
|
|
101
|
+
for v in obj:
|
|
102
|
+
yield from befehle(v)
|
|
103
|
+
|
|
104
|
+
def gehe(obj):
|
|
105
|
+
if isinstance(obj, dict):
|
|
106
|
+
if isinstance(obj.get("matcher"), str):
|
|
107
|
+
for b in befehle(obj):
|
|
108
|
+
if HOOK_SKRIPT in b:
|
|
109
|
+
gefunden.append((obj["matcher"], b))
|
|
110
|
+
return
|
|
111
|
+
for v in obj.values():
|
|
112
|
+
gehe(v)
|
|
113
|
+
elif isinstance(obj, list):
|
|
114
|
+
for v in obj:
|
|
115
|
+
gehe(v)
|
|
116
|
+
|
|
117
|
+
gehe(daten)
|
|
118
|
+
return gefunden
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def erwartete_namen(man: dict, verben: list[str]) -> list[tuple[str, str]]:
|
|
122
|
+
"""(Verb, Werkzeugname) - die Namen, die der Matcher treffen muss."""
|
|
123
|
+
abbildung = man.get("hook_tools") or {}
|
|
124
|
+
namen = []
|
|
125
|
+
for verb in verben:
|
|
126
|
+
if verb == "mcp":
|
|
127
|
+
for praefix in man.get("hook_mcp_prefixes") or []:
|
|
128
|
+
namen.append((verb, praefix + "koolie_probe__werkzeug"))
|
|
129
|
+
continue
|
|
130
|
+
for name in abbildung.get(verb) or []:
|
|
131
|
+
namen.append((verb, name))
|
|
132
|
+
return namen
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def befehl_aufloesen(befehl: str, root: str, man: dict) -> str:
|
|
136
|
+
"""Die Projektvariable ersetzen - so, wie der Client sie setzt (D-490)."""
|
|
137
|
+
var = man.get("hook_project_dir_var")
|
|
138
|
+
wurzel = root.replace("\\", "/")
|
|
139
|
+
if var:
|
|
140
|
+
befehl = befehl.replace("${" + var + "}", wurzel).replace("$" + var, wurzel)
|
|
141
|
+
befehl = befehl.replace("%" + var + "%", wurzel)
|
|
142
|
+
return befehl
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def hook_rufen(befehl: str, root: str, ereignis: dict) -> tuple[int, str]:
|
|
146
|
+
try:
|
|
147
|
+
lauf = subprocess.run(befehl, shell=True, cwd=root, input=json.dumps(ereignis),
|
|
148
|
+
capture_output=True, text=True, encoding="utf-8",
|
|
149
|
+
errors="replace", timeout=30)
|
|
150
|
+
except (OSError, subprocess.SubprocessError) as fehler:
|
|
151
|
+
return -1, type(fehler).__name__
|
|
152
|
+
return lauf.returncode, (lauf.stdout or "") + "\n" + (lauf.stderr or "")
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def pruefe_hook(root: str, man: dict, verben: list[str], erg: Ergebnis) -> None:
|
|
156
|
+
rel = hook_datei(man)
|
|
157
|
+
pfad = os.path.join(root, *rel.split("/"))
|
|
158
|
+
if not os.path.isfile(pfad):
|
|
159
|
+
erg.add(MUSS, "H1 Hook konfiguriert", f"{rel} fehlt - der Schutz-Hook ist nicht "
|
|
160
|
+
f"eingetragen und laeuft nicht")
|
|
161
|
+
return
|
|
162
|
+
try:
|
|
163
|
+
daten = json.loads(io.open(pfad, encoding="utf-8-sig").read())
|
|
164
|
+
except ValueError:
|
|
165
|
+
erg.add(MUSS, "H1 Hook konfiguriert", f"{rel} ist kein gueltiges JSON - der Client "
|
|
166
|
+
f"laedt die Datei nicht, und mit ihr keinen Hook")
|
|
167
|
+
return
|
|
168
|
+
eintraege = schutzhook_eintraege(daten)
|
|
169
|
+
if not eintraege:
|
|
170
|
+
erg.add(MUSS, "H1 Hook konfiguriert", f"{rel} ruft {HOOK_SKRIPT} in keinem Eintrag "
|
|
171
|
+
f"mit Matcher auf")
|
|
172
|
+
return
|
|
173
|
+
erg.add(OK, "H1 Hook konfiguriert", f"{rel}: {len(eintraege)} Eintrag/Eintraege")
|
|
174
|
+
matcher, befehl = eintraege[0]
|
|
175
|
+
# H2: Der Matcher trifft jede Werkzeugklasse, die das Pack abbildet. Ein Matcher,
|
|
176
|
+
# der eine Klasse nicht nennt, laesst ihren Aufruf ungeprueft durch (K-70, K-184) -
|
|
177
|
+
# und --update schreibt diese Datei nicht (sie traegt Projektwerte).
|
|
178
|
+
try:
|
|
179
|
+
muster = re.compile(matcher)
|
|
180
|
+
except re.error:
|
|
181
|
+
muster = None
|
|
182
|
+
fehlend = []
|
|
183
|
+
for verb, name in erwartete_namen(man, verben):
|
|
184
|
+
treffer = (muster.fullmatch(name) is not None) if muster else (
|
|
185
|
+
name in matcher.split(man.get("hook_matcher_separator", "|")))
|
|
186
|
+
if not treffer:
|
|
187
|
+
fehlend.append(f"{verb}:{name}")
|
|
188
|
+
if fehlend:
|
|
189
|
+
erg.add(MUSS, "H2 Matcher vollstaendig", f"der Matcher in {rel} trifft "
|
|
190
|
+
f"{', '.join(fehlend)} nicht - diese Aufrufe erreichen den Hook nicht. "
|
|
191
|
+
f"Matcher aus einer frischen Installation uebernehmen "
|
|
192
|
+
f"(Migrationshinweis des Releases)")
|
|
193
|
+
else:
|
|
194
|
+
erg.add(OK, "H2 Matcher vollstaendig", f"alle {len(erwartete_namen(man, verben))} "
|
|
195
|
+
f"Werkzeugnamen getroffen")
|
|
196
|
+
# H3/H4: Wirkung. Jedes Ereignis traegt hook_event_name (wie vom Client) und die
|
|
197
|
+
# Marke koolie_probe, damit das Entscheidungsprotokoll die Probe ausweist.
|
|
198
|
+
aufruf = befehl_aufloesen(befehl, root, man)
|
|
199
|
+
abbildung = man.get("hook_tools") or {}
|
|
200
|
+
|
|
201
|
+
def ereignis(werkzeug, eingabe):
|
|
202
|
+
return {"hook_event_name": "PreToolUse", "tool_name": werkzeug, "cwd": root,
|
|
203
|
+
"tool_input": eingabe, "koolie_probe": True}
|
|
204
|
+
|
|
205
|
+
sonden = []
|
|
206
|
+
for titel, verb, eingabe in (
|
|
207
|
+
("read .env", "read", {"file_path": ".env"}),
|
|
208
|
+
("write .env", "write", {"file_path": ".env", "content": "x"}),
|
|
209
|
+
("exec .env", "exec", {"command": "cat .env"}),
|
|
210
|
+
# Der Weg des eingebauten Skills upload-secrets (K-94, D-503): Die CLI liest
|
|
211
|
+
# die Werte selbst, im Befehl steht kein Pfad.
|
|
212
|
+
("exec Secret-Upload", "exec",
|
|
213
|
+
{"command": "devin cloud drs secret-create --from-env KOOLIE_PROBE --dry-run"})):
|
|
214
|
+
for name in (abbildung.get(verb) or [])[:1]:
|
|
215
|
+
sonden.append((titel, ereignis(name, eingabe)))
|
|
216
|
+
if "mcp" in verben:
|
|
217
|
+
for praefix in (man.get("hook_mcp_prefixes") or [])[:1]:
|
|
218
|
+
sonden.append(("mcp Koederwert",
|
|
219
|
+
ereignis(praefix + "koolie_probe__senden", {"text": KOEDER})))
|
|
220
|
+
nicht_gesperrt = []
|
|
221
|
+
for titel, e in sonden:
|
|
222
|
+
code, aus = hook_rufen(aufruf, root, e)
|
|
223
|
+
if SPERRHINWEIS not in aus:
|
|
224
|
+
nicht_gesperrt.append(f"{titel} (Exit {code})")
|
|
225
|
+
if nicht_gesperrt:
|
|
226
|
+
erg.add(MUSS, "H3 Hook sperrt", "nicht gesperrt: " + "; ".join(nicht_gesperrt)
|
|
227
|
+
+ " - der Hook laeuft nicht oder erkennt das Werkzeug nicht")
|
|
228
|
+
else:
|
|
229
|
+
erg.add(OK, "H3 Hook sperrt", f"{len(sonden)} Ereignisse gesperrt")
|
|
230
|
+
lesen = (abbildung.get("read") or abbildung.get("exec") or [None])[0]
|
|
231
|
+
gegen = ereignis(lesen, {"file_path": "README.md"} if abbildung.get("read")
|
|
232
|
+
else {"command": "git status"})
|
|
233
|
+
code, aus = hook_rufen(aufruf, root, gegen)
|
|
234
|
+
if code != 0 or SPERRHINWEIS in aus:
|
|
235
|
+
erg.add(MUSS, "H4 Hook laesst durch", f"ein harmloser Zugriff endete mit Exit {code}"
|
|
236
|
+
f"{' und Sperrhinweis' if SPERRHINWEIS in aus else ''} - der Hook startet "
|
|
237
|
+
f"nicht oder sperrt alles")
|
|
238
|
+
else:
|
|
239
|
+
erg.add(OK, "H4 Hook laesst durch", "harmloser Zugriff durchgelassen")
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
# ------------------------------------------------------------------ Startmeldung
|
|
243
|
+
|
|
244
|
+
def startmeldung_claude(root: str) -> tuple[list, list[str]]:
|
|
245
|
+
"""(Ereignisse bis einschliesslich system/init, Textzeilen vor dem JSON)."""
|
|
246
|
+
exe = shutil.which("claude")
|
|
247
|
+
if not exe:
|
|
248
|
+
raise FileNotFoundError("claude")
|
|
249
|
+
umg = dict(os.environ, ANTHROPIC_BASE_URL=TOTE_MODELLADRESSE)
|
|
250
|
+
p = subprocess.Popen([exe, "-p", "OK", "--output-format", "stream-json", "--verbose",
|
|
251
|
+
"--max-turns", "1"], cwd=root, stdin=subprocess.DEVNULL,
|
|
252
|
+
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True,
|
|
253
|
+
encoding="utf-8", errors="replace", env=umg)
|
|
254
|
+
ereignisse, text = [], []
|
|
255
|
+
try:
|
|
256
|
+
for zeile in p.stdout:
|
|
257
|
+
try:
|
|
258
|
+
e = json.loads(zeile)
|
|
259
|
+
except ValueError:
|
|
260
|
+
if zeile.strip():
|
|
261
|
+
text.append(zeile.strip())
|
|
262
|
+
continue
|
|
263
|
+
ereignisse.append(e)
|
|
264
|
+
if e.get("type") == "system" and e.get("subtype") == "init":
|
|
265
|
+
break
|
|
266
|
+
finally:
|
|
267
|
+
p.kill()
|
|
268
|
+
p.wait()
|
|
269
|
+
return ereignisse, text
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
def pruefe_start_claude(root: str, erg: Ergebnis) -> None:
|
|
273
|
+
try:
|
|
274
|
+
ereignisse, text = startmeldung_claude(root)
|
|
275
|
+
except (FileNotFoundError, OSError):
|
|
276
|
+
erg.add(UNERHOBEN, "K1 Konfiguration laedt", "der Befehl 'claude' ist nicht "
|
|
277
|
+
"auffindbar - Startmeldung nicht abgerufen")
|
|
278
|
+
return
|
|
279
|
+
init = next((e for e in ereignisse if e.get("subtype") == "init"), None)
|
|
280
|
+
if init is None:
|
|
281
|
+
erg.add(MUSS, "K1 Konfiguration laedt", "keine Startmeldung - der Client startet "
|
|
282
|
+
"in diesem Verzeichnis nicht")
|
|
283
|
+
return
|
|
284
|
+
status = [e for e in ereignisse if e.get("subtype") == "hook_response"
|
|
285
|
+
and "Framework-Statusmeldung" in str(e.get("output", ""))]
|
|
286
|
+
if status and all(e.get("outcome") == "success" for e in status):
|
|
287
|
+
erg.add(OK, "K1 Konfiguration laedt", "Startmeldung ohne Modellaufruf; der "
|
|
288
|
+
"Statushook des Frameworks lief - die Hooks der Projektdatei sind geladen")
|
|
289
|
+
else:
|
|
290
|
+
erg.add(MUSS, "K1 Konfiguration laedt", "der Statushook des Frameworks lief nicht - "
|
|
291
|
+
"die Hooks der Projektdatei sind nicht geladen (ungueltige Datei oder "
|
|
292
|
+
"verworfener Schluessel, vgl. D-433)")
|
|
293
|
+
if any("not been trusted" in z for z in text):
|
|
294
|
+
erg.add(WARNUNG, "V1 Vertrauen", "der Client vertraut dem Arbeitsbereich nicht und "
|
|
295
|
+
"ignoriert die allow-Eintraege der Projektdatei; deny, ask und Hooks gelten "
|
|
296
|
+
"(gemessen 2026-09-29). Einmal interaktiv starten und vertrauen")
|
|
297
|
+
else:
|
|
298
|
+
erg.add(OK, "V1 Vertrauen", "keine Meldung ueber fehlendes Vertrauen")
|
|
299
|
+
# Die Connectoren verbinden sich nebenlaeufig: Die Werkzeugliste der Startmeldung
|
|
300
|
+
# kann einen Server noch nicht fuehren, die Serverliste fuehrt ihn (gemessen
|
|
301
|
+
# 2026-09-29). Gezaehlt wird deshalb die Serverliste; abgeschaltet ist die Quelle,
|
|
302
|
+
# wenn die Projektdateien 'mcp__claude_ai_*' sperren - dann fehlen ihre Werkzeuge.
|
|
303
|
+
konto = sorted(s.get("name", "?") for s in init.get("mcp_servers") or []
|
|
304
|
+
if s.get("source") == "claudeai")
|
|
305
|
+
if konto and not konto_gesperrt(root):
|
|
306
|
+
erg.add(WARNUNG, "M1 Konto-Connectoren", f"{len(konto)} Connector(en) des "
|
|
307
|
+
f"claude.ai-Kontos stehen in der Sitzung ({', '.join(konto)}) - eine Quelle "
|
|
308
|
+
f"ausserhalb des Projekts (K-191). Abschalten fuer dieses Projekt: "
|
|
309
|
+
f"'mcp__claude_ai_*' in permissions.deny (gemessen 2026-09-29)")
|
|
310
|
+
elif konto:
|
|
311
|
+
erg.add(OK, "M1 Konto-Connectoren", f"{len(konto)} Connector(en) des Kontos "
|
|
312
|
+
f"verbunden, ihre Werkzeuge durch 'mcp__claude_ai_*' gesperrt")
|
|
313
|
+
else:
|
|
314
|
+
erg.add(OK, "M1 Konto-Connectoren", "keine Connectoren des Kontos in der Sitzung")
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
def konto_gesperrt(root: str) -> bool:
|
|
318
|
+
for rel in (".claude/settings.json", ".claude/settings.local.json"):
|
|
319
|
+
try:
|
|
320
|
+
d = json.loads(io.open(os.path.join(root, *rel.split("/")),
|
|
321
|
+
encoding="utf-8-sig").read())
|
|
322
|
+
except (OSError, ValueError):
|
|
323
|
+
continue
|
|
324
|
+
if "mcp__claude_ai_*" in ((d.get("permissions") or {}).get("deny") or []):
|
|
325
|
+
return True
|
|
326
|
+
return False
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
# ------------------------------------------------------------------- Vertrauen
|
|
330
|
+
|
|
331
|
+
def _pfadformen(root: str) -> set:
|
|
332
|
+
r = os.path.abspath(root)
|
|
333
|
+
return {r.lower(), r.replace("\\", "/").lower(), r.replace("/", "\\").lower()}
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
def pruefe_vertrauen_codex(root: str, erg: Ergebnis) -> None:
|
|
337
|
+
"""K-118 (2): Die Benutzerkonfiguration traegt das Projekt als vertraut."""
|
|
338
|
+
heim = os.environ.get("CODEX_HOME") or os.path.join(os.path.expanduser("~"), ".codex")
|
|
339
|
+
pfad = os.path.join(heim, "config.toml")
|
|
340
|
+
try:
|
|
341
|
+
text = io.open(pfad, encoding="utf-8").read()
|
|
342
|
+
except OSError:
|
|
343
|
+
erg.add(MUSS, "V1 Vertrauen", "keine Benutzerkonfiguration des Clients - ohne "
|
|
344
|
+
"Vertrauenseintrag laden Konfiguration, Hooks und Befehlsregeln nicht (K-118)")
|
|
345
|
+
return
|
|
346
|
+
formen = _pfadformen(root)
|
|
347
|
+
vertraut = False
|
|
348
|
+
abschnitt = None
|
|
349
|
+
for zeile in text.splitlines():
|
|
350
|
+
m = re.match(r"""^\s*\[projects\.(["'])(.+)\1\]\s*$""", zeile)
|
|
351
|
+
if m:
|
|
352
|
+
abschnitt = m.group(2).replace("\\\\", "\\").lower()
|
|
353
|
+
continue
|
|
354
|
+
if zeile.strip().startswith("["):
|
|
355
|
+
abschnitt = None
|
|
356
|
+
if abschnitt in formen and re.match(r"""^\s*trust_level\s*=\s*["']trusted["']""",
|
|
357
|
+
zeile):
|
|
358
|
+
vertraut = True
|
|
359
|
+
if vertraut:
|
|
360
|
+
erg.add(OK, "V1 Vertrauen", "Projekt in der Benutzerkonfiguration als vertraut")
|
|
361
|
+
else:
|
|
362
|
+
erg.add(MUSS, "V1 Vertrauen", "das Projekt steht nicht als vertraut in der "
|
|
363
|
+
"Benutzerkonfiguration - Konfiguration, Hooks und Befehlsregeln laden nicht "
|
|
364
|
+
"(K-118). Einmal interaktiv starten und vertrauen")
|
|
365
|
+
erg.add(UNERHOBEN, "V2 Vertrauen des Hooks", "der Hash, mit dem der Client dem "
|
|
366
|
+
"Schutz-Hook vertraut, ist nicht pruefbar; nach jeder Hebung neu bestaetigen")
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
def pruefe_profil_kiro(root: str, man: dict, erg: Ergebnis) -> None:
|
|
370
|
+
rel = man.get("permissions_file", "")
|
|
371
|
+
pfad = os.path.join(root, *rel.split("/"))
|
|
372
|
+
try:
|
|
373
|
+
json.loads(io.open(pfad, encoding="utf-8-sig").read())
|
|
374
|
+
except (OSError, ValueError):
|
|
375
|
+
erg.add(MUSS, "V1 Profil", f"{rel} fehlt oder ist kein gueltiges JSON - der Client "
|
|
376
|
+
f"faellt still auf seinen eingebauten Agenten zurueck (D-414)")
|
|
377
|
+
return
|
|
378
|
+
erg.add(OK, "V1 Profil", f"{rel} lesbar")
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
# ------------------------------------------------------------------- Einstieg
|
|
382
|
+
|
|
383
|
+
def probe(root: str, man: dict, client: str, verben: list[str], mit_client: bool) -> Ergebnis:
|
|
384
|
+
erg = Ergebnis()
|
|
385
|
+
pruefe_hook(root, man, verben, erg)
|
|
386
|
+
if client == "claude-code":
|
|
387
|
+
if mit_client:
|
|
388
|
+
pruefe_start_claude(root, erg)
|
|
389
|
+
else:
|
|
390
|
+
erg.add(UNERHOBEN, "K1 Konfiguration laedt", "ohne Startmeldung (--ohne-client)")
|
|
391
|
+
elif client == "openai-codex":
|
|
392
|
+
pruefe_vertrauen_codex(root, erg)
|
|
393
|
+
erg.add(UNERHOBEN, "K1 Konfiguration laedt", "fuer dieses Pack ist keine "
|
|
394
|
+
"Startmeldung ohne Modell erhoben")
|
|
395
|
+
elif client == "kiro":
|
|
396
|
+
pruefe_profil_kiro(root, man, erg)
|
|
397
|
+
erg.add(UNERHOBEN, "K1 Konfiguration laedt", "fuer dieses Pack ist keine "
|
|
398
|
+
"Startmeldung ohne Modell erhoben; die Hooks laufen nur interaktiv (D-417)")
|
|
399
|
+
else:
|
|
400
|
+
erg.add(UNERHOBEN, "K1 Konfiguration laedt", "fuer dieses Pack ist keine "
|
|
401
|
+
"Startmeldung ohne Modell erhoben")
|
|
402
|
+
erg.add(UNERHOBEN, "V1 Vertrauen", "der Vertrauensspeicher dieses Clients ist nicht "
|
|
403
|
+
"erhoben")
|
|
404
|
+
for verb in man.get("hook_tools_unerhoben") or []:
|
|
405
|
+
erg.add(UNERHOBEN, f"H5 Werkzeugklasse {verb}", "fuer diesen Client nicht am Hook "
|
|
406
|
+
"gemessen - Aufrufe dieser Klasse prueft der Schutz-Hook nicht")
|
|
407
|
+
return erg
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
def ausgeben(erg: Ergebnis, root: str, client: str) -> int:
|
|
411
|
+
print(f"Wirksamkeitsprobe - {client} - {root}")
|
|
412
|
+
print()
|
|
413
|
+
for stufe, kontrolle, text in erg.zeilen:
|
|
414
|
+
marke = {"OK": "ok ", "MUSS": "FEHLT ", "WARNUNG": "WARNUNG ",
|
|
415
|
+
"UNERHOBEN": "unerhob."}[stufe]
|
|
416
|
+
print(f" {marke} {kontrolle}: {text}")
|
|
417
|
+
print()
|
|
418
|
+
n = len(erg.verletzt)
|
|
419
|
+
print(f"Ergebnis: {n} Muss-Kontrolle(n) fehlen, "
|
|
420
|
+
f"{sum(1 for z in erg.zeilen if z[0] == WARNUNG)} Warnung(en), "
|
|
421
|
+
f"{sum(1 for z in erg.zeilen if z[0] == UNERHOBEN)} unerhoben.")
|
|
422
|
+
if n:
|
|
423
|
+
print("Die Schutzschicht greift in diesem Projekt nicht vollstaendig. Vor der Arbeit "
|
|
424
|
+
"beheben.")
|
|
425
|
+
return 1 if n else 0
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
if __name__ == "__main__":
|
|
429
|
+
print("Aufruf ueber install.py --probe (es kennt das installierte Pack).", file=sys.stderr)
|
|
430
|
+
sys.exit(2)
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Am Framework mitarbeiten
|
|
2
|
+
|
|
3
|
+
Diese Seite ist für alle, die **an Koolie selbst** arbeiten – nicht für Projekte, die Koolie benutzen. Wer
|
|
4
|
+
Koolie in ein Projekt übernehmen will, beginnt mit der [README](README.md) und dem
|
|
5
|
+
[Übernahmeleitfaden](.koolie/core/docs/ADOPTION_GUIDE.md).
|
|
6
|
+
|
|
7
|
+
## Nach dem Klonen
|
|
8
|
+
|
|
9
|
+
In **diesem** Repository sind die Wurzel-Anweisungsdatei, die Laufzeitschicht und `.koolie/project-overlay/`
|
|
10
|
+
**Erzeugnisse** und deshalb nicht versioniert (siehe `.gitignore`). Nach dem Klonen also einmal:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
python .koolie/core/install.py
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Damit gibt es keine zwei auseinanderlaufenden Fassungen derselben Kern-Datei.
|
|
17
|
+
|
|
18
|
+
> **Die so erzeugte Laufzeitschicht ist hier ein Prüfgegenstand, keine Schranke.** Wie in diesem Repository
|
|
19
|
+
> gearbeitet, gelesen und geändert wird, steht im Entwicklungsprofil des Quellrepositoriums,
|
|
20
|
+
> [`FRAMEWORK_DEV_PROFILE.md`](.koolie/core/governance/FRAMEWORK_DEV_PROFILE.md). Es wird in kein Zielprojekt
|
|
21
|
+
> installiert.
|
|
22
|
+
|
|
23
|
+
In einem **Projekt** gilt das Gegenteil: Dort werden Wurzel-Anweisungsdatei, Laufzeitschicht und
|
|
24
|
+
`.koolie/project-overlay/` versioniert. Die entsprechenden Zeilen der `.gitignore` sind beim Übernehmen deshalb
|
|
25
|
+
nicht mitzunehmen.
|
|
26
|
+
|
|
27
|
+
## Wo eine Änderung hingehört
|
|
28
|
+
|
|
29
|
+
Die gemeinsamen Quellen liegen **im Kern**, nicht im Client Pack:
|
|
30
|
+
|
|
31
|
+
| Was geändert werden soll | Quelle |
|
|
32
|
+
|---|---|
|
|
33
|
+
| Wurzel-Anweisungsdatei, Regeltexte, Berechtigungen, Hook-Konfiguration, Agentenprofile | `.koolie/core/framework/runtime/` |
|
|
34
|
+
| Skills | `.koolie/core/framework/skills/` |
|
|
35
|
+
| Overlay-Vorlage, Regelvorlagen | `.koolie/core/templates/` |
|
|
36
|
+
| Normativer Kern (FW-CORE-00…10) | `.koolie/core/framework/core/` |
|
|
37
|
+
| Pfad-, Werkzeug- und Hook-Abbildung eines Clients | `.koolie/core/clients/<client>/manifest.json` |
|
|
38
|
+
| Fähigkeitsmatrix eines Clients | `.koolie/core/clients/<client>/CLIENT_PACK.md` |
|
|
39
|
+
| Der Befehl `koolie` und die Pakete für PyPI und npm | `paketquellen/` |
|
|
40
|
+
|
|
41
|
+
Das `root-template/` eines Packs enthält **nur die README der Laufzeitschicht**; die gesamte Saat kommt aus
|
|
42
|
+
dem Kern. **Niemals in die erzeugte Laufzeitschicht im Wurzelverzeichnis schreiben** –
|
|
43
|
+
`install.py --check` deckt eine Bearbeitung an der falschen Stelle auf.
|
|
44
|
+
|
|
45
|
+
## Aufbau eines Projekts mit Koolie
|
|
46
|
+
|
|
47
|
+
Das gesamte unveränderliche Framework liegt in **einem** Verzeichnis: `.koolie/core/`. Im Wurzelverzeichnis
|
|
48
|
+
landen nur die Dinge, die ein KI-Client ausschließlich dort findet; **wie sie heißen, entscheidet das Client
|
|
49
|
+
Pack** – das [Laufzeitglossar](.koolie/core/docs/RUNTIME_GLOSSARY.md) löst jeden Platzhalter je Pack auf.
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
<projekt>/
|
|
53
|
+
├── <Wurzel-Anweisungsdatei> # Agentenanweisung (aus dem Kern installiert)
|
|
54
|
+
├── <Laufzeitschicht>/ # vollständig erzeugt – nie von Hand schreiben
|
|
55
|
+
│ ├── <Berechtigungsdatei> # Kernregeln + Projektwerte (je Pack: samt Hooks)
|
|
56
|
+
│ ├── agents/fw-reviewer.md # nur lesendes Review-Subagentenprofil
|
|
57
|
+
│ ├── rules/00-, 10-, 15-*.md # Core-Kurzfassungen ....... aus dem Kern
|
|
58
|
+
│ ├── rules/20-project-overlay.md # Overlay-Laufzeitfassung ... Projekt
|
|
59
|
+
│ ├── rules/2N-overlay-*.md # Overlay-Regelerweiterungen Projekt
|
|
60
|
+
│ ├── rules/30-, 40-*.md # aktivierte Packs
|
|
61
|
+
│ └── skills/fw-* role-* tech-* prj-* # Kern | aktivierte Packs | Projekt
|
|
62
|
+
│
|
|
63
|
+
├── .koolie/
|
|
64
|
+
│ ├── core/ # DER KERN: unveränderlich, byte-gleich
|
|
65
|
+
│ │ ├── install.py · clientmap.py # legt die Wurzeldateien an, bildet sie ab
|
|
66
|
+
│ │ ├── install_dialog.py # Dialog hinter install.cmd / install.command / koolie
|
|
67
|
+
│ │ ├── clients/ # Abbildung auf KI-Clients, je Client ein Pack
|
|
68
|
+
│ │ ├── framework/ # Kern, Laufzeitquellen, Skills, Role- und Tech-Packs
|
|
69
|
+
│ │ ├── prompts/ checklists/ decision-trees/ onboarding/ templates/ examples/
|
|
70
|
+
│ │ ├── governance/ # RACI, Prozesse, Decision Log, Änderungsanträge
|
|
71
|
+
│ │ ├── docs/ # Übernahmeleitfaden, Roadmap, Register
|
|
72
|
+
│ │ ├── tests/ # Testkatalog, Validator, Hook-Skripte, Protokolle
|
|
73
|
+
│ │ └── build/ # Assemblierung des Hauptdokuments
|
|
74
|
+
│ └── project-overlay/ # gehört dem Projekt
|
|
75
|
+
│ ├── OVERLAY.md · overlay-manifest.yaml
|
|
76
|
+
│ ├── forbidden-terms.txt # projektlokale Sperrbegriffe
|
|
77
|
+
│ └── documents/ exceptions/
|
|
78
|
+
│
|
|
79
|
+
└── <Projektcode>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Framework prüfen
|
|
83
|
+
|
|
84
|
+
| Befehl | Prüft |
|
|
85
|
+
|---|---|
|
|
86
|
+
| `python .koolie/core/tests/scripts/validate-framework.py` | Struktur, Frontmatter, Skill-Konformität, verbotene Inhalte, Platzhalter – im Framework-Repository muss der Lauf fehlerfrei sein |
|
|
87
|
+
| `… --mermaid` | zusätzlich die Syntax aller Diagramme (benötigt `mmdc`) |
|
|
88
|
+
| `… --check-overlay-ready` / `… --strict-overlay` | Aktivierungsreife beziehungsweise aktiven Zustand eines Overlays – nur im Projekt sinnvoll; hier erwartungsgemäß rot |
|
|
89
|
+
| `python .koolie/core/tests/scripts/probe-pruefungen.py` | ob jede Prüfung des Validators einen bekannten Defekt meldet und ein fehlerfreier Baum durchkommt |
|
|
90
|
+
| [`TEST_CATALOG.md`](.koolie/core/tests/TEST_CATALOG.md) | das Verhalten des KI-Clients in Testsitzungen |
|
|
91
|
+
|
|
92
|
+
## Releases
|
|
93
|
+
|
|
94
|
+
Wie ein Release entsteht – Änderungsantrag, Prüfungen, signierte Marke, Archiv, Pakete und Veröffentlichung –,
|
|
95
|
+
steht in [`RELEASE_PROCESS.md`](.koolie/core/governance/RELEASE_PROCESS.md). Entscheidungen mit Begründung
|
|
96
|
+
führt das [`DECISION_LOG.md`](.koolie/core/governance/DECISION_LOG.md): `D-…` ist ein Decision Record, `K-…`
|
|
97
|
+
ein offener Klärungspunkt, `CR-…` ein Änderungsantrag unter `.koolie/core/governance/change-requests/`.
|
|
98
|
+
|
|
99
|
+
## Schnellzugriff nach Rolle
|
|
100
|
+
|
|
101
|
+
| Ich bin … | Startpunkt |
|
|
102
|
+
|---|---|
|
|
103
|
+
| neu im Team eines Projekts, das Koolie nutzt | [Onboarding-Quickstart](.koolie/core/onboarding/QUICKSTART.md), dann [`GUIDE.md`](.koolie/core/onboarding/GUIDE.md) |
|
|
104
|
+
| Entwicklerin oder Entwickler im Alltag | [`REFERENCE.md`](.koolie/core/onboarding/REFERENCE.md), [`01-preflight.md`](.koolie/core/checklists/01-preflight.md) |
|
|
105
|
+
| Reviewerin oder Reviewer | [`04-review-ai-code.md`](.koolie/core/checklists/04-review-ai-code.md), [`07-review-rules.md`](.koolie/core/framework/core/07-review-rules.md) |
|
|
106
|
+
| Overlay Owner / Projektleitung | [`ADOPTION_GUIDE.md`](.koolie/core/docs/ADOPTION_GUIDE.md), [`10-project-adoption.md`](.koolie/core/checklists/10-project-adoption.md), [`pilot/`](.koolie/core/pilot/) |
|
|
107
|
+
| Framework Owner | [`governance/`](.koolie/core/governance/), [`11-framework-release.md`](.koolie/core/checklists/11-framework-release.md), [`ROADMAP.md`](.koolie/core/docs/ROADMAP.md) |
|
|
108
|
+
| Sicherheit / Datenschutz | [`02-privacy.md`](.koolie/core/framework/core/02-privacy.md), [`03-security.md`](.koolie/core/framework/core/03-security.md), [`INCIDENT_HANDLING.md`](.koolie/core/governance/INCIDENT_HANDLING.md) |
|
|
109
|
+
|
|
110
|
+
## Konventionen
|
|
111
|
+
|
|
112
|
+
Verbindlichkeit über **MUSS/SOLL/KANN/DARF NICHT**; produktbezogene Aussagen tragen einen Belegstatus
|
|
113
|
+
`[DOK]`/`[EMPF]`/`[KONZ]` oder `BELEG OFFEN` mit Grund und Datum; variable Inhalte ausschließlich als
|
|
114
|
+
registrierte Platzhalter ([`PLACEHOLDER_REGISTRY.md`](.koolie/core/docs/PLACEHOLDER_REGISTRY.md)); Beispiele
|
|
115
|
+
sind stets als synthetisch gekennzeichnet; Personen werden nirgends genannt – nur Rollen.
|
|
116
|
+
|
|
117
|
+
Die Lizenzdatei liegt an **zwei** Stellen mit demselben Inhalt – in der Wurzel und unter
|
|
118
|
+
`.koolie/core/LICENSE` –, weil ein übernehmendes Projekt den Kern als Ganzes kopiert und ein Werk nicht ohne
|
|
119
|
+
seine Lizenz weitergegeben werden darf. Der Validator hält beide gegeneinander.
|