Eingangsordner input/ und Skill sn-einlesen (#5)
- input/ ist lokal und nicht versioniert (.gitignore); scripts/einlesen.py legt ihn bei Bedarf an. - scripts/einlesen.py ordnet jede Datei ein: abgelehnt (kein .md, nicht UTF-8, leer, Unterordner), neu, geändert, eingelesen. Für neue und geänderte Dateien: Prozessname, Ordnernamen-Vorschlag, ob schon eine Arbeitsschritt-.md, und ähnliche Prozesse aus prozesse/ und entwuerfe/. „vermerk“ schreibt nach Erfolg eine erste Zeile <!-- eingelesen: <Zeitstempel> | neu|aktualisiert | <Ziel> | inhalt: <sha> -->; die Prüfsumme erkennt spätere Änderungen. Zeilenenden bleiben erhalten. - Skill sn-einlesen: Übersicht, Bestandsvergleich, Entscheidung des Nutzers, neue Prozesse durch sn-bpmn, Vermerk nur bei Erfolg. - docs/leitfaden/07_prozesse_einlesen.md: Ablauf für neue Nutzer. - AGENTS.md, README, Leitfaden 03, Skill sn-bpmn, Fallstricke, STATUS. - Tests: python -m pytest -q -> 79 bestanden (18 neu in tests/test_einlesen.py). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,9 @@ schreibst oder bearbeitest.
|
||||
## Ablauf
|
||||
|
||||
1. **Quelle ermitteln.** Frage nach der Rohtext-, Word- oder PDF-Quelle,
|
||||
falls keine angegeben oder angehängt wurde. Gibt es den Prozess schon
|
||||
falls keine angegeben oder angehängt wurde. Liegen Beschreibungen im
|
||||
Eingangsordner `input/`, übernimmt der Skill `sn-einlesen` die Steuerung
|
||||
und ruft diesen Skill je Datei auf. Gibt es den Prozess schon
|
||||
unter `prozesse/<name>/`, ist dessen `<name>.md` der Ausgangspunkt:
|
||||
dann auf einem Arbeitsbranch direkt dort ändern statt in `entwuerfe/`,
|
||||
und nach Schritt 3 mit Schritt 5 weitermachen.
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
---
|
||||
name: sn-einlesen
|
||||
description: Liest den Eingangsordner input/ ein - prüft die Dateien (vorerst nur .md), sucht zu jeder neuen Prozessbeschreibung bereits vorhandene Prozesse, lässt den Nutzer über das weitere Vorgehen entscheiden, führt neue Prozesse durch den Skill sn-bpmn und vermerkt erfolgreiches Einlesen mit Zeitstempel in der Datei. Verwenden bei "lies input ein", "einlesen", "neue Prozesse im Eingang", "was liegt in input".
|
||||
---
|
||||
|
||||
# Eingangsordner einlesen
|
||||
|
||||
`input/` im Workspace-Root ist der Eingang für Prozessbeschreibungen. Er ist **nicht versioniert** (`.gitignore`)
|
||||
und kann interne Inhalte enthalten. Ablauf für Menschen: `docs/leitfaden/07_prozesse_einlesen.md`.
|
||||
|
||||
**Grundregeln**
|
||||
- Dateien in `input/` werden **nie gelöscht, verschoben oder umbenannt**. Der einzige Eingriff ist der Vermerk
|
||||
nach erfolgreichem Einlesen – über das Skript, nie von Hand.
|
||||
- **Eine Datei nach der anderen**, jede bis zu einer Entscheidung des Nutzers. Nicht mehrere Prozesse parallel
|
||||
entwerfen.
|
||||
- Inhalte aus `input/` landen nur bereinigt (ohne Namen, Aktenzeichen, Verfahrensdaten) in `entwuerfe/` oder
|
||||
`prozesse/`.
|
||||
|
||||
## 1. Eingang prüfen
|
||||
|
||||
```bash
|
||||
python scripts/einlesen.py --json
|
||||
```
|
||||
|
||||
Das Skript legt `input/` an, falls es fehlt, und ordnet jede Datei ein:
|
||||
|
||||
| Status | Bedeutung | Was tun |
|
||||
|---|---|---|
|
||||
| `abgelehnt` | kein `.md` (vorerst nur Markdown), keine UTF-8-Datei, leer oder Unterordner | Nur melden, mit Grund. Nicht öffnen, nicht umwandeln. Hinweis, wie es geht (`07_prozesse_einlesen.md` Abschnitt 2). |
|
||||
| `eingelesen` | Vermerk vorhanden, Inhalt seitdem unverändert | Überspringen, nur in der Zusammenfassung nennen. |
|
||||
| `neu` | `.md` ohne Vermerk | Abschnitt 2. |
|
||||
| `geändert` | Vermerk vorhanden, Inhalt danach geändert | Abschnitt 2; dem Nutzer sagen, wann und wohin sie zuletzt eingelesen wurde (`vermerk`). |
|
||||
|
||||
Dem Nutzer zuerst eine kurze Übersicht geben (je Status die Dateien), dann mit der ersten neuen oder
|
||||
geänderten Datei beginnen. Ist nichts zu tun: ein Satz, fertig.
|
||||
|
||||
## 2. Je Datei: Gibt es den Prozess schon?
|
||||
|
||||
1. Datei lesen. In zwei Sätzen zusammenfassen, welchen Prozess sie beschreibt (Anlass, Ergebnis, Beteiligte
|
||||
als Funktionen).
|
||||
2. Bestand prüfen. Das Skript liefert `kandidaten` (Name und Wortüberschneidung, Schwelle 0,25) und die Liste
|
||||
`bestand` aller Prozesse unter `prozesse/` und lokalen Entwürfe in `entwuerfe/`. **Die Zahl ist nur ein
|
||||
Hinweis:** die `.md` der Kandidaten lesen und fachlich beurteilen, ob derselbe Ablauf gemeint ist. Auch die
|
||||
Titel in `bestand` durchgehen – ein anders benannter Prozess kann derselbe sein.
|
||||
3. Ergebnis mitteilen: „kein vorhandener Prozess“ oder „ähnlich zu …, weil …“ mit den Unterschieden.
|
||||
|
||||
## 3. Nutzer entscheiden lassen
|
||||
|
||||
**Gibt es einen passenden vorhandenen Prozess**, den Nutzer fragen (in Claude Code mit der Rückfrage-Funktion,
|
||||
eine Frage je Datei) – und nichts tun, bevor er geantwortet hat:
|
||||
|
||||
| Option | Folge |
|
||||
|---|---|
|
||||
| **Vorhandenen Prozess aktualisieren** | Abschnitt 4b |
|
||||
| **Als neuen, eigenen Prozess anlegen** (Namen vorschlagen, `vorschlag_name` als Ausgangspunkt, nicht gleich dem vorhandenen) | Abschnitt 4a |
|
||||
| **Datei überspringen** | Kein Vermerk; die Datei erscheint beim nächsten Mal wieder als `neu`/`geändert`. |
|
||||
| **Einlesen beenden** | Zusammenfassung (Abschnitt 6), restliche Dateien unberührt. |
|
||||
|
||||
**Gibt es keinen passenden Prozess**, ist die Datei ein neuer Prozess: Namensvorschlag nennen und mit 4a
|
||||
beginnen. Der Nutzer kann den Namen dabei ändern.
|
||||
|
||||
## 4a. Neuer Prozess – wie im Skill `sn-bpmn`
|
||||
|
||||
Den Skill `sn-bpmn` ab Schritt 2 durchlaufen, mit der Datei aus `input/` als Quelle:
|
||||
- Ist die Datei schon eine gültige Arbeitsschritt-`.md` (`arbeitsschritt_md: true`), sie nach
|
||||
`entwuerfe/<name>.md` kopieren (ohne Vermerkzeilen), gegen `Modellierregeln.md` prüfen und Abweichungen nennen.
|
||||
Sonst den Entwurf aus dem Rohtext ableiten, wie in `sn-bpmn` Schritt 2.
|
||||
- **Auf Freigabe warten** (`sn-bpmn` Schritt 3). Vorschau anbieten: `python scripts/vorschau.py entwuerfe/<name>.md`.
|
||||
- Nach Freigabe umwandeln (`sn-bpmn` Schritt 4). Das ist der **Erfolg** für einen neuen Prozess.
|
||||
- Ablegen unter `prozesse/` nur auf Wunsch (`sn-bpmn` Schritt 5; braucht ein Issue und einen Pull Request).
|
||||
|
||||
## 4b. Vorhandenen Prozess aktualisieren
|
||||
|
||||
- **Liegt er unter `prozesse/`:** Änderungen an versionierten Modellen gehen über Issue, Branch und Pull Request
|
||||
(`AGENTS.md`). Gibt es kein Issue, einen Entwurf vorbereiten (Skill `sn-ticket`) und warten. Dann auf dem
|
||||
Branch `prozesse/<name>/<name>.md` um die neuen Inhalte ergänzen, Unterschiede dem Nutzer zeigen, auf
|
||||
Freigabe warten, `python scripts/pruefe_prozesse.py --erzeugen`, `python -m pytest -q`, im Steckbrief unter
|
||||
„Änderungen“ eintragen. **Erfolg** = Änderung committet.
|
||||
- **Ist er nur ein lokaler Entwurf in `entwuerfe/`:** den Entwurf ergänzen, Unterschiede zeigen, auf Freigabe
|
||||
warten, neu umwandeln. **Erfolg** = neue `.bpmn` erzeugt.
|
||||
|
||||
## 5. Vermerk – nur bei Erfolg
|
||||
|
||||
```bash
|
||||
python scripts/einlesen.py vermerk input/<datei>.md --ergebnis neu --ziel entwuerfe/<name>.md
|
||||
python scripts/einlesen.py vermerk input/<datei>.md --ergebnis aktualisiert --ziel prozesse/<name>/
|
||||
```
|
||||
|
||||
Das Skript schreibt als erste Zeile einen HTML-Kommentar mit Zeitstempel, Ergebnis, Ziel und Inhalts-Prüfsumme;
|
||||
ältere Vermerke bleiben darunter stehen. Kein Vermerk bei Überspringen, Abbruch, fehlender Freigabe oder
|
||||
fehlgeschlagener Umwandlung.
|
||||
|
||||
## 6. Zusammenfassung
|
||||
|
||||
Am Ende eine Tabelle: Datei | Status vorher | Entscheidung | Ergebnis (Pfad) | Vermerk ja/nein. Dazu abgelehnte
|
||||
Dateien mit Grund und, falls etwas unter `prozesse/` geändert wurde, den vorbereiteten Pull-Request-Text
|
||||
(vollständig nach `docs/vorlagen/pull_request.md`). Push und Pull Request macht der Mensch.
|
||||
Reference in New Issue
Block a user