File Collect Sort Action
Der Nutzer hat dieses Modul bewusst passiv geparkt, bis ein konkreter Auftrag es braucht
(Ticket T-20260818-916568570, User wörtlich: "ich werde irgendwann mal sagen hole aus dem
ordner immer die und die dateien und sammle sie dort -> dann erkennst du den skill zu
unserem modul und richtest das ein"). Dieser Skill IST die Erkennung, auf die er wartet.
Wann dieser Skill greift
Trigger sind Nutzersätze, die ein wiederkehrendes Einsammeln nach Regel beschreiben —
nicht ein einmaliges "verschiebe diese eine Datei":
- "Hole aus
<Ordner> immer <Dateiart> und sammle sie in <Ziel>"
- "Sortiere den Ordner
<X> automatisch nach <Kriterium>"
- "Sammle eingehende Dateien aus
<Quelle> in <Ziel>"
- "Räum diesen Ordner regelbasiert auf" / "verschiebe alle
<Dateiart> aus <Ordner> automatisch"
- Jede Variante, die Quelle, Erkennungsmerkmal (Dateiart/Namensmuster/Inhalt) und
Ziel benennt und impliziert, dass das wiederholt passieren soll (nicht nur jetzt einmal)
Nicht dieser Skill: eine einzelne, einmalige Datei verschieben (das macht ein Agent direkt,
ohne Konfigurationsschicht) — dokument-ingest (beantwortet "womit lese ich den Inhalt",
nicht "wohin gehört die Datei") — inkrementelles Text-Indizieren ohne Dateien zu bewegen
(gardener).
Was das Modul kann (Kurzfassung)
file-collect-sort-action (Kurzname f-csa, CLI fcsa) ist ein
konfigurationsgetriebener Scan→Kategorisieren→Handeln-Agent mit drei Konfigurationsdateien
und einem Verarbeitungsgedächtnis:
| Datei |
Rolle |
config.json |
scan_paths (Positivliste), Format-Ein-/Ausschluss, Duplikaterkennungsregeln, Sicherheitsgatter (allow_hard_delete) |
categories-definitions.json |
Erkennungsschablonen je Kategorie (Dateiname/Endung/Inhalt), Checks/Gates, default_target, default_actions + default_stepping |
action-rules.json |
Aktionsparameter je Kategorie (move/copy-Ziele, Duplikatmodus, Löschmodus, OCR-Backend, Platzierungsreihenfolge) |
processing-csa.json |
wird in jeden gescannten Ordner geschrieben — bekannte Dateien, ihre Kategorie, angewandte Aktionen, wirksamer Einstellungsabdruck (Fingerprint) |
Bekannte Aktions-IDs: duplicate_check, move, copy, delete, ocr_extract,
place_information. Stepping-Semantik: default_stepping: true = Aktionen laufen links nach
rechts wie aufgelistet, eine doppelt aufgeführte Aktions-ID läuft doppelt; false = Menge
(Duplikate kollabieren auf eine Ausführung).
Sicherheitsmodell — beim Einrichten IMMER einhalten
- Dry-Run ist Pflicht vor jedem ersten Scharfbetrieb, je Scan-Pfad.
fcsa run (ohne
--dry-run) verweigert ohne protokollierten Dry-Run für genau diesen Pfad.
- Eine Einstellungsänderung entwaffnet die Bestätigung neu (Fingerprint über alle drei
Config-Dateien) — nach jeder Config-Anpassung braucht der nächste Scharflauf wieder einen
frischen Dry-Run.
- Löschen ist fail-closed.
delete verschiebt immer in trash_dir, außer sowohl
action-rules.json (delete.hard_delete: true) als auch config.json
(allow_hard_delete: true) stimmen ausdrücklich zu. Für diesen Skill gilt zusätzlich:
hartes Löschen niemals ohne separate, ausdrückliche Nutzerfreigabe aktivieren — Default bleibt
_trash.
scan_paths ist eine explizite Positivliste, jeder andere Pfad wirft
PathNotAllowedError; Pfade mit .PRIVAT- oder CREDENTIALS-Segment werden beim Laden
abgewiesen.
- Dry-Run ist Byte-für-Byte folgenlos für den gescannten Ordner:
processing-csa.json
wird ausschließlich bei einem Scharfbetrieb geschrieben, nie bei einem Dry-Run.
Ablauf: vom Trigger-Satz zur eingerichteten Automatisierung
- Auftrag strukturieren. Aus dem Nutzersatz Quelle, Erkennungsmerkmal(e) und Ziel(e)
herausziehen. Bei Unklarheit gezielt nachfragen (Dateiart? Unterordner mit einbeziehen?
Was bei Namenskollision im Ziel — skip/overwrite/rename/quarantine?).
- Modul lokalisieren. Zuerst mit
fcsa --help prüfen, ob das CLI verfügbar ist. Fehlt es,
den für das aktuelle System autorisierten Modul- oder Paketweg ermitteln; keinen lokalen Pfad,
Paketnamen oder parallelen Checkout erfinden. Nach einer Installation fcsa --help erneut
ausführen, bevor Konfigurationen angelegt werden.
- Config-Ordner anlegen.
fcsa init <config-dir> — schreibt scan_paths zunächst auf
einen frischen inbox/-Ordner innerhalb des Config-Ordners selbst, niemals automatisch
auf einen echten Nutzerordner. Beispiel-Templates dafür: fcsa/_examples/*.example.json
im Modul.
- Config auf den echten Auftrag zuschneiden.
scan_paths auf den genannten Quellordner
setzen, in categories-definitions.json die Erkennungsschablone(n) für die genannte
Dateiart eintragen (default_target = genanntes Ziel), in action-rules.json die
passenden Aktionen (typischerweise move, ggf. duplicate_check davor) konfigurieren.
state_dir/trash_dir dürfen NICHT innerhalb eines scan_path liegen (das Modul weist
das ab — sonst Selbstfütterungs-Schleife).
- Immer zuerst Dry-Run vorlegen:
fcsa run --config-dir <config-dir> --dry-run — Ergebnis
dem Nutzer zeigen (was würde wohin verschoben, was als Duplikat erkannt).
- Scharfschaltung nur nach explizitem Nutzer-Go. Erst dann
fcsa run --config-dir <config-dir> (ohne --dry-run). fcsa status --config-dir <config-dir> zeigt danach den
Stand.
- Schrittweise erweitern (User: "und dann erweitert sich das mit der Zeit"): weitere
Kategorien/Ordner nachtragen, statt eine neue Einrichtung zu beginnen — die drei
Config-Dateien sind additiv pflegbar. Jede Erweiterung braucht wegen des
Einstellungsabdrucks wieder einen Dry-Run vor dem nächsten Scharflauf.
Grenzen / bekannte offene Punkte (Stand Ticket T-20260818-916568570)
- Modul ist Durchgang 1, Status "development" — Kernpipeline, CLI und Sicherheitsgatter sind
fertig und getestet (63/63 Tests), aber noch nie gegen einen echten Nutzerordner
scharfgeschaltet. Die erste Scharfschaltung ist bewusst dieser Skill-Einsatz.
Repo-Sichtbarkeit ist "private" — keine Veröffentlichung ohne eigenen
repo-publish-check.
- Zwei Lesarten von Spezifikationslücken sind dokumentiert (
CHANGELOG.md/TODO.md im
Modul): default_stepping: false kollabiert eine doppelt gelistete Aktion auf eine
Ausführung; duplicate_check mit Ergebnis skip bricht die gesamte restliche
Aktionskette für die Datei ab (nicht nur move/copy). Bei Bedarf mit dem Nutzer klären, bevor
eine Config sich darauf verlässt.
- OCR ist ein steckbares Backend (
none/command) — keine eigene OCR-Engine gebündelt. Für
echte OCR-Extraktion ellmos-filecommander fc_ocr über den command-Backend-Typ anbinden.
Herkunft
Modul gebaut in Ticket T-20260818-916568570 (Durchgang 1, fcsa-worker), auf Wunsch
des Nutzers bewusst passiv geparkt (PARKED/until-trigger) bis genau der oben beschriebene
Trigger auftritt. Dieser Skill setzt exakt diesen Park-Vermerk um.
Changelog
1.0.0 (2026-08-18)
- Initiale Version. Trigger-Erkennung für "sammle/sortiere Dateien automatisch"-Aufträge,
Einrichtungs-Ablauf mit Dry-Run-Pflicht und Scharfschaltung nur nach Nutzer-Go dokumentiert.
1---2name: file-collect-sort-action3description: Erkennt Nutzeraufträge der Form "hole aus einem Ordner immer bestimmte Dateien und sammle sie an einem Ziel" und richtet dafür das Modul file-collect-sort-action (CLI fcsa) ein — ein konfigurationsgetriebener Agent, der Ordner scannt, Dateien per Schablone kategorisiert und gestufte Aktionen anwendet (move/copy/duplicate-check/delete/OCR/place-information). Nutze diesen Skill bei Sätzen wie "hole aus <Ordner> immer <Dateiart> und sammle sie in <Ziel>", "sortiere den Ordner X automatisch nach ...", "sammle eingehende Dateien aus ... in ...", "räume diesen Ordner regelbasiert auf" oder "verschiebe alle <Dateiart> aus <Ordner> automatisch". Richtet IMMER zuerst einen Dry-Run ein und schaltet erst nach ausdrücklichem Nutzer-Go scharf; Löschen bleibt grundsätzlich im _trash-Modus.4---56<img src="banner.png" width="100%" alt="file-collect-sort-action banner">78# File Collect Sort Action910> Der Nutzer hat dieses Modul bewusst passiv geparkt, bis ein konkreter Auftrag es braucht11> (Ticket T-20260818-916568570, User wörtlich: *"ich werde irgendwann mal sagen hole aus dem12> ordner immer die und die dateien und sammle sie dort -> dann erkennst du den skill zu13> unserem modul und richtest das ein"*). Dieser Skill IST die Erkennung, auf die er wartet.1415## Wann dieser Skill greift1617Trigger sind Nutzersätze, die ein wiederkehrendes **Einsammeln nach Regel** beschreiben —18nicht ein einmaliges "verschiebe diese eine Datei":1920- "Hole aus `<Ordner>` immer `<Dateiart>` und sammle sie in `<Ziel>`"21- "Sortiere den Ordner `<X>` automatisch nach `<Kriterium>`"22- "Sammle eingehende Dateien aus `<Quelle>` in `<Ziel>`"23- "Räum diesen Ordner regelbasiert auf" / "verschiebe alle `<Dateiart>` aus `<Ordner>` automatisch"24- Jede Variante, die **Quelle**, **Erkennungsmerkmal** (Dateiart/Namensmuster/Inhalt) und25 **Ziel** benennt und impliziert, dass das **wiederholt** passieren soll (nicht nur jetzt einmal)2627**Nicht** dieser Skill: eine einzelne, einmalige Datei verschieben (das macht ein Agent direkt,28ohne Konfigurationsschicht) — `dokument-ingest` (beantwortet "womit lese ich den *Inhalt*",29nicht "wohin gehört die *Datei*") — inkrementelles Text-Indizieren ohne Dateien zu bewegen30(`gardener`).3132## Was das Modul kann (Kurzfassung)3334`file-collect-sort-action` (Kurzname **f-csa**, CLI **`fcsa`**) ist ein35konfigurationsgetriebener Scan→Kategorisieren→Handeln-Agent mit drei Konfigurationsdateien36und einem Verarbeitungsgedächtnis:3738| Datei | Rolle |39|---|---|40| `config.json` | `scan_paths` (Positivliste), Format-Ein-/Ausschluss, Duplikaterkennungsregeln, Sicherheitsgatter (`allow_hard_delete`) |41| `categories-definitions.json` | Erkennungsschablonen je Kategorie (Dateiname/Endung/Inhalt), Checks/Gates, `default_target`, `default_actions` + `default_stepping` |42| `action-rules.json` | Aktionsparameter je Kategorie (move/copy-Ziele, Duplikatmodus, Löschmodus, OCR-Backend, Platzierungsreihenfolge) |43| `processing-csa.json` | wird **in jeden gescannten Ordner** geschrieben — bekannte Dateien, ihre Kategorie, angewandte Aktionen, wirksamer Einstellungsabdruck (Fingerprint) |4445Bekannte Aktions-IDs: `duplicate_check`, `move`, `copy`, `delete`, `ocr_extract`,46`place_information`. Stepping-Semantik: `default_stepping: true` = Aktionen laufen links nach47rechts wie aufgelistet, eine doppelt aufgeführte Aktions-ID läuft **doppelt**; `false` = Menge48(Duplikate kollabieren auf eine Ausführung).4950## Sicherheitsmodell — beim Einrichten IMMER einhalten5152- **Dry-Run ist Pflicht vor jedem ersten Scharfbetrieb**, je Scan-Pfad. `fcsa run` (ohne53 `--dry-run`) verweigert ohne protokollierten Dry-Run für genau diesen Pfad.54- **Eine Einstellungsänderung entwaffnet die Bestätigung neu** (Fingerprint über alle drei55 Config-Dateien) — nach jeder Config-Anpassung braucht der nächste Scharflauf wieder einen56 frischen Dry-Run.57- **Löschen ist fail-closed.** `delete` verschiebt immer in `trash_dir`, außer *sowohl*58 `action-rules.json` (`delete.hard_delete: true`) *als auch* `config.json`59 (`allow_hard_delete: true`) stimmen ausdrücklich zu. **Für diesen Skill gilt zusätzlich:**60 hartes Löschen niemals ohne separate, ausdrückliche Nutzerfreigabe aktivieren — Default bleibt61 `_trash`.62- **`scan_paths` ist eine explizite Positivliste**, jeder andere Pfad wirft63 `PathNotAllowedError`; Pfade mit `.PRIVAT`- oder `CREDENTIALS`-Segment werden beim Laden64 abgewiesen.65- **Dry-Run ist Byte-für-Byte folgenlos** für den gescannten Ordner: `processing-csa.json`66 wird ausschließlich bei einem Scharfbetrieb geschrieben, nie bei einem Dry-Run.6768## Ablauf: vom Trigger-Satz zur eingerichteten Automatisierung69701. **Auftrag strukturieren.** Aus dem Nutzersatz Quelle, Erkennungsmerkmal(e) und Ziel(e)71 herausziehen. Bei Unklarheit gezielt nachfragen (Dateiart? Unterordner mit einbeziehen?72 Was bei Namenskollision im Ziel — skip/overwrite/rename/quarantine?).732. **Modul lokalisieren.** Zuerst mit `fcsa --help` prüfen, ob das CLI verfügbar ist. Fehlt es,74 den für das aktuelle System autorisierten Modul- oder Paketweg ermitteln; keinen lokalen Pfad,75 Paketnamen oder parallelen Checkout erfinden. Nach einer Installation `fcsa --help` erneut76 ausführen, bevor Konfigurationen angelegt werden.773. **Config-Ordner anlegen.** `fcsa init <config-dir>` — schreibt `scan_paths` zunächst auf78 einen frischen `inbox/`-Ordner **innerhalb** des Config-Ordners selbst, niemals automatisch79 auf einen echten Nutzerordner. Beispiel-Templates dafür: `fcsa/_examples/*.example.json`80 im Modul.814. **Config auf den echten Auftrag zuschneiden.** `scan_paths` auf den genannten Quellordner82 setzen, in `categories-definitions.json` die Erkennungsschablone(n) für die genannte83 Dateiart eintragen (`default_target` = genanntes Ziel), in `action-rules.json` die84 passenden Aktionen (typischerweise `move`, ggf. `duplicate_check` davor) konfigurieren.85 `state_dir`/`trash_dir` dürfen NICHT innerhalb eines `scan_path` liegen (das Modul weist86 das ab — sonst Selbstfütterungs-Schleife).875. **Immer zuerst Dry-Run vorlegen:** `fcsa run --config-dir <config-dir> --dry-run` — Ergebnis88 dem Nutzer zeigen (was würde wohin verschoben, was als Duplikat erkannt).896. **Scharfschaltung nur nach explizitem Nutzer-Go.** Erst dann `fcsa run --config-dir90 <config-dir>` (ohne `--dry-run`). `fcsa status --config-dir <config-dir>` zeigt danach den91 Stand.927. **Schrittweise erweitern** (User: "und dann erweitert sich das mit der Zeit"): weitere93 Kategorien/Ordner nachtragen, statt eine neue Einrichtung zu beginnen — die drei94 Config-Dateien sind additiv pflegbar. Jede Erweiterung braucht wegen des95 Einstellungsabdrucks wieder einen Dry-Run vor dem nächsten Scharflauf.9697## Grenzen / bekannte offene Punkte (Stand Ticket T-20260818-916568570)9899- Modul ist Durchgang 1, Status "development" — Kernpipeline, CLI und Sicherheitsgatter sind100 fertig und getestet (63/63 Tests), aber **noch nie gegen einen echten Nutzerordner101 scharfgeschaltet**. Die erste Scharfschaltung ist bewusst dieser Skill-Einsatz.102 Repo-Sichtbarkeit ist "private" — keine Veröffentlichung ohne eigenen `repo-publish-check`.103- Zwei Lesarten von Spezifikationslücken sind dokumentiert (`CHANGELOG.md`/`TODO.md` im104 Modul): `default_stepping: false` kollabiert eine doppelt gelistete Aktion auf **eine**105 Ausführung; `duplicate_check` mit Ergebnis `skip` bricht die **gesamte** restliche106 Aktionskette für die Datei ab (nicht nur move/copy). Bei Bedarf mit dem Nutzer klären, bevor107 eine Config sich darauf verlässt.108- OCR ist ein steckbares Backend (`none`/`command`) — keine eigene OCR-Engine gebündelt. Für109 echte OCR-Extraktion `ellmos-filecommander` `fc_ocr` über den `command`-Backend-Typ anbinden.110111## Herkunft112113Modul gebaut in Ticket T-20260818-916568570 (Durchgang 1, fcsa-worker), auf Wunsch114des Nutzers bewusst passiv geparkt (PARKED/until-trigger) bis genau der oben beschriebene115Trigger auftritt. Dieser Skill setzt exakt diesen Park-Vermerk um.116117## Changelog118119### 1.0.0 (2026-08-18)120- Initiale Version. Trigger-Erkennung für "sammle/sortiere Dateien automatisch"-Aufträge,121 Einrichtungs-Ablauf mit Dry-Run-Pflicht und Scharfschaltung nur nach Nutzer-Go dokumentiert.