Prozessmodelle versioniert unter prozesse/<name>/ ablegen

Jedes Modell bekommt einen eigenen Ordner mit Steckbrief (README.md,
Status Entwurf|abgenommen), der maßgeblichen Arbeitsschritt-.md und der
daraus erzeugten .bpmn (ADR 0003).

- scripts/pruefe_prozesse.py prüft Ordnername, Dateien, Status und ob
  jede .bpmn byte-gleich mit der Umwandlung ihrer .md ist; --erzeugen
  erzeugt alle .bpmn neu. md_to_bpmn.py arbeitet deterministisch.
- tests/test_pruefe_prozesse.py: Bestandsprüfung plus 11 Fälle für die
  Prüflogik; pytest.ini sammelt .agents/skills und tests.
- Die in Anleitung.md genannten, nie committeten Beispiele liegen jetzt
  unter .agents/skills/sn-bpmn/beispiele/ und werden mitgeprüft.
- Skill sn-bpmn: Entwürfe nach entwuerfe/, neuer Schritt 5 „Ablegen“.
- Vorlage docs/vorlagen/prozess_readme.md, Doku und Fallstricke ergänzt.
- Tests: python -m pytest -q -> 44 bestanden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-23 13:02:48 +02:00
co-authored by Claude Opus 5.5
parent 012509b6d1
commit 55c024dbc9
25 changed files with 835 additions and 35 deletions
+2 -2
View File
@@ -9,10 +9,10 @@
| `leitfaden/03_arbeitsweise.md` | stabil | Einstieg, Arbeitszyklus, Checklisten |
| `leitfaden/04_werkzeuge_einrichten.md` | stabil | Einrichtung: Claude Code als CLI und in VS Code; von null zur ersten Aufgabe |
| `leitfaden/05_git_arbeitsweise.md` | **verbindlich** | Branches, Pull Requests, was der Agent darf |
| `vorlagen/` | Vorlagen | Issue, PR, Übergabe, Repo-`AGENTS.md` |
| `vorlagen/` | Vorlagen | Issue, PR, Übergabe, Repo-`AGENTS.md`, Steckbrief eines Prozesses |
Die Fachdoku des Konverters (Markdown-Syntax, Elementkatalog, Modellierregeln) liegt beim Skill in
`.agents/skills/sn-bpmn/`.
`.agents/skills/sn-bpmn/`, die versionierten Prozessmodelle in `prozesse/` (Regeln: `prozesse/README.md`).
Regel: **Lebende** Dokumente werden mit jeder Änderung gepflegt, **Momentaufnahmen** nicht nachträglich geändert
(neue Analyse = neue Datei mit Datum).
@@ -0,0 +1,33 @@
# 0003 – Prozessmodelle liegen versioniert in `prozesse/<name>/`, die `.md` ist maßgeblich
Status: vorgeschlagen · Datum: 2026-09-23 · Beteiligte: AG Prozesse
## Kontext
Der Skill `sn-bpmn` legt Entwürfe in `entwuerfe/` ab; der Ordner ist nicht versioniert. Fertige Modelle hatten damit
keinen gemeinsamen Ort: Wer ein Modell ändern wollte, musste die letzte Fassung bei der Kollegin erfragen, und niemand
konnte nachvollziehen, welcher Stand abgenommen war. PICTURE ist Zielsystem des Imports, aber kein Ort für Review
und Versionsgeschichte.
## Entscheidung
Jedes Prozessmodell liegt in einem eigenen Ordner `prozesse/<name>/` mit genau drei Dateien: Steckbrief `README.md`,
Arbeitsschritt-Beschreibung `<name>.md` und die daraus erzeugte `<name>.bpmn`.
- Die **`.md` ist die maßgebliche Quelle**. Die `.bpmn` wird mit `python scripts/pruefe_prozesse.py --erzeugen`
erzeugt und mitcommittet, damit sie ohne Python aus Gitea heruntergeladen und in PICTURE importiert werden kann.
- Ein **Test prüft**, dass jede `.bpmn` byte-gleich mit der Umwandlung ihrer `.md` ist. Das geht, weil
`md_to_bpmn.py` deterministisch arbeitet (keine Zufalls-IDs, keine Zeitstempel).
- Der **Steckbrief** trägt den Status `Entwurf` oder `abgenommen`. Entwürfe dürfen auf `main`, damit mehrere
Personen daran arbeiten können; die Abnahme ist ein eigener Pull Request, der nur den Status ändert.
- Im Ordner liegen **keine weiteren Dateien**, insbesondere keine Originalunterlagen.
## Folgen
Modelle sind reviewbar (Diff der `.md` statt XML), versioniert und mit Status versehen. Eine Änderung am Konverter,
die die Ausgabe verändert, macht alle abgelegten `.bpmn` rot, bis sie neu erzeugt sind — gewollt: Der Pull Request
zeigt dann, welche Modelle sich im Bild ändern, und sie werden gemeinsam neu erzeugt. Nacharbeiten, die nur in
PICTURE gemacht werden (Layout, Zusatzfelder), gehen bei der nächsten Erzeugung verloren und gehören deshalb in die
`.md` oder in den Steckbrief.
## Verworfene Alternativen
Nur die `.md` versionieren (Fachleute ohne Python kämen nicht an die `.bpmn`); nur die `.bpmn` versionieren (XML ist
nicht reviewbar, die Quelle ginge verloren); Status in Kopfzeilen der `.md` (der Parser würde Zeilen wie
„Verantwortliche Stelle: …“ als Schritt deuten); Ablage nur in PICTURE (keine Versionsgeschichte, kein Review).
+1
View File
@@ -27,3 +27,4 @@ Kurz, mit Grund.
|---|---|---|
| 0001 | Arbeitsweise aus AG_QGIS/Projektwissen übernehmen, ohne Historie | vorgeschlagen |
| 0002 | Branchmodell: `main` plus Arbeitsbranches | vorgeschlagen |
| 0003 | Prozessmodelle liegen versioniert in `prozesse/<name>/`, die `.md` ist maßgeblich | vorgeschlagen |
+11 -4
View File
@@ -14,7 +14,7 @@ Einrichtung Schritt für Schritt: `04_werkzeuge_einrichten.md`.
Wer nur modelliert, braucht Git kaum: Claude Code im Ordner `AG_Prozesse` starten, Quelle nennen, Entwurf prüfen,
umwandeln. Git und Pull Requests kommen erst ins Spiel, wenn sich am Konverter, an den Regeln oder an der Doku
etwas ändern soll — oder wenn ein abgenommenes Modell im Repository abgelegt wird (STATUS, Baustelle 2).
etwas ändern soll — oder wenn ein Modell unter `prozesse/` abgelegt oder geändert wird (Abschnitt 2).
## 2. Einen Prozess modellieren
@@ -26,6 +26,8 @@ flowchart TD
C -->|"passt so, wandle um"| D["&lt;name&gt;.bpmn"]
D --> E["Import in PICTURE"]
E -->|"Darstellungsfehler"| F["Issue anlegen<br/><i>Skill sn-ticket</i>"]
E -->|"für alle ablegen"| G["prozesse/&lt;name&gt;/<br/>Status Entwurf, Pull Request"]
G -->|"fachlich bestätigt"| H["Pull Request: Status abgenommen"]
```
- **Der Agent wartet nach dem Entwurf.** Er wandelt erst um, wenn du ausdrücklich zustimmst. Das ist Absicht: die
@@ -35,6 +37,10 @@ flowchart TD
- **Rollen statt Personen.** Verantwortliche immer als Funktion („Sachbearbeitung"), nie mit Namen.
- **Darstellungsfehler in PICTURE** (Kanten durch Elemente, überlappende Lanes) sind Fehler des Konverters, nicht
deines Entwurfs. Issue anlegen, mit dem Entwurf als Beispiel (bereinigt).
- **Ablegen unter `prozesse/`** macht das Modell für alle sichtbar und versioniert (ADR 0003, Regeln in
`prozesse/README.md`). Die `.md` ist maßgeblich: Was nur in PICTURE nachgebessert wird, ist bei der nächsten
Erzeugung weg. **Abnahme** heißt: ein eigener Pull Request, der im Steckbrief den Status auf `abgenommen` setzt;
das Review dieses Pull Requests ist die fachliche Bestätigung.
## 3. Wie man einem Agenten einen Auftrag gibt
@@ -90,6 +96,7 @@ Werkzeugs (Claude Auto-Memory) ist ein Notizzettel; teilbares Wissen gehört in
| `.claude/commands/` | Slash-Befehle, z. B. `/hallo` |
| `.claude/settings.json` | Berechtigungen – sperrt `git push`, `merge`, `tag` |
| `docs/` | auf Abruf, nicht automatisch |
| `prozesse/` | auf Abruf; versionierte Modelle mit Steckbrief |
| `referenz/`, `entwuerfe/` | nur, wenn du darauf verweist; nicht versioniert |
| `CLAUDE.local.md` | ja, lokal, nicht versioniert |
@@ -114,15 +121,15 @@ kleine PRs machen.
**Vor dem PR**
- [ ] Issue verlinkt, Branch von `main`
- [ ] `python -m pytest -q .agents/skills` grün, `python scripts/pruefe_umlaute.py` ohne Funde
- [ ] Bei geänderter BPMN-Ausgabe: PICTURE-Import dokumentiert
- [ ] `python -m pytest -q` grün, `python scripts/pruefe_umlaute.py` ohne Funde
- [ ] Bei geänderter BPMN-Ausgabe: PICTURE-Import dokumentiert, `.bpmn` unter `prozesse/` neu erzeugt
- [ ] Keine personenbezogenen Daten, keine Originalunterlagen
- [ ] Übergabenotiz im PR; Wissensbasis nachgezogen, falls nötig
- [ ] Diff gelesen: nur, was das Issue verlangt
**Review**
- [ ] Fachlich richtig? (BPMN-Regeln, Begriffe)
- [ ] Fachlich richtig? (BPMN-Regeln, Begriffe; bei Modellen: Diff der `.md` lesen, nicht der `.bpmn`)
- [ ] Tests vorhanden und sinnvoll (nicht nur angepasst)?
- [ ] Umfang überschaubar (< 400 Zeilen)?
- [ ] Nach dem Merge: `STATUS.md`
+5 -5
View File
@@ -72,7 +72,7 @@ Die Skripte (`hallo.py`, `gitea.py`, `setup_workspace.py`, `pruefe_umlaute.py`)
git clone https://entwicklung.flurneuordnung-sachsen.de/AG_Prozesse/Projektwissen.git AG_Prozesse
cd AG_Prozesse
python scripts/setup_workspace.py # spiegelt die Skills, holt ggf. weitere Repos
python -m pytest -q .agents/skills # erwartet: alle Tests grün
python -m pytest -q # erwartet: alle Tests grün
```
Der Zielordner `AG_Prozesse` ist bewusst anders benannt als das Repository: darin können später weitere
@@ -116,8 +116,8 @@ Die Auto-Memory ist lokal und wird nicht geteilt; Teilbares gehört nach `docs/`
| Python | `ms-python.python` | Syntax, Interpreterwahl, Debugger |
| Markdown Preview Mermaid Support | `bierner.markdown-mermaid` | zeigt Mermaid-Diagramme in der Vorschau |
Ein BPMN-Betrachter als Erweiterung ist nicht nötig: `md_to_bpmn.py` kann eine Vorschau ohne PICTURE erzeugen,
siehe `.agents/skills/sn-bpmn/Anleitung.md`.
Zum Ansehen einer `.bpmn` ohne PICTURE eignet sich der Camunda Modeler (Desktop, offline) oder `demo.bpmn.io`,
siehe `.agents/skills/sn-bpmn/Anleitung.md` Abschnitt „Diagramm vorab prüfen“.
### 4.2 Persönliche Einstellungen
@@ -152,7 +152,7 @@ keinen `.vscode/`-Ordner. Wer sie haben will, kopiert sie sich in die eigene `se
## 6. Von null zur ersten Aufgabe (etwa eine Stunde)
1. Abschnitt 2 durcharbeiten; `python -m pytest -q .agents/skills` ist grün.
1. Abschnitt 2 durcharbeiten; `python -m pytest -q` ist grün.
2. Variante A oder B einrichten. Prüfung: der Agent nennt auf Nachfrage die Regeln aus `AGENTS.md`.
3. `/hallo` ausführen — holt den Stand.
4. Zum Kennenlernen einen kleinen, unkritischen Prozess modellieren lassen (Skill `sn-bpmn`), den Entwurf
@@ -171,7 +171,7 @@ keinen `.vscode/`-Ordner. Wer sie haben will, kopiert sie sich in die eigene `se
- [ ] `git --version` und `python --version` (≥ 3.11) laufen, `python -m pytest --version` ohne Fehler
- [ ] `git config user.email` im Ordner `AG_Prozesse` liefert die Adresse des Gitea-Kontos
- [ ] `python scripts/setup_workspace.py` ohne Fehler, `.claude/skills/` vorhanden
- [ ] `python -m pytest -q .agents/skills` grün
- [ ] `python -m pytest -q` grün
- [ ] `python scripts/hallo.py` läuft und zeigt den Stand
- [ ] `python scripts/gitea.py tickets` läuft
- [ ] Claude Code im Ordner `AG_Prozesse` gestartet; `/context` zeigt `CLAUDE.md` und `AGENTS.md`
+1 -1
View File
@@ -33,7 +33,7 @@ git add .agents/skills/sn-bpmn/md_to_bpmn.py .agents/skills/sn-bpmn/test_md_to_b
git commit -m "Lane-Beschriftung bricht lange Rollennamen um (#12)"
# 4. Prüfen
python -m pytest -q .agents/skills
python -m pytest -q
python scripts/pruefe_umlaute.py
# 5. Push — durch den Menschen, mit dessen Zugangsdaten
+6 -2
View File
@@ -18,8 +18,7 @@ Skills sind übernommen, alles QGIS- und Plugin-Spezifische ist entfernt. Kern i
## Offene Baustellen (priorisiert)
1. **Ersten Stand auf Gitea bringen** (`main`) und Branch-Schutz für `main` setzen (nur per Pull Request).
2. **Ablageort für abgenommene Prozessmodelle festlegen.** Entwürfe liegen unversioniert in `entwuerfe/`.
Vorschlag: `prozesse/<name>/<name>.md` plus `<name>.bpmn`, versioniert, Änderungen per Pull Request. → ADR.
2. **ADR 0003 (Ablage in `prozesse/`) vom Team annehmen lassen**, dann den ersten echten Prozess ablegen.
3. **Glossar um BPMN-/PICTURE-Begriffe ergänzen** und die Flurbereinigungsbegriffe auf das prüfen, was für
Prozesse gebraucht wird.
4. **Leitfäden vom Team gegenlesen lassen.** `docs/leitfaden/03–05` sind für die Prozessarbeit neu gefasst;
@@ -29,6 +28,11 @@ Skills sind übernommen, alles QGIS- und Plugin-Spezifische ist entfernt. Kern i
## Erledigt
- 23.09.2026 **Ablage der Prozessmodelle** in `prozesse/<name>/` mit Steckbrief, `.md` und erzeugter `.bpmn`
(ADR 0003). `scripts/pruefe_prozesse.py` prüft Struktur, Status und Aktualität der `.bpmn`, auch als Test.
Die in `Anleitung.md` genannten, aber nie committeten Beispiele liegen jetzt unter
`.agents/skills/sn-bpmn/beispiele/`.
- 23.09.2026 **Repository aus AG_QGIS/Projektwissen abgeleitet** (Stand `decd2a0` bzw. `BPMN-Skill` @ `6efcac4`),
ohne Historie. Skripte auf die Organisation `AG_Prozesse` umgestellt, Hauptbranch `main`, Test über `pytest`
(32 Tests grün), `pruefe_umlaute.py` prüft jetzt den Workspace selbst.
+2 -2
View File
@@ -2,7 +2,7 @@
<Was soll am Ende möglich sein? Ein Satz aus Nutzersicht.>
## Betroffen
Bereich: Prozessmodell | Konverter `md_to_bpmn.py` | Skill | Skripte | Doku
Bereich: Prozessmodell (`prozesse/<name>/`) | Konverter `md_to_bpmn.py` | Skill | Skripte | Doku
Dateien (falls bekannt):
## Fachlicher Hintergrund
@@ -11,7 +11,7 @@ Dateien (falls bekannt):
## Abnahmekriterien
- [ ] <beobachtbares Verhalten 1>
- [ ] <beobachtbares Verhalten 2>
- [ ] Bei Änderungen am Konverter: Test vorhanden, `python -m pytest -q .agents/skills` grün
- [ ] Bei Änderungen am Konverter: Test vorhanden, `python -m pytest -q` grün
- [ ] PICTURE-Import: <nötig / nicht nötig>
## Nicht Teil dieses Issues
+19
View File
@@ -0,0 +1,19 @@
# <Name des Prozesses>
| | |
|---|---|
| Status | Entwurf |
| Stand | JJJJ-MM-TT |
| Zuständig (Funktion) | <z. B. Sachbearbeitung Flurbereinigung – nie eine Person> |
| Rechtsgrundlage | <z. B. § 41 FlurbG, oder „–“> |
| Quelle | <Art und Stand der Vorlage, z. B. „Dienstanweisung, Fassung 2025“ – nicht die Datei selbst> |
| PICTURE-Import geprüft | <JJJJ-MM-TT, PICTURE-Version> \| noch nicht |
## Zweck
<Zwei bis drei Sätze: Was leistet der Prozess, wann beginnt und wann endet er.>
## Annahmen und offene Punkte
<Was bei der Modellierung angenommen wurde und fachlich bestätigt werden muss. Leer, sobald abgenommen.>
## Änderungen
<Neueste oben: Datum – was – Pull Request.>
+2 -1
View File
@@ -2,8 +2,9 @@
<Zwei Sätze. Issue: #…>
## Wie geprüft
- `python -m pytest -q .agents/skills`: <Ergebniszeile>
- `python -m pytest -q`: <Ergebniszeile>
- `python scripts/pruefe_umlaute.py`: <Ergebniszeile>
- Bei Modellen unter `prozesse/`: `.bpmn` mit `python scripts/pruefe_prozesse.py --erzeugen` erzeugt
- PICTURE-Import: <PICTURE-Version, Datei, Ergebnis> | nicht nötig, weil …
## Übergabenotiz
+12
View File
@@ -5,6 +5,18 @@ Kurz, konkret, mit Datum und Quelle. Neue Einträge oben in der passenden Rubrik
## BPMN und PICTURE (Skill sn-bpmn, md_to_bpmn.py)
- **Jede Änderung an der Ausgabe von `md_to_bpmn.py` macht die abgelegten `.bpmn` rot.** Der Test in
`tests/test_pruefe_prozesse.py` vergleicht jede `.bpmn` unter `prozesse/` und in `beispiele/` byte-genau mit der
Umwandlung ihrer `.md`. Nach einer Konverteränderung `python scripts/pruefe_prozesse.py --erzeugen` ausführen und
die neu erzeugten Dateien mit in den Pull Request nehmen. Das setzt voraus, dass der Konverter deterministisch
bleibt: keine Zufalls-IDs, keine Zeitstempel, keine Reihenfolge aus `set`-Iteration. (ADR 0003, 23.09.2026)
- **Metadaten gehören nicht als Kopfzeile in die Arbeitsschritt-`.md`.** `parse_markdown()` liest eine Zeile wie
`Verantwortliche Stelle: …` als Schritt mit ID `Verantwortliche` und Typ `Stelle` und bricht ab. Status und Stand
stehen deshalb im Steckbrief `README.md` des Prozessordners. (23.09.2026)
- **Zuständigkeit gilt auch für Gateways und Ereignisse.** Ohne `Rolle:`-Präfix landen sie in der Lane
„Nicht zugeordnet“. Ein `?` stört nur vor dem Doppelpunkt: `Sachbearbeitung: Antrag vollständig?` funktioniert.
(23.09.2026, beim Erstellen der Beispiele)
- **Ein Gateway hat in PICTURE nur vier feste Anschlusspunkte (N/O/S/W auf der Rautenkontur), keinen
variablen Rand wie ein Rechteck.** Eine Kante, die diesen Punkt verlässt bzw. dort ankommt, darf sich
danach **nicht** direkt zur Ziel-/Quellkoordinate drehen, wenn diese auf der anderen Achse liegt – sonst