Code Intelligence Actions

CRUD-Operationen für Code mit automatischen Subtasks

Übersicht

Code Intelligence Actions erweitern das Task-System um strukturierte Code-Operationen. Jede Aktion folgt dem CRUD-Prinzip und generiert automatisch die passenden Subtasks mit Qualitätsprüfungen.

  1. Grammatik
  2. Verben (statisch)
  3. Scope (Zuordnung)
  4. Domain (dynamisch)
  5. Komponente
  6. Projekt
  7. Sprache
  8. Optionen
  9. Subtasks
  10. Gates
  11. Contracts
  12. Templates
  13. Prozess (Beispiel)
  14. Simulation (Refactoring)
  15. Architektur (Modulares System)

Grammatik

Syntax

<verb> <domain>:<komponente> in <projekt> <sprache> [optionen] "<beschreibung>"

Bestandteile

Beispiele

create code:controller in masterdev php "UserController"
read code:service in masterdev php "PaymentService verstehen"
update doku:page in masterdev markdown "/codeintelligence/hooks"
delete content:page in karlkratz html "alte Landingpage"
create config:file in freund json "neue Hook-Config"
update data:table in masterdev sql "users um role erweitern"

CRUD-Operationen (Verben)

Vier grundlegende Aktionen für alle Code-Operationen. Jede Aktion generiert automatisch die passenden Subtasks mit Projekt- und Sprach-spezifischen Prüfungen.

Die vier Verben

Verb CRUD Zweck Output
create Create Neuen Code erstellen Code + Tests
read Read Code verstehen Bericht
update Update Code ändern (refactor, fix, migrate) Code
delete Delete Code entfernen -

Beispiele

create code:service in masterdev php "UserService"
read code:controller in masterdev php "AuthController verstehen"
update code:service in masterdev php "UserService um Rollen erweitern"
delete code:helper in masterdev php "LegacyHelper entfernen"

Scope

Zuordnung dynamischer Elemente zu Kontext.

Prinzip

Jedes dynamische Element hat Scope-Attribute. * = gilt für alle.

Scope-Attribute

Attribut Typ Beschreibung
project string[] *
domain string[] *
component string[] *
language string[] *

Auflösung

create code:service in masterdev php "UserService"
                ↓
Filter 1: project   = * OR contains "masterdev"
Filter 2: domain    = * OR contains "code"
Filter 3: component = * OR contains "service"
Filter 4: language  = * OR contains "php"
                ↓
Alle passenden Elemente werden angewendet.

Scope pro Element-Typ

Element Typische Scopes
Sprache project, domain
Gate project, domain, language
Contract project, domain, component, language
Template project, domain, component, language
Subtask verb (implizit durch Template)

Domain

Bereich, in dem die Aktion ausgeführt wird.

Typ

Dynamisch. Wird aus Projekt-Konfiguration geladen.

Quelle

config/{projekt}/domains.json

Bekannte Domains

Domain Beschreibung
code Quellcode
doku Dokumentation
content Inhalte
config Konfiguration
data Datenbank

Komponente

Typ des Objekts innerhalb einer Domain.

Typ

Dynamisch. Abhängig von Domain und Projekt.

Quelle

code_intelligence.code_entities → type
config/{projekt}/komponenten.json

Bekannte Komponenten

Domain Komponenten
code controller, service, repository, model, helper, middleware, command, test, trait, interface, enum, checker, scanner, event, exception, validator
doku page, schema, api
content page, template, section, block, email-template, css
config file, env, rule, vhost, cert
data table, column, index, migration, seed, fk, view

Projekt

Codebase, in der die Aktion ausgeführt wird.

Typ

Dynamisch. Registrierte Projekte im System.

Quelle

code_intelligence.code_projects → project_key

Bekannte Projekte

Projekt Pfad
masterdev /var/www/dev.karlkratz.de
karlkratz /var/www/karlkratz.de
freund /var/www/tools/freund
tools /var/www/tools
ki-protokoll /var/www/tools/ki-protokoll
code-intelligence /var/www/tools/code-intelligence

Sprache

Programmiersprache für code-Domain Aktionen.

Typ

Dynamisch. Abhängig von Projekt und Domain.

Quelle

code_intelligence.code_files → file_path extension
config/{projekt}/sprachen.json

Bekannte Sprachen

Sprache Extension Syntax-Check project domain
php .php php -l * code
python .py python -m py_compile freund, tools code
javascript .js eslint * code
typescript .ts tsc --noEmit * code
css .css stylelint * code, content
html .html, .php - * content
sql .sql sqlfluff * data
json .json jq * config
yaml .yaml, .yml yamllint * config
markdown .md - * doku

Optionen

Optionale Flags zur Steuerung der Ausführung.

Typ

Statisch. Gelten für alle Aktionen.

Bekannte Optionen

Option Beschreibung Default
--dry-run Simulation ohne Änderungen false
--verbose Ausführliche Ausgabe false
--force Warnungen ignorieren, Aktion erzwingen false

Beispiele

create code:service in freund python --dry-run "CacheService"
delete code:helper in masterdev php --force "LegacyHelper"
update data:table in masterdev sql --verbose "users erweitern"

Subtasks

Automatisch generierte Teilaufgaben basierend auf Verb, Domain und Template.

Typ

Dynamisch. Generiert aus Template bei Task-Erstellung.

Quelle

templates/{verb}/{domain}/{komponente}.json → subtasks[]
masterdev.tasks → parent_task_id

Status

Status Beschreibung
pending Noch nicht gestartet
in_progress In Bearbeitung
completed Erfolgreich abgeschlossen
blocked Durch Gate oder Abhängigkeit blockiert

Standard-Subtasks pro Verb

Verb Subtasks Gates
create analyse, implementierung, validierung, abschluss syntax_check, cqs_clean, contract_check
read recherche, dokumentation -
update analyse, baseline, implementierung, validierung, abschluss syntax_check, cqs_clean, contract_check, impact_check
delete analyse, impact, entfernung, validierung impact_check, unit_test

Subtask-Phasen

Phase Beschreibung Output
analyse Anforderungen verstehen, Kontext sammeln Konzept, Abhängigkeiten
baseline Backup, aktuellen Stand dokumentieren Backup-ID, Diff-Base
implementierung Code schreiben, ändern, löschen Code-Änderungen
validierung Gates durchlaufen, Tests Gate-Results
abschluss Dokumentation, Cleanup Doku-Update
recherche Code lesen, analysieren Findings
dokumentation Ergebnisse festhalten Doku-Eintrag
impact Auswirkungen prüfen Impact-Report
entfernung Code/Ressourcen löschen Lösch-Log

Gates

Qualitätsprüfungen, die vor Abschluss eines Subtasks bestanden werden müssen.

Typ

Dynamisch. Abhängig von Projekt, Domain und Sprache.

Quelle

config/{projekt}/gates.json
config/gates/{sprache}.json

Bekannte Gates

Gate Command Blocking project domain language
syntax_check php -l / py_compile / eslint ja * code *
cqs_clean cqs {projekt} ja * code php
import_test python -c "import {module}" ja freund, tools code python
type_check phpstan / mypy / tsc nein * code php, python, typescript
unit_test phpunit / pytest nein * code php, python
contract_check freund code contracts ja * * *
impact_check freund code impact nein * code *

Contracts

Regeln und Einschränkungen, die während der Ausführung gelten.

Typ

Dynamisch. Abhängig von Projekt und Domain.

Quelle

masterdev.contracts → project_key, domain
freund code contracts {file}

Severity

Level Blocking Beschreibung
critical ja Muss behoben werden, blockiert Abschluss
major nein Sollte behoben werden, Warnung
minor nein Kann behoben werden, Info

Contract-Typen

Typ Beschreibung
forbidden Pattern darf nicht vorkommen
required Pattern muss vorkommen
warning Pattern wird gemeldet, nicht blockiert

Bekannte Contracts

Contract Typ Severity project domain language
no_hardcoded_paths forbidden critical * code, config *
no_inline_css forbidden major * code, content php, html
parameter_binding required critical * code, data php, python, sql
backup_before_edit required critical masterdev, karlkratz code php
no_curl_wget forbidden major * code *
no_direct_mysql forbidden major * code *
class_documentation required minor * code php, python

Templates

Vorlagen für die Generierung von Subtasks und Code-Strukturen.

Typ

Dynamisch. Abhängig von Verb, Domain, Komponente und Sprache.

Quelle

config/templates/{verb}/{domain}/{komponente}.json
config/templates/{sprache}/{komponente}.json

Hierarchie

Priorität Pfad Beispiel
1 (höchste) config/{projekt}/templates/ config/masterdev/templates/service.json
2 config/templates/{sprache}/ config/templates/php/service.json
3 (fallback) config/templates/default/ config/templates/default/service.json

Placeholders

Placeholder Beschreibung Beispiel
{projekt} Projekt-Key masterdev
{name} Komponenten-Name UserService
{namespace} PHP/Python Namespace App\Services
{pfad} Dateipfad src/Services/UserService.php
{datum} Erstellungsdatum 2026-01-14
{autor} Ersteller claude-code

Bekannte Templates

Domain Komponente Sprachen project
code service php, python *
code repository php masterdev, karlkratz
code test php, python *
code interface php *
code controller php masterdev, karlkratz
code middleware php masterdev, karlkratz
code model php, python *
code command php, python *
code checker php, python *
code event php masterdev, karlkratz
code exception php *
config rule yaml *
config vhost - *
content email-template html masterdev, karlkratz
content css css *
doku page markdown *
doku schema markdown *
data migration sql *
data fk sql *

Prozess

Beispiel: Python-Service im Projekt freund erstellen.

Eingabe

create code:service in freund python "CacheService"

1. Parsing

Element Wert Typ
verb create statisch
domain code dynamisch
komponente service dynamisch
projekt freund dynamisch
sprache python dynamisch
beschreibung CacheService input

2. Scope-Auflösung

Filter: project=freund, domain=code, component=service, language=python

Sprache

Sprache project domain Match
php * code -
python freund, tools code

Template

Domain Komponente Sprachen project Match
code controller php masterdev, karlkratz -
code service php, python *

Gates

Gate project domain language Match
syntax_check * code *
cqs_clean * code php -
import_test freund, tools code python
type_check * code php, python, typescript
unit_test * code php, python
contract_check * * *
impact_check * code *

Contracts

Contract project domain language Match
no_hardcoded_paths * code, config *
no_inline_css * code, content php, html -
parameter_binding * code, data php, python, sql
backup_before_edit masterdev, karlkratz code php -
no_curl_wget * code *
no_direct_mysql * code *
class_documentation * code php, python

3. Subtask-Generierung

Verb create → Template-Subtasks:

# Subtask Gates Status
1 analyse - pending
2 implementierung syntax_check, import_test pending
3 validierung type_check, unit_test, contract_check pending
4 abschluss impact_check pending

4. Task erstellt

Task #3400: create code:service in freund python "CacheService"
├── Subtask #3401: analyse
├── Subtask #3402: implementierung
│   └── Gates: syntax_check, import_test
├── Subtask #3403: validierung
│   └── Gates: type_check, unit_test, contract_check
└── Subtask #3404: abschluss
    └── Gates: impact_check

Aktive Contracts:
- no_hardcoded_paths (critical)
- parameter_binding (critical)
- no_curl_wget (major)
- no_direct_mysql (major)
- class_documentation (minor)

Template: config/templates/python/service.json
Ziel: /var/www/tools/freund/src/services/cache_service.py

Simulation

Vollständiger Prozess: PaymentService in masterdev refactoren.

Eingabe

update code:service in masterdev php "PaymentService auf neue API umstellen"

Phase 0: Parsing

Element Wert Validierung
verb update statisch → OK
domain code config/masterdev/domains.json → OK
komponente service config/masterdev/komponenten.json → OK
projekt masterdev code_intelligence.code_projects → OK
sprache php Scope-Match: project=*, domain=code → OK
optionen - -
beschreibung PaymentService auf neue API umstellen -

Phase 1: Scope-Auflösung

Filter: project=masterdev, domain=code, component=service, language=php

1.1 Template laden

Priorität Pfad Existiert
1 config/masterdev/templates/update/code/service.json nein
2 config/templates/php/service.json ja ✓
3 config/templates/default/service.json -
→ Geladen: config/templates/php/service.json

1.2 Gates filtern

Gate project domain language Match
syntax_check * code *
cqs_clean * code php
import_test freund, tools code python -
type_check * code php, python, ts
unit_test * code php, python
contract_check * * *
impact_check * code *
→ Aktive Gates: syntax_check, cqs_clean, type_check, unit_test, contract_check, impact_check

1.3 Contracts filtern

Contract project domain language Match
no_hardcoded_paths * code, config *
no_inline_css * code, content php, html
parameter_binding * code, data php, python, sql
backup_before_edit masterdev, karlkratz code php
no_curl_wget * code *
no_direct_mysql * code *
class_documentation * code php, python
→ Aktive Contracts: 7 (davon 2 critical, 3 major, 2 minor)

Phase 2: Task-Erstellung

INSERT INTO masterdev.tasks (title, type, status, project, domain, component, language)
VALUES ('update code:service in masterdev php "PaymentService..."', 'code_action', 'pending', 'masterdev', 'code', 'service', 'php')
→ Task #3500 erstellt

2.1 Subtasks generieren

Template für update definiert 5 Subtasks:

# Subtask Gates parent_id
1 analyse - 3500
2 baseline - 3500
3 implementierung syntax_check, cqs_clean 3500
4 validierung type_check, unit_test, contract_check 3500
5 abschluss impact_check 3500
INSERT INTO masterdev.tasks (parent_task_id, title, order_num, gates, status)
VALUES
  (3500, 'analyse', 1, NULL, 'pending'),           → #3501
  (3500, 'baseline', 2, NULL, 'pending'),          → #3502
  (3500, 'implementierung', 3, '["syntax_check","cqs_clean"]', 'pending'),  → #3503
  (3500, 'validierung', 4, '["type_check","unit_test","contract_check"]', 'pending'),  → #3504
  (3500, 'abschluss', 5, '["impact_check"]', 'pending')  → #3505

Phase 3: Ausführung

Subtask #3501: analyse

Schritt Aktion Quelle
1 Entity finden db_code search "PaymentService"
2 Abhängigkeiten laden code_intelligence.code_dependencies
3 Contracts anzeigen freund code contracts src/Services/PaymentService.php
4 Impact vorberechnen freund code impact PaymentService
Output:
- Datei: /var/www/dev.karlkratz.de/src/Services/PaymentService.php
- Zeilen: 245
- Abhängigkeiten: 12 (OrderController, CheckoutService, ...)
- Aktive Contracts: 7
- Geschätzter Impact: MEDIUM (12 abhängige Dateien)

→ Status: completed

Subtask #3502: baseline

Schritt Aktion Ergebnis
1 Backup erstellen FileBackupService->backup()
2 Backup-ID speichern backup_id = 4711
3 Diff-Base setzen git rev-parse HEAD
INSERT INTO karlkratz_de.file_backup_history (file_path, reason, user_type)
VALUES ('/var/www/.../PaymentService.php', 'Baseline vor Refactoring: PaymentService auf neue API', 'claude-code')
→ backup_id: 4711

→ Status: completed

Subtask #3503: implementierung

Schritt Aktion Gate
1 Code ändern -
2 Syntax prüfen php -l PaymentService.php
3 CQS prüfen cqs masterdev
→ Edit: PaymentService.php (87 Zeilen geändert)

Gate: syntax_check
$ php -l src/Services/PaymentService.php
No syntax errors detected
→ PASSED

Gate: cqs_clean
$ cqs masterdev
PaymentService.php: 0 issues
→ PASSED

→ Status: completed

Subtask #3504: validierung

Gate Command Ergebnis Blocking
type_check phpstan analyse src/Services/PaymentService.php 0 errors nein
unit_test phpunit tests/Services/PaymentServiceTest.php 12/12 passed nein
contract_check freund code contracts src/Services/PaymentService.php 0 violations ja
Gate: type_check
$ phpstan analyse src/Services/PaymentService.php --level=6
[OK] No errors
→ PASSED

Gate: unit_test
$ phpunit tests/Services/PaymentServiceTest.php
OK (12 tests, 34 assertions)
→ PASSED

Gate: contract_check
$ freund code contracts src/Services/PaymentService.php
Checking 7 contracts...
✓ no_hardcoded_paths
✓ no_inline_css
✓ parameter_binding
✓ backup_before_edit (backup_id: 4711)
✓ no_curl_wget
✓ no_direct_mysql
✓ class_documentation
→ PASSED (0 violations)

→ Status: completed

Subtask #3505: abschluss

Schritt Aktion Ergebnis
1 Impact Check freund code impact PaymentService
2 Code Intelligence updaten ./change.sh
3 Dokumentation doku update
Gate: impact_check
$ freund code impact PaymentService --after
Analysing changes...
- Changed: 87 lines
- Affected files: 12
- Breaking changes: 0
- API compatibility: maintained
→ PASSED

$ ./change.sh src/Services/PaymentService.php "Refactoring: PaymentService auf neue API umgestellt"
→ Entity updated in code_intelligence
→ Embeddings regenerated
→ Graph updated

→ Status: completed

Phase 4: Task-Abschluss

UPDATE masterdev.tasks SET status = 'completed', completed_at = NOW()
WHERE id = 3500

Task #3500: update code:service in masterdev php "PaymentService auf neue API umstellen"
├── #3501 analyse       [completed]
├── #3502 baseline      [completed] backup_id=4711
├── #3503 implementierung [completed] gates: 2/2 passed
├── #3504 validierung   [completed] gates: 3/3 passed
└── #3505 abschluss     [completed] gates: 1/1 passed

Dauer: 12 min
Gates: 6/6 passed
Contracts: 7/7 satisfied
Backup: #4711 (restore verfügbar)

Architektur

Modulares Prozess-System mit Vererbung und Conditions.

Dateistruktur

config/prozesse/
├── _schema/           # JSON Schemas
├── _base/             # Verben, Domains, Gates, Contracts
├── _components/       # Sprach-spezifisch (php, python, sql)
├── _projects/         # Projekt-Overrides
└── prozesse/          # Konkrete Prozess-Definitionen

Vererbung

Ebene Datei Inhalt
1 _base/verbs.json Subtasks pro Verb
2 _base/domains.json Contracts, Tools pro Domain
3 _components/*.json Gates, Pfade pro Sprache
4 _projects/*.json Projekt-spezifische Overrides
5 prozesse/*.json Finale Definition

Merge-Logik

extends[0] + extends[1] + extends[2]
    + _projects/{projekt}.json
    + prozess-overrides
    = Finale Definition

Arrays:  _add = anhängen, _remove = entfernen
Objects: Deep merge (später überschreibt)

Conditions

{
  "contracts": ["no_hardcoded_paths"],
  "contracts_if": [
    {"when": {"project": ["masterdev"]}, "add": ["backup_before_edit"]},
    {"when": {"component": "repository"}, "add": ["no_direct_sql"]},
    {"when": {"verb": "delete"}, "add": ["require_impact_approval"]}
  ]
}
Operator Beispiel Bedeutung
Array {"project": ["a", "b"]} project IN [a, b]
Wildcard {"project": "*"} immer
Negation {"project": "!freund"} project != freund
AND {"verb": "delete", "domain": "data"} beide müssen matchen

Variablen

Variable Transformation Beispiel
{name} wie eingegeben UserService
{name_snake} snake_case user_service
{name_pascal} PascalCase UserService
{name_kebab} kebab-case user-service
{path} computed src/Services/UserService.php
{namespace} computed App\Services
{date} $NOW 2026-01-14
{author} default claude-code

Beispiel: Minimale Prozess-Definition

{
  "id": "create-code-service-php",
  "extends": ["verbs/create", "domains/code", "components/php"],

  "component": "service",
  "projects": "*",

  "contracts_if": [
    {"when": {"project": ["masterdev"]}, "add": ["backup_before_edit"]}
  ],

  "template": {
    "skeleton": "templates/php/service.tpl",
    "path": "src/Services/{name}Service.php"
  }
}

Validierung

prozess validate create-code-service-php

# Prüft:
# ✓ Schema-Konformität
# ✓ extends-Referenzen existieren
# ✓ Gates/Contracts existieren
# ✓ Variablen vollständig