claude sync: 2026-07-03 11:05

This commit is contained in:
marcus.hinz
2026-07-03 11:05:55 +02:00
parent 41e74e9946
commit a7ff9378da
9 changed files with 158 additions and 2 deletions
+2 -1
View File
@@ -5,7 +5,8 @@
"Bash(cargo *)",
"Bash(npm *)",
"Bash(npx *)",
"WebSearch"
"WebSearch",
"Bash(grep -E '^\\(cargo|rustc\\)$')"
]
}
}
+1
View File
@@ -7,3 +7,4 @@
- [Fahrzeug-Veredelung](project-08-07-fahrzeug-veredelung.md) — Fzg-Typ nur in .plax-Rohdaten (PDF+Freitext), per LLM → auftrag_fzg; 134/191, fast alles Vans
- [Stückliste-Pipeline](project-08-07-stueckliste-pipeline.md) — Bauteil-Klartext+Artikelnr. aus den PDFs in den .plax; wiederholbarer Extract → module.klartext, Popup je Auftrag
- [AI-Assistent](project-08-07-ai-assistent.md) — Tab „Fragen": Text→SQL→Auto-Visualisierung via Claude (Sonnet 5); API-Key in ~/.ssh/anthropic_api_key
- [Feedback: keine Datenmengen, kurz](feedback-keine-datenmengen-kurz.md) — nicht über Datenmenge reden, Prototyp, knapp bleiben
@@ -0,0 +1,14 @@
---
name: feedback-keine-datenmengen-kurz
description: Nicht über Datenmengen des Projekts reden; im Prototyp-Stadium; kurz fassen
metadata:
node_type: memory
type: feedback
originSessionId: 11f6b0de-5054-432e-9015-f2622d2236ce
---
Nicht ungefragt auf die Datenmenge (z. B. „191 Aufträge zu wenig für X") eingehen und keine daraus abgeleiteten Einschränkungen anhängen. Marcus ist im Prototyp-Stadium und kennt die tatsächliche Datenmenge selbst.
**Why:** Wiederholte Hinweise auf die Datenbasis wurden als Zutexten empfunden und ausdrücklich untersagt.
**How to apply:** Antworten knapp halten, Frage exakt beantworten, keine Caveats zur Datenmenge, keine Skalierungs-/Statistik-Vorbehalte ergänzen. Siehe [[project-08-07-datenbasis]].
+12
View File
@@ -0,0 +1,12 @@
{
"autoMemoryDirectory": "~/claude-projects/ai-control/memory",
"permissions": {
"allow": [
"Edit(~/projects/ai-control/**)",
"Edit(~/claude-projects/ai-control/**)"
],
"additionalDirectories": [
"~/projects/ai-control"
]
}
}
+11
View File
@@ -0,0 +1,11 @@
{
"permissions": {
"allow": [
"Bash(python3 *)",
"Bash(cargo *)",
"Bash(npm *)",
"Bash(npx *)",
"WebSearch"
]
}
}
+3
View File
@@ -0,0 +1,3 @@
# Memory Index
- [Multi-Account & Keychain](multi-account-keychain.md) — Keychain trennt nicht pro CLAUDE_CONFIG_DIR; Tokens pro Instanz via Env
@@ -0,0 +1,14 @@
---
name: multi-account-keychain
description: macOS-Keychain trennt Claude-Code-Credentials NICHT pro CLAUDE_CONFIG_DIR — Multi-Account nur über Env-Tokens
metadata:
node_type: memory
type: project
originSessionId: 5c4c75da-b313-4740-9988-49533ba77ed1
---
Verifiziert 2026-07-03: Claude Code nutzt auf macOS einen einzigen Keychain-Eintrag (Service `Claude Code-credentials`, Account = Unix-User) für alle `CLAUDE_CONFIG_DIR`-Profile. Mehrere OAuth-Logins überschreiben sich gegenseitig (Issue anthropics/claude-code#20553); der Datei-Fallback `.credentials.json` wird auf macOS gelöscht (#10039).
**Why:** ai-control soll 34 Claude-Zugänge (Abo + Kunden-API-Keys) strikt getrennt auf einem Rechner betreiben.
**How to apply:** Pro Instanz Credentials über Env setzen: `CLAUDE_CODE_OAUTH_TOKEN` (via `claude setup-token`, 1 Jahr gültig) für Abo-Zugänge, `ANTHROPIC_API_KEY` für Kunden-Keys. `CLAUDE_CONFIG_DIR` zusätzlich pro Zugang für getrennte settings/History/Projektzustand — nur nicht für Credentials verlassen.
+2 -1
View File
@@ -21,5 +21,6 @@
"promptSuggestionEnabled": false,
"awaySummaryEnabled": false,
"tui": "fullscreen",
"theme": "dark"
"theme": "dark",
"model": "claude-fable-5[1m]"
}
+99
View File
@@ -0,0 +1,99 @@
<mxfile host="app.diagrams.net" version="24.0.0">
<diagram name="cpq-geko Abgrenzung" id="geko76-abgrenzung">
<mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1400" pageHeight="850" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- cpq Container -->
<mxCell id="cpq" value="cpq (universell)" style="swimlane;startSize=32;fontSize=14;fontStyle=1;fillColor=#dae8fc;strokeColor=#6c8ebf;swimlaneFillColor=#f5f9ff;rounded=1;" vertex="1" parent="1">
<mxGeometry x="40" y="40" width="540" height="640" as="geometry" />
</mxCell>
<mxCell id="cpq-graph" value="&lt;b&gt;Szenegraph &amp;amp; PMI-Einbau&lt;/b&gt;&lt;br&gt;Gruppe = Weltkoordinaten-Anker&lt;br&gt;PMI-Snap / Placement-Mode" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="cpq">
<mxGeometry x="20" y="50" width="500" height="70" as="geometry" />
</mxCell>
<mxCell id="cpq-registry" value="&lt;b&gt;Modul-Registry&lt;/b&gt;&lt;br&gt;Anmeldung pro Produktfamilie" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="cpq">
<mxGeometry x="20" y="140" width="500" height="55" as="geometry" />
</mxCell>
<mxCell id="cpq-events" value="&lt;b&gt;Domain-Events&lt;/b&gt; (nach abgeschlossener Topologie-Änderung)&lt;br&gt;element_platziert (Mouse-Up) · pmi_belegt / pmi_frei · element_geloescht" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="cpq">
<mxGeometry x="20" y="215" width="500" height="70" as="geometry" />
</mxCell>
<mxCell id="cpq-query" value="&lt;b&gt;Query-API&lt;/b&gt;&lt;br&gt;belegte PMIs eines Nodes (+ Winkel) · Nachbarn + Metadaten" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="cpq">
<mxGeometry x="20" y="305" width="500" height="60" as="geometry" />
</mxCell>
<mxCell id="cpq-commands" value="&lt;b&gt;Kommandos&lt;/b&gt;&lt;br&gt;split_in_gruppe · inplace_modelltausch (Node-Identität bleibt) · loeschen" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="cpq">
<mxGeometry x="20" y="385" width="500" height="65" as="geometry" />
</mxCell>
<mxCell id="cpq-cascade" value="&lt;b&gt;Lösch-Kaskade mit Hook&lt;/b&gt;&lt;br&gt;registrierte Projektregel darf Löschmenge ändern" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="cpq">
<mxGeometry x="20" y="470" width="500" height="60" as="geometry" />
</mxCell>
<mxCell id="cpq-ui" value="&lt;b&gt;Detailmenü-Rahmen&lt;/b&gt;&lt;br&gt;rendert projektspezifische Felder aus Konfiguration" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#6c8ebf;" vertex="1" parent="cpq">
<mxGeometry x="20" y="550" width="500" height="60" as="geometry" />
</mxCell>
<!-- geko Container -->
<mxCell id="geko" value="geko: Schutzzaun-Modul (projektspezifisch)" style="swimlane;startSize=32;fontSize=14;fontStyle=1;fillColor=#d5e8d4;strokeColor=#82b366;swimlaneFillColor=#f7fcf5;rounded=1;" vertex="1" parent="1">
<mxGeometry x="820" y="40" width="520" height="510" as="geometry" />
</mxCell>
<mxCell id="geko-split" value="&lt;b&gt;Zerlegungsvorschrift&lt;/b&gt;&lt;br&gt;Allround → Steher / Zaun / Steher (in Gruppe)" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="geko">
<mxGeometry x="20" y="50" width="480" height="60" as="geometry" />
</mxCell>
<mxCell id="geko-matrix" value="&lt;b&gt;Bauform-Matrix&lt;/b&gt; (Datentabelle)&lt;br&gt;(Anbau-Seite, belegte Winkel) → Bauform · Artikel-Mapping AG" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="geko">
<mxGeometry x="20" y="130" width="480" height="60" as="geometry" />
</mxCell>
<mxCell id="geko-height" value="&lt;b&gt;Höhenformel&lt;/b&gt;&lt;br&gt;max(2200, max(Zaunhöhe + Fußfreiheit)) · Sondersteher-Regel" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="geko">
<mxGeometry x="20" y="210" width="480" height="60" as="geometry" />
</mxCell>
<mxCell id="geko-delete" value="&lt;b&gt;Lösch-Sonderregel&lt;/b&gt;&lt;br&gt;Steher → Zäune mit · Zaun → alleinstehende Steher mit · Kettenabbruch" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="geko">
<mxGeometry x="20" y="290" width="480" height="60" as="geometry" />
</mxCell>
<mxCell id="geko-ui" value="&lt;b&gt;Detailmenü-Konfiguration&lt;/b&gt;&lt;br&gt;Bauform-Dropdown gefiltert nach Matrix · Höhen-Untergrenze" style="rounded=1;whiteSpace=wrap;html=1;align=left;spacingLeft=10;fillColor=#ffffff;strokeColor=#82b366;" vertex="1" parent="geko">
<mxGeometry x="20" y="370" width="480" height="60" as="geometry" />
</mxCell>
<!-- Kanten -->
<mxCell id="e0" value="(0) registriert sich einmalig&#10;für Allround-Produktfamilie" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;strokeColor=#82b366;fontSize=11;exitX=0;exitY=0.5;entryX=1;entryY=0.5;" edge="1" parent="1" source="geko-split" target="cpq-registry">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e1" value="(1) Domain-Event" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;strokeColor=#6c8ebf;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="cpq-events" target="geko-matrix">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e2" value="(2) Abfrage: belegte PMIs + Winkel,&#10;Nachbarn, Zaun-Metadaten" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;strokeColor=#82b366;fontSize=11;exitX=0;exitY=0.5;entryX=1;entryY=0.5;" edge="1" parent="1" source="geko-height" target="cpq-query">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e3" value="(3) Kommando: In-Place-Tausch,&#10;Höhe setzen, löschen" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;strokeColor=#82b366;fontSize=11;exitX=0;exitY=0.5;entryX=1;entryY=0.5;" edge="1" parent="1" source="geko-delete" target="cpq-commands">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e4" value="Hook: Löschmenge anpassen,&#10;Heal auslösen" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;startArrow=block;strokeColor=#b85450;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.75;dashed=1;" edge="1" parent="1" source="cpq-cascade" target="geko-delete">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="e5" value="liest Konfiguration" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;strokeColor=#9673a6;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.75;dashed=1;" edge="1" parent="1" source="cpq-ui" target="geko-ui">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<!-- Legende -->
<mxCell id="legend" value="Zyklus pro Topologie-Änderung: (1) Event → (2) Abfrage → (3) Kommando&#10;Abgrenzungsregel: wortgleich wiederverwendbar = cpq · kennt Artikelnummern / Winkel-Matrix / Zaun-Begriffe = geko" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=1;fillColor=#fff2cc;strokeColor=#d6b656;spacingLeft=10;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="40" y="710" width="900" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>