refactor(genome): Terminologie vereinheitlichen – Trait→Capability, Mutation→Improvement, Growth Vector→Insight, Propagation→Transfer
Alle Genome-Engine-Dateien auf lernbasierte Begriffe umgestellt: - Concept Doc: komplett überarbeitet mit Mermaid-Diagrammen - genome.prompt.md: neue Dateinamen + Begriffe - genome-distill.prompt.md: Improvements/Insights statt Mutations/Vectors - genome-propagate.prompt.md: Transfer statt Propagation, Capability statt Trait - genome-extract.py: Output-Dateiname + Ausgabetext aktualisiert - SKILL.md: Beschreibung + Dateitabelle aktualisiert
This commit is contained in:
parent
5eae3a4813
commit
ddf9272dda
6 changed files with 177 additions and 177 deletions
170
.github/genome/Concept Genome Engine.md
vendored
170
.github/genome/Concept Genome Engine.md
vendored
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
## Ziel
|
## Ziel
|
||||||
|
|
||||||
Automatische Erkennung evolutionärer Verbesserungen an Copilot-Customization-Dateien (Skills, Agents, Prompts, Instructions) über Git-History hinweg. Die erkannten Verbesserungen werden destilliert, bewertet und als Propagation-Vorschläge für andere Projekte bereitgestellt.
|
Automatische Erkennung von Verbesserungen an KI-Tooling-Dateien (Skills, Agents, Prompts, Instructions) über Git-History hinweg. Die erkannten Improvements werden destilliert, bewertet und als Transfer-Vorschläge für andere Projekte bereitgestellt.
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph LR
|
graph LR
|
||||||
A[Repo A<br/>Verbesserungen] -->|Git-History| E[Extraction]
|
A[Repo A<br/>Verbesserungen] -->|Git-History| E[Extraction]
|
||||||
E -->|raw-mutations| D[Distillation]
|
E -->|raw improvements| D[Distillation]
|
||||||
D -->|Growth Vectors| P[Propagation]
|
D -->|Insights| T[Transfer]
|
||||||
P -->|Patches| B[Repo B<br/>aktualisiert]
|
T -->|Patches| B[Repo B<br/>aktualisiert]
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -18,25 +18,25 @@ graph LR
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph TD
|
graph TD
|
||||||
G[🧬 Genome<br/>Gesamtheit aller Traits] --> T1[Trait: Skill]
|
G[🧬 Genome<br/>Gesamtheit aller Capabilities] --> T1[Capability: Skill]
|
||||||
G --> T2[Trait: Agent]
|
G --> T2[Capability: Agent]
|
||||||
G --> T3[Trait: Prompt]
|
G --> T3[Capability: Prompt]
|
||||||
G --> T4[Trait: Instructions]
|
G --> T4[Capability: Instructions]
|
||||||
T1 -->|Git-Delta| M1[Mutation]
|
T1 -->|Git-Delta| M1[Improvement]
|
||||||
T3 -->|Git-Delta| M2[Mutation]
|
T3 -->|Git-Delta| M2[Improvement]
|
||||||
M1 -->|destilliert| GV1[Growth Vector<br/>Score 8/10 🟡]
|
M1 -->|destilliert| GV1[Insight<br/>Score 8/10 🟡]
|
||||||
M2 -->|destilliert| GV2[Growth Vector<br/>Score 9/10 🔴]
|
M2 -->|destilliert| GV2[Insight<br/>Score 9/10 🔴]
|
||||||
GV1 --> PR[Propagation<br/>Konkrete Patches]
|
GV1 --> PR[Transfer<br/>Konkrete Patches]
|
||||||
GV2 --> PR
|
GV2 --> PR
|
||||||
```
|
```
|
||||||
|
|
||||||
| Begriff | Bedeutung |
|
| Begriff | Bedeutung |
|
||||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
| ---------------- | -------------------------------------------------------------------------------------------- |
|
||||||
| **Trait** | Ein Skill, Agent, Prompt(-Verbund) oder Instructions-File inkl. aller zugehörigen Dateien |
|
| **Capability** | Ein Skill, Agent, Prompt(-Verbund) oder Instructions-File inkl. aller zugehörigen Dateien |
|
||||||
| **Genome** | Die Gesamtheit aller Traits eines Projekts |
|
| **Genome** | Die Gesamtheit aller Capabilities eines Projekts – das "KI-Wissen" eines Repos |
|
||||||
| **Mutation** | Ein Git-Commit-Delta an einem Trait (siehe Mutation-Typen) |
|
| **Improvement** | Ein Git-Commit-Delta an einer Capability – eine konkrete Verbesserung am KI-Tooling |
|
||||||
| **Growth Vector** | Destillierte, bewertete Mutation (bereinigt, klassifiziert, gescored) |
|
| **Insight** | Destilliertes, bewertetes Improvement (bereinigt, klassifiziert, gescored, übertragbar) |
|
||||||
| **Propagation** | Konkreter Änderungsvorschlag für ein Ziel-Genome |
|
| **Transfer** | Konkreter Änderungsvorschlag, um ein Insight auf ein Ziel-Genome anzuwenden |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -52,9 +52,9 @@ Folgende Pfade bilden das Genome:
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Trait-Erkennung
|
## Capability-Erkennung
|
||||||
|
|
||||||
Traits werden aus dem Dateipfad abgeleitet. Die Granularität hängt vom Trait-Typ ab:
|
Capabilities werden aus dem Dateipfad abgeleitet. Die Granularität hängt vom Capability-Typ ab:
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph TD
|
graph TD
|
||||||
|
|
@ -69,27 +69,27 @@ graph TD
|
||||||
|
|
||||||
### Skills
|
### Skills
|
||||||
|
|
||||||
Ein Skill besteht aus einem Ordner mit mehreren zusammengehörigen Dateien (SKILL.md, Scripte, Templates). Der **Ordnername** ist der Trait-Schlüssel.
|
Ein Skill besteht aus einem Ordner mit mehreren zusammengehörigen Dateien (SKILL.md, Scripte, Templates). Der **Ordnername** ist der Capability-Schlüssel.
|
||||||
|
|
||||||
```
|
```
|
||||||
.github/skills/gh-tickets/SKILL.md → trait: skill/gh-tickets
|
.github/skills/gh-tickets/SKILL.md → capability: skill/gh-tickets
|
||||||
.github/skills/gh-tickets/queries.graphql → trait: skill/gh-tickets
|
.github/skills/gh-tickets/queries.graphql → capability: skill/gh-tickets
|
||||||
.github/skills/android-build/SKILL.md → trait: skill/android-build
|
.github/skills/android-build/SKILL.md → capability: skill/android-build
|
||||||
.github/skills/android-build/android-dev.ps1 → trait: skill/android-build
|
.github/skills/android-build/android-dev.ps1 → capability: skill/android-build
|
||||||
```
|
```
|
||||||
|
|
||||||
**Regel:** `skill/<ordnername>` – alle Dateien im Ordner gehören zum selben Trait.
|
**Regel:** `skill/<ordnername>` – alle Dateien im Ordner gehören zur selben Capability.
|
||||||
|
|
||||||
### Agents
|
### Agents
|
||||||
|
|
||||||
Ein Agent besteht aus genau einer Datei. Der **vollständige Dateiname** (ohne Pfad, ohne Extension) ist der Trait-Schlüssel.
|
Ein Agent besteht aus genau einer Datei. Der **vollständige Dateiname** (ohne Pfad, ohne Extension) ist der Capability-Schlüssel.
|
||||||
|
|
||||||
```
|
```
|
||||||
.github/agents/android-implementer.agent.md → trait: agent/android-implementer
|
.github/agents/android-implementer.agent.md → capability: agent/android-implementer
|
||||||
.github/agents/code-reviewer.agent.md → trait: agent/code-reviewer
|
.github/agents/code-reviewer.agent.md → capability: agent/code-reviewer
|
||||||
```
|
```
|
||||||
|
|
||||||
**Regel:** `agent/<dateiname-ohne-extension>` – 1:1-Zuordnung Datei → Trait.
|
**Regel:** `agent/<dateiname-ohne-extension>` – 1:1-Zuordnung Datei → Capability.
|
||||||
|
|
||||||
### Prompts
|
### Prompts
|
||||||
|
|
||||||
|
|
@ -97,49 +97,49 @@ Prompts unterscheiden zwei Varianten: **Standalone** und **Verbund**.
|
||||||
|
|
||||||
#### Standalone-Prompts
|
#### Standalone-Prompts
|
||||||
|
|
||||||
Einzeldateien ohne Router-Beziehung. Der **Dateiname** ist der Trait-Schlüssel.
|
Einzeldateien ohne Router-Beziehung. Der **Dateiname** ist der Capability-Schlüssel.
|
||||||
|
|
||||||
```
|
```
|
||||||
.github/prompts/commit.prompt.md → trait: prompt/commit
|
.github/prompts/commit.prompt.md → capability: prompt/commit
|
||||||
.github/prompts/ship.prompt.md → trait: prompt/ship
|
.github/prompts/ship.prompt.md → capability: prompt/ship
|
||||||
.github/prompts/publish.prompt.md → trait: prompt/publish
|
.github/prompts/publish.prompt.md → capability: prompt/publish
|
||||||
```
|
```
|
||||||
|
|
||||||
**Regel:** `prompt/<dateiname-ohne-extension>` – 1:1-Zuordnung Datei → Trait.
|
**Regel:** `prompt/<dateiname-ohne-extension>` – 1:1-Zuordnung Datei → Capability.
|
||||||
|
|
||||||
#### Verbund-Prompts (Router + Sub-Workflows)
|
#### Verbund-Prompts (Router + Sub-Workflows)
|
||||||
|
|
||||||
Wenn eine Prompt-Datei eine Routing-Tabelle mit Verweisen auf andere `.prompt.md`-Dateien enthält, bilden Router + referenzierte Dateien **einen** Trait. Der **Router-Name** ist der Trait-Schlüssel.
|
Wenn eine Prompt-Datei eine Routing-Tabelle mit Verweisen auf andere `.prompt.md`-Dateien enthält, bilden Router + referenzierte Dateien **eine** Capability. Der **Router-Name** ist der Capability-Schlüssel.
|
||||||
|
|
||||||
```
|
```
|
||||||
.github/prompts/nextstep.prompt.md → trait: prompt/nextstep
|
.github/prompts/nextstep.prompt.md → capability: prompt/nextstep
|
||||||
.github/prompts/nextstep-implementation.prompt.md → trait: prompt/nextstep
|
.github/prompts/nextstep-implementation.prompt.md → capability: prompt/nextstep
|
||||||
.github/prompts/nextstep-planning.prompt.md → trait: prompt/nextstep
|
.github/prompts/nextstep-planning.prompt.md → capability: prompt/nextstep
|
||||||
.github/prompts/nextstep-tech-decision.prompt.md → trait: prompt/nextstep
|
.github/prompts/nextstep-tech-decision.prompt.md → capability: prompt/nextstep
|
||||||
```
|
```
|
||||||
|
|
||||||
**Verbund-Erkennung:** Eine Datei `<name>.prompt.md` ist ein Router, wenn Dateien `<name>-*.prompt.md` im selben Verzeichnis existieren. Alle gehören zum selben Verbund-Trait.
|
**Verbund-Erkennung:** Eine Datei `<name>.prompt.md` ist ein Router, wenn Dateien `<name>-*.prompt.md` im selben Verzeichnis existieren. Alle gehören zur selben Verbund-Capability.
|
||||||
|
|
||||||
### Instructions
|
### Instructions
|
||||||
|
|
||||||
Instructions-Dateien sind Einzeldateien. Der **Dateiname** ist der Trait-Schlüssel.
|
Instructions-Dateien sind Einzeldateien. Der **Dateiname** ist der Capability-Schlüssel.
|
||||||
|
|
||||||
```
|
```
|
||||||
.github/copilot-instructions.md → trait: instructions/copilot-instructions
|
.github/copilot-instructions.md → capability: instructions/copilot-instructions
|
||||||
.github/kotlin-conventions.instructions.md → trait: instructions/kotlin-conventions
|
.github/kotlin-conventions.instructions.md → capability: instructions/kotlin-conventions
|
||||||
```
|
```
|
||||||
|
|
||||||
**Regel:** `instructions/<dateiname-ohne-extension>` – 1:1-Zuordnung Datei → Trait.
|
**Regel:** `instructions/<dateiname-ohne-extension>` – 1:1-Zuordnung Datei → Capability.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Mutation-Typen
|
## Improvement-Typen
|
||||||
|
|
||||||
| Typ | Bedeutung | Beispiel |
|
| Typ | Bedeutung | Beispiel |
|
||||||
| ---------------- | ------------------------------------ | ----------------------------------------------------- |
|
| ---------------- | -------------------------------------------- | ----------------------------------------------------- |
|
||||||
| `content-change` | Inhalt einer Datei im Trait geändert | `nextstep-implementation.prompt.md` optimiert |
|
| `content-change` | Inhalt einer Datei in der Capability geändert | `nextstep-implementation.prompt.md` optimiert |
|
||||||
| `member-added` | Neue Datei zum Trait hinzugefügt | Neuer `nextstep-migration.prompt.md` + Router-Eintrag |
|
| `member-added` | Neue Datei zur Capability hinzugefügt | Neuer `nextstep-migration.prompt.md` + Router-Eintrag |
|
||||||
| `member-removed` | Datei aus dem Trait entfernt | `nextstep-test.prompt.md` gelöscht |
|
| `member-removed` | Datei aus der Capability entfernt | `nextstep-test.prompt.md` gelöscht |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -150,16 +150,16 @@ flowchart LR
|
||||||
subgraph "Phase 1: Extraction"
|
subgraph "Phase 1: Extraction"
|
||||||
direction TB
|
direction TB
|
||||||
GIT[(Git-History)] --> SCRIPT[genome-extract.py]
|
GIT[(Git-History)] --> SCRIPT[genome-extract.py]
|
||||||
SCRIPT --> RAW[raw-mutations.md]
|
SCRIPT --> RAW[raw-improvements.md]
|
||||||
end
|
end
|
||||||
subgraph "Phase 2: Distillation"
|
subgraph "Phase 2: Distillation"
|
||||||
direction TB
|
direction TB
|
||||||
RAW2[raw-mutations.md] --> AGENT1[KI-Agent]
|
RAW2[raw-improvements.md] --> AGENT1[KI-Agent]
|
||||||
AGENT1 --> |"Klassifizieren\nScoren\nSanitizen"| DIST[distilled-mutations.md]
|
AGENT1 --> |"Klassifizieren\nScoren\nSanitizen"| DIST[distilled-insights.md]
|
||||||
end
|
end
|
||||||
subgraph "Phase 3: Propagation"
|
subgraph "Phase 3: Transfer"
|
||||||
direction TB
|
direction TB
|
||||||
DIST2[distilled-mutations.md] --> AGENT2[KI-Agent]
|
DIST2[distilled-insights.md] --> AGENT2[KI-Agent]
|
||||||
ZIEL[Ziel-Genome] --> AGENT2
|
ZIEL[Ziel-Genome] --> AGENT2
|
||||||
AGENT2 --> PATCHES[Konkrete Patches]
|
AGENT2 --> PATCHES[Konkrete Patches]
|
||||||
end
|
end
|
||||||
|
|
@ -170,22 +170,22 @@ flowchart LR
|
||||||
### Phase 1: Extraction (Script)
|
### Phase 1: Extraction (Script)
|
||||||
|
|
||||||
**Input:** Repo-Pfad + Zeitspanne (z.B. `--since "7 days ago"`)
|
**Input:** Repo-Pfad + Zeitspanne (z.B. `--since "7 days ago"`)
|
||||||
**Output:** `raw-mutations.md`
|
**Output:** `raw-improvements.md`
|
||||||
|
|
||||||
- Scannt `git log` für Änderungen im Genome-Scope
|
- Scannt `git log` für Änderungen im Genome-Scope
|
||||||
- Gruppiert Diffs nach Trait (siehe Trait-Erkennung oben)
|
- Gruppiert Diffs nach Capability (siehe Capability-Erkennung oben)
|
||||||
- Gibt pro Trait alle Commits mit Diff, Message und Autor aus
|
- Gibt pro Capability alle Commits mit Diff, Message und Autor aus
|
||||||
|
|
||||||
**Tool:** `genome-extract.py` (Python)
|
**Tool:** `genome-extract.py` (Python)
|
||||||
|
|
||||||
### Phase 2: Distillation (Agent)
|
### Phase 2: Distillation (Agent)
|
||||||
|
|
||||||
**Input:** `raw-mutations.md`
|
**Input:** `raw-improvements.md`
|
||||||
**Output:** `distilled-mutations.md`
|
**Output:** `distilled-insights.md`
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
flowchart TD
|
flowchart TD
|
||||||
M[Mutation] --> K{Klassifizierung}
|
M[Improvement] --> K{Klassifizierung}
|
||||||
K -->|Bugfix für alle| C[🔴 Critical]
|
K -->|Bugfix für alle| C[🔴 Critical]
|
||||||
K -->|Generelle Verbesserung| E[🟡 Evolution]
|
K -->|Generelle Verbesserung| E[🟡 Evolution]
|
||||||
K -->|Nur dieses Projekt| S[⚪ Specialized]
|
K -->|Nur dieses Projekt| S[⚪ Specialized]
|
||||||
|
|
@ -193,23 +193,23 @@ flowchart TD
|
||||||
E --> SC
|
E --> SC
|
||||||
S --> X[❌ Entfernt]
|
S --> X[❌ Entfernt]
|
||||||
SC --> SAN[Sanitization<br/>Pfade, Tokens, IDs ersetzen]
|
SC --> SAN[Sanitization<br/>Pfade, Tokens, IDs ersetzen]
|
||||||
SAN --> |Score ≥ 4| OUT[→ distilled-mutations.md]
|
SAN --> |Score ≥ 4| OUT[→ distilled-insights.md]
|
||||||
SAN --> |Score < 4| X
|
SAN --> |Score < 4| X
|
||||||
```
|
```
|
||||||
|
|
||||||
- Scored jede Mutation (1–10) nach Übertragungswert
|
- Scored jedes Improvement (1–10) nach Übertragungswert
|
||||||
- Filtert sensitive Daten (Usernames, Maschinenpfade, Tokens, projektspezifische IDs)
|
- Filtert sensitive Daten (Usernames, Maschinenpfade, Tokens, projektspezifische IDs)
|
||||||
- Specialized Mutations werden komplett entfernt
|
- Specialized Improvements werden komplett entfernt
|
||||||
|
|
||||||
**Tool:** `genome-distill.prompt.md`
|
**Tool:** `genome-distill.prompt.md`
|
||||||
|
|
||||||
### Phase 3: Propagation (Agent)
|
### Phase 3: Transfer (Agent)
|
||||||
|
|
||||||
**Input:** `distilled-mutations.md` + Ziel-Genome
|
**Input:** `distilled-insights.md` + Ziel-Genome
|
||||||
**Output:** `propagation-proposals.md`
|
**Output:** `transfer-proposals.md`
|
||||||
|
|
||||||
- Matched Traits zwischen Quell- und Ziel-Genome
|
- Matched Capabilities zwischen Quell- und Ziel-Genome
|
||||||
- Erstellt konkrete Änderungsvorschläge pro Trait
|
- Erstellt konkrete Änderungsvorschläge pro Capability
|
||||||
- Formatiert als Checkliste mit Default-Auswahl:
|
- Formatiert als Checkliste mit Default-Auswahl:
|
||||||
|
|
||||||
| Kategorie | Default | Bedingung |
|
| Kategorie | Default | Bedingung |
|
||||||
|
|
@ -232,7 +232,7 @@ sequenceDiagram
|
||||||
Note over T: Letzter .github/-Commit = T_target
|
Note over T: Letzter .github/-Commit = T_target
|
||||||
R->>R: git log --since T_target
|
R->>R: git log --since T_target
|
||||||
R->>R: 12 Commits an .github/ gefunden
|
R->>R: 12 Commits an .github/ gefunden
|
||||||
R-->>T: Mutations extrahiert → Distillation → Propagation
|
R-->>T: Improvements extrahiert → Distillation → Transfer
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Letzter `.github/`-Commit im Ziel-Repo ermitteln → `T_target`
|
1. Letzter `.github/`-Commit im Ziel-Repo ermitteln → `T_target`
|
||||||
|
|
@ -255,12 +255,12 @@ graph TD
|
||||||
PR[genome-propagate.prompt.md<br/>Phase 3]
|
PR[genome-propagate.prompt.md<br/>Phase 3]
|
||||||
end
|
end
|
||||||
subgraph ".github/genome/output/"
|
subgraph ".github/genome/output/"
|
||||||
RM[raw-mutations.md<br/>generiert]
|
RM[raw-improvements.md<br/>generiert]
|
||||||
DM[distilled-mutations.md<br/>generiert]
|
DM[distilled-insights.md<br/>generiert]
|
||||||
PP[propagation-proposals.md<br/>generiert]
|
PP[transfer-proposals.md<br/>generiert]
|
||||||
end
|
end
|
||||||
subgraph "docs/"
|
subgraph ".github/genome/"
|
||||||
CO[genome-engine.md<br/>Dieses Konzept]
|
CO[Concept Genome Engine.md<br/>Dieses Konzept]
|
||||||
end
|
end
|
||||||
OR -->|"ruft auf"| EX
|
OR -->|"ruft auf"| EX
|
||||||
OR -->|"delegiert an"| DI
|
OR -->|"delegiert an"| DI
|
||||||
|
|
@ -280,9 +280,9 @@ graph TD
|
||||||
| 4 | `genome-propagate.prompt.md` | Prompt | `.github/prompts/` |
|
| 4 | `genome-propagate.prompt.md` | Prompt | `.github/prompts/` |
|
||||||
| 5 | `SKILL.md` | Skill-Doku | `.github/skills/genome/` |
|
| 5 | `SKILL.md` | Skill-Doku | `.github/skills/genome/` |
|
||||||
| 6 | `genome-engine.md` | Konzept | `docs/` |
|
| 6 | `genome-engine.md` | Konzept | `docs/` |
|
||||||
| 7 | `raw-mutations.md` | Generiert | `.github/genome/output/` |
|
| 7 | `raw-improvements.md` | Generiert | `.github/genome/output/` |
|
||||||
| 8 | `distilled-mutations.md` | Generiert | `.github/genome/output/` |
|
| 8 | `distilled-insights.md` | Generiert | `.github/genome/output/` |
|
||||||
| 9 | `propagation-proposals.md` | Generiert | `.github/genome/output/` |
|
| 9 | `transfer-proposals.md` | Generiert | `.github/genome/output/` |
|
||||||
|
|
||||||
> Generierte Dateien (7–9) sind gitignored.
|
> Generierte Dateien (7–9) sind gitignored.
|
||||||
|
|
||||||
|
|
@ -290,7 +290,7 @@ graph TD
|
||||||
|
|
||||||
## Zukünftige Erweiterungen
|
## Zukünftige Erweiterungen
|
||||||
|
|
||||||
- Multi-Repo-Registry: Zentrale Sammlung von Growth Vectors aus vielen Projekten
|
- Multi-Repo-Registry: Zentrale Sammlung von Insights aus vielen Projekten
|
||||||
- Automatische Erkennung des Evolutionszeitraums über Repo-Vergleich
|
- Automatische Erkennung des Transfer-Zeitraums über Repo-Vergleich
|
||||||
- CI-Integration: Propagation-Check bei jedem Push
|
- CI-Integration: Transfer-Check bei jedem Push
|
||||||
- Community-Sharing: Öffentliche Growth Vectors als "Trait Packages"
|
- Community-Sharing: Öffentliche Insights als "Capability Packages"
|
||||||
|
|
|
||||||
34
.github/prompts/genome-distill.prompt.md
vendored
34
.github/prompts/genome-distill.prompt.md
vendored
|
|
@ -1,20 +1,20 @@
|
||||||
---
|
---
|
||||||
description: "Genome Engine Phase 2: Distilliert raw-mutations.md – klassifiziert, scored und bereinigt Mutations für Cross-Repo-Propagation."
|
description: "Genome Engine Phase 2: Destilliert raw-improvements.md – klassifiziert, scored und bereinigt Improvements für Cross-Repo-Transfer."
|
||||||
model: Claude Opus 4.6 (copilot)
|
model: Claude Opus 4.6 (copilot)
|
||||||
tools: [read, edit]
|
tools: [read, edit]
|
||||||
---
|
---
|
||||||
|
|
||||||
# Genome Distillation
|
# Genome Distillation
|
||||||
|
|
||||||
Du erhältst eine Datei mit rohen Git-Mutations aus Copilot-Customization-Dateien. Deine Aufgabe: **klassifizieren, scoren, bereinigen** – damit nur übertragbare Verbesserungen übrig bleiben.
|
Du erhältst eine Datei mit rohen Git-Improvements aus KI-Tooling-Dateien. Deine Aufgabe: **klassifizieren, scoren, bereinigen** – damit nur übertragbare Verbesserungen übrig bleiben.
|
||||||
|
|
||||||
## Input
|
## Input
|
||||||
|
|
||||||
Lies die Datei `.github/genome/output/raw-mutations.md`.
|
Lies die Datei `.github/genome/output/raw-improvements.md`.
|
||||||
|
|
||||||
## Aufgabe
|
## Aufgabe
|
||||||
|
|
||||||
Für **jeden Trait** und jede Mutation darin:
|
Für **jede Capability** und jedes Improvement darin:
|
||||||
|
|
||||||
### 1. Klassifizierung
|
### 1. Klassifizierung
|
||||||
|
|
||||||
|
|
@ -26,7 +26,7 @@ Für **jeden Trait** und jede Mutation darin:
|
||||||
|
|
||||||
### 2. Scoring (1–10)
|
### 2. Scoring (1–10)
|
||||||
|
|
||||||
Bewerte den **Übertragungswert** jeder Critical/Evolution-Mutation:
|
Bewerte den **Übertragungswert** jedes Critical/Evolution-Improvements:
|
||||||
|
|
||||||
- **9–10:** Universell wertvoll, jedes Repo profitiert
|
- **9–10:** Universell wertvoll, jedes Repo profitiert
|
||||||
- **7–8:** Breit anwendbar, gutes Pattern
|
- **7–8:** Breit anwendbar, gutes Pattern
|
||||||
|
|
@ -64,7 +64,7 @@ Ersetze in den Diffs:
|
||||||
|
|
||||||
### 4. Filterung
|
### 4. Filterung
|
||||||
|
|
||||||
- **Specialized** Mutations: komplett entfernen (nicht in Output aufnehmen)
|
- **Specialized** Improvements: komplett entfernen (nicht in Output aufnehmen)
|
||||||
- **Reine Formatting-Änderungen** (nur Whitespace/Tabellenausrichtung): entfernen
|
- **Reine Formatting-Änderungen** (nur Whitespace/Tabellenausrichtung): entfernen
|
||||||
- **Renames ohne inhaltliche Änderung**: entfernen
|
- **Renames ohne inhaltliche Änderung**: entfernen
|
||||||
|
|
||||||
|
|
@ -72,16 +72,16 @@ Ersetze in den Diffs:
|
||||||
|
|
||||||
### Fehler 1: `member-added` pauschal als Specialized verwerfen
|
### Fehler 1: `member-added` pauschal als Specialized verwerfen
|
||||||
|
|
||||||
Neue Dateien (`member-added`) sind oft die **wertvollsten** Mutations. Ein neuer Skill, Prompt oder Agent ist nach Sanitization häufig hochgradig übertragbar. Prüfe:
|
Neue Dateien (`member-added`) sind oft die **wertvollsten** Improvements. Ein neuer Skill, Prompt oder Agent ist nach Sanitization häufig hochgradig übertragbar. Prüfe:
|
||||||
- Enthält die Datei ein **allgemeines Pattern** (z.B. Checkliste, Workflow-Struktur, Fehlerklassen-Katalog)?
|
- Enthält die Datei ein **allgemeines Pattern** (z.B. Checkliste, Workflow-Struktur, Fehlerklassen-Katalog)?
|
||||||
- Ist sie nach Pfad-/Namen-Sanitization auf andere Projekte anwendbar?
|
- Ist sie nach Pfad-/Namen-Sanitization auf andere Projekte anwendbar?
|
||||||
- → Wenn ja: **Evolution** (Score 7–9), nicht Specialized.
|
- → Wenn ja: **Evolution** (Score 7–9), nicht Specialized.
|
||||||
|
|
||||||
**Nur** als Specialized werten, wenn der **gesamte Inhalt** projektspezifisch ist (z.B. nur eine Entity-Definition für eine bestimmte App).
|
**Nur** als Specialized werten, wenn der **gesamte Inhalt** projektspezifisch ist (z.B. nur eine Entity-Definition für eine bestimmte App).
|
||||||
|
|
||||||
### Fehler 2: Nur den ersten Teil der raw-mutations lesen
|
### Fehler 2: Nur den ersten Teil der raw-improvements lesen
|
||||||
|
|
||||||
Die raw-mutations-Datei kann **tausende Zeilen** lang sein. Skills, Scripts und neue Traits stehen oft am Ende. **Lies die GESAMTE Datei** bevor du klassifizierst – nicht nur die ersten 1000–2000 Zeilen.
|
Die raw-improvements-Datei kann **tausende Zeilen** lang sein. Skills, Scripts und neue Capabilities stehen oft am Ende. **Lies die GESAMTE Datei** bevor du klassifizierst – nicht nur die ersten 1000–2000 Zeilen.
|
||||||
|
|
||||||
### Fehler 3: Mehrteilige Commits nicht trennen
|
### Fehler 3: Mehrteilige Commits nicht trennen
|
||||||
|
|
||||||
|
|
@ -98,7 +98,7 @@ PowerShell/Python-Scripts die ein **universelles DevOps-Problem** lösen (z.B. E
|
||||||
|
|
||||||
### Fehler 5: Zu konservativ scoren
|
### Fehler 5: Zu konservativ scoren
|
||||||
|
|
||||||
Eine Conversion-Rate von < 10% ist ein Warnsignal. Bei typischen aktiven Repos mit 20+ Traits sollte die Rate bei **15–30%** liegen (bezogen auf Traits mit mindestens einer Evolution, nicht auf Mutations-Gesamtzahl).
|
Eine Conversion-Rate von < 10% ist ein Warnsignal. Bei typischen aktiven Repos mit 20+ Capabilities sollte die Rate bei **15–30%** liegen (bezogen auf Capabilities mit mindestens einer Evolution, nicht auf Improvements-Gesamtzahl).
|
||||||
|
|
||||||
## Regeln zur Diff-Analyse
|
## Regeln zur Diff-Analyse
|
||||||
|
|
||||||
|
|
@ -125,13 +125,13 @@ Gehe für jeden Commit wie folgt vor:
|
||||||
|
|
||||||
## Output-Format
|
## Output-Format
|
||||||
|
|
||||||
Schreibe das Ergebnis in `.github/genome/output/distilled-mutations.md` mit folgendem Format:
|
Schreibe das Ergebnis in `.github/genome/output/distilled-insights.md` mit folgendem Format:
|
||||||
|
|
||||||
````markdown
|
````markdown
|
||||||
# Distilled Mutations
|
# Distilled Insights
|
||||||
|
|
||||||
**Quelle:** <repo-name>
|
**Quelle:** <repo-name>
|
||||||
**Zeitraum:** <aus raw-mutations übernehmen>
|
**Zeitraum:** <aus raw-improvements übernehmen>
|
||||||
**Distilliert:** <aktuelles Datum>
|
**Distilliert:** <aktuelles Datum>
|
||||||
**Ergebnis:** X Critical, Y Evolution (Z Specialized entfernt)
|
**Ergebnis:** X Critical, Y Evolution (Z Specialized entfernt)
|
||||||
|
|
||||||
|
|
@ -139,7 +139,7 @@ Schreibe das Ergebnis in `.github/genome/output/distilled-mutations.md` mit folg
|
||||||
|
|
||||||
## 🔴 Critical
|
## 🔴 Critical
|
||||||
|
|
||||||
### Trait: `<trait-key>`
|
### Capability: `<capability-key>`
|
||||||
|
|
||||||
**Score:** N/10
|
**Score:** N/10
|
||||||
**Zusammenfassung:** <1-Satz was gefixt wurde>
|
**Zusammenfassung:** <1-Satz was gefixt wurde>
|
||||||
|
|
@ -153,7 +153,7 @@ Schreibe das Ergebnis in `.github/genome/output/distilled-mutations.md` mit folg
|
||||||
|
|
||||||
## 🟡 Evolution
|
## 🟡 Evolution
|
||||||
|
|
||||||
### Trait: `<trait-key>`
|
### Capability: `<capability-key>`
|
||||||
|
|
||||||
**Score:** N/10
|
**Score:** N/10
|
||||||
**Zusammenfassung:** <1-Satz was verbessert wurde>
|
**Zusammenfassung:** <1-Satz was verbessert wurde>
|
||||||
|
|
@ -167,11 +167,11 @@ Schreibe das Ergebnis in `.github/genome/output/distilled-mutations.md` mit folg
|
||||||
|
|
||||||
## Regeln
|
## Regeln
|
||||||
|
|
||||||
- Fasse mehrere Commits am selben Trait zu EINER Mutation zusammen, wenn sie dasselbe verbessern
|
- Fasse mehrere Commits an derselben Capability zu EINEM Improvement zusammen, wenn sie dasselbe verbessern
|
||||||
- Bei Score < 4: nicht aufnehmen (zu wenig Übertragungswert)
|
- Bei Score < 4: nicht aufnehmen (zu wenig Übertragungswert)
|
||||||
- Sortiere innerhalb jeder Klasse absteigend nach Score
|
- Sortiere innerhalb jeder Klasse absteigend nach Score
|
||||||
- Halte Zusammenfassungen auf 1 Satz
|
- Halte Zusammenfassungen auf 1 Satz
|
||||||
- Das "Pattern"-Feld bei Evolution beschreibt die **generalisierte Verbesserung**, nicht den konkreten Change
|
- Das "Pattern"-Feld bei Evolution beschreibt die **generalisierte Verbesserung**, nicht den konkreten Change
|
||||||
- Diffs dürfen gekürzt werden – nur die relevanten Hunks behalten
|
- Diffs dürfen gekürzt werden – nur die relevanten Hunks behalten
|
||||||
- Schreibe am Ende einen **Analyse-Bericht** in den Chat (nicht in die Datei): `Traits: N | Mutations: M | Critical: A | Evolution: B | Specialized entfernt: C | Churn-Commits übersprungen: D`
|
- Schreibe am Ende einen **Analyse-Bericht** in den Chat (nicht in die Datei): `Capabilities: N | Improvements: M | Critical: A | Evolution: B | Specialized entfernt: C | Churn-Commits übersprungen: D`
|
||||||
```
|
```
|
||||||
|
|
|
||||||
48
.github/prompts/genome-propagate.prompt.md
vendored
48
.github/prompts/genome-propagate.prompt.md
vendored
|
|
@ -1,47 +1,47 @@
|
||||||
---
|
---
|
||||||
description: "Genome Engine Phase 3: Propagiert distilled Mutations auf ein Ziel-Genome – erstellt konkrete Änderungsvorschläge als Checkliste."
|
description: "Genome Engine Phase 3: Transferiert distilled Insights auf ein Ziel-Genome – erstellt konkrete Änderungsvorschläge als Checkliste."
|
||||||
model: Claude Opus 4.6 (copilot)
|
model: Claude Opus 4.6 (copilot)
|
||||||
tools: [read, edit, search]
|
tools: [read, edit, search]
|
||||||
---
|
---
|
||||||
|
|
||||||
# Genome Propagation
|
# Genome Transfer
|
||||||
|
|
||||||
Du erhältst destillierte Mutations (klassifiziert, gescored, bereinigt) und sollst konkrete Änderungsvorschläge für das **aktuelle Repo** erstellen.
|
Du erhältst destillierte Insights (klassifiziert, gescored, bereinigt) und sollst konkrete Änderungsvorschläge für das **aktuelle Repo** erstellen.
|
||||||
|
|
||||||
## Input
|
## Input
|
||||||
|
|
||||||
1. Lies `.github/genome/output/distilled-mutations.md` (die Growth Vectors)
|
1. Lies `.github/genome/output/distilled-insights.md` (die Insights)
|
||||||
2. Scanne das Ziel-Genome dieses Repos: `.github/skills/`, `.github/agents/`, `.github/prompts/`, `.github/copilot-instructions.md`
|
2. Scanne das Ziel-Genome dieses Repos: `.github/skills/`, `.github/agents/`, `.github/prompts/`, `.github/copilot-instructions.md`
|
||||||
|
|
||||||
## Aufgabe
|
## Aufgabe
|
||||||
|
|
||||||
### 1. Trait-Matching
|
### 1. Capability-Matching
|
||||||
|
|
||||||
Für jeden Growth Vector aus `distilled-mutations.md`:
|
Für jeden Insight aus `distilled-insights.md`:
|
||||||
|
|
||||||
- Prüfe ob ein **gleichnamiger Trait** im Ziel-Genome existiert → direktes Match
|
- Prüfe ob eine **gleichnamige Capability** im Ziel-Genome existiert → direktes Match
|
||||||
- Prüfe ob ein **funktional äquivalenter Trait** existiert (anderer Name, gleicher Zweck) → adaptiertes Match
|
- Prüfe ob eine **funktional äquivalente Capability** existiert (anderer Name, gleicher Zweck) → adaptiertes Match
|
||||||
- Kein Match → **neuer Trait** (nur bei Score ≥ 8 in die Checkliste aufnehmen, aber IMMER als "neu" kennzeichnen – nie automatisch anwenden)
|
- Kein Match → **neue Capability** (nur bei Score ≥ 8 in die Checkliste aufnehmen, aber IMMER als "neu" kennzeichnen – nie automatisch anwenden)
|
||||||
|
|
||||||
### 2. Patch-Generierung
|
### 2. Patch-Generierung
|
||||||
|
|
||||||
Erstelle für jedes Match einen konkreten Änderungsvorschlag:
|
Erstelle für jedes Match einen konkreten Änderungsvorschlag:
|
||||||
|
|
||||||
- **Bestehender Trait:** Zeige den Ist-Zustand (relevanter Ausschnitt) und den vorgeschlagenen Soll-Zustand
|
- **Bestehende Capability:** Zeige den Ist-Zustand (relevanter Ausschnitt) und den vorgeschlagenen Soll-Zustand
|
||||||
- **Neuer Trait:** Zeige die vollständige neue Datei
|
- **Neue Capability:** Zeige die vollständige neue Datei
|
||||||
- Passe Platzhalter (`<project>`, `<local-path>` etc.) an die Werte dieses Repos an
|
- Passe Platzhalter (`<project>`, `<local-path>` etc.) an die Werte dieses Repos an
|
||||||
|
|
||||||
### 3. Checkliste formatieren
|
### 3. Checkliste formatieren
|
||||||
|
|
||||||
## Output-Format
|
## Output-Format
|
||||||
|
|
||||||
Schreibe das Ergebnis in `.github/genome/output/propagation-proposals.md`:
|
Schreibe das Ergebnis in `.github/genome/output/transfer-proposals.md`:
|
||||||
|
|
||||||
````markdown
|
````markdown
|
||||||
# Propagation Proposals
|
# Transfer Proposals
|
||||||
|
|
||||||
**Ziel-Repo:** <aktuelles Repo>
|
**Ziel-Repo:** <aktuelles Repo>
|
||||||
**Quelle:** <aus distilled-mutations übernehmen>
|
**Quelle:** <aus distilled-insights übernehmen>
|
||||||
**Erstellt:** <aktuelles Datum>
|
**Erstellt:** <aktuelles Datum>
|
||||||
**Vorschläge:** X Critical, Y Evolution
|
**Vorschläge:** X Critical, Y Evolution
|
||||||
|
|
||||||
|
|
@ -51,7 +51,7 @@ Schreibe das Ergebnis in `.github/genome/output/propagation-proposals.md`:
|
||||||
|
|
||||||
### 🔴 Critical
|
### 🔴 Critical
|
||||||
|
|
||||||
- [x] **`<trait-key>`** (Score N/10) – <Zusammenfassung>
|
- [x] **`<capability-key>`** (Score N/10) – <Zusammenfassung>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Änderung anzeigen</summary>
|
<summary>Änderung anzeigen</summary>
|
||||||
|
|
@ -67,7 +67,7 @@ Schreibe das Ergebnis in `.github/genome/output/propagation-proposals.md`:
|
||||||
|
|
||||||
### 🟡 Evolution (Score ≥ 7)
|
### 🟡 Evolution (Score ≥ 7)
|
||||||
|
|
||||||
- [x] **`<trait-key>`** (Score N/10) – <Zusammenfassung>
|
- [x] **`<capability-key>`** (Score N/10) – <Zusammenfassung>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Änderung anzeigen</summary>
|
<summary>Änderung anzeigen</summary>
|
||||||
|
|
@ -82,7 +82,7 @@ Schreibe das Ergebnis in `.github/genome/output/propagation-proposals.md`:
|
||||||
|
|
||||||
### 🟡 Evolution (Score < 7)
|
### 🟡 Evolution (Score < 7)
|
||||||
|
|
||||||
- [ ] **`<trait-key>`** (Score N/10) – <Zusammenfassung>
|
- [ ] **`<capability-key>`** (Score N/10) – <Zusammenfassung>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Änderung anzeigen</summary>
|
<summary>Änderung anzeigen</summary>
|
||||||
|
|
@ -104,21 +104,21 @@ Frage den User:
|
||||||
|
|
||||||
Wende dann die ausgewählten Patches an – mit folgenden Einschränkungen:
|
Wende dann die ausgewählten Patches an – mit folgenden Einschränkungen:
|
||||||
|
|
||||||
### Neue Traits: Bestätigung erforderlich
|
### Neue Capabilities: Bestätigung erforderlich
|
||||||
|
|
||||||
Bevor ein neuer Trait (kein Match im Ziel-Genome) angelegt wird, **immer einzeln bestätigen lassen**:
|
Bevor eine neue Capability (kein Match im Ziel-Genome) angelegt wird, **immer einzeln bestätigen lassen**:
|
||||||
|
|
||||||
> Soll ich `<trait-key>` als neuen Trait in `.github/<pfad>` anlegen?
|
> Soll ich `<capability-key>` als neue Capability in `.github/<pfad>` anlegen?
|
||||||
> Inhalt: <Kurzbeschreibung, 1 Satz>
|
> Inhalt: <Kurzbeschreibung, 1 Satz>
|
||||||
|
|
||||||
Ers nach expliziter Bestätigung anlegen. Nie mehrere neue Traits auf einmal ohne Bestätigung.
|
Erst nach expliziter Bestätigung anlegen. Nie mehrere neue Capabilities auf einmal ohne Bestätigung.
|
||||||
|
|
||||||
## Regeln
|
## Regeln
|
||||||
|
|
||||||
- Default-Auswahl: Critical = an, Evolution ≥ 7 = an, Evolution < 7 = aus
|
- Default-Auswahl: Critical = an, Evolution ≥ 7 = an, Evolution < 7 = aus
|
||||||
- Überspringe Vorschläge, bei denen der Ziel-Trait bereits den gleichen Stand hat (kein Diff)
|
- Überspringe Vorschläge, bei denen die Ziel-Capability bereits den gleichen Stand hat (kein Diff)
|
||||||
- Bei Konflikten (Ziel-Datei hat abweichende Struktur): markiere als ⚠️ und zeige beide Varianten
|
- Bei Konflikten (Ziel-Datei hat abweichende Struktur): markiere als ⚠️ und zeige beide Varianten
|
||||||
- Erstelle KEINE neuen Traits mit Score < 8
|
- Erstelle KEINE neuen Capabilities mit Score < 8
|
||||||
- Neue Traits immer einzeln bestätigen lassen – auch wenn mehrere selektiert wurden
|
- Neue Capabilities immer einzeln bestätigen lassen – auch wenn mehrere selektiert wurden
|
||||||
- Passe Einrückung und Stil an die Konventionen des Ziel-Repos an
|
- Passe Einrückung und Stil an die Konventionen des Ziel-Repos an
|
||||||
```
|
```
|
||||||
|
|
|
||||||
24
.github/prompts/genome.prompt.md
vendored
24
.github/prompts/genome.prompt.md
vendored
|
|
@ -45,31 +45,31 @@ Stelle dem User zu Beginn **immer** folgende Fragen über das `vscode_askQuestio
|
||||||
|
|
||||||
Warte auf die Antworten, bevor du mit Phase 1 beginnst.
|
Warte auf die Antworten, bevor du mit Phase 1 beginnst.
|
||||||
|
|
||||||
> Wenn Quell- und Ziel-Repo identisch sind: Extraction + Distillation durchführen, aber Propagation überspringen (sinnlos auf sich selbst).
|
> Wenn Quell- und Ziel-Repo identisch sind: Extraction + Distillation durchführen, aber Transfer überspringen (sinnlos auf sich selbst).
|
||||||
|
|
||||||
## Phase 1: Extraction
|
## Phase 1: Extraction
|
||||||
|
|
||||||
Führe das Extraction-Script aus:
|
Führe das Extraction-Script aus:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python .github/skills/genome/genome-extract.py --since "<zeitspanne>" --repo "<quell-repo>" --output ".github/genome/output/raw-mutations.md"
|
python .github/skills/genome/genome-extract.py --since "<zeitspanne>" --repo "<quell-repo>" --output ".github/genome/output/raw-improvements.md"
|
||||||
```
|
```
|
||||||
|
|
||||||
Prüfe das Ergebnis:
|
Prüfe das Ergebnis:
|
||||||
|
|
||||||
- Wenn 0 Traits gefunden: Melde "Keine Mutations im Zeitraum" und stoppe.
|
- Wenn 0 Capabilities gefunden: Melde "Keine Improvements im Zeitraum" und stoppe.
|
||||||
- Sonst: Zeige kurze Zusammenfassung (Anzahl Traits, Anzahl Mutations) und weiter zu Phase 2.
|
- Sonst: Zeige kurze Zusammenfassung (Anzahl Capabilities, Anzahl Improvements) und weiter zu Phase 2.
|
||||||
|
|
||||||
## Phase 2: Distillation
|
## Phase 2: Distillation
|
||||||
|
|
||||||
Führe jetzt die Distillation durch. Folge den Anweisungen aus `.github/prompts/genome-distill.prompt.md`:
|
Führe jetzt die Distillation durch. Folge den Anweisungen aus `.github/prompts/genome-distill.prompt.md`:
|
||||||
|
|
||||||
1. Lies `.github/genome/output/raw-mutations.md`
|
1. Lies `.github/genome/output/raw-improvements.md`
|
||||||
2. Klassifiziere jede Mutation (🔴 Critical / 🟡 Evolution / ⚪ Specialized)
|
2. Klassifiziere jedes Improvement (🔴 Critical / 🟡 Evolution / ⚪ Specialized)
|
||||||
3. Score den Übertragungswert (1–10)
|
3. Score den Übertragungswert (1–10)
|
||||||
4. Sanitize sensitive Daten
|
4. Sanitize sensitive Daten
|
||||||
5. Filtere Specialized + Score < 4
|
5. Filtere Specialized + Score < 4
|
||||||
6. Schreibe `.github/genome/output/distilled-mutations.md`
|
6. Schreibe `.github/genome/output/distilled-insights.md`
|
||||||
|
|
||||||
Zeige dem User eine Zusammenfassung:
|
Zeige dem User eine Zusammenfassung:
|
||||||
|
|
||||||
|
|
@ -77,17 +77,17 @@ Zeige dem User eine Zusammenfassung:
|
||||||
Distillation: X Critical, Y Evolution (Z Specialized entfernt)
|
Distillation: X Critical, Y Evolution (Z Specialized entfernt)
|
||||||
```
|
```
|
||||||
|
|
||||||
Wenn 0 Critical + 0 Evolution übrig: Melde "Keine übertragbaren Mutations" und stoppe.
|
Wenn 0 Critical + 0 Evolution übrig: Melde "Keine übertragbaren Insights" und stoppe.
|
||||||
|
|
||||||
## Phase 3: Propagation
|
## Phase 3: Transfer
|
||||||
|
|
||||||
> **Nur wenn Quell-Repo ≠ Ziel-Repo.**
|
> **Nur wenn Quell-Repo ≠ Ziel-Repo.**
|
||||||
|
|
||||||
Führe die Propagation durch. Folge den Anweisungen aus `.github/prompts/genome-propagate.prompt.md`:
|
Führe den Transfer durch. Folge den Anweisungen aus `.github/prompts/genome-propagate.prompt.md`:
|
||||||
|
|
||||||
1. Lies `.github/genome/output/distilled-mutations.md`
|
1. Lies `.github/genome/output/distilled-insights.md`
|
||||||
2. Scanne das Ziel-Genome (`.github/` des Ziel-Repos)
|
2. Scanne das Ziel-Genome (`.github/` des Ziel-Repos)
|
||||||
3. Matche Traits und generiere Patches
|
3. Matche Capabilities und generiere Patches
|
||||||
4. Zeige die Checkliste:
|
4. Zeige die Checkliste:
|
||||||
- `[x]` Critical (default an)
|
- `[x]` Critical (default an)
|
||||||
- `[x]` Evolution mit Score ≥ 7 (default an)
|
- `[x]` Evolution mit Score ≥ 7 (default an)
|
||||||
|
|
|
||||||
46
.github/skills/genome/SKILL.md
vendored
46
.github/skills/genome/SKILL.md
vendored
|
|
@ -1,30 +1,30 @@
|
||||||
# Genome Engine
|
# Genome Engine
|
||||||
|
|
||||||
Automatische Erkennung und Übertragung evolutionärer Verbesserungen an Copilot-Customization-Dateien (Skills, Agents, Prompts, Instructions) zwischen Repositories.
|
Automatische Erkennung und Übertragung von Verbesserungen am KI-Tooling (Skills, Agents, Prompts, Instructions) zwischen Repositories.
|
||||||
|
|
||||||
## Trigger-Phrasen
|
## Trigger-Phrasen
|
||||||
|
|
||||||
`genome`, `propagate`, `mutations übertragen`, `traits synchronisieren`, `genome extract`, `genome propagate`
|
`genome`, `transfer`, `improvements übertragen`, `capabilities synchronisieren`, `genome extract`, `genome transfer`
|
||||||
|
|
||||||
## Konzept
|
## Konzept
|
||||||
|
|
||||||
Die Genome Engine erkennt Verbesserungen an Copilot-Konfigurationsdateien über Git-History, destilliert sie in übertragbare "Growth Vectors" und schlägt konkrete Patches für andere Repos vor.
|
Die Genome Engine erkennt Verbesserungen an KI-Konfigurationsdateien über Git-History, destilliert sie in übertragbare "Insights" und schlägt konkrete Patches für andere Repos vor.
|
||||||
|
|
||||||
**Begriffe:**
|
**Begriffe:**
|
||||||
|
|
||||||
- **Trait** – Ein Skill, Agent, Prompt(-Verbund) oder Instructions-File
|
- **Capability** – Ein Skill, Agent, Prompt(-Verbund) oder Instructions-File
|
||||||
- **Genome** – Die Gesamtheit aller Traits eines Projekts
|
- **Genome** – Die Gesamtheit aller Capabilities eines Projekts
|
||||||
- **Mutation** – Ein Git-Commit-Delta an einem Trait
|
- **Improvement** – Ein Git-Commit-Delta an einer Capability
|
||||||
- **Growth Vector** – Destillierte, bewertete Mutation (bereinigt, klassifiziert, gescored)
|
- **Insight** – Destilliertes, bewertetes Improvement (bereinigt, klassifiziert, gescored)
|
||||||
- **Propagation** – Konkreter Änderungsvorschlag für ein Ziel-Genome
|
- **Transfer** – Konkreter Änderungsvorschlag für ein Ziel-Genome
|
||||||
|
|
||||||
## Pipeline
|
## Pipeline
|
||||||
|
|
||||||
| Phase | Tool | Input → Output |
|
| Phase | Tool | Input → Output |
|
||||||
| --------------- | ---------------------------- | ------------------------------------------------ |
|
| --------------- | ---------------------------- | --------------------------------------------------- |
|
||||||
| 1. Extraction | `genome-extract.py` | Git-History → `raw-mutations.md` |
|
| 1. Extraction | `genome-extract.py` | Git-History → `raw-improvements.md` |
|
||||||
| 2. Distillation | `genome-distill.prompt.md` | `raw-mutations.md` → `distilled-mutations.md` |
|
| 2. Distillation | `genome-distill.prompt.md` | `raw-improvements.md` → `distilled-insights.md` |
|
||||||
| 3. Propagation | `genome-propagate.prompt.md` | `distilled-mutations.md` + Ziel-Genome → Patches |
|
| 3. Transfer | `genome-propagate.prompt.md` | `distilled-insights.md` + Ziel-Genome → Patches |
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|
@ -36,18 +36,18 @@ Der Router-Prompt fragt nach Quell-Repo und Zeitspanne, dann orchestriert er all
|
||||||
|
|
||||||
## Dateien
|
## Dateien
|
||||||
|
|
||||||
| Datei | Ort | Zweck |
|
| Datei | Ort | Zweck |
|
||||||
| ---------------------------- | ------------------------ | --------------------------------------- |
|
| ---------------------------- | ------------------------ | --------------------------------------------- |
|
||||||
| `SKILL.md` | `.github/skills/genome/` | Diese Dokumentation |
|
| `SKILL.md` | `.github/skills/genome/` | Diese Dokumentation |
|
||||||
| `genome-extract.py` | `.github/skills/genome/` | Phase 1: Git-Scanning + Trait-Erkennung |
|
| `genome-extract.py` | `.github/skills/genome/` | Phase 1: Git-Scanning + Capability-Erkennung |
|
||||||
| `genome.prompt.md` | `.github/prompts/` | Orchestrator (Router für alle 3 Phasen) |
|
| `genome.prompt.md` | `.github/prompts/` | Orchestrator (Router für alle 3 Phasen) |
|
||||||
| `genome-distill.prompt.md` | `.github/prompts/` | Phase 2: Klassifizierung + Scoring |
|
| `genome-distill.prompt.md` | `.github/prompts/` | Phase 2: Klassifizierung + Scoring |
|
||||||
| `genome-propagate.prompt.md` | `.github/prompts/` | Phase 3: Patch-Generierung für Ziel |
|
| `genome-propagate.prompt.md` | `.github/prompts/` | Phase 3: Transfer-Vorschläge für Ziel |
|
||||||
| `Concept Genome Engine.md` | `.github/genome/` | Vollständiges Konzept-Dokument |
|
| `Concept Genome Engine.md` | `.github/genome/` | Vollständiges Konzept-Dokument |
|
||||||
|
|
||||||
## Trait-Erkennung
|
## Capability-Erkennung
|
||||||
|
|
||||||
Pfade werden automatisch zu Trait-Keys aufgelöst:
|
Pfade werden automatisch zu Capability-Keys aufgelöst:
|
||||||
|
|
||||||
```
|
```
|
||||||
.github/skills/gh-tickets/SKILL.md → skill/gh-tickets
|
.github/skills/gh-tickets/SKILL.md → skill/gh-tickets
|
||||||
|
|
|
||||||
32
.github/skills/genome/genome-extract.py
vendored
32
.github/skills/genome/genome-extract.py
vendored
|
|
@ -2,9 +2,9 @@
|
||||||
"""
|
"""
|
||||||
Genome Engine – Phase 1: Extraction
|
Genome Engine – Phase 1: Extraction
|
||||||
|
|
||||||
Extrahiert Mutations aus der Git-History für Copilot-Customization-Dateien.
|
Extrahiert Improvements aus der Git-History für KI-Tooling-Dateien.
|
||||||
Scannt git log für Änderungen im Genome-Scope (.github/skills, agents, prompts, instructions).
|
Scannt git log für Änderungen im Genome-Scope (.github/skills, agents, prompts, instructions).
|
||||||
Gruppiert Diffs nach Trait und gibt strukturiertes Markdown aus.
|
Gruppiert Diffs nach Capability und gibt strukturiertes Markdown aus.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
python .github/skills/genome/genome-extract.py --since "7 days ago"
|
python .github/skills/genome/genome-extract.py --since "7 days ago"
|
||||||
|
|
@ -64,7 +64,7 @@ def is_in_genome_scope(filepath: str) -> bool:
|
||||||
|
|
||||||
|
|
||||||
def get_trait_key(filepath: str, repo_path: str) -> str | None:
|
def get_trait_key(filepath: str, repo_path: str) -> str | None:
|
||||||
"""Leitet den Trait-Key aus einem Dateipfad ab."""
|
"""Leitet den Capability-Key aus einem Dateipfad ab."""
|
||||||
|
|
||||||
# Skills: skill/<ordnername>
|
# Skills: skill/<ordnername>
|
||||||
m = re.match(r"^\.github/skills/([^/]+)/", filepath)
|
m = re.match(r"^\.github/skills/([^/]+)/", filepath)
|
||||||
|
|
@ -107,7 +107,7 @@ def get_trait_key(filepath: str, repo_path: str) -> str | None:
|
||||||
|
|
||||||
|
|
||||||
def get_mutation_type(status: str) -> str:
|
def get_mutation_type(status: str) -> str:
|
||||||
"""Bestimmt den Mutation-Typ aus dem Git-Status-Buchstaben."""
|
"""Bestimmt den Improvement-Typ aus dem Git-Status-Buchstaben."""
|
||||||
if status.startswith("A"):
|
if status.startswith("A"):
|
||||||
return "member-added"
|
return "member-added"
|
||||||
elif status.startswith("D"):
|
elif status.startswith("D"):
|
||||||
|
|
@ -117,7 +117,7 @@ def get_mutation_type(status: str) -> str:
|
||||||
|
|
||||||
|
|
||||||
def extract_mutations(repo_path: str, since: str) -> dict[str, list[dict]]:
|
def extract_mutations(repo_path: str, since: str) -> dict[str, list[dict]]:
|
||||||
"""Extrahiert alle Mutations aus der Git-History."""
|
"""Extrahiert alle Improvements aus der Git-History."""
|
||||||
mutations: dict[str, list[dict]] = defaultdict(list)
|
mutations: dict[str, list[dict]] = defaultdict(list)
|
||||||
|
|
||||||
# Git-Log abrufen
|
# Git-Log abrufen
|
||||||
|
|
@ -201,26 +201,26 @@ def extract_mutations(repo_path: str, since: str) -> dict[str, list[dict]]:
|
||||||
def generate_markdown(mutations: dict[str, list[dict]], repo_path: str, since: str) -> str:
|
def generate_markdown(mutations: dict[str, list[dict]], repo_path: str, since: str) -> str:
|
||||||
"""Generiert die Markdown-Ausgabe."""
|
"""Generiert die Markdown-Ausgabe."""
|
||||||
lines = []
|
lines = []
|
||||||
lines.append("# Raw Mutations")
|
lines.append("# Raw Improvements")
|
||||||
lines.append("")
|
lines.append("")
|
||||||
lines.append(f"**Extrahiert:** {datetime.now().strftime('%Y-%m-%d %H:%M')}")
|
lines.append(f"**Extrahiert:** {datetime.now().strftime('%Y-%m-%d %H:%M')}")
|
||||||
lines.append(f"**Zeitraum:** seit {since}")
|
lines.append(f"**Zeitraum:** seit {since}")
|
||||||
lines.append(f"**Repository:** {Path(repo_path).resolve().name}")
|
lines.append(f"**Repository:** {Path(repo_path).resolve().name}")
|
||||||
lines.append(f"**Traits mit Mutations:** {len(mutations)}")
|
lines.append(f"**Capabilities mit Improvements:** {len(mutations)}")
|
||||||
lines.append("")
|
lines.append("")
|
||||||
lines.append("---")
|
lines.append("---")
|
||||||
lines.append("")
|
lines.append("")
|
||||||
|
|
||||||
if not mutations:
|
if not mutations:
|
||||||
lines.append("*Keine Mutations im angegebenen Zeitraum gefunden.*")
|
lines.append("*Keine Improvements im angegebenen Zeitraum gefunden.*")
|
||||||
else:
|
else:
|
||||||
for trait_key in sorted(mutations.keys()):
|
for trait_key in sorted(mutations.keys()):
|
||||||
trait_mutations = mutations[trait_key]
|
trait_mutations = mutations[trait_key]
|
||||||
|
|
||||||
lines.append(f"## Trait: `{trait_key}`")
|
lines.append(f"## Capability: `{trait_key}`")
|
||||||
lines.append("")
|
lines.append("")
|
||||||
lines.append("| Mutations | Dateien |")
|
lines.append("| Improvements | Dateien |")
|
||||||
lines.append("|-----------|---------|")
|
lines.append("|-------------|---------|")
|
||||||
|
|
||||||
unique_files = sorted(set(m["file"] for m in trait_mutations))
|
unique_files = sorted(set(m["file"] for m in trait_mutations))
|
||||||
lines.append(f"| {len(trait_mutations)} | {', '.join(unique_files)} |")
|
lines.append(f"| {len(trait_mutations)} | {', '.join(unique_files)} |")
|
||||||
|
|
@ -259,11 +259,11 @@ def main():
|
||||||
parser = argparse.ArgumentParser(description="Genome Engine – Extraction")
|
parser = argparse.ArgumentParser(description="Genome Engine – Extraction")
|
||||||
parser.add_argument("--since", default="7 days ago", help='Zeitspanne (z.B. "7 days ago")')
|
parser.add_argument("--since", default="7 days ago", help='Zeitspanne (z.B. "7 days ago")')
|
||||||
parser.add_argument("--repo", default=".", help="Pfad zum Repository")
|
parser.add_argument("--repo", default=".", help="Pfad zum Repository")
|
||||||
parser.add_argument("--output", default="", help="Output-Pfad (default: .github/genome/output/raw-mutations.md)")
|
parser.add_argument("--output", default="", help="Output-Pfad (default: .github/genome/output/raw-improvements.md)")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
repo_path = os.path.abspath(args.repo)
|
repo_path = os.path.abspath(args.repo)
|
||||||
output_path = args.output or os.path.join(repo_path, ".github/genome/output/raw-mutations.md")
|
output_path = args.output or os.path.join(repo_path, ".github/genome/output/raw-improvements.md")
|
||||||
|
|
||||||
print(f"Genome Extract: Scanning commits since '{args.since}'...")
|
print(f"Genome Extract: Scanning commits since '{args.since}'...")
|
||||||
|
|
||||||
|
|
@ -278,9 +278,9 @@ def main():
|
||||||
total_mutations = sum(len(v) for v in mutations.values())
|
total_mutations = sum(len(v) for v in mutations.values())
|
||||||
print()
|
print()
|
||||||
print("Extraction abgeschlossen:")
|
print("Extraction abgeschlossen:")
|
||||||
print(f" Traits: {len(mutations)}")
|
print(f" Capabilities: {len(mutations)}")
|
||||||
print(f" Mutations: {total_mutations}")
|
print(f" Improvements: {total_mutations}")
|
||||||
print(f" Output: {output_path}")
|
print(f" Output: {output_path}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue